| Berserker   
   
   Posts: 16785
 
 |  | 
	| 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: 16785
 
 | 
			| 
 
				C_FUNC_ZVS_CALLFU = $74CE30; // void FUCall(int n) 
Я использовал константу для адреса функции обработки события вызова ЕРМ-функции. А феанор тебе просто дал числовое значение адреса, что одно и то же.
 
У тебя следующие ошибки: 
1) Имена экспортируемых в кавычках должны быть. 
2) Функции не нужно вызывать, просто пиши ЕРМ обработчики !?FU90001; ... 
3) Секция exports должна быть одна и находиться до BEGIN Hook... END. 
4) В секции записи друг от друга отделяются ",", а лишь в конце ";"
 
Code:
 EXPORTSHOOK_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: 16785
 
 |  | 
	| 06.09.2010 11:29 |  | 
	
		| GhostManSD   
   Posts: 1054
 
 | 
			| 
 
				Теперь практически обратный вопрос: адрес выхода из окна искать так же? Иными словами, искать адрес, к которому обращается игра при закрытии окна, нужно так же?
 Вот есть, например, окошко найма существ. Нужно найти три адреса: один - если игрок нажал кнопку покупки и успешно купил существ, другой - если игрок нажал кнопку покупки, а купить не смог (а-ля не хватает провизии), третий - если игрок нажал кнопку отмены. Порядок действий таков (например, хотя можно наверняка и иначе):
 1. Найти в ссылках деф кнопки "нанять всех".
 2. Открыть стек вызовов.
 3. Поставить точку останова на все вызовы и по одному отсеивать их, снимая эти точки останова, пока не найду нужные.
 
 Я правильно понял?
 
 Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
 |  | 
	| 06.09.2010 11:44 |  | 
	
		| Berserker   
   
   Posts: 16785
 
 |  | 
	| 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: 16785
 
 |  | 
	| 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 |  |