DNF_DLL/test/hook.cpp

91 lines
2.1 KiB
C++
Raw Normal View History

2022-03-08 12:57:35 +08:00
#include "pch.h"
#include "hook.h"
2022-04-24 02:31:42 +08:00
extern std::vector<DrawCodestruct>DrawCodeT1_STL;
extern std::vector<DrawCodestruct>DrawCodeT2_STL;
2022-03-08 12:57:35 +08:00
uint32_t hook::H_Register_Nut(uint32_t v, void* f, int freeVarsCnt)
{
static int build = 0;
if (build == 0 && f == (void*)0x005C5980)
{
squirrel::R_Register_Nut();
}
return MLnewclosure(v, f, freeVarsCnt);
}
void hook::H_Register_Pack(void* Ecx)
{
Lpfn_Init(Ecx);
sock::R_Register_Pack();
}
2022-04-24 02:31:42 +08:00
void _fastcall hook::H_Register_DrawCode(DWORD thisc, int Seat, int a3, int a4, int a5, int a6)
2022-04-11 19:44:03 +08:00
{
2022-04-24 02:31:42 +08:00
if (a3 == 9999 && a4 == 9999)
{
for (DrawCodestruct iter : DrawCodeT1_STL)
{
2022-04-24 18:02:17 +08:00
//wchar_t* str = DNFTOOL::charTowchar_t((char*)iter.str.c_str());
DrawCodeF(thisc, Seat, iter.Xpos, iter.Ypos, iter.Color, (int)iter.str);
2022-04-24 02:31:42 +08:00
}
DrawCodeT1_STL.clear();
}
if (a3 == 9999 && a4 == 9998)
{
for (DrawCodestruct iter : DrawCodeT2_STL)
{
2022-04-24 18:02:17 +08:00
//wchar_t* str = DNFTOOL::charTowchar_t((char*)iter.str.c_str());
DrawCodeF(thisc, Seat, iter.Xpos, iter.Ypos, iter.Color, (int)iter.str);
2022-04-24 02:31:42 +08:00
}
DrawCodeT2_STL.clear();
}
2022-04-11 19:44:03 +08:00
2022-04-24 02:31:42 +08:00
return DrawCodeF(thisc, Seat, a3, a4, a5, a6);
2022-04-11 19:44:03 +08:00
}
2022-03-08 12:57:35 +08:00
2022-04-24 02:31:42 +08:00
2022-03-08 12:57:35 +08:00
int hook::RegisterHook()
{
MH_Initialize();
2022-04-24 02:31:42 +08:00
//Hook<6F>հ<EFBFBD>
2022-03-08 12:57:35 +08:00
MH_CreateHook((void*)INIT_PACK_ADDRESS, &H_Register_Pack, reinterpret_cast<void**>(&Lpfn_Init));
2022-04-24 02:31:42 +08:00
//HookNut<75><74><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>
2022-03-08 12:57:35 +08:00
MH_CreateHook((void*)INIT_NUT_ADDRESS, &H_Register_Nut, reinterpret_cast<void**>(&MLnewclosure));
2022-04-24 02:31:42 +08:00
//Hook<6F><6B><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>
MH_CreateHook((void*)INIT_NUT_DRAWCODE, &H_Register_DrawCode, reinterpret_cast<void**>(&DrawCodeF));
2022-03-08 12:57:35 +08:00
2022-04-11 19:44:03 +08:00
2022-03-08 12:57:35 +08:00
MH_EnableHook((void*)INIT_PACK_ADDRESS);
MH_EnableHook((void*)INIT_NUT_ADDRESS);
2022-04-24 02:31:42 +08:00
MH_EnableHook((void*)INIT_NUT_DRAWCODE);
2022-03-08 12:57:35 +08:00
return 0;
}
2022-03-16 10:03:39 +08:00
int hook::InitGameScript()
{
2022-04-24 02:31:42 +08:00
2022-03-16 10:03:39 +08:00
uint32_t v = GetSqVm();
SQPushRootTable(v);
SQPushString(v, L"SetHudUI", -1);
SQ_Get(v, -2);
SQPushRootTable(v);
2022-04-11 19:44:03 +08:00
SQPushString(v, L"1.cpp", -1);
2022-03-16 10:03:39 +08:00
SQ_Call(v, 2, 1, 0);
SQPop(v, 2);
2022-04-11 19:44:03 +08:00
2022-03-16 10:03:39 +08:00
std::cout << u8"<EFBFBD><EFBFBD><EFBFBD>óɹ<EFBFBD>" << std::endl;
2022-04-24 02:31:42 +08:00
2022-03-16 10:03:39 +08:00
return 0;
}