Hallo zusammen, habe folgenden Code gefunden:
ReadMemory(MADDRESS,PROGRAM)
{
winget, pid, PID, %PROGRAM%
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)
Loop 4
result += *(&MVALUE + A_Index-1) << 8*(A_Index-1)
return, result
}
ReadMemoryFloat(MADDRESS=0,PROGRAM="")
{
Static OLDPROC, ProcessHandle
VarSetCapacity(MVALUE,4,0)
If PROGRAM != %OLDPROC%
{
WinGet, pid, pid, % OLDPROC := PROGRAM
ProcessHandle := ( ProcessHandle ? 0*(closed:=DllCall("CloseHandle"
,"UInt",ProcessHandle)) : 0 )+(pid ? DllCall("OpenProcess"
,"Int",2035711,"Int",0,"UInt",pid) : 0)
}
If (ProcessHandle) && DllCall("ReadProcessMemory","UInt"
,ProcessHandle,"UInt",MADDRESS,"Str",MVALUE,"UInt",4,"UInt *",0)
{
MVALUE := *(&MVALUE+3)<<24 | *(&MVALUE+2)<<16 | *(&MVALUE+1)<<8 | *(&MVALUE)
return (1-2*(MVALUE>>31)) * (2**((MVALUE>>23 & 255)-127)) * (1+(MVALUE & 8388607)/8388608)
}
return !ProcessHandle ? "Handle Closed: " closed : "Fail"
}
1::
pointer:=ReadMemory(0x00B6F5F0,"GTA:SA:MP")
Health:=ReadMemoryFloat(pointer+1344,"GTA:SA:MP")
Armor:=ReadMemoryFloat(pointer+1352,"GTA:SA:MP")
SendInput tIch habe noch %Health% HP & %Armor% Rüstung{Enter}
Return
Mein Problem ist, dieser funktioniert nicht richtig.
Im Chat steht nacher dort wo die HP stehen sollen immer 00.000000 obwohl ich irgendwie 90HP habe.
Woran könnte das Liegen?
Habe das Betriebssystem Windows 8
Freundlicher Gruss
Black_Mamba