fix: move some methods from network handler to game engine wrapper
This commit is contained in:
@@ -2,7 +2,6 @@
|
||||
#include "../../../Common/apihook.h"
|
||||
#include "NetworkHandlerWrapper.h"
|
||||
#include "../../../Events/SpoiledEvent.h"
|
||||
#include "../../../Events/CreatureDiedEvent.h"
|
||||
#include "../../../Events/EventDispatcher.h"
|
||||
#include "ProcessManipulation.h"
|
||||
|
||||
@@ -14,9 +13,7 @@ namespace Interlude
|
||||
void(__thiscall* NetworkHandlerWrapper::__Init)(NetworkHandler*, float) = 0;
|
||||
Item* (__thiscall* NetworkHandlerWrapper::__GetNextItem)(NetworkHandler*, float, int) = 0;
|
||||
User* (__thiscall* NetworkHandlerWrapper::__GetNextCreature)(NetworkHandler*, float, int) = 0;
|
||||
float(__thiscall* NetworkHandlerWrapper::__GetMaxTickRate)(NetworkHandler*) = 0;
|
||||
int(__thiscall* NetworkHandlerWrapper::__AddNetworkQueue)(NetworkHandler*, L2::NetworkPacket*) = 0;
|
||||
int(__thiscall* NetworkHandlerWrapper::__OnDie)(NetworkHandler*, User*, L2ParamStack&) = 0;
|
||||
|
||||
//todo exception
|
||||
Item* NetworkHandlerWrapper::GetNextItem(float_t radius, int prevId) const
|
||||
@@ -62,23 +59,16 @@ namespace Interlude
|
||||
(FARPROC&)__GetNextItem = GetProcAddress(hModule, "?GetNextItem@UNetworkHandler@@UAEPAUItem@@MH@Z");
|
||||
(FARPROC&)__GetNextCreature = GetProcAddress(hModule, "?GetNextCreature@UNetworkHandler@@UAEPAUUser@@MH@Z");
|
||||
|
||||
(FARPROC&)__GetMaxTickRate = (FARPROC)splice(
|
||||
GetProcAddress(hModule, "?GetMaxTickRate@UGameEngine@@UAEMXZ"), __GetMaxTickRate_hook
|
||||
);
|
||||
|
||||
(FARPROC&)__AddNetworkQueue = (FARPROC)splice(
|
||||
GetProcAddress(hModule, "?AddNetworkQueue@UNetworkHandler@@UAEHPAUNetworkPacket@@@Z"), __AddNetworkQueue_hook
|
||||
);
|
||||
(FARPROC&)__OnDie = (FARPROC)splice(
|
||||
GetProcAddress(hModule, "?OnDie@UGameEngine@@UAEHPAUUser@@AAVL2ParamStack@@@Z"), __OnDie_hook
|
||||
);
|
||||
}
|
||||
|
||||
void NetworkHandlerWrapper::Restore()
|
||||
{
|
||||
restore(originalInitAddress);
|
||||
restore((void*&)__GetMaxTickRate);
|
||||
restore((void*&)__AddNetworkQueue);
|
||||
restore((void*&)__OnDie);
|
||||
}
|
||||
|
||||
void __fastcall NetworkHandlerWrapper::__Init_hook(NetworkHandler* This, int /*edx*/, float unk)
|
||||
@@ -94,14 +84,6 @@ namespace Interlude
|
||||
}
|
||||
}
|
||||
|
||||
// TODO ini
|
||||
// 0 - <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
float __fastcall NetworkHandlerWrapper::__GetMaxTickRate_hook(NetworkHandler* This, int)
|
||||
{
|
||||
float fps = (*__GetMaxTickRate)(This);
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
int __fastcall NetworkHandlerWrapper::__AddNetworkQueue_hook(NetworkHandler* This, int, L2::NetworkPacket* packet)
|
||||
{
|
||||
if (packet->id == static_cast<int>(L2::NetworkPacketId::SYSTEM_MESSAGE)) {
|
||||
@@ -116,11 +98,4 @@ namespace Interlude
|
||||
|
||||
return (*__AddNetworkQueue)(This, packet);
|
||||
}
|
||||
|
||||
int __fastcall NetworkHandlerWrapper::__OnDie_hook(NetworkHandler* This, int, User* creature, L2ParamStack& stack)
|
||||
{
|
||||
EventDispatcher::GetInstance().Dispatch(CreatureDiedEvent{ creature->objectId, stack.GetBufferAsVector<int32_t>()});
|
||||
|
||||
return (*__OnDie)(This, creature, stack);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user