Hallo zusammen,
ich bin aktuell dabei meine ganzen autoit botfunctions in c++ umzusetzen.
aktuell habe ich ein problem mit der memory. das auslesen und schreiben geht generell schon.
Beispielaufruf
Funktion
Das Problem ist, dass ich jetzt einen Pointer benutzen muss.
Der dazu passende Autoit Code ist
Mein Ansatz das jetzt in c++ umzuseten ist
Das Problem ist 1. ich weiß nicht was ich als bitgröße angeben soll... long ist logischerweise falsch. beim aufruf wurde der typ weggelassen, laut nomadmemory.au3 ist der typ dann dword (?). was ja UDINT- 32 bit enspricht ?
und ja... allgemein etwas unsicher bei diesem fall :(
ich bin aktuell dabei meine ganzen autoit botfunctions in c++ umzusetzen.
aktuell habe ich ein problem mit der memory. das auslesen und schreiben geht generell schon.
Beispielaufruf
Code:
m_objFenster.MemoryRead(adr_death, sizeof(int));
Code:
int Window::MemoryRead(unsigned adress, short size) {
int value;
ReadProcessMemory(m_processHandle, (LPCVOID)adress, &value, size, NULL);
return value;
}
Der dazu passende Autoit Code ist
Code:
Func HPEP ()
Local $adr_HPEP = IniRead("Memory.ini", "CHAR", "HP_EP", "")
Local $mem_p = _MemoryRead(_MemoryRead($adr_HPEP, $hprocess) +0x104, $hprocess)
Local $HPEP[2][2]
$HPEP[0][1] = _MemoryRead($mem_p + 0x2C, $hprocess) ; HP MAX
$HPEP[1][1] = _MemoryRead($mem_p + 0x18, $hprocess) ; EP MAX
; relativ zu absolut
$HPEP[0][0] = Floor($HPEP[0][1] * _MemoryRead($mem_p + 0x28, $hprocess, "float")) ; HP CUR
$HPEP[1][0] = Floor($HPEP[1][1] * _MemoryRead($mem_p + 0x14, $hprocess, "float")) ; EP CUR
Return $HPEP
EndFunc
Code:
unsigned Character::HPEP() {
unsigned adr_HPEP = 0x_____;
unsigned pointer = m_objFenster.MemoryRead(adr_HPEP, sizeof(long));
pointer = m_objFenster.MemoryRead(pointer + 0x104, sizeof(long));
return pointer;
}
int Character::GetHP() {
unsigned pointer = Character::HPEP();
int max = m_objFenster.MemoryRead(pointer + 0x2C, sizeof(int));
int cur = m_objFenster.MemoryRead(pointer + 0x28, sizeof(float)) *max;
cur = floor(cur);
return cur;
}
int Character::GetEP() {
unsigned pointer = Character::HPEP();
int max = m_objFenster.MemoryRead(pointer + 0x18, sizeof(int));
int cur = m_objFenster.MemoryRead(pointer + 0x14, sizeof(float)) *max;
cur = floor(cur);
return cur;
}
und ja... allgemein etwas unsicher bei diesem fall :(