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 |
|