feat: add update items from server

This commit is contained in:
k0t9i 2023-02-01 23:37:44 +04:00
parent 0e6d8dec86
commit 03423d0c41
3 changed files with 14 additions and 1 deletions

View File

@ -14,6 +14,7 @@ namespace Interlude
Item* (__thiscall* NetworkHandlerWrapper::__GetNextItem)(NetworkHandler*, float, int) = 0;
User* (__thiscall* NetworkHandlerWrapper::__GetNextCreature)(NetworkHandler*, float, int) = 0;
int(__thiscall* NetworkHandlerWrapper::__AddNetworkQueue)(NetworkHandler*, L2::NetworkPacket*) = 0;
int(__thiscall* NetworkHandlerWrapper::__RequestItemList)(NetworkHandler*);
//todo exception
Item* NetworkHandlerWrapper::GetNextItem(float_t radius, int prevId) const
@ -50,6 +51,14 @@ namespace Interlude
return 0;
}
int NetworkHandlerWrapper::RequestItemList() const
{
if (__RequestItemList && _target) {
return (*__RequestItemList)(_target);
}
return 0;
}
void NetworkHandlerWrapper::Init(HMODULE hModule)
{
void* initAddress = GetProcAddress(hModule, "?Tick@UNetworkHandler@@UAEXM@Z");
@ -58,6 +67,7 @@ namespace Interlude
(FARPROC&)__GetNextItem = GetProcAddress(hModule, "?GetNextItem@UNetworkHandler@@UAEPAUItem@@MH@Z");
(FARPROC&)__GetNextCreature = GetProcAddress(hModule, "?GetNextCreature@UNetworkHandler@@UAEPAUUser@@MH@Z");
(FARPROC&)__RequestItemList = GetProcAddress(hModule, "?RequestItemList@UNetworkHandler@@UAEHXZ");
(FARPROC&)__AddNetworkQueue = (FARPROC)splice(

View File

@ -22,15 +22,17 @@ namespace Interlude
Item* GetNextItem(float_t radius, int prevId) const;
User* GetNextCreature(float_t radius, int prevId) const;
User* GetHero() const;
int RequestItemList() const;
private:
static void __fastcall __Init_hook(NetworkHandler* This, int /*edx*/, float unk);
static int __fastcall __AddNetworkQueue_hook(NetworkHandler* This, int /*edx*/, L2::NetworkPacket* packet);;
static int __fastcall __AddNetworkQueue_hook(NetworkHandler* This, int /*edx*/, L2::NetworkPacket* packet);
static void(__thiscall* __Init)(NetworkHandler*, float);
static Item* (__thiscall* __GetNextItem)(NetworkHandler*, float, int);
static User* (__thiscall* __GetNextCreature)(NetworkHandler*, float, int);
static int(__thiscall* __AddNetworkQueue)(NetworkHandler*, L2::NetworkPacket*);
static int(__thiscall* __RequestItemList)(NetworkHandler*);
private:
static void* originalInitAddress;
static NetworkHandler* _target;

View File

@ -197,6 +197,7 @@ namespace Interlude
m_IsNewCycle = false;
m_NewItems.clear();
m_Items.clear();
m_NetworkHandler.RequestItemList();
}
private: