MOP, подскажи, пожалуйста, как ты узнал, что для этого нужен адрес 4200424(dec).
Попросту вбил "iam004" (деф кнопки) в поиск по дизассемблеру. Сразу пришёл к указателю. А параметры отрисовки элементов диалогов мне как бы уже знакомы - следующим параметром за дефом в функцию идёт id.
Дополнил код выше. Второй адрес - для раскраски кнопки в цвета игрока. Его я не находил - мне Бараторч подсказал.
А если изменить указатель, изменится и деф?
Аха. Так, например, в TPM сделали (major, наверное).
А можно вопрос от нуба? Где в OllyDbg вбивать "iam004" для поиска?
Search - references to text strings - ctrl + L
в районе 0х01481680 в памяти начинается массив героев (это так, к слову).
Quote:в памяти начинается массив героев
Динамические адреса давать таки не гуд.
К тому же адрес этого массива структур уже известен:
[699538h] + 21620h+492h*hero_num
он статический. по крайней мере, на хл.
gamecreator, он динамический по определению. У тебя неверное представление об организации памяти и структур.
нет у меня никакого представления.
Как инвертировать число -1 в десятичной и получить обратное ему?
Инвентировать - в смысле заменить биты на противоположные? 0 будет, вроде.
Берс, можешь объяснить суть триггеров входа в окно героя и выхода из оного?
PROCEDURE Hook_HeroScreen_Enter; ASSEMBLER; {$FRAME-}
ASM
PUSHAD
PUSH ECX
MOV EAX, General.C_FUNC_ZVS_GETHEROPTR
CALL EAX
ADD ESP, 4
MOV DWORD [General.C_VAR_ERM_PTR_CURRHERO], EAX
PUSH General.C_ERA_EVENT_HEROSCREEN_ENTER
CALL General.GenerateCustomErmEvent
POPAD
PUSH EBP
MOV EBP, ESP
PUSH -1
PUSH $4E1A75
END;
PROCEDURE Hook_HeroScreen_Exit; ASSEMBLER; {$FRAME-}
ASM
PUSHAD
PUSH General.C_ERA_EVENT_HEROSCREEN_EXIT
CALL General.GenerateCustomErmEvent
POPAD
MOV ESP, EBP
POP EBP
RET 8
END;
Интересует второй из них. Можешь объяснить, что происходит в строках
Quote:PUSH General.C_ERA_EVENT_HEROSCREEN_EXIT
CALL General.GenerateCustomErmEvent
?
Добавлено:
И как выглядел бы код без обращения к General?
Добавлено:
Поясняю: нужно сделать подобное с
PROCEDURE HOOK_Trigger_TownScreen_Enter; ASSEMBLER; {$FRAME-}
ASM
PUSHAD
PUSH 90001
MOV EAX, $74CE30
CALL EAX
ADD ESP, 4
POPAD
PUSH EBP
MOV EBP,ESP
PUSH -1
PUSH $5C6C75
END;