// Раскомментируйте строчку ниже, если у Вас Microsoft Visual Studio 2017 или новее
// #include "pch.h"
// Раскомментируйте строчку ниже, если у Вас более старая версия Microsoft Visual Studio
// #include "stdafx.h"
// Следующая строчка нужна для для функции sprintf()
// Можно удалить, если не используете в Вашем плагине
#include <stdio.h>
// Здесь указываем относительный путь к библиотеке патчера
#include "patcher_x86.hpp"
Patcher* _P;
PatcherInstance* _PI;
int __stdcall TestLoHook(LoHook* h, HookContext* c)
{
char TextBuffer[256];
DWORD GameMgr = *(DWORD*)0x699538;
short Day = *(short*)(GameMgr + 0x1F63E);
short Week = *(short*)(GameMgr + 0x1F640);
short Month = *(short*)(GameMgr + 0x1F642);
sprintf(TextBuffer, "Hello, World!\n\nDays passed: %d", Day + 7 * Week + 28 * Month - 36);
CALL_12(void, __fastcall, 0x4F6C00, TextBuffer, 1, -1, -1, -1, 0, -1, 0, -1, 0, -1, 0);
return EXEC_DEFAULT;
}
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
static bool plugin_On = false;
if ( DLL_PROCESS_ATTACH == ul_reason_for_call )
{
if ( !plugin_On )
{
plugin_On = true;
_P = GetPatcher();
_PI = _P->CreateInstance((char*)"HD.Plugin.TestPlugin");
_PI->WriteLoHook(0x4C80F4, TestLoHook);
}
}
return TRUE;
}