Habe extra jede Zeile kommentiert(Ehrlich jetzt, jede Zeile)
[ENABLE]
alloc(Hase, 2048, "tutorial-x86_64.exe"+4D213) Fügt die Bezeichnung Hase hinzu. 2048 Bytes werden reserviert für den Code des AA Scripts. Der exakte Prozessname ist tutorial-x86_64.exe"+4D213
label(Gans) Fügt die Bezeichnung Gans hinzu...
label(Ente) Ebenfalls eine Bezeichnung
label(Huhn) ....
label(Fuchs) ...
Hase: Bindet die Bezeichnung Hase in den Code ein
cmp rax, EnteLeben prüft ob sich EnteLeben im rax Register befindet
je Ente Wenn rax mit 0160ABB0 übereinstimmt springt es zu Ente weiter
Huhn: Bindet die Bezeichnung Huhn in den Code ein
mov ecx, [rax+60] verschiebt das Register [rax+60] in Register ecx
cmp ecx, 1 Überprüft ob sich im Register ecx der Wert 1 befindet
jle Schaden Springt zu Fuchs, wenn sich im Register ecx der Wert 1 oder niedriger befindet
mov [rax+60], 1 Verschiebt den Wert 1 in Register [rax+60]. Dies trifft nur zu, wenn sich im Register ecx der Wert 2 oder höher befindet(Weil ansonsten direkt zu Fuchs gesprungen wird
Fuchs: Bindet die Bezeichnung Fuchs in den Code ein
sub [rax+60], edx Originaler Code der Schaden verursacht
jmp Gans Hier endet der Code für den Gegner und es wird zu Gans: gesprungen. Ansonsten würde es sich mit den weiteren Code von Ente: vermischen.
Ente: Bindet die Bezeichnung Ente in den Code ein
add [rax+60], 1 Spieler erhält pro Treffer 1 Lebenspunkt. Alles über Spieler: und unter Gegner: wird ignoriert., wegen der je Anweisung.
jmp Gans Hier endet der Code für den Spieler und es wird zu Gans: gesprungen. Ansonsten vermischt er sich mit den Gans: Code
EnteLeben: Bindet die Bezeichnung EnteLeben in den Code ein
dq 0160ABB0 EnteLeben hat die Adresse 0160ABB0 Erspart das ständige abtippen der Adresse, indem man einfach die Bezeichnung EnteLeben verwendet. Eignet sich auch gut für Pointer Adressen
"tutorial-x86_64.exe"+4D213:
jmp Hase Springt zu alloc(Hase, 2048, "tutorial-x86_64.exe"+4D213) und arbeitet sich runter Zeile für Zeile
nop Die übrigen Bytes werden durch eine leere Anweisung ersetzt
Gans: Das ist das Ende vom Script. Danach läuft das Spiel ganz normal weiter
[DISABLE] Solange das Script aktiviert ist, werden die unteren Zeilen ignoriert. Das dient nur dazu, falls man das Script deaktiviert, damit der ursprüngliche Code wieder benutzt werden kann. Ansonsten wird das Spiel abstürzen.
"tutorial-x86_64.exe"+4D213:
sub [rax+60], edx Hier steht der Originale Code, der jetzt deaktiviert ist.
dealloc(Hase) Ist ebenfalls solange deaktiviert, bis man dass Script deaktiviert. Es gibt den ursprünglichen Speicherplatz wieder frei, der für das geschriebene Script verwendet wurde