I'm new at this and i'm trying to learn, but i'm having difficulty understanding this. Do i include your script in myn and call the functions i wish to use or how do i go about using this?
I'm new at this and i'm trying to learn, but i'm having difficulty understanding this. Do i include your script in myn and call the functions i wish to use or how do i go about using this?
Dang I really enjoyed this project but it seems like unknowned has stopped supporting it. If anybody has any suggestions on how to get it working again. I have followed the instructions to change the offsets and have done so but still getting this error:
-----Looking for local player------
C:\Users\Don\My Projects\Diablo 3\Automations\includes\UDF_Lib.au3 (232) : ==> Variable used without being declared.:
_MemoryWrite($ClickToMoveToX , $d3,$_x, 'float')
_MemoryWrite(^ ERROR
>Exit code: 1 Time: 10.314
Seems like LocateMyToon is failing and therefor never setting those global variables. Any help please!?
@goodies4uall
I have this problem 2,
i can't run it in scite, so i have to Compile it x86 und run the exe,
then i don't get these error's. If you have a solution for this send me a PM, always compiling the script to test is very stupid.
Hi all,
Fairly new to this but managed to get something up and running.
This is my slightly modified function. I had a couple of questions if someone would be kind enought to help out.while 1
;ConsoleWrite("Entering loop")
while 1
$OBject = IterateObjectList(0)
$foundobject = 0
_ArraySort($OBject, 0 , 0 , 0 ,
for $i = 0 to UBound ( $OBject ,1 )-1
if $OBject[$i][6] = 2 and $OBject[$i][7] = -1 and $OBject[$i][1] <> 0xFFFFFFFF or StringInStr($OBject[$i][2],"GoldCoins") Then ;checking for loot and goldcoins
ConsoleWrite("Something there")
if IterateActorAtribs($OBject[$i][1],$Atrib_Item_Quality_Level) >= 1 or StringInStr($OBject[$i][2],"GoldCoins") Then ;lets check if they are rare or better, and ignore if its goldcoins.
$Alert_Rare = 1
;PowerUseGUID($OBject[$i][1],0x7545)
;$foundobject = 1
ConsoleWrite("Found")
;ExitLoop
EndIf
EndIf
Next
if $foundobject = 0 then ExitLoop
wend
;ConsoleWrite("Leaving loop")
wend
1) I can drop a rare on the floor and the script will enter/pass the "Something there" statement. But if I get to far away from the item it throws an error.
I don't really understand what is happening here?Something thereSomething thereSomething thereC:\Users\VADAR\Dropbox\Private\D3 Alert\D3alert.au3 (397) : ==> Array variable subscript badly formatted.:
if $ACTORatrib = $__ACTOR[$ACDIndex][3] Then
if $ACTORatrib = $__ACTOR[^ ERROR
>Exit code: 1 Time: 32.652
2) Why does the second If statement fail everytime?
Thanks for any help
Cheers
How do you deal with MoveToPos not working if you haven't moved in the game so far? I know your position in the ActorMovement struct gets written to as soon as you move anywhere with the mouse, but that kinda defeats the purpose of moving this way.
Look a bit more into the CTM structure and you will find what you need to change to make it work without having to use the mouse to begin with. The same goes for the 100% stuck bug.
At the time i wrote this i was a bit too lazy to reverse it completely, but now i got almost all of it nailed down.
Its actually quite simple.
So I have been digging hard to try understand my problem, but I think I need help.
I am trying to get a Item quality of items dropped on the ground. But IterateActorAtribs($OBject[$i][1],$Atrib_Item_Quality_Level) >= 6 seems to return false everytime indicating the Atrib_Item_Quality_Level doesn't exist?
Someone in another thread confirmed it existed at 0x127 so my declaration of the constant
global $Atrib_Item_Quality_Level1[2] = [0x127,"int"]
should be accurate?
Can someone please give me some leads here?
The sample script for looting should work as-is..
Sent from my GT-I9300 using Tapatalk 2
UnknOwed, you manage to find a way around the really really annoying BitShift(x, y) issue in AutoIT ?
BitShift, in AutoIT uses Signed integer, and passing in an unsigned one, does not produce the expected result
i.e.
Code:(ulong) 18446744073709551615 >> 32 != BitShift(18446744073709551615, 32)
Last edited by Thaelion; 07-16-2012 at 02:20 AM.
According to the BitShift documentation the bit operations are performed on a 32 bit integer which is about 4.3b if unsigned, your number is quite a bit bigger.
Well the MoveToPos bug is annoying especially against mobs that does knockback than u get stuck and frozen and cant move or do anything unless u get feared and another knowback and a quick click using your mouse and u get out of this bug. Another way is to just use mouse clicks to move instead of memory writes.
Modified the following from the various sources of this excellent community. Unkn0wned, voxatu, Opkllhibus, Leo11173 & the RE community works
But I hope to use the memory writes to so I can run script without having active window.
;;--------------------------------------------------------------------------------
Func MoveToPosClicky($_x, $_y, $_z)
;;--------------------------------------------------------------------------------
WinActivate("Diablo III")
$size = WinGetClientSize("Diablo III")
$resolutionX = $size[0]
$resolutionY = $size[1]
$aspectChange = ($resolutionX / $resolutionY) / (800 / 600)
$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 * 800
$Y = (1 - $Y) / 2 * 600
$X /= $aspectChange
While Abs($X) >= 1 Or Abs($Y) >= 1 Or $Z <= 0
; specified point is not on screen
$xd = $xd / 2
$yd = $yd / 2
$zd = $zd / 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
$Z = (-0.515 * $xd + - 0.514 * $yd + - 0.686 * $zd + 97.002) / $w
$X /= $aspectChange
WEnd
Dim $x_Coord = ($X + 1) / 2 * $resolutionX
Dim $y_Coord = (1 - $Y) / 2 * $resolutionY
MouseClick("middle", $x_Coord, $y_Coord, 1, 10)
EndFunc ;==>MoveToPosClicky
I just double checked everything.
The script doesn't seem to work as is for items. It will pick up gold fine (it crashes with an error sometimes but it works most of the time).
I tested this with unidentified and identified rares, as well as fresh rares that just dropped from a mob.
Does anyone have a working example for detecting rares on the ground?