PROCEDURE HookCode(P: POINTER; NewAddr: POINTER; UseCall: BOOLEAN);
VAR
HookRec: THookRec;
BEGIN
IF UseCall THEN BEGIN HookRec.Opcode:=C_OPCODE_CALL;
END // .if
ELSE BEGIN HookRec.Opcode:=C_OPCODE_JUMP;
END; // .else
HookRec.Ofs:=INTEGER(NewAddr)-INTEGER(P)-C_UNIHOOK_SIZE;
WriteAtCode(P, @HookRec, 5);
END; // .procedure HookCode
BEGIN
HookCode(POINTER($756E3B), @Hook_AfterDamage, C_HOOKTYPE_JUMP);
END.
Добавлено:
Теперь при вызове функции в x1 заносится номер атакующего стека (Upd: на самом деле не правильно заносится.) (его, кстати, нельзя получить в !?MF1;), что, скорее всего, позволит очень сильно упростить скрипт горыныча.
(This post was last modified: 29.10.2010 18:22 by Sav.)