Guten Tag Liebe AutoIt - Community,
Ich bin erst seit kurzem dabei Autoit zu programmieren und habe mich jetzt an das Memory Coding gemacht. Mein aktuelles Skript, dass ich zum anwenden von erlerntem verwende, hat allerdings einen Fehler, den ich irgendwie nicht in den Griff bekomme. Dabei handelt es sich um eine Statusleiste, die mir aktuelle HP und MP meines Charakters aus Silkroad anzeigt und immer im Vordergrund ist, mehr nicht. Daher denke ich, dass es nicht als Bot zählt. Hier ist erstmal mein Skript:
#include <NomadMemory.au3>
#include <GuiConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
SetPrivilege("SeDebugPrivilege", 1)
[/autoit][autoit][/autoit][autoit]While Not ProcessExists("sro_client.exe")
Sleep(200)
WEnd
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Stat", 325, 90, @DesktopWidth*0.5-162.5, 0, BitOR($WS_MINIMIZEBOX,$WS_SYSMENU,$WS_POPUP,$WS_POPUPWINDOW,$WS_GROUP,$WS_BORDER,$WS_CLIPSIBLINGS))
$Progress1 = GUICtrlCreateProgress(8, 8, 257, 25, $PBS_SMOOTH)
$Progress2 = GUICtrlCreateProgress(8, 40, 257, 25, $PBS_SMOOTH)
$Label1 = GUICtrlCreateLabel("HP", 280, 16, 36, 17)
$Label2 = GUICtrlCreateLabel("MP", 280, 48, 36, 17)
$Label3 = GUICtrlCreateLabel("Mit F11 wird das Programm beendet", 16, 72, 252, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
$Open = _memoryopen(ProcessExists("sro_client.exe"))
$MaxHP = 0x00A01624
$MaxMP = 0x00A01628
$HP_OFFSET = 360
$MP_OFFSET = 354
$HPPOINTER = 0x00A0465C
$MPPOINTER = 0x00A0465C
$ReadMaxHP = _memoryRead($MaxHP,$Open,'dword')
$ReadMaxMP = _memoryRead($MaxMP,$Open,'dword')
HotkeySet("{F11}","Beenden")
while 1
[/autoit][autoit][/autoit][autoit]WinSetOnTop("Stat","",1)
$ReadHP = _memoryRead(_AktuelleHP(),$Open,'dword')
$ReadMP = _memoryRead(_AktuelleMP(),$Open,'dword')
GuiCtrlSetData($Progress1,$ReadHP/$ReadMaxHP*100)
GuiCtrlSetData($Progress2,$ReadMP/$ReadMaxMP*100)
wEnd
[/autoit][autoit][/autoit][autoit][/autoit][autoit]Func Beenden()
Exit
EndFunc
[/autoit][autoit][/autoit][autoit]Func _AktuelleHP()
$Lesen = _MemoryRead($HPPOINTER,$Open,"dword")
$HP = "0x" & Hex($Lesen + $HP_OFFSET)
$Lesen = _MemoryRead($HP,$Open,"dword")
msgbox(1,"",$HP)
Return $Lesen
EndFunc
Func _AktuelleMP()
$Lesen = _MemoryRead($MPPOINTER,$Open,"dword")
$MP = "0x" & Hex($Lesen + $MP_OFFSET)
$Lesen = _MemoryRead($MP,$Open,"dword")
Return $Lesen
EndFunc
Ich habe mir schon per MsgBox die Werte $HP/$MP und den Wert $Lesen aus den Funktionen $AktuelleMP/HP ausgeben lassen, bekam bei $MP/$HP auch den gewünschten Wert (Adresse des Values), bei $Lesen allerdings nur 0. Wäre nett wenn mir jemand helfen könnte.
MFG Benawi