[AutoIT] GPH & XP Tracker menu

User Tag List

Page 1 of 2 12 LastLast
Results 1 to 15 of 30
  1. #1
    Huggarn's Avatar Member
    Reputation
    3
    Join Date
    Jul 2008
    Posts
    79
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    [AutoIT] GPH & XP Tracker

    Hello, this is my second release here. Most of code is from Core + Field Bot by Euclide_ and he gets full credit. Requires AttribInterlop.dll registered in system, just download AttribInterlop.rar, extract somewhere, copy AttribInterlop.dll and AttribVB.dll to Windows\system32 folder and run reg.bat as admin.

    Basically it looks like that:



    As you can see it tracks few things that may be usefull. Explaination:

    As for XP its tuned for Paragon levels only!!

    XPH - XP per hour
    XP Gained - XP gained since start of script
    XP Till Next - XP needed to next level
    Current Paragon - Actual paragon level
    Total XP - Current value of XP
    Till lvl up: Time till level up

    GPH - Self explainatory
    Gold Gained - Gold farmed since start of script
    Gold Total - Current Gold amount in bag.

    HotKeys - END - Quit script, HOME - pause.

    It's set up to sleep for 1 minute before each update, you can change it by yourself in line 82. When character enter main menu it'll be paused till you enter game + 2 seconds just to make sure the xp values won't screw up.

    Gui may appear in strange position on desktop that's just how it was good for me, you can modify it in "lib\gui.au3" line 5
    Code:
    Global $gui = GUICreate("Stats Tracker", 400,250, 816, 0)
    Set the last two values to coords you want to.

    This script uses memory reading to get values it want.

    Download:

    GPH & XP Tracker.rar - Outdated

    AttribInterop.rar - No longer required for new version
    Version 1.1

    Updated for 1.0.6

    Version for 1.0.6

    Should not require AttribInterloop.dll, changed function to native autoit.

    Credits: Euclide_, KillerJohn, leo11173 and bastiflew.

    Update 2012 / 12 / 09 @ 4:58 : Fixed it so no more dll req, I hope so ^^

    Live numbers version ( updating every 1 second + about 500 ms to process script ) HERE
    Last edited by Huggarn; 12-12-2012 at 04:09 AM. Reason: update

    [AutoIT] GPH & XP Tracker
  2. #2
    Gexdex's Avatar Banned CoreCoins Purchaser
    Reputation
    3
    Join Date
    Jun 2012
    Posts
    59
    Thanks G/R
    0/0
    Trade Feedback
    3 (100%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    failed to open memmory of process

  3. #3
    Huggarn's Avatar Member
    Reputation
    3
    Join Date
    Jul 2008
    Posts
    79
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Run diablo, and login atleast before running it

  4. #4
    shiupooa's Avatar Member
    Reputation
    1
    Join Date
    Sep 2012
    Posts
    16
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    is this safe to use?

  5. #5
    Huggarn's Avatar Member
    Reputation
    3
    Join Date
    Jul 2008
    Posts
    79
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    It reads memory, so may be safe but don't have to

  6. #6
    shiupooa's Avatar Member
    Reputation
    1
    Join Date
    Sep 2012
    Posts
    16
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    nvm. thnx!

  7. #7
    ShadowSyth's Avatar Member
    Reputation
    14
    Join Date
    Feb 2008
    Posts
    64
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I see you need atleast .Net 2.0. Can I download and use .Net 4.0 for this?

  8. #8
    Hochep's Avatar Private
    Reputation
    1
    Join Date
    Jun 2012
    Posts
    5
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    The program loads fine, but it doesn't calculate the GPH/XPPH. The current XP doesn't move, therefore it cannot create a number for each hour.

    EDIT: It refreshed itself when I used a waypoint, but it's still frozen..?

  9. #9
    Huggarn's Avatar Member
    Reputation
    3
    Join Date
    Jul 2008
    Posts
    79
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Added updated version, refresh every 1 minute, shouldn't bug so much. Also log included.

    @Syth idk really I have every .net installed.
    Last edited by Huggarn; 11-27-2012 at 09:12 AM.

  10. #10
    KillerJohn's Avatar TurboHUD HUDmaster CoreCoins Purchaser Authenticator enabled
    Reputation
    3693
    Join Date
    Jul 2012
    Posts
    2,532
    Thanks G/R
    46/3335
    Trade Feedback
    0 (0%)
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)
    Can I ask you about, why are you using .NET interop for reading attributes instead of 75 lines of "native" AutoIt code ?

  11. #11
    leo11173's Avatar Member
    Reputation
    1
    Join Date
    Jul 2012
    Posts
    58
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by KillerJohn View Post
    Can I ask you about, why are you using .NET interop for reading attributes instead of 75 lines of "native" AutoIt code ?
    While bnet deployed 1.03 patch we had some trouble getting attrib again via autoit. So we used that way because it was allready made. It's kinda faster but not realy convinient. If you get the new way of getting attrib easyly via autoit just drop me a pm with, or a quote where it's explained and we'll get ride off that dll.

  12. #12
    Huggarn's Avatar Member
    Reputation
    3
    Join Date
    Jul 2008
    Posts
    79
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Indeed, I'm using it because it actually works But it'll stop after 1.0.6 and I will update it when somebody releases new offsets.

  13. #13
    Huggarn's Avatar Member
    Reputation
    3
    Join Date
    Jul 2008
    Posts
    79
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Don't know what's your post about, but yes it does.

  14. #14
    KillerJohn's Avatar TurboHUD HUDmaster CoreCoins Purchaser Authenticator enabled
    Reputation
    3693
    Join Date
    Jul 2012
    Posts
    2,532
    Thanks G/R
    46/3335
    Trade Feedback
    0 (0%)
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by leo11173 View Post
    While bnet deployed 1.03 patch we had some trouble getting attrib again via autoit. So we used that way because it was allready made. It's kinda faster but not realy convinient. If you get the new way of getting attrib easyly via autoit just drop me a pm with, or a quote where it's explained and we'll get ride off that dll.
    I'm really not the open-source kind guy (never was) but I'm pretty sure that your life will be MUCH easier if you don't have to use external DLLs...
    Btw the attribute reading is the same since 1.0.0 - your problem is probably that the most-known autoit library ([AutoIt] Diablo 3 Click To Move, Interaction, Actor Handling. (Version 2)) has a ton of bugs and the IterateActorAtribs function (which is the reference for 1/2 of the beginners in the non-existing D3 scene) doesn't even try to load the linked lists in the attribute groups. This is the reason of the "instability" of the attribute reading...

    So, here is a little snippet made for you:

    Code:
    Global $acd_data_start_ofs = 0
    Global $attrib_data_start_ofs = 0
    Global $acd_structure_size = 0x2D0 ; 1.0.5
    Global $acd_ofs__guid            = 0x000  ; 1.0.5
    Global $acd_ofs__attrib_group_id = 0x120  ; 1.0.5
    Global $attrib_link_ofs__next  = 0x000  ; 1.0.5
    Global $attrib_link_ofs__id    = 0x004  ; 1.0.5
    Global $attrib_link_ofs__value = 0x008  ; 1.0.5
    
    
    Func kjInitMemPartialForAttributeReadingOnly($ofs_ObjectManager)
    	Local $ObjectManagerBase = kjMemoryReadPtr($ofs_ObjectManager)
    
    	Local $ObjectManagerStorageOfs      = $ObjectManagerBase + 0x794
    	Local $ObjectManagerStorageDataOfs  = kjMemoryReadPtr($ObjectManagerStorageOfs + 0x0A8)
    	Local $ObjectManagerStorageLocalOfs = kjMemoryReadPtr($ObjectManagerStorageOfs + 0x1B8)
    
    	; ACD
    	Local $ObjManACDOffset = 0xD4
    	Local $a                  = kjMemoryReadPtr($ObjectManagerStorageOfs + $ObjManACDOffset)
    	Local $container_ofs      = kjMemoryReadPtr($a)
    	Local $a                  = kjMemoryReadPtr($container_ofs + 0x148) ;container.List, double pointer
    	Global $acd_data_start_ofs = kjMemoryReadPtr($a) ;container.List
    
    	; actor attribs
    	Local $a                     = kjMemoryReadPtr($ObjectManagerStorageOfs + 0x0C8)
    	Local $container_ofs         = kjMemoryReadPtr($a + 0x070)
    	Local $a                     = kjMemoryReadPtr($container_ofs + 0x148) ;container.List, double pointer
    	Global $attrib_data_start_ofs = kjMemoryReadPtr($a) ;container.List
    	Global $attrib_data_count_ofs = $container_ofs + 0x108 ;container.Count
    EndFunc
    
    
    Func kjGetActorAttributeFast($GUID, $Attrib, $req_mask, $default_value = -1)
    	$acd_index = BitAnd($GUID, 0xFFFF)
    	$acd_ofs = $acd_data_start_ofs + $acd_index * $acd_structure_size
    	$aguid = kjMemoryReadGeneric($acd_ofs + $acd_ofs__guid, 'int')
    	If ($aguid <> $GUID) Then Return $default_value
    
    	$attrib_group_id = kjMemoryReadGeneric($acd_ofs + $acd_ofs__attrib_group_id, 'int')
    	$attrib_group_index = BitAnd($attrib_group_id, 0xFFFF)
    	$group_ofs = $attrib_data_start_ofs + $attrib_group_index * $attrib_structure_size
    
    	$group_formula_ofs = kjMemoryReadGeneric($group_ofs + 0x010, 'ptr')
    	$group_formula_map_data_ofs = kjMemoryReadGeneric($group_formula_ofs + 0x008 + 0x000, 'ptr')
    	$mask = kjMemoryReadGeneric($group_formula_ofs + 0x418, 'int')
    
    	$full_id = BitOr($Attrib[0], BitShift($req_mask, -12))
    	$idxmask = BitXOR($full_id, BitShift($full_id, 16))
    	$idx = BitAnd($mask, $idxmask)
    
    	$link_root_ofs = $group_formula_map_data_ofs + ($idx * 4)
    	$link_ofs = kjMemoryReadGeneric($link_root_ofs, 'ptr')
    	$n = 0
    	While ($link_ofs <> 0x0)
    		$n += 1
    		$id = kjMemoryReadGeneric($link_ofs + $attrib_link_ofs__id, 'int')
    		If ($id = $full_id) Then
    			$value = kjMemoryReadGeneric($link_ofs + $attrib_link_ofs__value, $Attrib[1])
    			Return $value
    		EndIf
    		$link_ofs = kjMemoryReadGeneric($link_ofs + $attrib_link_ofs__next, 'ptr')
    		If ($n > 10) Then ExitLoop ; inifinite loop safety
    	WEnd
    	Return $default_value
    EndFunc
    
    
    Func kjEnumActorAttributeFastSampleCode($GUID)
    	$acd_index = BitAnd($GUID, 0xFFFF)
    	$acd_ofs = $acd_data_start_ofs + $acd_index * $acd_structure_size
    	$aguid = kjMemoryReadGeneric($acd_ofs + $acd_ofs__guid, 'int')
    	If ($aguid <> $GUID) Then Return
    	$attrib_group_id = kjMemoryReadGeneric($acd_ofs + $acd_ofs__attrib_group_id, 'int')
    	$attrib_group_index = BitAnd($attrib_group_id, 0xFFFF)
    	$group_ofs = $attrib_data_start_ofs + $attrib_group_index * $attrib_structure_size
    
    	$group_formula_ofs = kjMemoryReadGeneric($group_ofs + 0x010, 'ptr')
    	$group_formula_map_data_ofs = kjMemoryReadGeneric($group_formula_ofs + 0x008 + 0x000, 'ptr') ; formula's map's data
    
    	For $link_index = 0 To 255
    		$link_root_ofs = $group_formula_map_data_ofs + ($link_index * 4)
    		$link_ofs = kjMemoryReadGeneric($link_root_ofs, 'ptr')
    		$n = 0
    		While ($link_ofs <> 0x0)
    			$n += 1
    			$id = kjMemoryReadGeneric($link_ofs + $attrib_link_ofs__id, 'ptr')
    			$maskedid = StringRight($id, 3)
    			$mask = StringMid($id, 3, 5)
    			$value = kjMemoryReadGeneric($link_ofs + $attrib_link_ofs__value, 'int') ; or float
    			$link_ofs = kjMemoryReadGeneric($link_ofs + $attrib_link_ofs__next, 'ptr')
    			If ($n > 10) Then ExitLoop ; inifinite loop safety
    		WEnd
    	Next
    EndFunc
    You should replace my generic cached memory routines by the Nomad's ones - the result will be the same.

    If you don't want a crash, then kjInitMemPartialForAttributeReadingOnly() has to be called many times in your code - not only once.
    The reason is that the base offsets are changing sometimes even in-game (maybe some kind of garbage collection happening in D3).
    The best way is to call it before you are starting every attribute read cycle (not before every attrib read, but every time you start reading attributes...)

    kjEnumActorAttributeFastSampleCode() is just a dumb example to iterate through all attributes. Inside that you have to know the type of the current attrib (int vs float, I fixed 'int' in the example)

    kjGetActorAttributeFast($GUID, $Attrib, $req_mask, $default_value = -1)
    The GUID is the Actor/ACD ID, the Attrib is a [2] array like in the well-known toolkit.

    The req_mask is a must have too (most stuff has 0xFFFFF)
    For example the "Resistance_All" has a mask of 0xFFFFF, but the "Resistance"'s mask is 0 for Physical, 1 for Fire, 2 for Lightning an so on...

    Wah, sorry for my english


    EDIT: extra info: $ofs_ObjectManager = 0x1873414 (for 1.0.SIX!)
    Last edited by KillerJohn; 11-28-2012 at 06:06 AM.

  15. #15
    kickbar's Avatar Member
    Reputation
    1
    Join Date
    Nov 2012
    Posts
    2
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    hi guy, first thanks for your function,

    i have a trouble with it, i try to use it but i cant understand (i'm not really good with autoit)

    actually i the dll AttribInterop doesnt work with 1.0.6, so i wana use your function but how i'm supposed to replace the actually function by your ?

    (sry for my bad english)

Page 1 of 2 12 LastLast

Similar Threads

  1. GPH tracker and other statistics?
    By saph27 in forum Diablo 3 Bots Questions & Requests
    Replies: 1
    Last Post: 11-06-2012, 07:35 PM
  2. [Autoit help]Modify hotkey to rightclick(fishbot)
    By darknavi in forum World of Warcraft General
    Replies: 4
    Last Post: 07-01-2006, 09:31 PM
  3. No fall dmg (autoIT)
    By KuRIoS in forum World of Warcraft Exploits
    Replies: 6
    Last Post: 06-19-2006, 12:22 PM
  4. autoIT question
    By Vel0city in forum World of Warcraft General
    Replies: 3
    Last Post: 06-18-2006, 02:54 PM
  5. AutoIt Macro for WoW AFK Bot
    By Matt in forum World of Warcraft Bots and Programs
    Replies: 8
    Last Post: 04-06-2006, 06:01 AM
All times are GMT -5. The time now is 11:51 PM. Powered by vBulletin® Version 4.2.3
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search