Current time: 29.11.2024, 01:35 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Исследование героев
» туториал(ы)
Author Message
Berserker Offline
Administrators

Posts: 16657
Post: #226

Quote:А вообще, мне не нравится, когда в одной процедуре стоят PUSH'и без POP'ов. Зачем так сделали?
RET всегда идёт в конце асмовской процедуры. PUSH + RET = JMP


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
21.11.2010 15:26
Find all posts by this user Quote this message in a reply
Дьякон Offline

Posts: 395
Post: #227

PROCEDURE Damage_stack; ASSEMBLER; {$FRAME-}

Приведи вид данной процедуры в отладчике


Страус труп (с) Бьерн
21.11.2010 16:17
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #228

Code:
код процедуры на асме, указанный в сорцах
RET


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
21.11.2010 16:54
Find all posts by this user Quote this message in a reply
GhostManSD Offline

Posts: 1054
Post: #229

Подскажите, пожалуйста, такую вот вещь: в DL кнока с номером 30721 реагирует на нажатие Esc, закрывая окно. Возможно ли сделать так, чтобы кнопка с номером 30720 реагировала так же на Enter?


Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
21.11.2010 19:17
Visit this user's website Find all posts by this user Quote this message in a reply
Дьякон Offline

Posts: 395
Post: #230

(21.11.2010 16:54)Berserker Wrote:  
Code:
код процедуры на асме, указанный в сорцах
RET

тогда что с esp ?


Страус труп (с) Бьерн
21.11.2010 20:08
Find all posts by this user Quote this message in a reply
Sav Offline

Posts: 2180
Post: #231

Вот так выглядит место, где он вызывается:
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.
21.11.2010 20:23
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #232

Выложи dll.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
21.11.2010 20:28
Find all posts by this user Quote this message in a reply
Sav Offline

Posts: 2180
Post: #233

Исходник: (Click to View)
Скомпилированная: удалено за ненадобностью.
(This post was last modified: 24.11.2010 23:15 by Sav.)
21.11.2010 20:32
Find all posts by this user Quote this message in a reply
Дьякон Offline

Posts: 395
Post: #234

ну так блин
call loc_3C91070

C_HOOKTYPE_JUMP


Страус труп (с) Бьерн
21.11.2010 21:20
Find all posts by this user Quote this message in a reply
Sav Offline

Posts: 2180
Post: #235

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

Code:
HookCode(POINTER($440095), @Damage_stack, C_HOOKTYPE_JUMP);
Тут и так C_HOOKTYPE_JUMP. И он равен False, как и в исходниках Эры.
(This post was last modified: 21.11.2010 21:33 by Sav.)
21.11.2010 21:30
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #236

Quote:ну так блин
call loc_3C91070
C_HOOKTYPE_JUMP
Раньше был вызов, а перехват сделан прыжком - всё верно.

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


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
21.11.2010 21:33
Find all posts by this user Quote this message in a reply
Дьякон Offline

Posts: 395
Post: #237

та нифига перехват сделан call - ом

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

а стало

call loc_3C91070

почувствуй разницу. откуда в геройской секции такие адреса могут быть?


Страус труп (с) Бьерн
(This post was last modified: 21.11.2010 21:37 by Дьякон.)
21.11.2010 21:35
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #238

У меня функция вообще не получает управления. Пробовал обычными монстрами и гидрами хаоса. Как вызвать событие?


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
21.11.2010 21:43
Find all posts by this user Quote this message in a reply
Sav Offline

Posts: 2180
Post: #239

Должна вызываться при ударе существа с флагом "бить всех вокруг". У меня при ударе горыныча вызывалась.
(This post was last modified: 21.11.2010 21:45 by Sav.)
21.11.2010 21:45
Find all posts by this user Quote this message in a reply
Дьякон Offline

Posts: 395
Post: #240

Не пойму откуда call взялся. В исходниках вроде все правильно.


Страус труп (с) Бьерн
21.11.2010 21:46
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group