Hallo, ich brauche hilfe bei einem CE-Script an dem ich grade schreibe, es soll im Charakterbildschirm erkennen welchen Charakter ich ausgewählt habe und direkt die ersten 4 Buchstaben des Namens hernehmen und in "00A420E4" einfüllen.
Das Problem ist das das Script Dekaron zum absturz bringt.
Hier erstmal das Script:
//Startscript
[ENABLE]
alloc(newmem2,1024)
label(returnhere1)
label(originalcode1)
label(exit1)
0040172C:
jmp newmem2
returnhere1:
newmem2:
push ebx //Variablen speichern
push eax
push ecx
mov ebx,00A420E4 //Adressen laden
mov eax,[edi-16] //[edi-16]=Name des ausgewählten Charakters
mov ecx,[eax] //1. Byte kopieren
mov [ebx],ecx //einfügen
mov ecx,[eax+04] //2. Byte kopieren
mov [ebx+04],ecx //einfügen...
mov ecx,[eax+08] //usw...
mov [ebx+08],ecx
mov ecx,[eax+0C] //usw...
mov [ebx+0C],ecx
pop ecx //variablen wieder überschreiben
pop eax
pop ebx
originalcode1:
shr ecx,02
exit1:
jmp returnhere1
[DISABLE]
0040172C:
shr ecx,02
dealloc(newmem2)
//Endscript
Die Adresse an der das ganze einsetzt wird aufgerufen wenn ich einen anderen Charakter auswähle.
Ich hab auch mehrmals [EDI-16] überprüft und es steht auch immer der Name des akktuellen Charakters drin.
Ich habe Assembler bis jetzt nur ein wenig in der Schule durchgenommen und habe mir viele AutoAssembler-scripts durchgesehen um sicherzugehen das ich alles verstanden habe. Ich bin ratlos, kann mir irgendjemand weiterhelfen?
Vielen Dank im voraus!!
Das Problem ist das das Script Dekaron zum absturz bringt.
Hier erstmal das Script:
//Startscript
[ENABLE]
alloc(newmem2,1024)
label(returnhere1)
label(originalcode1)
label(exit1)
0040172C:
jmp newmem2
returnhere1:
newmem2:
push ebx //Variablen speichern
push eax
push ecx
mov ebx,00A420E4 //Adressen laden
mov eax,[edi-16] //[edi-16]=Name des ausgewählten Charakters
mov ecx,[eax] //1. Byte kopieren
mov [ebx],ecx //einfügen
mov ecx,[eax+04] //2. Byte kopieren
mov [ebx+04],ecx //einfügen...
mov ecx,[eax+08] //usw...
mov [ebx+08],ecx
mov ecx,[eax+0C] //usw...
mov [ebx+0C],ecx
pop ecx //variablen wieder überschreiben
pop eax
pop ebx
originalcode1:
shr ecx,02
exit1:
jmp returnhere1
[DISABLE]
0040172C:
shr ecx,02
dealloc(newmem2)
//Endscript
Die Adresse an der das ganze einsetzt wird aufgerufen wenn ich einen anderen Charakter auswähle.
Ich hab auch mehrmals [EDI-16] überprüft und es steht auch immer der Name des akktuellen Charakters drin.
Ich habe Assembler bis jetzt nur ein wenig in der Schule durchgenommen und habe mir viele AutoAssembler-scripts durchgesehen um sicherzugehen das ich alles verstanden habe. Ich bin ratlos, kann mir irgendjemand weiterhelfen?
Vielen Dank im voraus!!