dragonkid1102 (07-23-2015),Louky (07-24-2015),nilotaviano (07-23-2015),Raffy (07-25-2015)
0097E114 is the new adress
if u have totally no idea where to put it then copy this press F11 to activate it
#WinActivateForce
F11::
WinGet, pidn, PID, A
pid := pidn
WinGet, hwnds, ID, A
Handle := hwnds
;InputBox, Lure, Lure's, How many Lure's do you have in inventory
Lure := 9999
Base := getProcessBaseAddress()
WaterAddress := GetAddressWater(Base,0x0097E114)
Loop %Lure%
{
ControlSend, , {c down}, ahk_pid %pid%
Sleep, 86
ControlSend, , {c up}, ahk_pid %pid%
Sleep, 1000
ControlSend, , {f down}, ahk_pid %pid%
Sleep, 86
ControlSend, , {f up}, ahk_pid %pid%
Sleep, 2000
CaughtWater := ReadMemory(WaterAddress)
Timer := 0
While Timer = 0
{
Loop
{
If (CaughtWater = 1)
{
Break
}
if Timer = 40
{
ControlSend, , {f down}, ahk_pid %pid%
Sleep, 86
ControlSend, , {f up}, ahk_pid %pid%
Break
}
Sleep, 1000
CaughtWater := ReadMemory(WaterAddress)
Timer := Timer + 1
}
}
Timer := 0
ControlSend, , {f down}, ahk_pid %pid%
Sleep, 86
ControlSend, , {f up}, ahk_pid %pid%
Sleep, 2000
}
ExitApp
Numpad7::
ExitApp
getProcessBaseAddress()
{
Global Handle
return DllCall( A_PtrSize = 4
? "GetWindowLong"
: "GetWindowLongPtr"
, "Ptr", Handle
, "Int", -6
, "Int64") ; Use Int64 to prevent negative overflow when AHK is 32 bit and target process is 64bit
; If DLL call fails, returned value will = 0
}
GetAddressWater(Base, Address)
{
pointerBase := base + Address
y1 := ReadMemory(pointerBase)
y2 := ReadMemory(y1 + 0x144)
y3 := ReadMemory(y2 + 0xe4)
Return WaterAddress := (y3 + 0x70)
}
ReadMemory(MADDRESS)
{
Global pid
VarSetCapacity(MVALUE,4,0)
ProcessHandle := DllCall("OpenProcess", "Int", 24, "Char", 0, "UInt", pid, "UInt")
;DllCall("ReadProcessMemory","UInt",ProcessHandle, "UInt",MADDRESS,"Str",MVALUE,"UInt",4,"UInt *",0)
DllCall("ReadProcessMemory", "UInt", ProcessHandle, "Ptr", MADDRESS, "Ptr", &MVALUE, "Uint",4)
Loop 4
result += *(&MVALUE + A_Index-1) << 8*(A_Index-1)
return, result
}
PS: this script only work for water.
Last edited by PASHMINAL1; 07-23-2015 at 08:56 PM. Reason: for PS
dragonkid1102 (07-23-2015),Louky (07-24-2015),nilotaviano (07-23-2015),Raffy (07-25-2015)
Testing it now.
Edit: Confirmed working for water, updated the pointer on my script. Still not working for Lava and Choco.
Ctrl + j to start it, ctrl + k to stop.
Code:#WinActivateForce ^j:: shouldRun = 1 if !setupDone { WinGet, pidn, PID, A pid := pidn WinGet, hwnds, ID, A Handle := hwnds Base := getProcessBaseAddress() WaterAddress := GetAddressWater(Base,0x0097E114) LavaAddress := GetAddressLava(Base,0x00964208) ChocoAddress := GetAddressChoco(Base,0x00964208) setupDone = 1 } Loop { if shouldRun { ControlSend, , {c down}, ahk_pid %pid% Sleep, 86 ControlSend, , {c up}, ahk_pid %pid% Sleep, 500 ControlSend, , {f down}, ahk_pid %pid% Sleep, 86 ControlSend, , {f up}, ahk_pid %pid% Catch := 0 PoleCheck := 40 While Catch = 0 { If (PoleCheckN = PoleCheck) { ControlSend, , {f down}, ahk_pid %pid% Sleep, 86 ControlSend, , {f up}, ahk_pid %pid% } CaughtWater := ReadMemory(WaterAddress) CaughtLava := ReadMemory(LavaAddress) CaughtChoco := ReadMemory(ChocoAddress) If (CaughtWater = 1 or CaughtLava = 1 or CaughtChoco = 1) { ControlSend, , {f down}, ahk_pid %pid% Sleep, 86 ControlSend, , {f up}, ahk_pid %pid% Random, Wait, 2000, 3500 Sleep, %Wait% Catch := 1 } else { PoleCheckN := PoleCheckN +1 Sleep, 1000 } FindAndDropBoots() } } else { Return } } Return GetAddressWater(Base, Address) { pointerBase := base + Address y1 := ReadMemory(pointerBase) y2 := ReadMemory(y1 + 0x144) y3 := ReadMemory(y2 + 0xe4) Return WaterAddress := (y3 + 0x70) } GetAddressLava(Base, Address) { pointerBase := base + Address y1 := ReadMemory(pointerBase) y2 := ReadMemory(y1 + 0x144) y3 := ReadMemory(y2 + 0xe4) Return LavaAddress := (y3 + 0x514) } GetAddressChoco(Base, Address) { pointerBase := base + Address y1 := ReadMemory(pointerBase) y2 := ReadMemory(y1 + 0x144) y3 := ReadMemory(y2 + 0xe4) Return ChocoAddress := (y3 + 0x2c0) } getProcessBaseAddress() { Global Handle return DllCall( A_PtrSize = 4 ? "GetWindowLong" : "GetWindowLongPtr" , "Ptr", Handle , "Int", -6 , "Int64") ; Use Int64 to prevent negative overflow when AHK is 32 bit and target process is 64bit ; If DLL call fails, returned value will = 0 } ReadMemory(MADDRESS) { Global pid VarSetCapacity(MVALUE,4,0) ProcessHandle := DllCall("OpenProcess", "Int", 24, "Char", 0, "UInt", pid, "UInt") ;DllCall("ReadProcessMemory","UInt",ProcessHandle, "UInt",MADDRESS,"Str",MVALUE,"UInt",4,"UInt *",0) DllCall("ReadProcessMemory", "UInt", ProcessHandle, "Ptr", MADDRESS, "Ptr", &MVALUE, "Uint",4) Loop 4 result += *(&MVALUE + A_Index-1) << 8*(A_Index-1) return, result } FindAndDropBoots() { Imagesearch, Foundx, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, *50 c:\boot.bmp While errorlevel = 0 { MouseClickDrag, Left, %FoundX%, %FoundY%, 779, 412 Imagesearch, Foundx, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, *50 c:\boot.bmp } } ^k:: shouldRun = 0 Return
Last edited by nilotaviano; 07-23-2015 at 08:59 PM.
Thanks for this, works prefectly
I used this fish script with throw boots
#WinActivateForce
^j::
shouldRun = 1
if !setupDone
{
WinGet, pidn, PID, A
pid := pidn
WinGet, hwnds, ID, A
Handle := hwnds
Base := getProcessBaseAddress()
WaterAddress := GetAddressWater(Base,0x00964208)
LavaAddress := GetAddressLava(Base,0x00964208)
ChocoAddress := GetAddressChoco(Base,0x00964208)
setupDone = 1
}
Loop
{
if shouldRun
{
ControlSend, , {c down}, ahk_pid %pid%
Sleep, 86
ControlSend, , {c up}, ahk_pid %pid%
Sleep, 500
ControlSend, , {f down}, ahk_pid %pid%
Sleep, 86
ControlSend, , {f up}, ahk_pid %pid%
Catch := 0
PoleCheck := 40
While Catch = 0
{
If (PoleCheckN = PoleCheck)
{
ControlSend, , {f down}, ahk_pid %pid%
Sleep, 86
ControlSend, , {f up}, ahk_pid %pid%
}
CaughtWater := ReadMemory(WaterAddress)
CaughtLava := ReadMemory(LavaAddress)
CaughtChoco := ReadMemory(ChocoAddress)
If (CaughtWater = 1 or CaughtLava = 1 or CaughtChoco = 1)
{
ControlSend, , {f down}, ahk_pid %pid%
Sleep, 86
ControlSend, , {f up}, ahk_pid %pid%
Random, Wait, 2000, 3500
Sleep, %Wait%
Catch := 1
}
else
{
PoleCheckN := PoleCheckN +1
Sleep, 1000
}
FindAndDropBoots()
}
}
else
{
Return
}
}
Return
GetAddressWater(Base, Address)
{
pointerBase := base + Address
y1 := ReadMemory(pointerBase)
y2 := ReadMemory(y1 + 0x144)
y3 := ReadMemory(y2 + 0xe4)
Return WaterAddress := (y3 + 0x70)
}
GetAddressLava(Base, Address)
{
pointerBase := base + Address
y1 := ReadMemory(pointerBase)
y2 := ReadMemory(y1 + 0x144)
y3 := ReadMemory(y2 + 0xe4)
Return LavaAddress := (y3 + 0x514)
}
GetAddressChoco(Base, Address)
{
pointerBase := base + Address
y1 := ReadMemory(pointerBase)
y2 := ReadMemory(y1 + 0x144)
y3 := ReadMemory(y2 + 0xe4)
Return ChocoAddress := (y3 + 0x2c0)
}
getProcessBaseAddress()
{
Global Handle
return DllCall( A_PtrSize = 4
? "GetWindowLong"
: "GetWindowLongPtr"
, "Ptr", Handle
, "Int", -6
, "Int64") ; Use Int64 to prevent negative overflow when AHK is 32 bit and target process is 64bit
; If DLL call fails, returned value will = 0
}
ReadMemory(MADDRESS)
{
Global pid
VarSetCapacity(MVALUE,4,0)
ProcessHandle := DllCall("OpenProcess", "Int", 24, "Char", 0, "UInt", pid, "UInt")
;DllCall("ReadProcessMemory","UInt",ProcessHandle, "UInt",MADDRESS,"Str",MVALUE,"UInt",4,"UInt *",0)
DllCall("ReadProcessMemory", "UInt", ProcessHandle, "Ptr", MADDRESS, "Ptr", &MVALUE, "Uint",4)
Loop 4
result += *(&MVALUE + A_Index-1) << 8*(A_Index-1)
return, result
}
FindAndDropBoots()
{
Imagesearch, Foundx, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, *50 c:\boot.bmp
While errorlevel = 0
{
MouseClickDrag, Left, %FoundX%, %FoundY%, 779, 412
Imagesearch, Foundx, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, *50 c:\boot.bmp
}
}
^k::
shouldRun = 0
Return
-------
Where i put this new line ?
Thanks
why does the bot open the character menu? what information does it gain by pressing C
JohnTGM (07-23-2015),nilotaviano (07-23-2015)
Just tried that, but yes, they need different pointers.
EDIT:
Nevermind that, it works!
They just use different offsets, but the base address is the same.
Code:
Code:#WinActivateForce ^j:: shouldRun = 1 if !setupDone { WinGet, pidn, PID, A pid := pidn WinGet, hwnds, ID, A Handle := hwnds Base := getProcessBaseAddress() WaterAddress := GetAddressWater(Base,0x0097E114) LavaAddress := GetAddressLava(Base,0x0097E114) ChocoAddress := GetAddressChoco(Base,0x0097E114) setupDone = 1 } Loop { if shouldRun { ControlSend, , {c down}, ahk_pid %pid% Sleep, 86 ControlSend, , {c up}, ahk_pid %pid% Sleep, 500 ControlSend, , {f down}, ahk_pid %pid% Sleep, 86 ControlSend, , {f up}, ahk_pid %pid% Catch := 0 PoleCheck := 40 While Catch = 0 { If (PoleCheckN = PoleCheck) { ControlSend, , {f down}, ahk_pid %pid% Sleep, 86 ControlSend, , {f up}, ahk_pid %pid% } CaughtWater := ReadMemory(WaterAddress) CaughtLava := ReadMemory(LavaAddress) CaughtChoco := ReadMemory(ChocoAddress) If (CaughtWater = 1 or CaughtLava = 1 or CaughtChoco = 1) { ControlSend, , {f down}, ahk_pid %pid% Sleep, 86 ControlSend, , {f up}, ahk_pid %pid% Random, Wait, 2000, 3500 Sleep, %Wait% Catch := 1 } else { PoleCheckN := PoleCheckN +1 Sleep, 1000 } FindAndDropBoots() } } else { Return } } Return GetAddressWater(Base, Address) { pointerBase := base + Address y1 := ReadMemory(pointerBase) y2 := ReadMemory(y1 + 0x144) y3 := ReadMemory(y2 + 0xe4) Return WaterAddress := (y3 + 0x70) } GetAddressLava(Base, Address) { pointerBase := base + Address y1 := ReadMemory(pointerBase) y2 := ReadMemory(y1 + 0x144) y3 := ReadMemory(y2 + 0xe4) Return LavaAddress := (y3 + 0x514) } GetAddressChoco(Base, Address) { pointerBase := base + Address y1 := ReadMemory(pointerBase) y2 := ReadMemory(y1 + 0x144) y3 := ReadMemory(y2 + 0xe4) Return ChocoAddress := (y3 + 0x2c0) } getProcessBaseAddress() { Global Handle return DllCall( A_PtrSize = 4 ? "GetWindowLong" : "GetWindowLongPtr" , "Ptr", Handle , "Int", -6 , "Int64") ; Use Int64 to prevent negative overflow when AHK is 32 bit and target process is 64bit ; If DLL call fails, returned value will = 0 } ReadMemory(MADDRESS) { Global pid VarSetCapacity(MVALUE,4,0) ProcessHandle := DllCall("OpenProcess", "Int", 24, "Char", 0, "UInt", pid, "UInt") ;DllCall("ReadProcessMemory","UInt",ProcessHandle, "UInt",MADDRESS,"Str",MVALUE,"UInt",4,"UInt *",0) DllCall("ReadProcessMemory", "UInt", ProcessHandle, "Ptr", MADDRESS, "Ptr", &MVALUE, "Uint",4) Loop 4 result += *(&MVALUE + A_Index-1) << 8*(A_Index-1) return, result } FindAndDropBoots() { Imagesearch, Foundx, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, *50 c:\boot.bmp While errorlevel = 0 { MouseClickDrag, Left, %FoundX%, %FoundY%, 779, 412 Imagesearch, Foundx, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, *50 c:\boot.bmp } } ^k:: shouldRun = 0 Return
Last edited by nilotaviano; 07-23-2015 at 09:37 PM.
JohnTGM (07-23-2015)
which script should i use?
and what numpad to do that?
Can you please add throw boots in there too?!
Same with me, Currently is not working after Patch!