| totkotoriy   
   Posts: 873
 
 | 
			| 
 
				Может у кого есть рабочий код на с++ какого-либо хука, который затем передает управление ERM триггеру?
			 
 Ты роешься в моих паках, но ты делаешь это без уважения...
 |  | 
	| 19.02.2012 13:00 |  | 
	
		| gamecreator   
   Posts: 7107
 
 |  | 
	| 19.02.2012 13:22 |  | 
	
		| totkotoriy   
   Posts: 873
 
 | 
			| 
 
				 (19.02.2012 13:22)gamecreator Wrote:  так в Эре вроде есть функция, выполняющая ерм. вот с помощью нее и вызвать триггер. 
Как?
			 
 Ты роешься в моих паках, но ты делаешь это без уважения...
 |  | 
	| 19.02.2012 13:24 |  | 
	
		| Sav   
 Posts: 2180
 
 | 
			| 
 
				ExecErmCmd ("FUxxxx:P;");
			 
				
(This post was last modified: 19.02.2012 13:27 by Sav.)
 |  | 
	| 19.02.2012 13:27 |  | 
	
		| totkotoriy   
   Posts: 873
 
 | 
			| 
 
				 (19.02.2012 13:27)Sav Wrote:  ExecErmCmd ("FUxxxx:P;"); 
Дык можете рабочий пример написать? А то я так долго мучатся буду. Что эта функция делает? Вызывает хук и запускает по нему триггер?
			 
 Ты роешься в моих паках, но ты делаешь это без уважения...
 |  | 
	| 19.02.2012 14:01 |  | 
	
		| gamecreator   
   Posts: 7107
 
 |  | 
	| 19.02.2012 14:26 |  | 
	
		| totkotoriy   
   Posts: 873
 
 | 
			| 
 
				 (19.02.2012 14:26)gamecreator Wrote:  функция выполняет ЕРМ-код. рабочий пример:ExecErmCmd ("FU12345:P;");
 выполнит ЕРМ-код !!FU12345:P;
 
А где взять era.cpp тогда? И надо ли восстанавливать данные затертого хука?
			 
 Ты роешься в моих паках, но ты делаешь это без уважения...
 |  | 
	| 19.02.2012 14:43 |  | 
	
		| gamecreator   
   Posts: 7107
 
 |  | 
	| 19.02.2012 14:58 |  | 
	
		| Sav   
 Posts: 2180
 
 | 
			| 
 
				totkotoriy, не пойму, что тебе нужно. Я создавал триггер на паскале, но основная часть там - ассемблер, поэтому я могу без особых затрат времени перевести его на c++ и показать тебе код. Нужно?
			 
				
(This post was last modified: 19.02.2012 14:59 by Sav.)
 |  | 
	| 19.02.2012 14:59 |  | 
	
		| totkotoriy   
   Posts: 873
 
 | 
			| 
 
				 (19.02.2012 14:59)Sav Wrote:  totkotoriy, не пойму, что тебе нужно. Я создавал триггер на паскале, но основная часть там - ассемблер, поэтому я могу без особых затрат времени перевести его на c++ и показать тебе код. Нужно? 
Да, я про это и говорю. Код хука на С++ я уже написал, мне нужен теперь рабочий код на ассемблере для вызова триггера в ERM.
			 
 Ты роешься в моих паках, но ты делаешь это без уважения...
 |  | 
	| 19.02.2012 15:51 |  | 
	
		| gamecreator   
   Posts: 7107
 
 |  | 
	| 19.02.2012 16:21 |  | 
	
		| Sav   
 Posts: 2180
 
 |  | 
	| 19.02.2012 18:45 |  | 
	
		| kostya_76   
 Posts: 33
 
 | 
			| 
 
				 (19.02.2012 15:51)totkotoriy Wrote:  Да, я про это и говорю. Код хука на С++ я уже написал, мне нужен теперь рабочий код на ассемблере для вызова триггера в ERM. 
Я ж тебе показывал пример. Весь код создания триггера это 4 строчки:
 
PUSH 29500 //номер ERM-функции. Меняйте на любой доступный. 
MOV EAX, 0x74CE30 
CALL EAX //вызываем C_FUNC_ZVS_CALLFU 
ADD ESP, 4
 
Просто в примере с палаткой добавлены дополнительные операции по  вызову параметров для использования в создаваемом триггере. 
 
Вот пример, работающий с адресом 4074AC, который ты давал:
 
#include <windows.h>
 #include "Era.h"
 #pragma hdrstop
 
 #define BUILD_DLL
 
 
 
 using namespace Era;
 
 
 
 void __stdcall CreateTrigger (void)
 {
 __asm
 {
 mov EAX,DWORD PTR DS:[0X6992D0] // выполняем затертую команду
 PUSHAD //сохраняем регистры
 PUSH 29501 //номер ERM-функции. Меняйте на любой доступный.
 MOV EAX, 0x74CE30
 CALL EAX //вызываем C_FUNC_ZVS_CALLFU
 ADD ESP, 4
 POPAD //выталкиваем регистры
 
 
 
 }
 }
 
 extern "C" __declspec(dllexport) BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID lpReserved)
 {
 if (reason == DLL_PROCESS_ATTACH)
 {
 ConnectEra();
 Hook ((void*) CreateTrigger, HOOKTYPE_CALL, 6, (void*) 0x4074AC);
 
 }
 return TRUE;
 }
 
Добавил в скрипт триггер - срабатывает где-то после генерации карты.  
Только хук в этом примере создан с помощью Эры 1.9. То есть еще файл Era.h нужен.  Немного выше есть ссылка на него от Берсеркера.
			 
				
(This post was last modified: 19.02.2012 19:23 by kostya_76.)
 |  | 
	| 19.02.2012 19:21 |  | 
	
		| totkotoriy   
   Posts: 873
 
 | 
			| 
 
				 (19.02.2012 19:21)kostya_76 Wrote:  файл Era.h нужен.  Немного выше есть ссылка на него от Берсеркера. 
Спасибо, но я не могу нигде найти эту библиотеку.
 
И еще хотел спросить что за адрес 6992D0 в этой команде mov eax,DWORD PTR DS:[0X6992D0]? Он для другого хука будет такой же? 
Костян, и можешь еще прислать скомпилиный этот код? я скомпилил его чуть по другому (без era.h) и у меня все равно в игре вылетает(
			 
 Ты роешься в моих паках, но ты делаешь это без уважения...
 
				
(This post was last modified: 22.02.2012 17:51 by totkotoriy.)
 |  | 
	| 22.02.2012 17:38 |  |