Wake of Gods Forum | Форум Во Имя Богов

Full Version: Исследование героев
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Quote:А вообще, мне не нравится, когда в одной процедуре стоят PUSH'и без POP'ов. Зачем так сделали?
RET всегда идёт в конце асмовской процедуры. PUSH + RET = JMP
PROCEDURE Damage_stack; ASSEMBLER; {$FRAME-}

Приведи вид данной процедуры в отладчике
Code:
код процедуры на асме, указанный в сорцах
RET
Подскажите, пожалуйста, такую вот вещь: в DL кнока с номером 30721 реагирует на нажатие Esc, закрывая окно. Возможно ли сделать так, чтобы кнопка с номером 30720 реагировала так же на Enter?
(21.11.2010 16:54)Berserker Wrote: [ -> ]
Code:
код процедуры на асме, указанный в сорцах
RET

тогда что с esp ?
Вот так выглядит место, где он вызывается:
Code:
.text:0044008E lea     ecx, [ecx+edx+1C4h]
.text:00440095 loc_440095:
.text:00440095 call    loc_3C91070
.text:0044009A loc_44009A:
.text:0044009A mov     esi, eax
Вот как выглядит сам код:
Code:
Damage_s:03C91070 loc_3C91070:
Damage_s:03C91070 mov     eax, ds:dword_890AD8
Damage_s:03C91075 shr     eax, 1Fh
Damage_s:03C91078 test    eax, eax
Damage_s:03C9107A jnz     short loc_3C91085
Damage_s:03C9107C mov     eax, offset sub_4E7230
Damage_s:03C91081 call    eax ; sub_4E7230
Damage_s:03C91083 jmp     short $+2
Damage_s:03C91085
Damage_s:03C91085 loc_3C91085:
Damage_s:03C91085 push    offset loc_44009A
Damage_s:03C9108A retn

Перед вызовом ESP = 0x00228CF0, а после 0x00228CEC.
Выложи dll.
Исходник: (Click to View)
Скомпилированная: удалено за ненадобностью.
ну так блин
call loc_3C91070

C_HOOKTYPE_JUMP
А как это исправить?
Я не умею создавать "каркас" dll - его я тупо скопировал с MoP-овского исходника.

Code:
HookCode(POINTER($440095), @Damage_stack, C_HOOKTYPE_JUMP);
Тут и так C_HOOKTYPE_JUMP. И он равен False, как и в исходниках Эры.
Quote:ну так блин
call loc_3C91070
C_HOOKTYPE_JUMP
Раньше был вызов, а перехват сделан прыжком - всё верно.

Sav, я попробую сейчас в отладчике выяснить.
та нифига перехват сделан call - ом

раньше было
.text:00440095 call sub_4E7230

а стало

call loc_3C91070

почувствуй разницу. откуда в геройской секции такие адреса могут быть?
У меня функция вообще не получает управления. Пробовал обычными монстрами и гидрами хаоса. Как вызвать событие?
Должна вызываться при ударе существа с флагом "бить всех вокруг". У меня при ударе горыныча вызывалась.
Не пойму откуда call взялся. В исходниках вроде все правильно.
Reference URL's