diff --git a/L2BotDll/Versions/Interlude/GameStructs/NetworkHandlerWrapper.cpp b/L2BotDll/Versions/Interlude/GameStructs/NetworkHandlerWrapper.cpp index 663f42f..c9c1d7b 100644 --- a/L2BotDll/Versions/Interlude/GameStructs/NetworkHandlerWrapper.cpp +++ b/L2BotDll/Versions/Interlude/GameStructs/NetworkHandlerWrapper.cpp @@ -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( diff --git a/L2BotDll/Versions/Interlude/GameStructs/NetworkHandlerWrapper.h b/L2BotDll/Versions/Interlude/GameStructs/NetworkHandlerWrapper.h index 3c25d38..4208698 100644 --- a/L2BotDll/Versions/Interlude/GameStructs/NetworkHandlerWrapper.h +++ b/L2BotDll/Versions/Interlude/GameStructs/NetworkHandlerWrapper.h @@ -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; diff --git a/L2BotDll/Versions/Interlude/Repositories/ItemRepository.h b/L2BotDll/Versions/Interlude/Repositories/ItemRepository.h index 571362a..d88f47d 100644 --- a/L2BotDll/Versions/Interlude/Repositories/ItemRepository.h +++ b/L2BotDll/Versions/Interlude/Repositories/ItemRepository.h @@ -197,6 +197,7 @@ namespace Interlude m_IsNewCycle = false; m_NewItems.clear(); m_Items.clear(); + m_NetworkHandler.RequestItemList(); } private: