PROCEDURE Data1_TownEnter; ASSEMBLER; {$FRAME-} ASM // Restore default code LEA EAX, [ECX+EDX-$9B] MOV ECX, [$6AAAB8] CMP ECX, EAX // Push all registers PUSHAD // Save to data (в ECX у нас уже хранится нужное число) MOV EAX, [EventParams] MOV [EAX], ECX // Restore all registers POPAD // Return PUSH $5D46D6 END; // .PROCEDURE Data1_TownEnter PROCEDURE HOOK_TownEnter; ASSEMBLER; {$FRAME-} ASM // Restore default code PUSH EBP MOV EBP, ESP PUSH -1 // Push all registers PUSHAD // Move X1 to ERM Как заставить это добро показываться в ERM? !!SN:X?v1; !!IF:M^%V1^; Выдается всякая хрень. 40, 13, 38, 0 - варианты хрени. :-) // Call function PUSH 90001 MOV EAX, $74CE30 CALL EAX ADD ESP, 4 // Restore all registers POPAD // Return PUSH $5C6C75 END; // .PROCEDURE HOOK_TownEnter
VAR EventParams: PEventParams;
Data1: INTEGER;
MOV ECX, [какая-либо нужная фигня] MOV [Data1], ECX
MOV ECX, [Data1] MOV EAX, [EventParams] MOV [EAX], ECX