[AutoIt] Diablo 3 Click To Move, Interaction, Actor Handling. (Version 2) menu

Shout-Out

User Tag List

Page 15 of 21 FirstFirst ... 111213141516171819 ... LastLast
Results 211 to 225 of 302
  1. #211
    RagnaBaby's Avatar Member
    Reputation
    1
    Join Date
    May 2009
    Posts
    28
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Anybody here got the actual iLevel of the item? Tried looking on all Attribs and no success.

    [AutoIt] Diablo 3 Click To Move, Interaction, Actor Handling. (Version 2)
  2. #212
    Evozer's Avatar Contributor
    Reputation
    150
    Join Date
    Jan 2011
    Posts
    214
    Thanks G/R
    1/15
    Trade Feedback
    9 (100%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by RagnaBaby View Post
    Anybody here got the actual iLevel of the item? Tried looking on all Attribs and no success.
    Hint: Use the gamebalance item sno files together with the gbid for the item

  3. #213
    RagnaBaby's Avatar Member
    Reputation
    1
    Join Date
    May 2009
    Posts
    28
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Evozer View Post
    Hint: Use the gamebalance item sno files together with the gbid for the item
    I'm sorry, I know not of those terms you mentioned. Gamebalance, SNO files, gbid.

    Got a reference that I could read on?

    Thanks

  4. #214
    infotech1's Avatar Member
    Reputation
    3
    Join Date
    Jan 2007
    Posts
    43
    Thanks G/R
    0/2
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Diablo3Bot View Post
    I am having a real problem with this I am trying to read the object list once I enter an area but the data at memory location at 0x015A1BEC is 0x00000000. And all the memory near it is also 0x00000000. Shouldn't this be a pointer to the object list. I also looked at location 0x015A0BEC, But that doesn't look like a valid pointer.
    Looks like your offsets are out of date, your objectmanager is from 10235.


    Im trying to use PowerOnGUID to attack a monster and having no luck, does this only work for interacting with actors not attacking?
    Last edited by infotech1; 08-01-2012 at 09:35 PM.

  5. #215
    Diablo3Bot's Avatar Corporal
    Reputation
    3
    Join Date
    Jul 2012
    Posts
    25
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by infotech1 View Post
    Looks like your offsets are out of date.
    I used the ones referenced earlier in this thread for the 1.0.3.10235 release. Isn't that the most current version? what offsets should I be using?

    Thanks for any help

  6. #216
    infotech1's Avatar Member
    Reputation
    3
    Join Date
    Jan 2007
    Posts
    43
    Thanks G/R
    0/2
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Diablo3Bot View Post
    I used the ones referenced earlier in this thread for the 1.0.3.10235 release. Isn't that the most current version? what offsets should I be using?

    Thanks for any help
    public static uint objectManager = 0x15A0BEC; looks like the only one needing an update.

  7. #217
    Kizzarse's Avatar Corporal
    Reputation
    1
    Join Date
    Jul 2012
    Posts
    24
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by siklon View Post
    I figured it out, these offsets will return the correct position at all times and no need to click anywhere.

    myoffset is offset of your character in the objectlist
    pos[1] := ReadMemory(exe, myoffset+0xa0, "float")
    pos[2] := ReadMemory(exe, myoffset+0xa4, "float")
    pos[3] := ReadMemory(exe, myoffset+0xa8, "float")

    EDIT: you still need to make sure offsets() is called each time you create a new game.
    I tested out trying to get char's position when running offset() but result is still 0. Is there a difference betw what u did and autoit script?

    Func LocateMyToon()
    If $_debug Then ConsoleWrite("LocateMyToon(): -----Looking for local player start------" & @CRLF)
    $_CurOffset = $_itrObjectManagerD
    $_Count = _MemoryRead($_itrObjectManagerCount, $d3, 'int')
    For $i = 0 To $_Count Step +1
    $_guid = _MemoryRead($_CurOffset + 0x4, $d3, 'ptr')
    $_NAME = _MemoryRead($_CurOffset + 0x8, $d3, 'char[64]')
    $worldID = _MemoryRead($_CurOffset + 0x0D8, $d3, 'ptr')
    If $_guid = 0x77BC0000 Then
    Global $_Myoffset = $_CurOffset
    Global $pos[3]
    $pos[0] = _MemoryRead($D3Exefile, $_Myoffset + 0xa0, "float")
    $pos[1] = _MemoryRead($D3Exefile, $_Myoffset + 0xa4, "float")
    $pos[2] = _MemoryRead($D3Exefile, $_Myoffset + 0xa8, "float")
    ConsoleWrite("x=" & $pos[0] & " y=" & $pos[1] & " z=" & $pos[2] & @CRLF)

  8. #218
    siruxx's Avatar Corporal
    Reputation
    1
    Join Date
    Jul 2012
    Posts
    25
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    anyone found a way to log out of the game completly out of process BESIDE sending clicks to the logout button?

  9. #219
    siklon's Avatar Member
    Reputation
    4
    Join Date
    Jun 2012
    Posts
    57
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Kizzarse View Post
    I tested out trying to get char's position when running offset() but result is still 0. Is there a difference betw what u did and autoit script?

    Func LocateMyToon()
    If $_debug Then ConsoleWrite("LocateMyToon(): -----Looking for local player start------" & @CRLF)
    $_CurOffset = $_itrObjectManagerD
    $_Count = _MemoryRead($_itrObjectManagerCount, $d3, 'int')
    For $i = 0 To $_Count Step +1
    $_guid = _MemoryRead($_CurOffset + 0x4, $d3, 'ptr')
    $_NAME = _MemoryRead($_CurOffset + 0x8, $d3, 'char[64]')
    $worldID = _MemoryRead($_CurOffset + 0x0D8, $d3, 'ptr')
    If $_guid = 0x77BC0000 Then
    Global $_Myoffset = $_CurOffset
    Global $pos[3]
    $pos[0] = _MemoryRead($D3Exefile, $_Myoffset + 0xa0, "float")
    $pos[1] = _MemoryRead($D3Exefile, $_Myoffset + 0xa4, "float")
    $pos[2] = _MemoryRead($D3Exefile, $_Myoffset + 0xa8, "float")
    ConsoleWrite("x=" & $pos[0] & " y=" & $pos[1] & " z=" & $pos[2] & @CRLF)
    Your function parameters in _MemoryRead are in wrong order, mind you I'm using AHK along with a different memory lib.

    Global $pos[3]
    $pos[0] = _MemoryRead($_Myoffset + 0xa0, $d3, "float")
    $pos[1] = _MemoryRead($_Myoffset + 0xa4, $d3, "float")
    $pos[2] = _MemoryRead($_Myoffset + 0xa8, $d3, "float")
    ConsoleWrite("x=" & $pos[0] & " y=" & $pos[1] & " z=" & $pos[2] & @CRLF)

  10. #220
    Kizzarse's Avatar Corporal
    Reputation
    1
    Join Date
    Jul 2012
    Posts
    24
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Thanks alot @siklon that worked.

  11. #221
    Diablo3Bot's Avatar Corporal
    Reputation
    3
    Join Date
    Jul 2012
    Posts
    25
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by infotech1 View Post
    public static uint objectManager = 0x15A0BEC; looks like the only one needing an update.
    Thanks, I will change the objectManager pointer from 0x15A1BEC to 0x15A0BEC when I get home tonight.

    I am pretty sure I tried that, but didn't have any luck, but I've thrown so much code at this the last few days I could be wrong!

  12. #222
    joxxe87's Avatar Corporal
    Reputation
    5
    Join Date
    Aug 2012
    Posts
    28
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by shoanimal View Post
    Here is what i worked out that will get either backpack items or stash items and save the info in an array.

    Code:
    ;;--------------------------------------------------------------------------------
    ;;	Getting Backpack Item Info
    ;;--------------------------------------------------------------------------------
    Func IterateBackpack($bag = 0,$rlvl = 0)
    	;$bag = 0 for backpack and 15 for stash
    	;$rlvl = 1 for actual level requirement of item and 0 for base required level
    	$_Count = _MemoryRead($_LocalActor_Count, $d3, 'int')
    	$CurrentOffset = $_LocalActor_3
    	Global $__ACDACTOR[$_Count + 1][7]
    	For $i = 0 To $_Count
    		$__ACDACTOR[$i][0] = _MemoryRead($CurrentOffset, $d3, 'ptr')
    		$__ACDACTOR[$i][1] = _MemoryRead($CurrentOffset + 0x4, $d3, 'char[64]')
    		$__ACDACTOR[$i][2] = _MemoryRead($CurrentOffset + 0x114, $d3, 'int')
    		$__ACDACTOR[$i][3] = _MemoryRead($CurrentOffset + 0x118, $d3, 'int')
    		$__ACDACTOR[$i][4] = _MemoryRead($CurrentOffset + 0x11C, $d3, 'int')
    		$__ACDACTOR[$i][5] = 0
    		$__ACDACTOR[$i][6] = _MemoryRead($CurrentOffset + $ofs_LocalActor_atribGUID, $d3, 'ptr')
    		$CurrentOffset = $CurrentOffset + $ofs_LocalActor_StrucSize
    	Next
    	For $i = $_Count To 0 Step -1
    		If $__ACDACTOR[$i][2] <> $bag Then
    			_ArrayDelete($__ACDACTOR, $i)
    		Else
    			$__ACDACTOR[$i][5] = GetPackItemLevel($__ACDACTOR[$i][6], $Atrib_Requirement)
    			if $rlvl Then
    				$lvlReduce = GetPackItemLevel($__ACDACTOR[$i][6], $Atrib_Item_Level_Requirement_Reduction)
    				If $lvlReduce Then $__ACDACTOR[$i][5] = $__ACDACTOR[$i][5] - $lvlReduce
    			EndIf
    		EndIf
    	Next
    EndFunc   ;==>IterateBackpack
    
    ;get pack info
    Func GetPackItemLevel($ACD, $_REQ)
    	;IterateLocalActor()
    	;$ACDIndex = _ArraySearch($__ACTOR, "0x" & Hex($_guid), 0, 0, 0, 1, 1, 1) ;this bitch is slow as hell
    	If $ACD = -1 Then Return False
    	$_Count = _MemoryRead($_ActorAtrib_Count, $d3, 'int')
    	$CurrentOffset = $_ActorAtrib_4
    	Dim $ACTORatrib
    	For $i = 0 To $_Count
    		$ACTORatrib = _MemoryRead($CurrentOffset, $d3, 'ptr')
    		If $ACTORatrib = $ACD Then
    			$test = _MemoryRead($CurrentOffset + 0x10, $d3, 'ptr')
    			$CurretOffset = $test
    			For $i = 0 To 825
    				$data = _MemoryRead($CurretOffset, $d3, 'ptr')
    				$CurretOffset = $CurretOffset + 0x4
    				If $data <> 0x0 Then
    					$AtribData = _MemoryRead($data + 0x4, $d3, 'ptr')
    					If StringLeft($AtribData, 7) = "0x0003B" Then
    						;ConsoleWrite("Debug :" &$data+0x4 & " : " & _MemoryRead($data+0x4, $d3, 'int') &@crlf) ;FOR DEBUGGING
    						If "0x" & StringRight($AtribData, 3) = $_REQ[0] Then
    							Return _MemoryRead($data + 0x8, $d3, $_REQ[1])
    						EndIf
    					EndIf
    					If StringLeft($AtribData, 7) = "0xFFFFF" Then
    						;ConsoleWrite("Debug :" &$data+0x4 & " : " & _MemoryRead($data+0x4, $d3, 'int') &@crlf) ;FOR DEBUGGING
    						If "0x" & StringRight($AtribData, 3) = $_REQ[0] Then
    							Return _MemoryRead($data + 0x8, $d3, $_REQ[1])
    						EndIf
    					EndIf
    				EndIf
    			Next
    			Return False
    		EndIf
    		$CurrentOffset = $CurrentOffset + $ofs_ActorAtrib_StrucSize
    	Next
    	Return False
    EndFunc   ;==>GetPackItemLevel
    I used this code to get items from my backpack. I can get the "lvl" of the object with IterateActorAtribs. and if the lvl is to low if want to sell it.
    I dont want to use memory writing, is there any way to sell these items to vendor? If I just could figure out the position of each item in the backpack it would be easy...

    Solved it:
    col:" & $__ACDACTOR[$i][3] & " row " & $__ACDACTOR[$i][4]
    Last edited by joxxe87; 08-02-2012 at 03:08 PM. Reason: solved?

  13. #223
    Diablo3Bot's Avatar Corporal
    Reputation
    3
    Join Date
    Jul 2012
    Posts
    25
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Okay I finally figured out my problems.

    1st I verified my offsets, and made sure they were correct (thanks infotech1). But I still was not getting any good results. I manually walked through the pointers using cheat engine and was able to verify that the address were correct, but for some reason the code was still not working. But my memory reading results were just weird, and inconsistent.

    After some googling around I had found that when uninstalling the 64 bit version of autoit (which I originally had) and re-installing the 32 bit version sometime it doesn't work out, and I was unable to find a clear method of fixing it. So I re-installed the 64 bit version of autoit. Now my results were wrong but consistent and I can work with that.

    So at this point it was easy to determine that the problem was that since nomadMemory.au3 is written for 32-bit, and I was trying to use it as 64-bit so I had to convert it to 32 bit, but sometimes the reads had to be 64 bit as well. So I wrote the following function:

    <code>
    ;convert memory read 64 bit result to 32 bit
    Func ReadMem($Addr1, $Proc1, $type1)
    if $type1 = 'char[64]' Or $type1 = 'float' Then
    Return (_MemoryRead($Addr1, $Proc1, $type1)) ;do a 64bit read
    Else
    $longPtr = _MemoryRead($Addr1, $Proc1, $type1) ; do a 64bit read
    $longPtr = StringReplace($longPtr, 3, "00000000") ; replace the leading nums with 0's, this also converts the number to a hex string (start at 3 to skip the "0x")
    $longPtr = Number($longPtr) ;convert the hex string to a number
    Return ($longPtr) ;this returns a 64 bit number with the 1st 8 bytes padded to 0
    EndIf
    EndFunc ;==>ReadMem
    </code>

    and replaced all of the instances of _MemoryRead(... in the code with ReadMem(...

    It can use some optimization but it does what's intended, although it acts a little weird. Even though it is converted from a number to a string, trimmed to 32 bits and converted back to a number it still remains a 64 bit number. I tried a bunch of things always with the same result. Not really a big deal but doing a comparison of numbers may not work right for example:

    If you read a 32 bit location and are expecting -1 (0xFFFFFFFF) you will get 4294967295 (0x00000000FFFFFFFF)

    So if you look in the code I posted earlier and look at the attack function, the while loop will never exits because the code can't determine the monster is dead. So to deal with this I had to change the compare to be a 64-bit compare. Not a big deal but if you use this it's something to be aware of.

    I suppose I could add some smarts to check and see if the 32 bit number is neg and pad with 0xFF's instead of 0x00's but since I generally don't use hard coded values in functions (I prefer to use consts), I'm not to worried about it. But if someone can figure out the correct method to convert the number from 64-bits to 32 please let me know.

    Using 64-bit will work better for me anyway since I will be doing image compares and the 64-bit searching is much faster than the 32-bit.

    I hope this helps someone else

  14. #224
    _Mike's Avatar Contributor
    Reputation
    310
    Join Date
    Apr 2008
    Posts
    531
    Thanks G/R
    0/2
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Wow.. Stuff like this is why I hate typeless languages.

    But if someone can figure out the correct method to convert the number from 64-bits to 32 please let me know.
    Just throw away the upper 32 bits. Unless you actually meant 32->64.
    If integer type is unsigned, pad with 0.
    If integer type is signed, pad with sign bit.

  15. #225
    Thaelion's Avatar Member
    Reputation
    9
    Join Date
    Jan 2008
    Posts
    168
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by _Mike View Post
    Wow.. Stuff like this is why I hate typeless languages.


    Just throw away the upper 32 bits. Unless you actually meant 32->64.
    If integer type is unsigned, pad with 0.
    If integer type is signed, pad with sign bit.
    Even worse,
    0x7FFFFFFF >> 0x00000010 != 0x00007FFF in AutoIT.

Page 15 of 21 FirstFirst ... 111213141516171819 ... LastLast

Similar Threads

  1. Interact problems with Click to move
    By natt_ in forum WoW Memory Editing
    Replies: 3
    Last Post: 09-28-2014, 02:12 PM
  2. [AutoIt] Diablo 3 Click To Move, Interaction, Actor Indexing.
    By UnknOwned in forum Diablo 3 Memory Editing
    Replies: 84
    Last Post: 06-30-2012, 11:59 AM
  3. [Diablo 3] Click to move?
    By diablothree in forum Diablo 3 Memory Editing
    Replies: 3
    Last Post: 01-14-2012, 04:29 AM
  4. Click to move?
    By ashleyww in forum WoW Memory Editing
    Replies: 32
    Last Post: 07-18-2009, 08:48 PM
  5. Click to Move Problem
    By Rival-Fr in forum WoW Memory Editing
    Replies: 5
    Last Post: 07-03-2009, 09:27 AM
All times are GMT -5. The time now is 12:47 PM. Powered by vBulletin® Version 4.2.3
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Google Authenticator verification provided by Two-Factor Authentication (Free) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search