Well, this is my first bot made in autoit .. so I'm very nooob I've asked for a lot of help here to make it work hahaha ... and well up to now I've achieved a lot of verdd .. but I see that my bot sometimes gets a little heavy: / or every time he works slower or with problems: / ... when using func pause I have to give him several times to grab him and things like that ... sometimes he starts to make my keyboard deconfigure and write in pure capital letters while they are deactivated ... someone could help me optimize it a bit ... And thank you very much :)
#include <NomadMemory.au3>
#include <Array.au3>
#RequireAdmin
SetPrivilege("SeDebugPrivilege", 1)
AutoItSetOption ( "SendKeyDownDelay", 100)
Local $MID, $PROCESSNAME, $PID, $Enemy_X, $Enemy_Y, $Player_X, $Player_Y, $MapX, $MapY, $Monster
Global $Name, $HpMax, $StatusADDR, $MapADDR,$baseADDR
; Variables importantes
;
HotKeySet("{F5}", "_exit")
Global $MonsterBase = 0xCC6E7C ; >> Monster 1 o 0 +4 = X +8 = Y
Global $Monsteroffx = dec("a4")
Global $Monsteroffy = dec("8")
Global $PlayerBase = 0xCC7568 ; >> Nombre + F4
Global $Playeroffx = dec("15")
Global $Playeroffy = dec("16")
Global $MapBase = 0x8DB678
Global $MapXOffset[5] = [dec("B6"), dec("4"), dec("31"), dec("7"), dec("AC")]
Global $MapYOffset[5] = [dec("B1"), dec("4"), dec("31"), dec("7"), dec("aC")]
Global $Status = 0x8C6DEC
Global $NameOffset[4] = [dec("10"), dec("12"), dec("1D"), dec("20")]
Global $HpMaxOffset[2] = [dec("1"), dec("45")]
Global $HpOffset[2] = [dec("5a"), dec("3")]
Func _exit()
Exit 0
EndFunc ;==>_exit
Func _Pause()
Global $Paused
$Paused = NOT $Paused
While $Paused
sleep(500)
ToolTip('Bot is "Paused"',0,0)
WEnd
ToolTip("")
_GetCharacter()
if $Name <> "" and $HpMax <> 00000000 Then
_Farm()
Else
_Start()
EndIf
EndFunc
_Start()
Func _init($processname)
$PROCESSNAME = $processname
WinWait($PROCESSNAME)
WinGetProcess($PROCESSNAME)
WinActivate($PROCESSNAME)
SendKeepActive($PROCESSNAME)
$processName2 = "Game.exe"
$PID = ProcessExists($processName2)
$MID = _MEMORYOPEN($PID)
$baseADDR = _MemoryModuleGetBaseAddress($PID,$processName2)
$MapADDR = _MEMORYREAD($baseADDR + $MapBase, $MID)
$StatusADDR = _MEMORYREAD($baseADDR + $Status, $MID)
EndFunc
Func _Start()
_init("Game")
Sleep(500)
ToolTip("Starting Bot",0,0)
Sleep(1000)
ToolTip("",0,0)
While 1
HotKeySet("{F1}")
HotKeySet("{F2}")
ToolTip("BOT LOADED",0,0)
Sleep(2500)
_GetCharacter()
Global $HpMaxOri
$HpMaxOri = _MEMORYREAD( "0x" & Hex (_MEMORYREAD($StatusADDR + $HpMaxOffset[0], $MID) + $HpMaxOffset[1],8), $MID)
While $Name <> "" and $HpMax <> 00000000
HotKeySet("{F1}", "_Farm")
HotKeySet("{F2}", "_Pause")
ToolTip("Pj: " & $Name & " HpMax: " & $HpMax,0,0)
_GetCharacter()
Sleep(500)
WEnd
WEnd
EndFunc
Func _Farm()
ToolTip("",0,0)
While 1
ToolTip("HP: " & $HpMax,0,0)
If $HpMax > $HpMaxOri * 1.7 Then
EndIf
Send("{TAB}")
Sleep(150)
_Address()
While $Monster
If _Transfor() = 1 Then
_Melee()
Sleep(250)
EndIf
If _Distanc() > 8 and _Distanc() < 24 Then
If _Distanc() < 20 Then
Send("{3}")
Sleep(500)
Send("{4}")
Sleep(500)
_Address()
Send("{5}")
Sleep(150)
_Address()
EndIf
If _Distanc() > 20 Then
Send("{4}")
Sleep(500)
Send("{5}")
Sleep(500)
_Address()
EndIf
EndIf
If _Distanc() < 3.55 Then ;4.7 Then ;< 3.55 Then
Send("{1}")
Sleep(1500)
Send("{2}")
Sleep(2000)
_Address()
EndIf
If _Distanc() < 8 or _Distanc() > 24 Then
$Monster = 0
EndIf
WEnd
WEnd
EndFunc
Func _Test()
While 1
_Address()
Sleep(150)
ToolTip("Distancia " & _Distanc(),0,0)
Sleep(500)
WEnd
EndFunc
Func _Address()
$Monster = _MEMORYREAD($MonsterBase, $MID)
if $Monster = 1 Then
_Transfor()
$Enemy_X= _MEMORYREAD($MonsterBase + $Monsteroffx, $MID, "float")
$Enemy_Y= _MEMORYREAD($MonsterBase + $Monsteroffy, $MID, "float")
$Player_X= _MEMORYREAD("0x" & Hex(_MEMORYREAD($PlayerBase + 4, $MID) + $Playeroffx), $MID, "float")
$Player_Y= _MEMORYREAD("0x" & Hex(_MEMORYREAD($PlayerBase + 4, $MID) + $Playeroffy), $MID, "float")
$MapX = "0x" & Hex(_MEMORYREAD(_MEMORYREAD(_MEMORYREAD(_MEMORYREA D($MapADDR + $MapXOffset[0], $MID) + $MapXOffset[1], $MID) + $MapXOffset[2], $MID) + $MapXOffset[3], $MID) + $MapXOffset[4],8)
$MapY = "0x" & Hex(_MEMORYREAD(_MEMORYREAD(_MEMORYREAD(_MEMORYREA D($MapADDR + $MapYOffset[0], $MID) + $MapYOffset[1], $MID) + $MapYOffset[2], $MID) + $MapYOffset[3], $MID) + $MapYOffset[4],8)
EndIf
EndFunc
Func _GetCharacter()
$StatusADDR = _MEMORYREAD($baseADDR + $Status, $MID)
$Name = _MEMORYREAD( "0x" & Hex (_MEMORYREAD(_MEMORYREAD(_MEMORYREAD($StatusADDR + $NameOffset[0], $MID) + $NameOffset[1], $MID) + $NameOffset[2], $MID) + $NameOffset[3],8), $MID, "Char[16]")
$HpMax = _MEMORYREAD( "0x" & Hex (_MEMORYREAD($StatusADDR + $HpMaxOffset[0], $MID) + $HpMaxOffset[1],8), $MID)
EndFunc
Func _Transfor()
Local $IsTransfor
$HpMax = _MEMORYREAD( "0x" & Hex (_MEMORYREAD($StatusADDR + $HpMaxOffset[0], $MID) + $HpMaxOffset[1],8), $MID)
If $HpMax > $HpMaxOri * 1.7 Then
$IsTransfor = 1
Else
$IsTransfor = 0
EndIf
Return $IsTransfor
EndFunc
Func _Melee()
While _Transfor() = 1
Send("{TAB}")
Sleep(150)
_Address()
If _Distanc() < 3.55 Then ;4.7 Then ;< 3.55 Then
Send("{1}")
Sleep(1500)
Send("{2}")
Sleep(2000)
_Address()
EndIf
If _Distanc() < 8 or _Distanc() > 24 Then
$Monster = 0
EndIf
WEnd
_Farm()
EndFunc
Func _Distanc()
$dy = $Enemy_Y - $Player_Y
$dx = $Enemy_X - $Player_X
return sqrt($dx*$dx + $dy*$dy)
EndFunc
pliss and ty again to all !!
#include <NomadMemory.au3>
#include <Array.au3>
#RequireAdmin
SetPrivilege("SeDebugPrivilege", 1)
AutoItSetOption ( "SendKeyDownDelay", 100)
Local $MID, $PROCESSNAME, $PID, $Enemy_X, $Enemy_Y, $Player_X, $Player_Y, $MapX, $MapY, $Monster
Global $Name, $HpMax, $StatusADDR, $MapADDR,$baseADDR
; Variables importantes
;
HotKeySet("{F5}", "_exit")
Global $MonsterBase = 0xCC6E7C ; >> Monster 1 o 0 +4 = X +8 = Y
Global $Monsteroffx = dec("a4")
Global $Monsteroffy = dec("8")
Global $PlayerBase = 0xCC7568 ; >> Nombre + F4
Global $Playeroffx = dec("15")
Global $Playeroffy = dec("16")
Global $MapBase = 0x8DB678
Global $MapXOffset[5] = [dec("B6"), dec("4"), dec("31"), dec("7"), dec("AC")]
Global $MapYOffset[5] = [dec("B1"), dec("4"), dec("31"), dec("7"), dec("aC")]
Global $Status = 0x8C6DEC
Global $NameOffset[4] = [dec("10"), dec("12"), dec("1D"), dec("20")]
Global $HpMaxOffset[2] = [dec("1"), dec("45")]
Global $HpOffset[2] = [dec("5a"), dec("3")]
Func _exit()
Exit 0
EndFunc ;==>_exit
Func _Pause()
Global $Paused
$Paused = NOT $Paused
While $Paused
sleep(500)
ToolTip('Bot is "Paused"',0,0)
WEnd
ToolTip("")
_GetCharacter()
if $Name <> "" and $HpMax <> 00000000 Then
_Farm()
Else
_Start()
EndIf
EndFunc
_Start()
Func _init($processname)
$PROCESSNAME = $processname
WinWait($PROCESSNAME)
WinGetProcess($PROCESSNAME)
WinActivate($PROCESSNAME)
SendKeepActive($PROCESSNAME)
$processName2 = "Game.exe"
$PID = ProcessExists($processName2)
$MID = _MEMORYOPEN($PID)
$baseADDR = _MemoryModuleGetBaseAddress($PID,$processName2)
$MapADDR = _MEMORYREAD($baseADDR + $MapBase, $MID)
$StatusADDR = _MEMORYREAD($baseADDR + $Status, $MID)
EndFunc
Func _Start()
_init("Game")
Sleep(500)
ToolTip("Starting Bot",0,0)
Sleep(1000)
ToolTip("",0,0)
While 1
HotKeySet("{F1}")
HotKeySet("{F2}")
ToolTip("BOT LOADED",0,0)
Sleep(2500)
_GetCharacter()
Global $HpMaxOri
$HpMaxOri = _MEMORYREAD( "0x" & Hex (_MEMORYREAD($StatusADDR + $HpMaxOffset[0], $MID) + $HpMaxOffset[1],8), $MID)
While $Name <> "" and $HpMax <> 00000000
HotKeySet("{F1}", "_Farm")
HotKeySet("{F2}", "_Pause")
ToolTip("Pj: " & $Name & " HpMax: " & $HpMax,0,0)
_GetCharacter()
Sleep(500)
WEnd
WEnd
EndFunc
Func _Farm()
ToolTip("",0,0)
While 1
ToolTip("HP: " & $HpMax,0,0)
If $HpMax > $HpMaxOri * 1.7 Then
EndIf
Send("{TAB}")
Sleep(150)
_Address()
While $Monster
If _Transfor() = 1 Then
_Melee()
Sleep(250)
EndIf
If _Distanc() > 8 and _Distanc() < 24 Then
If _Distanc() < 20 Then
Send("{3}")
Sleep(500)
Send("{4}")
Sleep(500)
_Address()
Send("{5}")
Sleep(150)
_Address()
EndIf
If _Distanc() > 20 Then
Send("{4}")
Sleep(500)
Send("{5}")
Sleep(500)
_Address()
EndIf
EndIf
If _Distanc() < 3.55 Then ;4.7 Then ;< 3.55 Then
Send("{1}")
Sleep(1500)
Send("{2}")
Sleep(2000)
_Address()
EndIf
If _Distanc() < 8 or _Distanc() > 24 Then
$Monster = 0
EndIf
WEnd
WEnd
EndFunc
Func _Test()
While 1
_Address()
Sleep(150)
ToolTip("Distancia " & _Distanc(),0,0)
Sleep(500)
WEnd
EndFunc
Func _Address()
$Monster = _MEMORYREAD($MonsterBase, $MID)
if $Monster = 1 Then
_Transfor()
$Enemy_X= _MEMORYREAD($MonsterBase + $Monsteroffx, $MID, "float")
$Enemy_Y= _MEMORYREAD($MonsterBase + $Monsteroffy, $MID, "float")
$Player_X= _MEMORYREAD("0x" & Hex(_MEMORYREAD($PlayerBase + 4, $MID) + $Playeroffx), $MID, "float")
$Player_Y= _MEMORYREAD("0x" & Hex(_MEMORYREAD($PlayerBase + 4, $MID) + $Playeroffy), $MID, "float")
$MapX = "0x" & Hex(_MEMORYREAD(_MEMORYREAD(_MEMORYREAD(_MEMORYREA D($MapADDR + $MapXOffset[0], $MID) + $MapXOffset[1], $MID) + $MapXOffset[2], $MID) + $MapXOffset[3], $MID) + $MapXOffset[4],8)
$MapY = "0x" & Hex(_MEMORYREAD(_MEMORYREAD(_MEMORYREAD(_MEMORYREA D($MapADDR + $MapYOffset[0], $MID) + $MapYOffset[1], $MID) + $MapYOffset[2], $MID) + $MapYOffset[3], $MID) + $MapYOffset[4],8)
EndIf
EndFunc
Func _GetCharacter()
$StatusADDR = _MEMORYREAD($baseADDR + $Status, $MID)
$Name = _MEMORYREAD( "0x" & Hex (_MEMORYREAD(_MEMORYREAD(_MEMORYREAD($StatusADDR + $NameOffset[0], $MID) + $NameOffset[1], $MID) + $NameOffset[2], $MID) + $NameOffset[3],8), $MID, "Char[16]")
$HpMax = _MEMORYREAD( "0x" & Hex (_MEMORYREAD($StatusADDR + $HpMaxOffset[0], $MID) + $HpMaxOffset[1],8), $MID)
EndFunc
Func _Transfor()
Local $IsTransfor
$HpMax = _MEMORYREAD( "0x" & Hex (_MEMORYREAD($StatusADDR + $HpMaxOffset[0], $MID) + $HpMaxOffset[1],8), $MID)
If $HpMax > $HpMaxOri * 1.7 Then
$IsTransfor = 1
Else
$IsTransfor = 0
EndIf
Return $IsTransfor
EndFunc
Func _Melee()
While _Transfor() = 1
Send("{TAB}")
Sleep(150)
_Address()
If _Distanc() < 3.55 Then ;4.7 Then ;< 3.55 Then
Send("{1}")
Sleep(1500)
Send("{2}")
Sleep(2000)
_Address()
EndIf
If _Distanc() < 8 or _Distanc() > 24 Then
$Monster = 0
EndIf
WEnd
_Farm()
EndFunc
Func _Distanc()
$dy = $Enemy_Y - $Player_Y
$dx = $Enemy_X - $Player_X
return sqrt($dx*$dx + $dy*$dy)
EndFunc
pliss and ty again to all !!