Berserker 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 16789 
	
		
	 | 
	
		
 | 
	| 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: 16789 
	
		
	 | 
	
		
			
			 
			
				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: 16789 
	
		
	 | 
	
		
 | 
	| 06.09.2010 11:29 | 
	
		
	 | 
	
		
		GhostManSD 
 
 
		
		
		
			
			
			
 
 
			
Posts: 1054 
	
		
	 | 
	
		
			
			 
			
				Теперь практически обратный вопрос: адрес выхода из окна искать так же? Иными словами, искать адрес, к которому обращается игра при закрытии окна, нужно так же? 
 
Вот есть, например, окошко найма существ. Нужно найти три адреса: один - если игрок нажал кнопку покупки и успешно купил существ, другой - если игрок нажал кнопку покупки, а купить не смог (а-ля не хватает провизии), третий - если игрок нажал кнопку отмены. Порядок действий таков (например, хотя можно наверняка и иначе): 
1. Найти в ссылках деф кнопки "нанять всех". 
2. Открыть стек вызовов. 
3. Поставить точку останова на все вызовы и по одному отсеивать их, снимая эти точки останова, пока не найду нужные. 
 
Я правильно понял?
			 
			
			
  
Κακῆς ἀπ' ἀρχῆς γίγνεται τέλος κακόν.
			
		 |  
	 
 | 
	| 06.09.2010 11:44 | 
	
		
	 | 
	
		
		Berserker 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 16789 
	
		
	 | 
	
		
 | 
	| 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: 16789 
	
		
	 | 
	
		
 | 
	| 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 | 
	
		
	 |