Berserker
Posts: 16657
|
|
05.09.2010 23:54 |
|
GhostManSD
Posts: 1054
|
Ну, меня интересует, можно ли таким же образом состряпать функцию для кода из второго спойлера. Добавлено:
Для функции 90002.
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
(This post was last modified: 05.09.2010 23:56 by GhostManSD.)
|
|
05.09.2010 23:55 |
|
Berserker
Posts: 16657
|
C_FUNC_ZVS_CALLFU = $74CE30; // void FUCall(int n)
Я использовал константу для адреса функции обработки события вызова ЕРМ-функции. А феанор тебе просто дал числовое значение адреса, что одно и то же.
У тебя следующие ошибки:
1) Имена экспортируемых в кавычках должны быть.
2) Функции не нужно вызывать, просто пиши ЕРМ обработчики !?FU90001; ...
3) Секция exports должна быть одна и находиться до BEGIN Hook... END.
4) В секции записи друг от друга отделяются ",", а лишь в конце ";"
Code:
EXPORTS
HOOK_Trigger_TownEnter NAME 'Trigger_TownEnter',
HOOK_PostTrigger_HeroLevel NAME 'PostTrigger_HeroLevel',
HOOK_Trigger_RecruitingTroops NAME 'Trigger_RecruitingTroops';
Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
|
|
06.09.2010 00:52 |
|
GhostManSD
Posts: 1054
|
Bers, спасибо огромное! Всё работает!
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
|
|
06.09.2010 02:11 |
|
GhostManSD
Posts: 1054
|
Подскажите, пожалуйста, вот какую штуку. Есть желание сделать триггер при найме существ. Нашел деф кнопки "нанять максимум существ", ввел в поиск по ссылкам, попал в ту часть кода, где эта кнопка создается и помещается. Теперь - главное: как выйти от момента создания кнопки в диалоговом окне к тому самому моменту, когда происходит первый запрос на создание диалогового окна?
Иными словами - как выйти на тот адрес, на который и нужно ставить ловушку? Добавлено:
Кстати, значение адреса 0x74CE30 дал мне не feanor, а MOP, за что ему тысячу раз спасибо!
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
(This post was last modified: 06.09.2010 02:53 by GhostManSD.)
|
|
06.09.2010 02:51 |
|
Berserker
Posts: 16657
|
|
06.09.2010 11:29 |
|
GhostManSD
Posts: 1054
|
Теперь практически обратный вопрос: адрес выхода из окна искать так же? Иными словами, искать адрес, к которому обращается игра при закрытии окна, нужно так же?
Вот есть, например, окошко найма существ. Нужно найти три адреса: один - если игрок нажал кнопку покупки и успешно купил существ, другой - если игрок нажал кнопку покупки, а купить не смог (а-ля не хватает провизии), третий - если игрок нажал кнопку отмены. Порядок действий таков (например, хотя можно наверняка и иначе):
1. Найти в ссылках деф кнопки "нанять всех".
2. Открыть стек вызовов.
3. Поставить точку останова на все вызовы и по одному отсеивать их, снимая эти точки останова, пока не найду нужные.
Я правильно понял?
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
|
|
06.09.2010 11:44 |
|
Berserker
Posts: 16657
|
|
06.09.2010 14:59 |
|
GhostManSD
Posts: 1054
|
А события открытия/закрытия искать в Олли в стеке вызовов? Ставя точки останова на каждом из этих адресов? Добавлено:
И что имеется в виду под пост-триггером? !$FU%номер функции для открытия окна диалога%?
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
(This post was last modified: 06.09.2010 15:17 by GhostManSD.)
|
|
06.09.2010 15:15 |
|
Berserker
Posts: 16657
|
|
06.09.2010 15:18 |
|
feanor
Posts: 624
|
Quote:третий - если игрок нажал кнопку отмены.
ищешь обработчик нажатий кнопок в диалоге. В конкретно данном случае искать легко - через бряк на 4F6C00 (показ сообщения). Кнопка с номером 30721 (дес.) - кнопка закрытия диалога.
|
|
06.09.2010 18:22 |
|
GhostManSD
Posts: 1054
|
Номер получен путем опытов или интуитивно (кнопка ОК в CM:I - 30720)?
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
|
|
06.09.2010 19:39 |
|
GhostManSD
Posts: 1054
|
Правильно ли я понял по поводу дефа той или иной кнопки, что данные располагаются в общем и целом примерно так (жирным выделена строка, к которой прихожу по поиску дефа):
Quote:???
???
кнопку можно нажать? -- 0 (да) / 1 (нет)
вид нажатой кнопки -- кадр дефа
вид обычной кнопки -- кадр дефа
деф -- указатель с именем дефа
номер кнопки -- 512 (нанять всех) / 30720 (OK) / 30721 (отмена)
???
???
положение x -- вероятно, в пикселях
положение y -- вероятно, в пикселях
Не мог бы кто-нибудь объяснить суть команд, стыдливо прикрытых знаками "???"? Я пробовал поиграться со значением, но вроде ничего не изменилось.
Осталось теперь понять, как от всего этого великолепия выйти к моменту создания самого диалога.
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
(This post was last modified: 07.09.2010 03:10 by GhostManSD.)
|
|
07.09.2010 03:10 |
|
gamecreator
Posts: 7107
|
|
07.09.2010 09:26 |
|
GhostManSD
Posts: 1054
|
Там вроде какие-то маленькие значения в духе 20, 40, 1, 2, etc. Некоторые интересные для меня адреса я нашел в call functions, ставя по очереди на них бряки:
1. Нажатие в окне найма "нанять" или "отмена". Действует почему-то лишь на экране города, в жилище действует лишь "отмена". Не там ищу?
2. Нажатие при заходе в жилище кнопки "ОК" при вопросе "хотите ли вы нанять...?".
3. Адрес перед высвечиванием диалога.
Нужен хук именно на кнопку "нанять".
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
|
|
07.09.2010 10:49 |
|