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

Shout-Out

User Tag List

Page 14 of 21 FirstFirst ... 101112131415161718 ... LastLast
Results 196 to 210 of 302
  1. #196
    peterk's Avatar Private
    Reputation
    1
    Join Date
    Jul 2012
    Posts
    8
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by thevadar View Post

    IterateActorAtribs($OBject[$i][1],$Atrib_Item_Quality_Level) >= 6

    just does not return anything but False.
    had the same problem, here is my solution

    after $AtribData =_MemoryRead($data+0x4, $d3, 'ptr') there is only an integer in $AtribData.
    so if StringLeft($AtribData,7)="0xFFFFF" Then will fail.
    Maybe there are different Versions of NomadMemory or it is caused by the fix

    if ($sv_type="ptr") and (@OSArch = "X64") Then
    Return BitAnd($v_Value,0xFFFFFFFF)
    Else
    Return $v_Value
    EndIf

    i replaced the line with $AtribData = "0x" & hex(_MemoryRead($data+0x4, $d3, 'ptr'))

    i also replaced the _ArraySearch($__ACTOR,"0x"&hex($_GUID), 0 , 0 , 0 , 1 , 1 , 1) with a call to
    Func SucheItem($id)
    for $jog = 0 to ubound($__ACTOR)-1
    if $__ACTOR[$jog][1] = $id Then
    return $jog
    EndIf
    Next
    return -1
    EndFunc
    but i have to investigate if this is really important.

    Peter

    Edit:
    you can use
    $ACDINDEX = _ArraySearch($__ACTOR, $_GUID, 0, 0, 0, 1, 1, 1)
    In the Array $__ACTOR are in Column 1 integervalues.
    Last edited by peterk; 07-27-2012 at 08:15 PM.

    [AutoIt] Diablo 3 Click To Move, Interaction, Actor Handling. (Version 2)
  2. #197
    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)
    wow thank you really really awesome stuff!!!

    I have encountered a problem: Interacting with NPC/Stash does not always work... at the npcs the trade window only opens around 50% of the time. anyone is aware of this problem and solved it?

    btw someone knows how to use the wps? Opening the wp window is no problem with interacting but the interacting stuff seems not to be used when teleporting

  3. #198
    peterk's Avatar Private
    Reputation
    1
    Join Date
    Jul 2012
    Posts
    8
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    For the wp i have a solution. get the wp-code from Blizzhackers • View topic - [Autoit & MemoryRead] Tool-kit for bots and fix it a little bit.
    InteractByActorName() now use PowerUseGUID instead of clicking, repaired the if conditions (had errors) and use ControlClick to free my mouse. Deleted the buggy UiRatio.
    The Picture for the wp is on the originalversion at blizzhackers

    Resolution must be 800x600

    TakeWP(0, 0, 3, 4) in Act 3 teleport from 3,4 (core of arreat) to 0,0 (the town)


    ;;--------------------------------------------------------------------------------
    ;; InteractByActorName()
    ; Interact with the fist actor we can find that has the string $a_name included
    ; in his name. Returns 1 if actor was found 0 if none.
    ;;--------------------------------------------------------------------------------
    Func InteractByActorName($a_name)
    While 1
    $OBject = IterateObjectList(0)
    $foundobject = 0
    _ArraySort($OBject, 0, 0, 0, 8 )
    For $i = 0 To UBound($OBject, 1) - 1
    If StringInStr($OBject[$i][2], $a_name) Then
    MoveToPosClicky($OBject[$i][3], $OBject[$i][4], $OBject[$i][5])
    Sleep(300)
    PowerUseGUID($OBject[$i][1], 0x7545)
    $foundobject = 1
    Sleep(100)
    ExitLoop 2
    EndIf
    Next
    If $foundobject = 0 Then ExitLoop
    WEnd
    Return $foundobject
    EndFunc ;==>InteractByActorName


    ;;--------------------------------------------------------------------------------
    ;; TakeWP()
    ; Will take nearest waypoint to $tarChapter, $tarNum according to this pic: wp.jpg
    ; It needs to know from witch $curChapter,$curNum your taking the wp.
    ; You may only call this function when your close enough to the wp you want to take.
    ;;--------------------------------------------------------------------------------
    Func TakeWP($tarChapter, $tarNum, $curChapter, $curNum)
    InteractByActorName("Waypoint")
    Sleep(100)
    If $tarChapter <> $curChapter Or ($tarChapter = $curChapter And $tarNum < $curNum) Then
    For $i = 0 To $tarChapter - 1
    clickXY("left", 35,100 + ($i * 12.5)) ; Close chapters
    sleep(100)
    Next
    clickXY("left", 145, 100 + ($tarChapter * 12.5) + 23 + ($tarNum * 32)) ; Click wp
    EndIf
    If $tarChapter = $curChapter And $tarNum > $curNum Then
    For $i = 0 To $tarChapter - 1
    clickXY("left", 35, 100 + ($i * 12.5)) ; Close chapters
    Sleep(100)
    Next
    clickXY("left", 145, 100 + ($tarChapter * 12.5) + 23 + 12 + ($tarNum * 32)) ; Click wp
    EndIf
    Sleep(3000)
    OffsetList()
    EndFunc ;==>TakeWP



    Func clickXY($button, $x, $y)
    if $x < 0 or $x > 799 or $y <0 or $y >599 then return false
    ControlClick("Diablo III", "", 0, $button, 1, $x, $y)
    EndFunc

    Peter


    Edit
    Last edited by peterk; 07-27-2012 at 05:57 PM.

  4. #199
    Bazaku's Avatar Member
    Reputation
    1
    Join Date
    Jul 2012
    Posts
    1
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    So I've figured most of this out.. are there offsets to figure what type of monster an actor is so we can detect elite monsters?

  5. #200
    GnomBG's Avatar Corporal
    Reputation
    1
    Join Date
    Jul 2012
    Posts
    27
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    does anyone know how to get weapon dps in the backpack?

  6. #201
    skumi's Avatar Private
    Reputation
    1
    Join Date
    Jul 2012
    Posts
    10
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Anyone know how to detect invulnerable minions' bubble? just the bubble
    tried Atrib_Damage_Shield, Atrib_Invulnerable, Atrib_God, Atrib_Gethit_Immune, Atrib_Damage_Absorb_Percent .. and everything else .. could not positively identify shielded monsters

    anyone did that ?

  7. #202
    GnomBG's Avatar Corporal
    Reputation
    1
    Join Date
    Jul 2012
    Posts
    27
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by skumi View Post
    Anyone know how to detect invulnerable minions' bubble? just the bubble
    tried Atrib_Damage_Shield, Atrib_Invulnerable, Atrib_God, Atrib_Gethit_Immune, Atrib_Damage_Absorb_Percent .. and everything else .. could not positively identify shielded monsters

    anyone did that ?
    Yes i know how
    its easy
    there you are my function for finding the closest enemy

    Code:
    func GetScreenCoords($_x,$_y,$_z)
       dim $return[3]
       $CurrentLoc = GetCurrentPos()
       $xd = $_x-$CurrentLoc[0]
       $yd = $_y-$CurrentLoc[1]
       $zd = $_z-$CurrentLoc[2]
       $w = -0.515 * $xd + -0.514 * $yd + -0.686 * $zd + 97.985
       $X = (-1.682 * $xd + 1.683 * $yd + 0 * $zd + 7.045e-3) / $w
       $Y = (-1.54 * $xd + -1.539 * $yd + 2.307 * $zd + 6.161) / $w
       $X = ($X + 1) / 2 * 1440
       $Y = (1 - $Y) / 2 * 900
       $Distance = Sqrt($xd*$xd + $yd*$yd + $zd*$zd)	
       $return[0] = Round($X,1)
       $return[1] = Round($Y,1)
       $return[2] = Round($Distance,1)
       
    	return $return
    EndFunc
    
    func FindNearestEnemy()
    	$Enemy = false
    	$LastDistance = 10000
    	$OBject = IterateObjectList(0)
    	_ArraySort($OBject, 0 , 0 , 0 ,8)
    	for  $i = 0 to UBound ( $OBject ,1 )-1
    		if $OBject[$i][7] = 29944 and $OBject[$i][1] <> 0xFFFFFFFF and $OBject[$i][1] <> 0x77BC0000 and $_Const_MonsterType[$Object[$i][11]+1] <> "Ally" Then 
    			;$Invulnerable = IterateActorAtribs($OBject[$i][1] ,$Atrib_Invulnerable)
    			$Coords = GetScreenCoords($Object[$i][3],$Object[$i][4],$Object[$i][5])
    			if $Coords[2]<$LastDistance then
    				$Enemy = $Coords
    				$LastDistance = $Coords[2]	
    			Endif
    		EndIf
    	Next
    
    	return $Enemy
    EndFunc
    you can take any property of the enemy with IterateActorAtribs($OBject[$i][1] ,$Atrib_Invulnerable)

    cheers

  8. #203
    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)
    someone nailed down the ctm struct? I still have troubles to fix the bugs when my charakter gets stuck after a knockback. Another thing is i would like to use ctm without clicking somewhere ingame before i can use it.

  9. #204
    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)
    @sorixx.

    I use this as a makeshift to force mouse click, but like u, I am still with the stuck issue when char is moving and get hit with knockback than char's position is in limbo and gets stuck. Not sure how to fix it too(

    Func GetCurrentPos()
    Dim $return[3]
    $return[0] = _MemoryRead($ClickToMoveCurX, $d3, 'float')
    $return[1] = _MemoryRead($ClickToMoveCurY, $d3, 'float')
    $return[2] = _MemoryRead($ClickToMoveCurZ, $d3, 'float')
    If $return[0] = 0 And $return[1] = 0 And $return[2] = 0 Then
    ClickOnPlayer()
    $return[0] = _MemoryRead($ClickToMoveCurX, $d3, 'float')
    $return[1] = _MemoryRead($ClickToMoveCurY, $d3, 'float')
    $return[2] = _MemoryRead($ClickToMoveCurZ, $d3, 'float')
    EndIf
    Return $return
    EndFunc ;==>GetCurrentPos

    Func ClickOnPlayer() ; Click on player if coords is not registered.
    ;;--------------------------------------------------------------------------------
    ;; WinMove($handle, "", 0, 0, 800, 600) ; We assume using 800x600 window mode
    ControlClick($ActiveWin, "", 0, "middle", 1, 400, 300) ; Centre of screen is half the coords of above 800x600
    Sleep(100)
    EndFunc ;==>ClickOnPlayer

  10. #205
    GnomBG's Avatar Corporal
    Reputation
    1
    Join Date
    Jul 2012
    Posts
    27
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Kizzarse View Post
    @sorixx.

    I use this as a makeshift to force mouse click, but like u, I am still with the stuck issue when char is moving and get hit with knockback than char's position is in limbo and gets stuck. Not sure how to fix it too(

    Func GetCurrentPos()
    Dim $return[3]
    $return[0] = _MemoryRead($ClickToMoveCurX, $d3, 'float')
    $return[1] = _MemoryRead($ClickToMoveCurY, $d3, 'float')
    $return[2] = _MemoryRead($ClickToMoveCurZ, $d3, 'float')
    If $return[0] = 0 And $return[1] = 0 And $return[2] = 0 Then
    ClickOnPlayer()
    $return[0] = _MemoryRead($ClickToMoveCurX, $d3, 'float')
    $return[1] = _MemoryRead($ClickToMoveCurY, $d3, 'float')
    $return[2] = _MemoryRead($ClickToMoveCurZ, $d3, 'float')
    EndIf
    Return $return
    EndFunc ;==>GetCurrentPos

    Func ClickOnPlayer() ; Click on player if coords is not registered.
    ;;--------------------------------------------------------------------------------
    ;; WinMove($handle, "", 0, 0, 800, 600) ; We assume using 800x600 window mode
    ControlClick($ActiveWin, "", 0, "middle", 1, 400, 300) ; Centre of screen is half the coords of above 800x600
    Sleep(100)
    EndFunc ;==>ClickOnPlayer
    Knockback and fear relly **** up the hero position and you have to reset the position by moving the hero. I Just click on 0,0 coords

  11. #206
    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
    @sorixx.

    I use this as a makeshift to force mouse click, but like u, I am still with the stuck issue when char is moving and get hit with knockback than char's position is in limbo and gets stuck. Not sure how to fix it too(

    Func GetCurrentPos()
    Dim $return[3]
    $return[0] = _MemoryRead($ClickToMoveCurX, $d3, 'float')
    $return[1] = _MemoryRead($ClickToMoveCurY, $d3, 'float')
    $return[2] = _MemoryRead($ClickToMoveCurZ, $d3, 'float')
    If $return[0] = 0 And $return[1] = 0 And $return[2] = 0 Then
    ClickOnPlayer()
    $return[0] = _MemoryRead($ClickToMoveCurX, $d3, 'float')
    $return[1] = _MemoryRead($ClickToMoveCurY, $d3, 'float')
    $return[2] = _MemoryRead($ClickToMoveCurZ, $d3, 'float')
    EndIf
    Return $return
    EndFunc ;==>GetCurrentPos

    Func ClickOnPlayer() ; Click on player if coords is not registered.
    ;;--------------------------------------------------------------------------------
    ;; WinMove($handle, "", 0, 0, 800, 600) ; We assume using 800x600 window mode
    ControlClick($ActiveWin, "", 0, "middle", 1, 400, 300) ; Centre of screen is half the coords of above 800x600
    Sleep(100)
    EndFunc ;==>ClickOnPlayer
    Try using MoveTo coordinates, this works for updating the position vector when you vault or click somewhere, I think it would also work for knockback.
    ...
    $return[0] = _MemoryRead($ClickToMoveToX, $d3, 'float')
    $return[1] = _MemoryRead($ClickToMoveToY, $d3, 'float')
    $return[2] = _MemoryRead($ClickToMoveToZ, $d3, 'float')
    ...

  12. #207
    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
    Try using MoveTo coordinates, this works for updating the position vector when you vault or click somewhere, I think it would also work for knockback.
    ...
    $return[0] = _MemoryRead($ClickToMoveToX, $d3, 'float')
    $return[1] = _MemoryRead($ClickToMoveToY, $d3, 'float')
    $return[2] = _MemoryRead($ClickToMoveToZ, $d3, 'float')
    ...
    Well if u use the memory write to move, knockback while char is moving will cause it to freeze in place. My char was frozen in mid air once and I had to leave game and restart game to clear this.

    So far, when u start a game, and start the script, the char position read by the script is zero, until an actually click on the screen by the mouse will register its position to the script. Apparently the actually char position is registered somewhere, but I have no idea where to look. Probably need someone with better grasp to help decipher.

    Using mouse clicks, than u dont have this problem cuz your char will never get an "unknown position"!

  13. #208
    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)
    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.
    Last edited by siklon; 07-31-2012 at 06:10 AM.

  14. #209
    rimmi2002's Avatar Private
    Reputation
    1
    Join Date
    Jun 2012
    Posts
    9
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by GnomBG View Post
    Yes i know how
    its easy
    there you are my function for finding the closest enemy

    Code:
    func GetScreenCoords($_x,$_y,$_z)
       dim $return[3]
       $CurrentLoc = GetCurrentPos()
       $xd = $_x-$CurrentLoc[0]
       $yd = $_y-$CurrentLoc[1]
       $zd = $_z-$CurrentLoc[2]
       $w = -0.515 * $xd + -0.514 * $yd + -0.686 * $zd + 97.985
       $X = (-1.682 * $xd + 1.683 * $yd + 0 * $zd + 7.045e-3) / $w
       $Y = (-1.54 * $xd + -1.539 * $yd + 2.307 * $zd + 6.161) / $w
       $X = ($X + 1) / 2 * 1440
       $Y = (1 - $Y) / 2 * 900
       $Distance = Sqrt($xd*$xd + $yd*$yd + $zd*$zd)	
       $return[0] = Round($X,1)
       $return[1] = Round($Y,1)
       $return[2] = Round($Distance,1)
       
    	return $return
    EndFunc
    
    func FindNearestEnemy()
    	$Enemy = false
    	$LastDistance = 10000
    	$OBject = IterateObjectList(0)
    	_ArraySort($OBject, 0 , 0 , 0 ,8)
    	for  $i = 0 to UBound ( $OBject ,1 )-1
    		if $OBject[$i][7] = 29944 and $OBject[$i][1] <> 0xFFFFFFFF and $OBject[$i][1] <> 0x77BC0000 and $_Const_MonsterType[$Object[$i][11]+1] <> "Ally" Then 
    			;$Invulnerable = IterateActorAtribs($OBject[$i][1] ,$Atrib_Invulnerable)
    			$Coords = GetScreenCoords($Object[$i][3],$Object[$i][4],$Object[$i][5])
    			if $Coords[2]<$LastDistance then
    				$Enemy = $Coords
    				$LastDistance = $Coords[2]	
    			Endif
    		EndIf
    	Next
    
    	return $Enemy
    EndFunc
    you can take any property of the enemy with IterateActorAtribs($OBject[$i][1] ,$Atrib_Invulnerable)

    cheers
    Thanks for sharing the code for finding monsters. This is great. I'll try it out. Just one question. $enemy is an array and is $enemy[0] the xcord and $enemy[1] the y coord of the enemies or do the coordinates need to coverted before using? Thanks.

    Also is the the above code for 1440x900 resolution to switch to 1920x1080 do I just switch the multipliers? Please advise. Thanks

    $X = ($X + 1) / 2 * 1440 --> 1920
    $Y = (1 - $Y) / 2 * 900 --> 1080
    Last edited by rimmi2002; 07-31-2012 at 06:46 PM.

  15. #210
    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)
    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.

    My code is here: [C] AttackNearest - Pastebin.com

    It's pretty simple, It should attack the nearest monster, provide the location of the char, and print the object list to a file. But being that the pointer is 0 non of it is working.

    Any one have any idea what I could be doing wrong, I've been pulling my hair out for 2 days on this!

Page 14 of 21 FirstFirst ... 101112131415161718 ... 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 09:50 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