Files
L2Bot2.0/L2BotDll/Versions/Interlude/GameStructs/L2ParamStack.cpp
2023-01-16 15:33:32 +04:00

71 lines
1.9 KiB
C++

#include "pch.h"
#include "L2ParamStack.h"
namespace Interlude
{
void(__thiscall* L2ParamStack::__Ctor)(L2ParamStack* This, int) = 0;
void(__thiscall* L2ParamStack::__Dtor)(L2ParamStack* This) = 0;
int(__thiscall* L2ParamStack::__PushBack)(L2ParamStack* This, void*) = 0;
void* (__thiscall* L2ParamStack::__Top)(L2ParamStack* This) = 0;
void** (__thiscall* L2ParamStack::__GetBuffer)(L2ParamStack* This) = 0;
int (__thiscall* L2ParamStack::__GetBufferSize)(L2ParamStack* This) = 0;
int (__thiscall* L2ParamStack::__GetTotalBufferSize)(L2ParamStack* This) = 0;
HMODULE L2ParamStack::_hModule = 0;
L2ParamStack::L2ParamStack(int size)
{
Init();
(*__Ctor)(this, size);
}
L2ParamStack::~L2ParamStack()
{
Init();
(*__Dtor)(this);
}
int L2ParamStack::PushBack(void* val)
{
Init();
return (*__PushBack)(this, val);
}
void* L2ParamStack::Top()
{
Init();
return (*__Top)(this);
}
void** L2ParamStack::GetBuffer()
{
Init();
return (__GetBuffer)(this);
}
int L2ParamStack::GetBufferSize()
{
Init();
return (__GetBufferSize)(this);
}
int L2ParamStack::GetTotalBufferSize()
{
Init();
return (__GetTotalBufferSize)(this);
}
void L2ParamStack::Init()
{
// todo exceptions
if (_hModule == 0) {
_hModule = GetModuleHandleA("Core.dll");
(FARPROC&)__Ctor = GetProcAddress(_hModule, "??0L2ParamStack@@QAE@H@Z");
(FARPROC&)__Dtor = GetProcAddress(_hModule, "??1L2ParamStack@@QAE@XZ");
(FARPROC&)__PushBack = GetProcAddress(_hModule, "?PushBack@L2ParamStack@@QAEHPAX@Z");
(FARPROC&)__Top = GetProcAddress(_hModule, "?Top@L2ParamStack@@QAEPAXXZ");
(FARPROC&)__GetBuffer = GetProcAddress(_hModule, "?GetBuffer@L2ParamStack@@QAEPAPAXXZ");
(FARPROC&)__GetBufferSize = GetProcAddress(_hModule, "?GetBufferSize@L2ParamStack@@QAEHXZ");
(FARPROC&)__GetTotalBufferSize = GetProcAddress(_hModule, "?GetTotalBufferSize@L2ParamStack@@QAEHXZ");
}
}
}