diff --git a/HM3CoreKill/HM3CoreKill/HM3CoreKill.vcxproj b/HM3CoreKill/HM3CoreKill/HM3CoreKill.vcxproj
index 46b8419..6614bbd 100644
--- a/HM3CoreKill/HM3CoreKill/HM3CoreKill.vcxproj
+++ b/HM3CoreKill/HM3CoreKill/HM3CoreKill.vcxproj
@@ -188,6 +188,7 @@
+
@@ -197,6 +198,7 @@
+
@@ -209,6 +211,7 @@
+
@@ -229,12 +232,14 @@
+
+
@@ -257,19 +262,28 @@
+
+
+
+
+
+
+
+
+
@@ -301,11 +315,13 @@
+
+
diff --git a/HM3CoreKill/HM3CoreKill/HM3CoreKill.vcxproj.filters b/HM3CoreKill/HM3CoreKill/HM3CoreKill.vcxproj.filters
index a3d256d..b23f770 100644
--- a/HM3CoreKill/HM3CoreKill/HM3CoreKill.vcxproj.filters
+++ b/HM3CoreKill/HM3CoreKill/HM3CoreKill.vcxproj.filters
@@ -367,6 +367,48 @@
sdk\game
+
+ sdk
+
+
+ sdk
+
+
+ sdk
+
+
+ sdk
+
+
+ ck
+
+
+ sdk
+
+
+ ck
+
+
+ sdk
+
+
+ sdk
+
+
+ sdk
+
+
+ sdk
+
+
+ sdk
+
+
+ sdk
+
+
+ sdk
+
@@ -466,5 +508,11 @@
third_party\fmt\src
+
+ ck
+
+
+ ck
+
\ No newline at end of file
diff --git a/HM3CoreKill/HM3CoreKill/ck/HM3CutSequencesRegistry.cpp b/HM3CoreKill/HM3CoreKill/ck/HM3CutSequencesRegistry.cpp
new file mode 100644
index 0000000..7a164cc
--- /dev/null
+++ b/HM3CoreKill/HM3CoreKill/ck/HM3CutSequencesRegistry.cpp
@@ -0,0 +1,37 @@
+#include
+#include
+
+namespace ck {
+
+ HM3CutSequencesRegistry& HM3CutSequencesRegistry::getRegistry()
+ {
+ static HM3CutSequencesRegistry instance;
+ return instance;
+ }
+
+ void HM3CutSequencesRegistry::registerCutSequence(ioi::hm3::CCutSequence* sequence)
+ {
+ if (!sequence)
+ return;
+
+ m_registry.push_back(sequence);
+ }
+
+ void HM3CutSequencesRegistry::reset()
+ {
+ m_registry.clear();
+ }
+
+ void HM3CutSequencesRegistry::forEach(std::function pred)
+ {
+ for (const auto& sequence : m_registry)
+ {
+ pred(sequence);
+ }
+ }
+
+ const std::list& HM3CutSequencesRegistry::getList() const
+ {
+ return m_registry;
+ }
+}
\ No newline at end of file
diff --git a/HM3CoreKill/HM3CoreKill/ck/HM3CutSequencesRegistry.h b/HM3CoreKill/HM3CoreKill/ck/HM3CutSequencesRegistry.h
new file mode 100644
index 0000000..fcf5923
--- /dev/null
+++ b/HM3CoreKill/HM3CoreKill/ck/HM3CutSequencesRegistry.h
@@ -0,0 +1,24 @@
+#pragma once
+
+#include
+#include
+#include
+#include
+
+namespace ck
+{
+
+ class HM3CutSequencesRegistry
+ {
+ std::list m_registry;
+ public:
+ static HM3CutSequencesRegistry& getRegistry();
+
+ void registerCutSequence(ioi::hm3::CCutSequence* sequence);
+ void reset();
+ void forEach(std::function pred);
+
+ const std::list& getList() const;
+ };
+
+}
\ No newline at end of file
diff --git a/HM3CoreKill/HM3CoreKill/ck/HM3Direct3D.cpp b/HM3CoreKill/HM3CoreKill/ck/HM3Direct3D.cpp
index 13e4206..902887d 100644
--- a/HM3CoreKill/HM3CoreKill/ck/HM3Direct3D.cpp
+++ b/HM3CoreKill/HM3CoreKill/ck/HM3Direct3D.cpp
@@ -2,25 +2,28 @@
#include
#include
+//#define CKD3D_USE_TEXTURES_HOOK
+#define CKD3D_USE_VERTEX_BINDER_HOOK
+
namespace ck
{
static constexpr const int BeginSceneIndex = 41;
static constexpr const int EndSceneIndex = 42;
static constexpr const int ResetIndex = 16;
- static constexpr const int CreateVertexBufferIndex = 26;
+ static constexpr const int SetTextureIndex = 65;
static constexpr const int DrawIndexedPrimitiveIndex = 82;
typedef HRESULT(__stdcall* D3DBeginScene_t)(IDirect3DDevice9*);
typedef HRESULT(__stdcall* D3DEndScene_t)(IDirect3DDevice9*);
typedef HRESULT(__stdcall* D3DReset_t)(IDirect3DDevice9*, D3DPRESENT_PARAMETERS*);
- typedef HRESULT(__stdcall* D3DCreateVertexBuffer_t)(IDirect3DDevice9*, UINT, DWORD, DWORD, D3DPOOL, IDirect3DVertexBuffer9**, HANDLE*);
typedef HRESULT(__stdcall* D3DDrawIndexedPrimitive_t)(IDirect3DDevice9*, D3DPRIMITIVETYPE, INT, UINT, UINT, UINT, UINT);
+ typedef HRESULT(__stdcall* D3DSetTexture_t)(IDirect3DDevice9*, DWORD, IDirect3DBaseTexture9*);
D3DBeginScene_t originalBeginSceneFunc;
D3DEndScene_t originalEndSceneFunc;
D3DReset_t originalResetFunc;
- D3DCreateVertexBuffer_t originalCreateVertexBufferFunc;
D3DDrawIndexedPrimitive_t originalDrawIndexedPrimitiveFunc;
+ D3DSetTexture_t originalD3DSetTextureFunc;
HRESULT __stdcall Direct3DDevice_OnBeginScene(IDirect3DDevice9* device)
{
@@ -55,12 +58,6 @@ namespace ck
return result;
}
- HRESULT __stdcall Direct3DDevice_CreateVertexBuffer(IDirect3DDevice9* device, UINT Length, DWORD Usage, DWORD FVF, D3DPOOL Pool, IDirect3DVertexBuffer9** ppVertexBuffer, HANDLE* pSharedHandle)
- {
- auto result = originalCreateVertexBufferFunc(device, Length, Usage, FVF, Pool, ppVertexBuffer, pSharedHandle);
- return result;
- }
-
HRESULT __stdcall Direct3DDevice_DrawIndexedPrimitive(IDirect3DDevice9* device, D3DPRIMITIVETYPE primType, INT BaseVertexIndex, UINT MinVertexIndex, UINT NumVertices, UINT startIndex, UINT primCount)
{
HRESULT result = 0;
@@ -98,6 +95,11 @@ namespace ck
return result;
}
+ HRESULT __stdcall Direct3DDevice_SetTexture(IDirect3DDevice9* device, DWORD stage, IDirect3DBaseTexture9* texture)
+ {
+ return originalD3DSetTextureFunc(device, stage, texture);
+ }
+
HM3Direct3D& HM3Direct3D::getInstance()
{
static HM3Direct3D instance;
@@ -109,8 +111,6 @@ namespace ck
auto beginScenePtr = reinterpret_cast(HM3Function::hookVFTable((DWORD)device, BeginSceneIndex, (DWORD)Direct3DDevice_OnBeginScene, false));
auto endScenePtr = reinterpret_cast(HM3Function::hookVFTable((DWORD)device, EndSceneIndex, (DWORD)Direct3DDevice_OnEndScene, false));
auto resetPtr = reinterpret_cast(HM3Function::hookVFTable((DWORD)device, ResetIndex, (DWORD)Direct3DDevice_OnReset, false));
- auto createVertexBufferPtr = reinterpret_cast(HM3Function::hookVFTable((DWORD)device, CreateVertexBufferIndex, (DWORD)Direct3DDevice_CreateVertexBuffer, false));
- auto drawIndexedPrimitivePtr = reinterpret_cast(HM3Function::hookVFTable((DWORD)device, DrawIndexedPrimitiveIndex, (DWORD)Direct3DDevice_DrawIndexedPrimitive, false));
if ((DWORD)beginScenePtr != (DWORD)&Direct3DDevice_OnBeginScene)
originalBeginSceneFunc = (D3DBeginScene_t)beginScenePtr;
@@ -121,11 +121,17 @@ namespace ck
if ((DWORD)resetPtr != (DWORD)&Direct3DDevice_OnReset)
originalResetFunc = (D3DReset_t)resetPtr;
- if ((DWORD)createVertexBufferPtr != (DWORD)&Direct3DDevice_CreateVertexBuffer)
- originalCreateVertexBufferFunc = (D3DCreateVertexBuffer_t)createVertexBufferPtr;
-
+#ifdef CKD3D_USE_VERTEX_BINDER_HOOK
+ auto drawIndexedPrimitivePtr = reinterpret_cast(HM3Function::hookVFTable((DWORD)device, DrawIndexedPrimitiveIndex, (DWORD)Direct3DDevice_DrawIndexedPrimitive, false));
if ((DWORD)drawIndexedPrimitivePtr != (DWORD)&Direct3DDevice_DrawIndexedPrimitive)
originalDrawIndexedPrimitiveFunc = (D3DDrawIndexedPrimitive_t)drawIndexedPrimitivePtr;
+#endif
+
+#ifdef CKD3D_USE_TEXTURES_HOOK
+ auto setTexturePtr = reinterpret_cast(HM3Function::hookVFTable((DWORD)device, SetTextureIndex, (DWORD)Direct3DDevice_SetTexture, false));
+ if ((DWORD)setTexturePtr != (DWORD)&Direct3DDevice_SetTexture)
+ originalD3DSetTextureFunc = (D3DSetTexture_t)setTexturePtr;
+#endif
}
void HM3Direct3D::initialize(IDirect3DDevice9* device)
diff --git a/HM3CoreKill/HM3CoreKill/ck/HM3Game.cpp b/HM3CoreKill/HM3CoreKill/ck/HM3Game.cpp
index cc1d7b5..643df84 100644
--- a/HM3CoreKill/HM3CoreKill/ck/HM3Game.cpp
+++ b/HM3CoreKill/HM3CoreKill/ck/HM3Game.cpp
@@ -83,26 +83,9 @@ void HM3Game::Initialise()
setupOnSTDOBJAttachedHook();
setupFsZipHook();
setupM13PosControllerHook();
-
- /*{
- DWORD addr = 0x004E704C;
-
- void(__thiscall ComponentWatcher::* callback)(const char*) = &ComponentWatcher::onComponentRequest;
-
- HM3Function::hookFunction(
- HM3_PROCESS_NAME,
- addr,
- (DWORD)(DWORD*&)callback,
- {
- x86_pushad,
- x86_pushfd,
- x86_push_edx
- },
- {
- x86_popfd,
- x86_popad
- });
- }*/
+ setupZCarConstructorHook();
+ setupCutSequenceConstructorHook();
+ //setupGetComponentHook();
/*
@@ -209,15 +192,31 @@ void HM3Game::setupD3DDeviceCreationHook()
HM3_DEBUG("[Setup ZDirect3DDevice hook]\n");
HM3Function::hookFunction(
- HM3_PROCESS_NAME,
+ HM3_PROCESS_NAME,
HM3Offsets::ZWintelMouse_ContructorFunc,
- (DWORD)OnZMouseWintelCreated,
+ (DWORD)OnZMouseWintelCreated,
// pre
{
x86_pushad,
x86_pushfd,
x86_push_eax
- },
+ },
+ // post
+ {
+ x86_popfd,
+ x86_popad
+ });
+
+ HM3Function::hookFunction(
+ HM3_PROCESS_NAME,
+ HM3Offsets::ZWintelGameController_ConstructorFunc,
+ (DWORD)OnZGameControllerWintelCreated,
+ // pre
+ {
+ x86_pushad,
+ x86_pushfd,
+ x86_push_eax
+ },
// post
{
x86_popfd,
@@ -322,10 +321,63 @@ void HM3Game::setupM13PosControllerHook()
x86_pushfd,
x86_push_eax
},
- {
- x86_popfd,
- x86_popad
- });
+ {
+ x86_popfd,
+ x86_popad
+ });
+}
+
+void HM3Game::setupZCarConstructorHook()
+{
+ HM3Function::hookFunction(
+ HM3_PROCESS_NAME,
+ HM3Offsets::ZCar_Constructor,
+ (DWORD)ZCar_Constructor,
+ {
+ x86_pushad,
+ x86_pushfd,
+ x86_push_eax
+ },
+ {
+ x86_popfd,
+ x86_popad
+ });
+}
+
+void HM3Game::setupCutSequenceConstructorHook()
+{
+ HM3Function::hookFunction(
+ HM3_PROCESS_NAME,
+ HM3Offsets::CCutSequence_Constructor,
+ (DWORD)CutSequence_Constructor,
+ {
+ x86_pushad,
+ x86_pushfd,
+ x86_push_eax
+ },
+ {
+ x86_popfd,
+ x86_popad
+ });
+}
+
+void HM3Game::setupGetComponentHook()
+{
+ void(__thiscall ComponentWatcher:: * callback)(const char*) = &ComponentWatcher::onComponentRequest;
+
+ HM3Function::hookFunction(
+ HM3_PROCESS_NAME,
+ HM3Offsets::GetComponent_Func,
+ (DWORD)(DWORD*&)callback,
+ {
+ x86_pushad,
+ x86_pushfd,
+ x86_push_edx
+ },
+ {
+ x86_popfd,
+ x86_popad
+ });
}
void HM3Game::onD3DInitialized(IDirect3DDevice9* device)
diff --git a/HM3CoreKill/HM3CoreKill/ck/HM3Game.h b/HM3CoreKill/HM3CoreKill/ck/HM3Game.h
index fc67427..b374799 100644
--- a/HM3CoreKill/HM3CoreKill/ck/HM3Game.h
+++ b/HM3CoreKill/HM3CoreKill/ck/HM3Game.h
@@ -49,6 +49,9 @@ class HM3Game
void setupOnSTDOBJAttachedHook();
void setupFsZipHook();
void setupM13PosControllerHook();
+ void setupZCarConstructorHook();
+ void setupCutSequenceConstructorHook();
+ void setupGetComponentHook();
public:
static ioi::hm3::ZHM3GameData* GetGameDataInstancePtr();
static ioi::hm3::ZSysInterfaceWintel* GetSystemInterface();
diff --git a/HM3CoreKill/HM3CoreKill/ck/HM3GamepadSupport.cpp b/HM3CoreKill/HM3CoreKill/ck/HM3GamepadSupport.cpp
new file mode 100644
index 0000000..1d123ef
--- /dev/null
+++ b/HM3CoreKill/HM3CoreKill/ck/HM3GamepadSupport.cpp
@@ -0,0 +1,272 @@
+#include
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+
+#include
+#include
+#include
+#pragma comment(lib, "Xinput9_1_0.lib")
+
+#define KEY_RELEASED(k) (!m_deviceInfo->CurrentInputState.##k && m_deviceInfo->OldInputState.##k)
+#define KEY_PRESSED(k) (!m_deviceInfo->CurrentInputState.##k && !m_deviceInfo->OldInputState.##k)
+
+namespace ck {
+
+ static constexpr uint64_t VibrationTicksCountOnPlayerGotDamage = 500;
+
+ struct HM3GamepadSupport::GamepadDeviceInfo
+ {
+ int ControllerID = -1;
+ XINPUT_STATE ControllerState;
+ bool IsVibrationStarted = false;
+ uint64_t LastTick = 0;
+ uint64_t CurrentTick = 0;
+ uint64_t TickWhenVibrationStarted = 0;
+
+ struct InputState
+ {
+ bool A = false;
+ bool B = false;
+ bool X = false;
+ bool Y = false;
+ bool Left = false;
+ bool Right = false;
+ bool Top = false;
+ bool Bottom = false;
+ bool LB = false;
+ bool RB = false;
+ bool Back = false;
+ bool Start = false;
+ bool LStick = false; //Analog stick as button
+ bool RStick = false; //Analog stick as button
+
+ float deadZoneX = 0.05f;
+ float deadZoneY = 0.02f;
+
+ float LTrigger = 0.f;
+ float RTrigger = 0.f;
+ float LStickPosX = 0.f;
+ float LStickPosY = 0.f;
+ float RStickPosX = 0.f;
+ float RStickPosY = 0.f;
+
+ void read(XINPUT_STATE state)
+ {
+ A = ((state.Gamepad.wButtons & XINPUT_GAMEPAD_A ) != 0); //OK
+ B = ((state.Gamepad.wButtons & XINPUT_GAMEPAD_B ) != 0); //OK
+ X = ((state.Gamepad.wButtons & XINPUT_GAMEPAD_X ) != 0); //OK
+ Y = ((state.Gamepad.wButtons & XINPUT_GAMEPAD_Y ) != 0); //OK
+ Left = ((state.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_LEFT ) != 0);
+ Right = ((state.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_RIGHT ) != 0);
+ Top = ((state.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_UP ) != 0);
+ Bottom = ((state.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_DOWN ) != 0);
+ LB = ((state.Gamepad.wButtons & XINPUT_GAMEPAD_LEFT_SHOULDER ) != 0);
+ RB = ((state.Gamepad.wButtons & XINPUT_GAMEPAD_RIGHT_SHOULDER ) != 0);
+ Back = ((state.Gamepad.wButtons & XINPUT_GAMEPAD_BACK ) != 0); //Wrong
+ Start = ((state.Gamepad.wButtons & XINPUT_GAMEPAD_START ) != 0); //Wrong
+ LStick = ((state.Gamepad.wButtons & XINPUT_GAMEPAD_LEFT_THUMB ) != 0);
+ RStick = ((state.Gamepad.wButtons & XINPUT_GAMEPAD_RIGHT_THUMB ) != 0);
+
+
+ float normLX = fmaxf(-1, (float) state.Gamepad.sThumbLX / 32767);
+ float normLY = fmaxf(-1, (float) state.Gamepad.sThumbLY / 32767);
+
+ LStickPosX = (abs(normLX) < deadZoneX ? 0 : (abs(normLX) - deadZoneX) * (normLX / abs(normLX)));
+ LStickPosY = (abs(normLY) < deadZoneY ? 0 : (abs(normLY) - deadZoneY) * (normLY / abs(normLY)));
+
+ if (deadZoneX > 0) LStickPosX *= 1 / (1 - deadZoneX);
+ if (deadZoneY > 0) LStickPosY *= 1 / (1 - deadZoneY);
+
+ float normRX = fmaxf(-1, (float) state.Gamepad.sThumbRX / 32767);
+ float normRY = fmaxf(-1, (float) state.Gamepad.sThumbRY / 32767);
+
+ RStickPosX = (abs(normRX) < deadZoneX ? 0 : (abs(normRX) - deadZoneX) * (normRX / abs(normRX)));
+ RStickPosY = (abs(normRY) < deadZoneY ? 0 : (abs(normRY) - deadZoneY) * (normRY / abs(normRY)));
+
+ if (deadZoneX > 0) RStickPosX *= 1 / (1 - deadZoneX);
+ if (deadZoneY > 0) RStickPosY *= 1 / (1 - deadZoneY);
+
+ LTrigger = (float) state.Gamepad.bLeftTrigger / 255;
+ RTrigger = (float) state.Gamepad.bRightTrigger / 255;
+ }
+ } OldInputState, CurrentInputState;
+ };
+
+ HM3GamepadSupport::GamepadDeviceInfo* HM3GamepadSupport::m_deviceInfo = nullptr;
+
+ void HM3GamepadSupport::initializeDeviceInfo()
+ {
+ XINPUT_STATE state;
+ ZeroMemory(&state, sizeof(XINPUT_STATE));
+
+ if (XInputGetState(0, &state) != ERROR_SUCCESS)
+ {
+ // XBox controller is not available
+ return;
+ }
+
+ int controllerId = -1;
+
+ for (DWORD i = 0; i < XUSER_MAX_COUNT && controllerId == -1; i++)
+ {
+ XINPUT_STATE state;
+ ZeroMemory(&state, sizeof(XINPUT_STATE));
+
+ if (XInputGetState(i, &state) == ERROR_SUCCESS)
+ {
+ controllerId = i;
+ break;
+ }
+ }
+
+ if (controllerId < 0)
+ return;
+
+ m_deviceInfo = new HM3GamepadSupport::GamepadDeviceInfo();
+ m_deviceInfo->ControllerID = controllerId;
+ ZeroMemory(&m_deviceInfo->ControllerState, sizeof(XINPUT_STATE));
+ }
+
+ bool HM3GamepadSupport::onDeviceUpdateRequest(ioi::hm3::ZGameControlWintel* gamepad)
+ {
+ if (!gamepad)
+ return false;
+
+ if (!m_deviceInfo)
+ {
+ initializeDeviceInfo();
+ if (!m_deviceInfo)
+ return false;
+ }
+
+ m_deviceInfo->LastTick = m_deviceInfo->CurrentTick;
+ m_deviceInfo->CurrentTick = gamepad->m_tick;
+
+ ZeroMemory(&m_deviceInfo->ControllerState, sizeof(XINPUT_STATE));
+ if (XInputGetState(m_deviceInfo->ControllerID, &m_deviceInfo->ControllerState) != ERROR_SUCCESS)
+ {
+ return false;
+ }
+
+ m_deviceInfo->OldInputState = m_deviceInfo->CurrentInputState;
+ m_deviceInfo->CurrentInputState.read(m_deviceInfo->ControllerState);
+
+ /// ======================================================================================================
+
+ typedef void(__thiscall* sub_449410_t)(ioi::hm3::ZGameControlWintel*, float*, float*);
+ typedef void(__thiscall* sub_449350_t)(ioi::hm3::ZGameControlWintel*, int, bool, int);
+ typedef bool(__thiscall* sub_4493E0_t)(ioi::hm3::ZGameControlWintel*, int, float, int);
+
+ sub_449410_t sub_449410 = (sub_449410_t)0x00449410;
+ sub_449350_t sub_449350 = (sub_449350_t)0x00449350;
+ sub_4493E0_t sub_4493E0 = (sub_4493E0_t)0x004493E0;
+
+ // Stick position correction
+ sub_449410(gamepad, &m_deviceInfo->CurrentInputState.LStickPosX, &m_deviceInfo->CurrentInputState.LStickPosY);
+ sub_449410(gamepad, &m_deviceInfo->CurrentInputState.RStickPosX, &m_deviceInfo->CurrentInputState.RStickPosY);
+
+ // Buttons
+ sub_449350(gamepad, 0, m_deviceInfo->CurrentInputState.A, gamepad->m_tick);
+ sub_449350(gamepad, 1, m_deviceInfo->CurrentInputState.B, gamepad->m_tick);
+ sub_449350(gamepad, 2, m_deviceInfo->CurrentInputState.X, gamepad->m_tick);
+ sub_449350(gamepad, 3, m_deviceInfo->CurrentInputState.Y, gamepad->m_tick);
+
+ sub_449350(gamepad, 4, m_deviceInfo->CurrentInputState.Left, gamepad->m_tick);
+ sub_449350(gamepad, 5, m_deviceInfo->CurrentInputState.Right, gamepad->m_tick);
+ sub_449350(gamepad, 6, m_deviceInfo->CurrentInputState.Top, gamepad->m_tick);
+ sub_449350(gamepad, 7, m_deviceInfo->CurrentInputState.Bottom, gamepad->m_tick);
+
+ sub_449350(gamepad, 8, m_deviceInfo->CurrentInputState.LB, gamepad->m_tick);
+ sub_449350(gamepad, 9, m_deviceInfo->CurrentInputState.RB, gamepad->m_tick);
+ sub_449350(gamepad, 10, m_deviceInfo->CurrentInputState.Back, gamepad->m_tick);
+ sub_449350(gamepad, 11, m_deviceInfo->CurrentInputState.Start, gamepad->m_tick);
+
+ // Sticks
+ sub_4493E0(gamepad, 0, m_deviceInfo->CurrentInputState.LStickPosX, gamepad->m_tick);
+ sub_4493E0(gamepad, 1, m_deviceInfo->CurrentInputState.LStickPosY, gamepad->m_tick);
+ sub_4493E0(gamepad, 2, m_deviceInfo->CurrentInputState.RStickPosX, gamepad->m_tick);
+ sub_4493E0(gamepad, 3, m_deviceInfo->CurrentInputState.RStickPosY, gamepad->m_tick);
+
+ auto currentState = m_deviceInfo->CurrentInputState;
+
+ HM3_DEBUG(
+ " ----< GAMEPAD DUMP STATE >---- \n "
+ " A: %d | B: %d | X: %d | Y: %d \n"
+ " L: %d | R: %d | T: %d | B: %d \n"
+ " Left stick button: %d \n"
+ " Right stick button: %d \n"
+ " Back: %d | Start: %d \n"
+ " Left stick: %f;%f | Right stick: %f;%f \n"
+ " Left trigger : %f | Right trigger : %f \n"
+ " -------------------------------------- \n",
+ currentState.A, currentState.B, currentState.X, currentState.Y,
+ currentState.LStick, currentState.RStick,
+ currentState.Back, currentState.Start,
+ currentState.LStickPosX, currentState.LStickPosY, currentState.RStickPosX, currentState.RStickPosY,
+ currentState.LTrigger, currentState.RTrigger
+ );
+
+ return true;
+ /// ======================================================================================================
+
+ /*if (KEY_RELEASED(A))
+ {
+ auto sys = ioi::hm3::getGlacierInterface(ioi::hm3::SysInterface);
+ auto gameData = ioi::hm3::getGlacierInterface(ioi::hm3::GameData);
+ auto actionManager = ioi::hm3::getGlacierInterface(ioi::hm3::ActionManager);
+
+ if (sys && gameData && actionManager)
+ {
+ const int sub_568260 = 0x00568260;
+ const char* aIngamemenu = "IngameMenu";
+
+ __asm {
+ mov eax, gameData
+ mov ecx, [eax + 0x0A1C]
+ mov ecx, [ecx + 0x4]
+ push 1
+ push aIngamemenu
+ call sub_568260
+ xor eax, eax
+ }
+ }
+ }*/
+
+ /// Logic
+ /*if (m_deviceInfo->IsVibrationStarted)
+ {
+ if (m_deviceInfo->TickWhenVibrationStarted + VibrationTicksCountOnPlayerGotDamage < m_deviceInfo->CurrentTick)
+ {
+ m_deviceInfo->IsVibrationStarted = false;
+ m_deviceInfo->TickWhenVibrationStarted = 0;
+ vibrate(0, 0);
+ }
+ }*/
+ }
+
+ void HM3GamepadSupport::vibrate(uint16_t left, uint16_t right)
+ {
+ if (m_deviceInfo && m_deviceInfo->ControllerID >= 0)
+ {
+ XINPUT_VIBRATION vibration;
+ ZeroMemory(&vibration, sizeof(XINPUT_VIBRATION));
+ vibration.wLeftMotorSpeed = left;
+ vibration.wRightMotorSpeed = right;
+ XInputSetState(m_deviceInfo->ControllerID, &vibration);
+
+ m_deviceInfo->IsVibrationStarted = true;
+ m_deviceInfo->TickWhenVibrationStarted = m_deviceInfo->CurrentTick;
+ }
+ }
+}
\ No newline at end of file
diff --git a/HM3CoreKill/HM3CoreKill/ck/HM3GamepadSupport.h b/HM3CoreKill/HM3CoreKill/ck/HM3GamepadSupport.h
new file mode 100644
index 0000000..59346f6
--- /dev/null
+++ b/HM3CoreKill/HM3CoreKill/ck/HM3GamepadSupport.h
@@ -0,0 +1,19 @@
+#pragma once
+
+#include
+#include
+
+namespace ck {
+
+ class HM3GamepadSupport
+ {
+ struct GamepadDeviceInfo;
+ static GamepadDeviceInfo* m_deviceInfo;
+
+ static void initializeDeviceInfo();
+ public:
+ static bool onDeviceUpdateRequest(ioi::hm3::ZGameControlWintel* gamepad);
+ static void vibrate(uint16_t left = 32000, uint16_t right = 32000);
+ };
+
+}
\ No newline at end of file
diff --git a/HM3CoreKill/HM3CoreKill/ck/HM3Hooks.cpp b/HM3CoreKill/HM3CoreKill/ck/HM3Hooks.cpp
index 064670d..318c398 100644
--- a/HM3CoreKill/HM3CoreKill/ck/HM3Hooks.cpp
+++ b/HM3CoreKill/HM3CoreKill/ck/HM3Hooks.cpp
@@ -8,9 +8,12 @@
#include
#include
#include
+#include
#include
+#include
#include
+#include
#include
#include
#include
@@ -70,6 +73,7 @@ HWND __stdcall CreateWindowExA_Hooked(
int __stdcall ZHM3Player_DoesPlayerAcceptAnyDamage(void* pThis)
{
//HM3_DEBUG("ZHM3Player_DoesPlayerAcceptAnyDamage| ZHitman3 vftable instance at 0x%X", pThis);
+ ck::HM3GamepadSupport::vibrate();
return static_cast(HM3Game::getInstance().GetPlayer()->isDoesAcceptDamage());
}
@@ -96,6 +100,7 @@ void __stdcall ZPlayer_Destructor(DWORD instance)
// Free session base data
ck::HM3AnimationRegistry::getRegistry().reset();
ck::HM3DoorsRegistry::getRegistry().reset();
+ ck::HM3CutSequencesRegistry::getRegistry().reset();
}
void __stdcall ZDirect3DDevice_OnDeviceReady(ioi::hm3::ZDirect3DDevice* device)
@@ -110,7 +115,8 @@ void __stdcall ZDirect3DDevice_OnDeviceReady(ioi::hm3::ZDirect3DDevice* device)
/// --------------------------------------------------------------------------------
-DWORD originalMember = 0x0;
+DWORD m_ZMouseDeviceWintel__OnUpdateOrg = 0x0;
+DWORD m_ZGameControllerWintel_OnUpdateOrg = 0x0;
DWORD __stdcall ZMouseWintel_OnUpdate()
{
@@ -121,7 +127,7 @@ DWORD __stdcall ZMouseWintel_OnUpdate()
__asm {
mov ecx, mouse
- call [originalMember]
+ call [m_ZMouseDeviceWintel__OnUpdateOrg]
mov result, eax
}
@@ -135,11 +141,36 @@ DWORD __stdcall ZMouseWintel_OnUpdate()
return result;
}
+DWORD __stdcall ZGameController_OnUpdate()
+{
+ DWORD result = false;
+ ck::HM3InGameTools& instance = ck::HM3InGameTools::getInstance();
+ ioi::hm3::ZSysInputWintel* input = ioi::hm3::getGlacierInterface(ioi::hm3::WintelInput);
+ ioi::hm3::ZGameControlWintel* controller = input->m_gameControllerDevice;
+
+ __asm {
+ mov ecx, controller
+ call[m_ZGameControllerWintel_OnUpdateOrg]
+ mov result, eax
+ }
+
+ //result = ck::HM3GamepadSupport::onDeviceUpdateRequest(controller);
+
+ __asm mov ecx, controller
+ return result;
+}
+
void __stdcall OnZMouseWintelCreated(DWORD device)
{
HM3_DEBUG("ZMouseWintel created at 0x%.8X\n", device);
- originalMember = HM3Function::hookVFTable(device, 26, (DWORD)ZMouseWintel_OnUpdate, true);
+ m_ZMouseDeviceWintel__OnUpdateOrg = HM3Function::hookVFTable(device, 26, (DWORD)ZMouseWintel_OnUpdate, true);
+}
+
+void __stdcall OnZGameControllerWintelCreated(DWORD device)
+{
+ HM3_DEBUG("ZGameControllerWintel created at 0x%.8X\n", device);
+ //m_ZGameControllerWintel_OnUpdateOrg = HM3Function::hookVFTable(device, 26, (DWORD)ZGameController_OnUpdate, true);
}
void __stdcall ZHM3_OnAnimationLoaded(ioi::hm3::ZAnimationInfo* animationInstance)
@@ -221,4 +252,22 @@ void __stdcall ZM13PosController_Constructor(ioi::hm3::ZM13PosController* instan
return;
HM3_DEBUG("[ZM13PosController] created at 0x%.8X\n", instance);
+}
+
+void __stdcall ZCar_Constructor(ioi::hm3::ZCar* instance)
+{
+ if (!instance)
+ return;
+
+ HM3_DEBUG("[ZCar] constructed at 0x%.8X\n", instance);
+}
+
+void __stdcall CutSequence_Constructor(ioi::hm3::CCutSequence* instance)
+{
+ if (!instance)
+ return;
+
+ HM3_DEBUG("CutSequence| at 0x%.8X\n", instance);
+
+ ck::HM3CutSequencesRegistry::getRegistry().registerCutSequence(instance);
}
\ No newline at end of file
diff --git a/HM3CoreKill/HM3CoreKill/ck/HM3Hooks.h b/HM3CoreKill/HM3CoreKill/ck/HM3Hooks.h
index 55a8214..1cd6347 100644
--- a/HM3CoreKill/HM3CoreKill/ck/HM3Hooks.h
+++ b/HM3CoreKill/HM3CoreKill/ck/HM3Hooks.h
@@ -6,7 +6,9 @@
#include
#include
#include
+#include
#include
+#include
ATOM __stdcall RegisterClassExA_Hooked(WNDCLASSEXA* wndClass);
@@ -43,6 +45,8 @@ void __stdcall ZDirect3DDevice_OnDeviceReady(ioi::hm3::ZDirect3DDevice* device);
void __stdcall OnZMouseWintelCreated(DWORD device);
+void __stdcall OnZGameControllerWintelCreated(DWORD device);
+
void __stdcall ZHM3_OnAnimationLoaded(ioi::hm3::ZAnimationInfo* animationInstance);
void __stdcall CMapObject_OnCreate(ioi::hm3::CMapObject* instance);
@@ -53,4 +57,8 @@ void __stdcall FsZip_Constructed(ioi::hm3::FsZip_t* instance);
void __stdcall FsZip_Destructor(ioi::hm3::FsZip_t* instance);
-void __stdcall ZM13PosController_Constructor(ioi::hm3::ZM13PosController* instance);
\ No newline at end of file
+void __stdcall ZM13PosController_Constructor(ioi::hm3::ZM13PosController* instance);
+
+void __stdcall ZCar_Constructor(ioi::hm3::ZCar* instance);
+
+void __stdcall CutSequence_Constructor(ioi::hm3::CCutSequence* instance);
\ No newline at end of file
diff --git a/HM3CoreKill/HM3CoreKill/ck/HM3InGameTools.cpp b/HM3CoreKill/HM3CoreKill/ck/HM3InGameTools.cpp
index abe4496..1c4e5b3 100644
--- a/HM3CoreKill/HM3CoreKill/ck/HM3InGameTools.cpp
+++ b/HM3CoreKill/HM3CoreKill/ck/HM3InGameTools.cpp
@@ -4,6 +4,7 @@
#include
#include
+#include
#include
#include
#include
@@ -23,15 +24,19 @@
#include
#include
#include
+#include
#include
#include
#include
#include
#include
+#include
#include
+#include
#include
#include
#include
+#include
#include
@@ -182,12 +187,14 @@ namespace ck
void HM3InGameTools::drawTopMenuBar()
{
static bool showActorsViewer = false;
+ static bool showInventoryEditor = false;
if (ImGui::BeginMainMenuBar())
{
if (ImGui::BeginMenu("Tools"))
{
ImGui::MenuItem("Actors viewer", nullptr, &showActorsViewer);
+ ImGui::MenuItem("Inventory editor", nullptr, &showInventoryEditor);
ImGui::EndMenu();
}
ImGui::EndMainMenuBar();
@@ -195,6 +202,7 @@ namespace ck
if (showActorsViewer) showDebugActorsWindow(&showActorsViewer);
+ if (showInventoryEditor) showInventoryEditorWindow(&showInventoryEditor);
}
void HM3InGameTools::drawDebugMenu()
@@ -260,6 +268,40 @@ namespace ck
ImGui::TextColored(noiseLevelColor, "%.3f", osd->m_realNosieLevel);
}
+ { //FOV
+ static float fov = 0.f;
+
+ if (hitman3 && hitman3->m_camera && hitman3->m_camera->m_cameraClass)
+ {
+ static float prevFOV = 0.f;
+ static float currentFOV = 0.f;
+
+ auto camClass = hitman3->m_camera->m_cameraClass;
+
+ if (float _fov = camClass->getFOV(); currentFOV != _fov)
+ {
+ currentFOV = _fov;
+ prevFOV = currentFOV;
+ }
+
+ ImGui::Text("FOV: "); ImGui::SameLine(0.f, 5.f);
+ ImGui::InputFloat(" ", ¤tFOV, 0.1f, 0.1f, 10);
+ if (currentFOV != prevFOV)
+ {
+ prevFOV = currentFOV;
+ camClass->setFOV(currentFOV);
+ }
+
+ ImGui::SameLine(0.f, 10.f);
+ if (ImGui::Button("Reset to default"))
+ {
+ camClass->setFOV(67.4f);
+ }
+
+ ImGui::Separator();
+ }
+ }
+
{ //Teleport
static float newActorPosition[4] = { 0.f, 0.f, 0.f, 0.f };
float actorTransform[16] = { 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f };
@@ -392,7 +434,7 @@ namespace ck
if (ImGui::CollapsingHeader("Glacier | Level info"))
{
- if (!levelControl)
+ if (!hitman3 || !levelControl)
{
ImGui::Text("No active level");
return;
@@ -457,6 +499,66 @@ namespace ck
ImGui::Text("Player's inventory: ");
drawInventory(hitman3->m_inventory);
}
+
+ {
+ ImGui::Separator();
+
+ std::string_view levelControlName = gameData->m_LevelControl->getTypeName();
+
+ if (auto foundIt = levelControlName.find("M13") != std::string_view::npos)
+ {
+ if (ImGui::Button("Teleport podium to out of room"))
+ {
+ auto ccom = ioi::hm3::getCCOMObjectFromEngineDB(engineDB);
+ if (!ccom)
+ return;
+
+ std::uintptr_t table = 0;
+
+ ccom->getSTDOBJEntityIdByName("M13Table", &table);
+
+ if (!table)
+ return;
+
+ auto tableSTD = ioi::hm3::getSTDOBJById(table);
+ if (!tableSTD)
+ return;
+
+ tableSTD->m_entityLocation->position.x = -2600.f;
+ }
+ }
+ }
+
+ {
+ ImGui::Separator();
+ if (ImGui::Button("Show ingame menu"))
+ {
+ typedef int(__thiscall* showUIMenu_t)(ioi::hm3::ZXMLGUISystem*, const char*, int);
+ showUIMenu_t showUIMenu = (showUIMenu_t)0x00568260;
+ showUIMenu(gameData->m_MenuElements->m_XMLGUISystem, "IngameMenu", 1);
+ }
+
+ if (ImGui::Button("Get top window"))
+ {
+ typedef int(__thiscall* getTopWindow_t)(ioi::hm3::ZXMLGUISystem*);
+ getTopWindow_t getTopWindow = (getTopWindow_t)0x005665E0;
+ HM3_DEBUG("VAUX: 0x%.8X\n", getTopWindow(gameData->m_MenuElements->m_XMLGUISystem));
+ }
+
+ if (ImGui::Button("Print GUI infos"))
+ {
+ HM3_DEBUG(
+ "Game Data : 0x%.8x\n"
+ "Menu Elements : 0x%.8X\n"
+ "XML GUI System : 0x%.8X\n"
+ "ZWINDOWS : 0x%.8X\n",
+ gameData,
+ gameData->m_MenuElements,
+ gameData->m_MenuElements->m_XMLGUISystem,
+ gameData->m_MenuElements->m_XMLGUISystem->getZWindowsSubsystem()
+ );
+ }
+ }
}
}
@@ -505,6 +607,113 @@ namespace ck
ImGui::End();
}
+ void HM3InGameTools::showInventoryEditorWindow(bool* pOpen)
+ {
+ auto sys = ioi::hm3::getGlacierInterface(ioi::hm3::SysInterface);
+ auto gameData = ioi::hm3::getGlacierInterface(ioi::hm3::GameData);
+ if (!gameData || !gameData->m_LevelControl)
+ return;
+
+ auto hitman3 = gameData->m_Hitman3;
+ auto engineDB = sys->m_engineDataBase;
+
+ ImGui::SetNextWindowSize(ImVec2(750, 400), ImGuiCond_FirstUseEver);
+ if (ImGui::Begin("Inventory editor", pOpen))
+ {
+ ImGui::Separator();
+ // left
+ static int selected = 0;
+ ImGui::BeginChild("left pane", ImVec2(150, 0), true);
+ for (int i = 0; i < gameData->m_ActorsInPoolCount; i++)
+ {
+ char label[128];
+ sprintf(label, "Actor #%.2d", i + 1);
+ if (ImGui::Selectable(label, selected == i))
+ selected = i;
+ }
+ ImGui::EndChild();
+ ImGui::SameLine();
+
+ // right
+ if (selected >= 0)
+ {
+ ioi::hm3::ZHM3Actor* currentActor = gameData->m_ActorsPool[selected];
+
+ ImGui::BeginGroup();
+ ImGui::BeginChild("item view", ImVec2(0, -ImGui::GetFrameHeightWithSpacing())); // Leave room for 1 line below us
+
+ ImGui::TextColored(ImVec4(0.f, 1.f, 0.f, 1.f), "INVENTORY:");
+ ImGui::Separator();
+
+ auto inventory = reinterpret_cast(currentActor->getComponent("Inventory"));
+ if (inventory)
+ {
+ ioi::REFTAB32* inventoryREFTAB32 = inventory->getREFTAB32();
+
+ if (inventoryREFTAB32)
+ {
+ if (inventoryREFTAB32->m_itemsCount == 0)
+ {
+ ImGui::TextColored(ImVec4(1.f, 1.f, 0.f, 1.f), " (Empty) ");
+ }
+ else {
+ for (int i = 0; i < inventoryREFTAB32->m_itemsCount; i++)
+ {
+ std::intptr_t itemId = *ioi::get(inventoryREFTAB32, i);
+ ioi::hm3::ZHM3Item* pItem = ioi::hm3::ZHM3Item::findItemByID(itemId);
+ if (!pItem || !pItem->m_entityLocator)
+ {
+ continue;
+ }
+
+ auto itemTemplate = pItem->getItemTemplate();
+ ImGui::TextColored(ImVec4(1.f, 1.f, 0.f, 1.f), "[0x%.8X]", pItem); ImGui::SameLine(0.f, 4.f);
+ ImGui::Text("#%.3d %s (%.4X)", i, pItem->m_entityLocator->entityName, itemId);
+
+ auto lHand = currentActor->getHand(ioi::hm3::HandType::LeftHand);
+ auto rHand = currentActor->getHand(ioi::hm3::HandType::RightHand);
+
+ ImGui::SameLine(0.f, 5.f);
+ if (ImGui::Button("TAKE"))
+ {
+ auto addItemEv = engineDB->getEvent("MSG_ADDITEMTOINVENTORY", 0, __FILE__, 0);
+ auto removeItemEv = engineDB->getEvent("MSG_REMOVEITEMFROMINVENTORY", 0, __FILE__, 0);
+
+ currentActor->sendEvent(removeItemEv, itemId, 0);
+ hitman3->sendEvent(addItemEv, reinterpret_cast(itemId), 0);
+
+ HM3_DEBUG("AddItemToInventoryEv: 0x%.8X\n", addItemEv);
+ }
+
+ ImGui::SameLine(0.f, 5.f);
+ if (ImGui::Button("REMOVE"))
+ {
+ auto removeItemEv = engineDB->getEvent("MSG_REMOVEITEMFROMINVENTORY", 0, __FILE__, 0);
+
+ currentActor->sendEvent(removeItemEv, itemId, 0);
+ }
+ }
+ }
+ }
+ else
+ {
+ ImGui::SameLine(0.f, 3.f);
+ ImGui::TextColored(ImVec4(1.f, 0.f, 0.f, 1.f), "N/A");
+ }
+ }
+ else {
+ ImGui::SameLine(0.f, 3.f);
+ ImGui::TextColored(ImVec4(1.f, 0.f, 0.f, 1.f), "N/A");
+ }
+
+
+ ImGui::EndChild();
+ ImGui::EndGroup();
+ }
+ }
+ ImGui::End();
+ }
+
void HM3InGameTools::drawActorInfo(ioi::hm3::ZHM3Actor* currentActor)
{
auto sys = ioi::hm3::getGlacierInterface(ioi::hm3::SysInterface);
@@ -529,6 +738,54 @@ namespace ck
ImGui::Text("Location pointer at 0x%.8X", currentActor->ActorInformation->location);
ImGui::Text("Position:"); ImGui::SameLine(0.f, 4.f); ImGui::InputFloat3("", actorPosition);
+ {
+ if (auto boid = currentActor->m_boid; boid)
+ {
+ using BoidState = ioi::hm3::BoidState;
+
+ ImGui::Separator();
+ ImGui::Text("Human boid info (0x%.8X)", currentActor->m_boid);
+ ImGui::Spacing();
+ ImGui::Text("Boid locations : {%.4f; %.4f; %.4f} | {%.4f; %.4f; %.4f}", boid->m_pos.x, boid->m_pos.y, boid->m_pos.z, boid->m_newPos.x, boid->m_newPos.y, boid->m_newPos.z);
+ ImGui::Text("Movement speed : %.4f", boid->m_speed);
+
+ ImGui::Text("Boid state : "); ImGui::SameLine(0.f, 0.f);
+ switch (boid->m_boidState)
+ {
+ case BoidState::Moving:
+ ImGui::TextColored(ImVec4(0.f, 1.f, 0.f, 1.f), "MOVE TO POINT");
+ break;
+ case BoidState::Staying:
+ ImGui::TextColored(ImVec4(0.f, 1.f, 0.f, 1.f), "STAY AT POSITION");
+ break;
+ case BoidState::ParentActorDestroyed:
+ ImGui::TextColored(ImVec4(0.f, 1.f, 0.f, 1.f), "ACTOR DEAD");
+ break;
+ case BoidState::Sitting:
+ ImGui::TextColored(ImVec4(0.f, 1.f, 0.f, 1.f), "SITTING");
+ break;
+ default:
+ ImGui::TextColored(ImVec4(1.f, 1.f, 0.f, 1.f), "UNKNOWN STATE (%d)", boid->m_boidState);
+ break;
+ }
+
+ static float newBoidPosition[] = { 0.f, 0.f, 0.f, 0.f };
+
+ ImGui::Text("Teleport boid to "); ImGui::SameLine(0.f, 5.f);
+ ImGui::InputFloat3(" ", newBoidPosition); ImGui::SameLine(0.f, 5.f);
+
+ if (ImGui::Button("Teleport"))
+ {
+ boid->setPosition(newBoidPosition);
+ }
+ }
+ else
+ {
+ ImGui::SameLine(0.f, 0.5f);
+ ImGui::TextColored(ImVec4(1.f, 0.f, 0.f, 1.f), "NOT AVAILABLE");
+ }
+ }
+
ImGui::Text("Change actor status: "); ImGui::SameLine(0.f, 0.5f);
{
using Status = ioi::hm3::ZHM3Actor::ActorStatus;
@@ -566,6 +823,53 @@ namespace ck
}
}
+ {
+ ioi::hm3::ZPathFollower* pathFollowerComponent = reinterpret_cast(currentActor->getComponent("PathFollower"));
+
+ if (pathFollowerComponent)
+ {
+ ImGui::Separator();
+ ImGui::Text("Path follower (0x%.8X | %s):", pathFollowerComponent, (pathFollowerComponent ? pathFollowerComponent->getTypeName() : "Unknown"));
+
+ int totalPaths = pathFollowerComponent->m_reftab.getCapacity();
+ ImGui::Text("Path nodes count : %.4d", totalPaths);
+
+ for (int i = 0; i < totalPaths; i++)
+ {
+ ioi::ZLIST* pointsList = reinterpret_cast(ioi::hm3::getSTDOBJById(pathFollowerComponent->m_reftab.at(i))); // we know that path can contains only ZLIST as internal data representation
+ if (pointsList)
+ {
+ int pathPointsCount = pointsList->m_reftab->getCapacity();
+ ImGui::Text("[%.4d] Path at 0x%.8X (%d points)", i, pointsList, pathPointsCount);
+ /*ImGui::SameLine(0.f, 5.f);
+ if (ImGui::Button("Follow"))
+ {
+ using FollowPath_t = int(__thiscall*)(ioi::hm3::ZPathFollower*, int);
+ FollowPath_t FollowPath = (FollowPath_t)0x00654380;
+ FollowPath(pathFollowerComponent, i);
+
+ currentActor->m_boid->setFloat_8(100.f);
+ currentActor->m_boid->m_boidState = ioi::hm3::BoidState::Moving;
+ pathFollowerComponent->Function_0014();
+ }*/
+
+ for (int pointIndex = 0; pointIndex < pathPointsCount; pointIndex++)
+ {
+ auto entity = ioi::hm3::getSTDOBJById(pointsList->m_reftab->at(pointIndex));
+ auto locator = entity->m_entityLocation;
+
+ ImGui::Text(" [%.4d] Point %s (#%.4d) at {%.4f; %.4f; %.4f}", i, locator->entityName, pointIndex, locator->position.x, locator->position.y, locator->position.z);
+ }
+
+ }
+ else
+ {
+ ImGui::TextColored(ImVec4(1.f, 0.f, 0.f, 1.f), "[%.4d] BAD POINTS LIST", i);
+ }
+ }
+ }
+ }
+
ImGui::Separator();
drawSuitInfoForActor(currentActor);
drawHandInfo(currentActor->getHand(ioi::hm3::HandType::LeftHand));
@@ -709,7 +1013,12 @@ namespace ck
void HM3InGameTools::drawInventory(ioi::hm3::CInventory* inventory)
{
+ auto sys = ioi::hm3::getGlacierInterface(ioi::hm3::SysInterface);
+ auto gameData = ioi::hm3::getGlacierInterface(ioi::hm3::GameData);
+ HM3_ASSERT(gameData != nullptr, "GameData must be valid here!");
+
ioi::REFTAB32* inventoryREFTAB32 = inventory->getREFTAB32();
+
if (inventoryREFTAB32)
{
if (inventoryREFTAB32->m_itemsCount == 0)
diff --git a/HM3CoreKill/HM3CoreKill/ck/HM3InGameTools.h b/HM3CoreKill/HM3CoreKill/ck/HM3InGameTools.h
index eec9d7a..48be8b7 100644
--- a/HM3CoreKill/HM3CoreKill/ck/HM3InGameTools.h
+++ b/HM3CoreKill/HM3CoreKill/ck/HM3InGameTools.h
@@ -54,6 +54,7 @@ namespace ck
void drawSystemsInfo();
void drawLevelInfo();
void showDebugActorsWindow(bool* pOpen);
+ void showInventoryEditorWindow(bool* pOpen);
void drawActorInfo(ioi::hm3::ZHM3Actor* currentActor);
void drawSuitInfoForActor(ioi::hm3::ZHM3Actor* currentActor);
void drawHandInfo(ioi::hm3::ZIKHAND* hand);
diff --git a/HM3CoreKill/HM3CoreKill/ck/HM3Offsets.h b/HM3CoreKill/HM3CoreKill/ck/HM3Offsets.h
index c390024..dfd1df2 100644
--- a/HM3CoreKill/HM3CoreKill/ck/HM3Offsets.h
+++ b/HM3CoreKill/HM3CoreKill/ck/HM3Offsets.h
@@ -38,6 +38,7 @@ namespace HM3Offsets
static const FuncAddr_t ZHM3RegisterWindowClassExA_Func = 0x00453E68;
static const FuncAddr_t ZDirect3DDevice_ConstructorFunc = 0x0049091C;
static const FuncAddr_t ZWintelMouse_ContructorFunc = 0x0045007C;
+ static const FuncAddr_t ZWintelGameController_ConstructorFunc = 0x00450363;
static const FuncAddr_t Glacier_OriginalWNDPROC = 0x004513E0;
static const FuncAddr_t HM3_BuildString = 0x007562C0;
@@ -52,6 +53,9 @@ namespace HM3Offsets
static const FuncAddr_t FsZip_Destructor = 0x0042D137;
static const FuncAddr_t FsZip_ReadMethodFunc = 0x0042C470;
static const FuncAddr_t ZM13PosController_Constructor = 0x005D7195;
+ static const FuncAddr_t ZCar_Constructor = 0x005949E3;
+ static const FuncAddr_t CCutSequence_Constructor = 0x00531A14;
+ static const FuncAddr_t GetComponent_Func = 0x004E704C;
static const Index_t CMapObject_OnProcessMethodIndex = 29;
static const Index_t FsZip_ReadMethodIndex = 7;
diff --git a/HM3CoreKill/HM3CoreKill/sdk/CCutSequence.h b/HM3CoreKill/HM3CoreKill/sdk/CCutSequence.h
new file mode 100644
index 0000000..7651385
--- /dev/null
+++ b/HM3CoreKill/HM3CoreKill/sdk/CCutSequence.h
@@ -0,0 +1,60 @@
+#pragma once
+
+#include
+#include
+#include
+#include
+
+namespace ioi { namespace hm3 {
+
+ class CCutSequence : public ZLinkedListNodeBase
+ {
+ public:
+ // === members ===
+ char pad_0014[12]; //0x0014
+ int32_t m_flags; //0x0020
+ ZLIST* m_list; //0x0024
+ char pad_0028[4]; //0x0028
+ ZGlacierRTTI* m_RTTI; //0x002C
+ char pad_0030[32]; //0x0030
+
+ // === vftable ===
+ virtual void Function_0000(); //#0 +0 .rdata:0077843c
+ virtual void Function_0001(); //#1 +4 .rdata:00778440
+ virtual void Function_0002(); //#2 +8 .rdata:00778444
+ virtual void Function_0003(); //#3 +c .rdata:00778448
+ virtual void Function_0004(); //#4 +10 .rdata:0077844c
+ virtual void Function_0005(); //#5 +14 .rdata:00778450
+ virtual void Function_0006(); //#6 +18 .rdata:00778454
+ virtual void Function_0007(); //#7 +1c .rdata:00778458
+ virtual void Function_0008(); //#8 +20 .rdata:0077845c
+ virtual void Function_0009(); //#9 +24 .rdata:00778460
+ virtual void Function_0010(); //#10 +28 .rdata:00778464
+ virtual void Function_0011(); //#11 +2c .rdata:00778468
+ virtual void Function_0012(); //#12 +30 .rdata:0077846c
+ virtual void Function_0013(); //#13 +34 .rdata:00778470
+ virtual void Function_0014(); //#14 +38 .rdata:00778474
+ virtual void Function_0015(); //#15 +3c .rdata:00778478
+ virtual void Function_0016(); //#16 +40 .rdata:0077847c
+ virtual void Function_0017(); //#17 +44 .rdata:00778480
+ virtual void Function_0018(); //#18 +48 .rdata:00778484
+ virtual void Function_0019(); //#19 +4c .rdata:00778488
+ virtual void Function_0020(); //#20 +50 .rdata:0077848c
+ virtual void Function_0021(); //#21 +54 .rdata:00778490
+ virtual void Function_0022(); //#22 +58 .rdata:00778494
+ virtual void Function_0023(); //#23 +5c .rdata:00778498
+ virtual void Function_0024(); //#24 +60 .rdata:0077849c
+ virtual void Function_0025(); //#25 +64 .rdata:007784a0
+ virtual void Function_0026(); //#26 +68 .rdata:007784a4
+ virtual void Function_0027(); //#27 +6c .rdata:007784a8
+ virtual void Function_0028(); //#28 +70 .rdata:007784ac
+ virtual void Function_0029(); //#29 +74 .rdata:007784b0
+ virtual void Function_0030(); //#30 +78 .rdata:007784b4
+ virtual void Function_0031(); //#31 +7c .rdata:007784b8
+ virtual void Function_0032(); //#32 +80 .rdata:007784bc
+ virtual void Function_0033(); //#33 +84 .rdata:007784c0
+ virtual void Function_0034(); //#34 +88 .rdata:007784c4
+ virtual void Function_0035(); //#35 +8c .rdata:007784c8
+ }; //Size: 0x0050
+
+} }
\ No newline at end of file
diff --git a/HM3CoreKill/HM3CoreKill/sdk/REFTAB32.h b/HM3CoreKill/HM3CoreKill/sdk/REFTAB32.h
index a964089..d81888d 100644
--- a/HM3CoreKill/HM3CoreKill/sdk/REFTAB32.h
+++ b/HM3CoreKill/HM3CoreKill/sdk/REFTAB32.h
@@ -17,16 +17,41 @@ namespace ioi {
char pad_0030[80]; //0x0030
// === vftable ===
- virtual void Function0();
- virtual void Function1();
- virtual void Function2();
- virtual void Function3();
- virtual void Function4();
- virtual void Function5();
- virtual void Function6();
- virtual void Function7();
- virtual void Function8();
- virtual void Function9();
+ virtual void Function_0000(); //#0 +0 .rdata:00756adc
+ virtual void Function_0001(); //#1 +4 .rdata:00756ae0
+ virtual void Function_0002(); //#2 +8 .rdata:00756ae4
+ virtual void Function_0003(); //#3 +c .rdata:00756ae8
+ virtual void Function_0004(); //#4 +10 .rdata:00756aec
+ virtual void Function_0005(); //#5 +14 .rdata:00756af0
+ virtual void Function_0006(); //#6 +18 .rdata:00756af4
+ virtual void Function_0007(); //#7 +1c .rdata:00756af8
+ virtual void Function_0008(); //#8 +20 .rdata:00756afc
+ virtual void Function_0009(); //#9 +24 .rdata:00756b00
+ virtual void Function_0010(); //#10 +28 .rdata:00756b04
+ virtual void Function_0011(); //#11 +2c .rdata:00756b08
+ virtual void Function_0012(); //#12 +30 .rdata:00756b0c
+ virtual void Function_0013(); //#13 +34 .rdata:00756b10
+ virtual void Function_0014(); //#14 +38 .rdata:00756b14
+ virtual void Function_0015(); //#15 +3c .rdata:00756b18
+ virtual void Function_0016(); //#16 +40 .rdata:00756b1c
+ virtual void Function_0017(); //#17 +44 .rdata:00756b20
+ virtual void Function_0018(); //#18 +48 .rdata:00756b24
+ virtual void Function_0019(); //#19 +4c .rdata:00756b28
+ virtual void getFirstEntity(int* pResult); //#20 +50 .rdata:00756b2c
+ virtual void Function_0021(); //#21 +54 .rdata:00756b30
+ virtual void Function_0022(); //#22 +58 .rdata:00756b34
+ virtual void Function_0023(); //#23 +5c .rdata:00756b38
+ virtual int* getNextEntityAfter(int* pEntity); //#24 +60 .rdata:00756b3c
+ virtual void Function_0025(); //#25 +64 .rdata:00756b40
+ virtual void Function_0026(); //#26 +68 .rdata:00756b44
+ virtual void Function_0027(); //#27 +6c .rdata:00756b48
+ virtual void Function_0028(); //#28 +70 .rdata:00756b4c
+ virtual void Function_0029(); //#29 +74 .rdata:00756b50
+ virtual void Function_0030(); //#30 +78 .rdata:00756b54
+ virtual void Function_0031(); //#31 +7c .rdata:00756b58
+ virtual void Function_0032(); //#32 +80 .rdata:00756b5c
+ virtual void Function_0033(); //#33 +84 .rdata:00756b60
+ virtual void Function_0034(); //#34 +88 .rdata:00756b64
}; //Size: 0x0080
template _Type* get(REFTAB32* reftab, int index)
diff --git a/HM3CoreKill/HM3CoreKill/sdk/ZActionManager.h b/HM3CoreKill/HM3CoreKill/sdk/ZActionManager.h
new file mode 100644
index 0000000..10310e8
--- /dev/null
+++ b/HM3CoreKill/HM3CoreKill/sdk/ZActionManager.h
@@ -0,0 +1,47 @@
+#pragma once
+
+#include
+
+namespace ioi { namespace hm3 {
+ class ZActionMapTree
+ {
+ public:
+ /// === vftable ===
+ virtual void Function_0000(); //#0 +0 .rdata:0075E878 .func:44B460
+
+ /// === members ===
+ ZActionMapTree* m_parent; //0x0004
+ ZActionMapTree* m_leftBranch; //0x0008
+ ZActionMapTree* m_rightBranch; //0x000C
+ ZActionMapTree* m_unusedBranch0; //0x0010
+ ZActionMapTree* m_unusedBranch1; //0x0014
+ ZActionMapTree* m_unusedBranch2; //0x0018
+ char m_name[24]; //0x001C
+ uint32_t m_unk0; //0x0034
+ char pad_0038[8]; //0x0038
+ };
+
+ class ZActionManager
+ {
+ public:
+ /// === vftable ===
+ virtual void Function_0000(); //#0 +0 .rdata:0075e8ac
+ virtual void Function_0001(); //#1 +4 .rdata:0075e8b0
+ virtual bool getFlag4CState(); //#2 +8 .rdata:0075e8b4
+ virtual void Function_0003(); //#3 +c .rdata:0075e8b8
+ virtual void Function_0004(); //#4 +10 .rdata:0075e8bc
+ virtual char* getHotkeyForAction(const char* actionName); //#5 +14 .rdata:0075e8c0
+ virtual void Function_0006(); //#6 +18 .rdata:0075e8c4
+ virtual void Function_0007(); //#7 +1c .rdata:0075e8c8
+ virtual void Function_0008(); //#8 +20 .rdata:0075e8cc
+ virtual void Function_0009(); //#9 +24 .rdata:0075e8d0
+ virtual void Function_0010(); //#10 +28 .rdata:0075e8d4
+ virtual void Function_0011(); //#11 +2c .rdata:0075e8d8
+ virtual void Function_0012(); //#12 +30 .rdata:0075e8dc
+ virtual void Function_0013(); //#13 +34 .rdata:0075e8e0
+ virtual void Function_0014(); //#14 +38 .rdata:0075e8e4
+
+ /// === members ===
+ ZActionMapTree m_tree; //0x0004
+ };
+} }
\ No newline at end of file
diff --git a/HM3CoreKill/HM3CoreKill/sdk/ZCar.h b/HM3CoreKill/HM3CoreKill/sdk/ZCar.h
new file mode 100644
index 0000000..f8a068d
--- /dev/null
+++ b/HM3CoreKill/HM3CoreKill/sdk/ZCar.h
@@ -0,0 +1,230 @@
+#pragma once
+
+#include
+#include
+
+namespace ioi { namespace hm3 {
+
+ class ZCar
+ {
+ public:
+ ZEntityLocator* m_entityLocator; //0x0004
+ char pad_0008[520]; //0x0008
+ int32_t m_carShouldMove; //0x0210
+ char pad_0214[356]; //0x0214
+ int32_t unk0; //0x0378
+ char pad_037C[452]; //0x037C
+
+
+ /// === vftable ===
+ virtual void Function_0000(); //#0 +0 .rdata:0078411c
+ virtual void Function_0001(); //#1 +4 .rdata:00784120
+ virtual void Function_0002(); //#2 +8 .rdata:00784124
+ virtual void Function_0003(); //#3 +c .rdata:00784128
+ virtual void Function_0004(); //#4 +10 .rdata:0078412c
+ virtual void Function_0005(); //#5 +14 .rdata:00784130
+ virtual void Function_0006(); //#6 +18 .rdata:00784134
+ virtual void Function_0007(); //#7 +1c .rdata:00784138
+ virtual void Function_0008(); //#8 +20 .rdata:0078413c
+ virtual void Function_0009(); //#9 +24 .rdata:00784140
+ virtual void Function_0010(); //#10 +28 .rdata:00784144
+ virtual void Function_0011(); //#11 +2c .rdata:00784148
+ virtual void Function_0012(); //#12 +30 .rdata:0078414c
+ virtual void Function_0013(); //#13 +34 .rdata:00784150
+ virtual void Function_0014(); //#14 +38 .rdata:00784154
+ virtual void Function_0015(); //#15 +3c .rdata:00784158
+ virtual void Function_0016(); //#16 +40 .rdata:0078415c
+ virtual void Function_0017(); //#17 +44 .rdata:00784160
+ virtual void Function_0018(); //#18 +48 .rdata:00784164
+ virtual void Function_0019(); //#19 +4c .rdata:00784168
+ virtual void Function_0020(); //#20 +50 .rdata:0078416c
+ virtual void Function_0021(); //#21 +54 .rdata:00784170
+ virtual void Function_0022(); //#22 +58 .rdata:00784174
+ virtual void Function_0023(); //#23 +5c .rdata:00784178
+ virtual void Function_0024(); //#24 +60 .rdata:0078417c
+ virtual void Function_0025(); //#25 +64 .rdata:00784180
+ virtual void Function_0026(); //#26 +68 .rdata:00784184
+ virtual void Function_0027(); //#27 +6c .rdata:00784188
+ virtual void Function_0028(); //#28 +70 .rdata:0078418c
+ virtual void Function_0029(); //#29 +74 .rdata:00784190
+ virtual void Function_0030(); //#30 +78 .rdata:00784194
+ virtual void Function_0031(); //#31 +7c .rdata:00784198
+ virtual void Function_0032(); //#32 +80 .rdata:0078419c
+ virtual void Function_0033(); //#33 +84 .rdata:007841a0
+ virtual void Function_0034(); //#34 +88 .rdata:007841a4
+ virtual void Function_0035(); //#35 +8c .rdata:007841a8
+ virtual void Function_0036(); //#36 +90 .rdata:007841ac
+ virtual void Function_0037(); //#37 +94 .rdata:007841b0
+ virtual void Function_0038(); //#38 +98 .rdata:007841b4
+ virtual void Function_0039(); //#39 +9c .rdata:007841b8
+ virtual void Function_0040(); //#40 +a0 .rdata:007841bc
+ virtual void Function_0041(); //#41 +a4 .rdata:007841c0
+ virtual void Function_0042(); //#42 +a8 .rdata:007841c4
+ virtual void Function_0043(); //#43 +ac .rdata:007841c8
+ virtual void Function_0044(); //#44 +b0 .rdata:007841cc
+ virtual void Function_0045(); //#45 +b4 .rdata:007841d0
+ virtual void Function_0046(); //#46 +b8 .rdata:007841d4
+ virtual void Function_0047(); //#47 +bc .rdata:007841d8
+ virtual void Function_0048(); //#48 +c0 .rdata:007841dc
+ virtual void Function_0049(); //#49 +c4 .rdata:007841e0
+ virtual void Function_0050(); //#50 +c8 .rdata:007841e4
+ virtual void Function_0051(); //#51 +cc .rdata:007841e8
+ virtual void Function_0052(); //#52 +d0 .rdata:007841ec
+ virtual void Function_0053(); //#53 +d4 .rdata:007841f0
+ virtual void Function_0054(); //#54 +d8 .rdata:007841f4
+ virtual void Function_0055(); //#55 +dc .rdata:007841f8
+ virtual void Function_0056(); //#56 +e0 .rdata:007841fc
+ virtual void Function_0057(); //#57 +e4 .rdata:00784200
+ virtual void Function_0058(); //#58 +e8 .rdata:00784204
+ virtual void Function_0059(); //#59 +ec .rdata:00784208
+ virtual void Function_0060(); //#60 +f0 .rdata:0078420c
+ virtual void Function_0061(); //#61 +f4 .rdata:00784210
+ virtual void Function_0062(); //#62 +f8 .rdata:00784214
+ virtual void Function_0063(); //#63 +fc .rdata:00784218
+ virtual void Function_0064(); //#64 +100 .rdata:0078421c
+ virtual void Function_0065(); //#65 +104 .rdata:00784220
+ virtual void Function_0066(); //#66 +108 .rdata:00784224
+ virtual void Function_0067(); //#67 +10c .rdata:00784228
+ virtual void Function_0068(); //#68 +110 .rdata:0078422c
+ virtual void Function_0069(); //#69 +114 .rdata:00784230
+ virtual void Function_0070(); //#70 +118 .rdata:00784234
+ virtual void Function_0071(); //#71 +11c .rdata:00784238
+ virtual void Function_0072(); //#72 +120 .rdata:0078423c
+ virtual void Function_0073(); //#73 +124 .rdata:00784240
+ virtual void Function_0074(); //#74 +128 .rdata:00784244
+ virtual void Function_0075(); //#75 +12c .rdata:00784248
+ virtual void Function_0076(); //#76 +130 .rdata:0078424c
+ virtual void Function_0077(); //#77 +134 .rdata:00784250
+ virtual void Function_0078(); //#78 +138 .rdata:00784254
+ virtual void Function_0079(); //#79 +13c .rdata:00784258
+ virtual void Function_0080(); //#80 +140 .rdata:0078425c
+ virtual void Function_0081(); //#81 +144 .rdata:00784260
+ virtual void Function_0082(); //#82 +148 .rdata:00784264
+ virtual void Function_0083(); //#83 +14c .rdata:00784268
+ virtual void Function_0084(); //#84 +150 .rdata:0078426c
+ virtual void Function_0085(); //#85 +154 .rdata:00784270
+ virtual void Function_0086(); //#86 +158 .rdata:00784274
+ virtual void Function_0087(); //#87 +15c .rdata:00784278
+ virtual void Function_0088(); //#88 +160 .rdata:0078427c
+ virtual void Function_0089(); //#89 +164 .rdata:00784280
+ virtual void Function_0090(); //#90 +168 .rdata:00784284
+ virtual void Function_0091(); //#91 +16c .rdata:00784288
+ virtual void Function_0092(); //#92 +170 .rdata:0078428c
+ virtual void Function_0093(); //#93 +174 .rdata:00784290
+ virtual void Function_0094(); //#94 +178 .rdata:00784294
+ virtual void Function_0095(); //#95 +17c .rdata:00784298
+ virtual void Function_0096(); //#96 +180 .rdata:0078429c
+ virtual void Function_0097(); //#97 +184 .rdata:007842a0
+ virtual void Function_0098(); //#98 +188 .rdata:007842a4
+ virtual void Function_0099(); //#99 +18c .rdata:007842a8
+ virtual void Function_0100(); //#100 +190 .rdata:007842ac
+ virtual void Function_0101(); //#101 +194 .rdata:007842b0
+ virtual void Function_0102(); //#102 +198 .rdata:007842b4
+ virtual void Function_0103(); //#103 +19c .rdata:007842b8
+ virtual void Function_0104(); //#104 +1a0 .rdata:007842bc
+ virtual void Function_0105(); //#105 +1a4 .rdata:007842c0
+ virtual void Function_0106(); //#106 +1a8 .rdata:007842c4
+ virtual void Function_0107(); //#107 +1ac .rdata:007842c8
+ virtual void Function_0108(); //#108 +1b0 .rdata:007842cc
+ virtual void Function_0109(); //#109 +1b4 .rdata:007842d0
+ virtual void Function_0110(); //#110 +1b8 .rdata:007842d4
+ virtual void Function_0111(); //#111 +1bc .rdata:007842d8
+ virtual void Function_0112(); //#112 +1c0 .rdata:007842dc
+ virtual void Function_0113(); //#113 +1c4 .rdata:007842e0
+ virtual void Function_0114(); //#114 +1c8 .rdata:007842e4
+ virtual void Function_0115(); //#115 +1cc .rdata:007842e8
+ virtual void Function_0116(); //#116 +1d0 .rdata:007842ec
+ virtual void Function_0117(); //#117 +1d4 .rdata:007842f0
+ virtual void Function_0118(); //#118 +1d8 .rdata:007842f4
+ virtual void Function_0119(); //#119 +1dc .rdata:007842f8
+ virtual void Function_0120(); //#120 +1e0 .rdata:007842fc
+ virtual void Function_0121(); //#121 +1e4 .rdata:00784300
+ virtual void Function_0122(); //#122 +1e8 .rdata:00784304
+ virtual void Function_0123(); //#123 +1ec .rdata:00784308
+ virtual void Function_0124(); //#124 +1f0 .rdata:0078430c
+ virtual void Function_0125(); //#125 +1f4 .rdata:00784310
+ virtual void Function_0126(); //#126 +1f8 .rdata:00784314
+ virtual void Function_0127(); //#127 +1fc .rdata:00784318
+ virtual void Function_0128(); //#128 +200 .rdata:0078431c
+ virtual void Function_0129(); //#129 +204 .rdata:00784320
+ virtual void Function_0130(); //#130 +208 .rdata:00784324
+ virtual void Function_0131(); //#131 +20c .rdata:00784328
+ virtual void Function_0132(); //#132 +210 .rdata:0078432c
+ virtual void Function_0133(); //#133 +214 .rdata:00784330
+ virtual void Function_0134(); //#134 +218 .rdata:00784334
+ virtual void Function_0135(); //#135 +21c .rdata:00784338
+ virtual void Function_0136(); //#136 +220 .rdata:0078433c
+ virtual void Function_0137(); //#137 +224 .rdata:00784340
+ virtual void Function_0138(); //#138 +228 .rdata:00784344
+ virtual void Function_0139(); //#139 +22c .rdata:00784348
+ virtual void Function_0140(); //#140 +230 .rdata:0078434c
+ virtual void Function_0141(); //#141 +234 .rdata:00784350
+ virtual void Function_0142(); //#142 +238 .rdata:00784354
+ virtual void Function_0143(); //#143 +23c .rdata:00784358
+ virtual void Function_0144(); //#144 +240 .rdata:0078435c
+ virtual void Function_0145(); //#145 +244 .rdata:00784360
+ virtual void Function_0146(); //#146 +248 .rdata:00784364
+ virtual void Function_0147(); //#147 +24c .rdata:00784368
+ virtual void Function_0148(); //#148 +250 .rdata:0078436c
+ virtual void Function_0149(); //#149 +254 .rdata:00784370
+ virtual void Function_0150(); //#150 +258 .rdata:00784374
+ virtual void Function_0151(); //#151 +25c .rdata:00784378
+ virtual void Function_0152(); //#152 +260 .rdata:0078437c
+ virtual void Function_0153(); //#153 +264 .rdata:00784380
+ virtual void Function_0154(); //#154 +268 .rdata:00784384
+ virtual void Function_0155(); //#155 +26c .rdata:00784388
+ virtual void Function_0156(); //#156 +270 .rdata:0078438c
+ virtual void Function_0157(); //#157 +274 .rdata:00784390
+ virtual void Function_0158(); //#158 +278 .rdata:00784394
+ virtual void Function_0159(); //#159 +27c .rdata:00784398
+ virtual void Function_0160(); //#160 +280 .rdata:0078439c
+ virtual void Function_0161(); //#161 +284 .rdata:007843a0
+ virtual void Function_0162(); //#162 +288 .rdata:007843a4
+ virtual void Function_0163(); //#163 +28c .rdata:007843a8
+ virtual void Function_0164(); //#164 +290 .rdata:007843ac
+ virtual void Function_0165(); //#165 +294 .rdata:007843b0
+ virtual void Function_0166(); //#166 +298 .rdata:007843b4
+ virtual void Function_0167(); //#167 +29c .rdata:007843b8
+ virtual void Function_0168(); //#168 +2a0 .rdata:007843bc
+ virtual void Function_0169(); //#169 +2a4 .rdata:007843c0
+ virtual void Function_0170(); //#170 +2a8 .rdata:007843c4
+ virtual void Function_0171(); //#171 +2ac .rdata:007843c8
+ virtual void Function_0172(); //#172 +2b0 .rdata:007843cc
+ virtual void Function_0173(); //#173 +2b4 .rdata:007843d0
+ virtual void Function_0174(); //#174 +2b8 .rdata:007843d4
+ virtual void Function_0175(); //#175 +2bc .rdata:007843d8
+ virtual void Function_0176(); //#176 +2c0 .rdata:007843dc
+ virtual void Function_0177(); //#177 +2c4 .rdata:007843e0
+ virtual void Function_0178(); //#178 +2c8 .rdata:007843e4
+ virtual void Function_0179(); //#179 +2cc .rdata:007843e8
+ virtual void Function_0180(); //#180 +2d0 .rdata:007843ec
+ virtual void Function_0181(); //#181 +2d4 .rdata:007843f0
+ virtual void Function_0182(); //#182 +2d8 .rdata:007843f4
+ virtual void Function_0183(); //#183 +2dc .rdata:007843f8
+ virtual void Function_0184(); //#184 +2e0 .rdata:007843fc
+ virtual void Function_0185(); //#185 +2e4 .rdata:00784400
+ virtual void Function_0186(); //#186 +2e8 .rdata:00784404
+ virtual void Function_0187(); //#187 +2ec .rdata:00784408
+ virtual void Function_0188(); //#188 +2f0 .rdata:0078440c
+ virtual void Function_0189(); //#189 +2f4 .rdata:00784410
+ virtual void Function_0190(); //#190 +2f8 .rdata:00784414
+ virtual void Function_0191(); //#191 +2fc .rdata:00784418
+ virtual void Function_0192(); //#192 +300 .rdata:0078441c
+ virtual void Function_0193(); //#193 +304 .rdata:00784420
+ virtual void Function_0194(); //#194 +308 .rdata:00784424
+ virtual void Function_0195(); //#195 +30c .rdata:00784428
+ virtual void Function_0196(); //#196 +310 .rdata:0078442c
+ virtual void Function_0197(); //#197 +314 .rdata:00784430
+ virtual void Function_0198(); //#198 +318 .rdata:00784434
+ virtual void Function_0199(); //#199 +31c .rdata:00784438
+ virtual void Function_0200(); //#200 +320 .rdata:0078443c
+ virtual void Function_0201(); //#201 +324 .rdata:00784440
+ virtual void Function_0202(); //#202 +328 .rdata:00784444
+ virtual void Function_0203(); //#203 +32c .rdata:00784448
+ virtual float getUnkFloat(); //#204 +330 .rdata:0078444c
+ virtual void Function_0205(); //#205 +334 .rdata:00784450
+ virtual void Function_0206(); //#206 +338 .rdata:00784454
+ virtual void Function_0207(); //#207 +33c .rdata:00784458
+ }; //Size: 0x00F4
+
+}}
\ No newline at end of file
diff --git a/HM3CoreKill/HM3CoreKill/sdk/ZDirect3DDevice.h b/HM3CoreKill/HM3CoreKill/sdk/ZDirect3DDevice.h
index a67e69c..6910b7d 100644
--- a/HM3CoreKill/HM3CoreKill/sdk/ZDirect3DDevice.h
+++ b/HM3CoreKill/HM3CoreKill/sdk/ZDirect3DDevice.h
@@ -11,27 +11,26 @@ namespace ioi { namespace hm3 {
IDirect3DDevice9* m_d3dDevice; //0x0004
int32_t m_unknown; //0x0008
- virtual void Function0();
- virtual void Function1();
- virtual void Function2();
- virtual void Function3();
- virtual void Function4();
- virtual void Function5();
- virtual void Function6();
- virtual void Function7();
- virtual void Function8();
- virtual void Function9();
- virtual void Function10();
- virtual void Function11();
- virtual void Function12();
- virtual void Function13();
- virtual void Function14();
- virtual void Function15();
- virtual void Function16();
- virtual void Function17();
- virtual void Function18();
- virtual void Function19();
- virtual void Function20();
- virtual void Function21();
+ virtual void Function_0000(); //#0 +0 .rdata:0076419c
+ virtual void Function_0001(); //#1 +4 .rdata:007641a0
+ virtual void Function_0002(); //#2 +8 .rdata:007641a4
+ virtual void Function_0003(); //#3 +c .rdata:007641a8
+ virtual void Function_0004(); //#4 +10 .rdata:007641ac
+ virtual void Function_0005(); //#5 +14 .rdata:007641b0
+ virtual void Function_0006(); //#6 +18 .rdata:007641b4
+ virtual void Function_0007(); //#7 +1c .rdata:007641b8
+ virtual void setTexture(int a0, int a1); //#8 +20 .rdata:007641bc
+ virtual int getTextureStageState(); //#9 +24 .rdata:007641c0
+ virtual void Function_0010(); //#10 +28 .rdata:007641c4
+ virtual void Function_0011(); //#11 +2c .rdata:007641c8
+ virtual void Function_0012(); //#12 +30 .rdata:007641cc
+ virtual void Function_0013(); //#13 +34 .rdata:007641d0
+ virtual void Function_0014(); //#14 +38 .rdata:007641d4
+ virtual void Function_0015(); //#15 +3c .rdata:007641d8
+ virtual void Function_0016(); //#16 +40 .rdata:007641dc
+ virtual void Function_0017(); //#17 +44 .rdata:007641e0
+ virtual void Function_0018(); //#18 +48 .rdata:007641e4
+ virtual void Function_0019(); //#19 +4c .rdata:007641e8
+ virtual void Function_0020(); //#20 +50 .rdata:007641ec
}; //Size: 0x000C
}}
\ No newline at end of file
diff --git a/HM3CoreKill/HM3CoreKill/sdk/ZEngineDatabase.cpp b/HM3CoreKill/HM3CoreKill/sdk/ZEngineDatabase.cpp
index 6af5f93..b9c8522 100644
--- a/HM3CoreKill/HM3CoreKill/sdk/ZEngineDatabase.cpp
+++ b/HM3CoreKill/HM3CoreKill/sdk/ZEngineDatabase.cpp
@@ -20,4 +20,24 @@ namespace ioi { namespace hm3 {
return result;
}
+ ZSTDOBJ* getSTDOBJById(std::uintptr_t objectId)
+ {
+ using sub4E5BE0_t = ZSTDOBJ * (__cdecl*)(std::uintptr_t);
+ sub4E5BE0_t sub4E5BE0 = (sub4E5BE0_t)0x004E5BE0;
+ return sub4E5BE0(objectId);
+ }
+
+ REFTAB32* getEntitiesListFromCCOM(CCOM* instance)
+ {
+ REFTAB32* result = nullptr;
+ __asm {
+ mov ecx, instance
+ test ecx, ecx
+ jz __getEntitiesListFromCCOM__end
+ lea eax, [ecx + 0x4008]
+ __getEntitiesListFromCCOM__end:
+ mov result, eax
+ }
+ return result;
+ }
}}
\ No newline at end of file
diff --git a/HM3CoreKill/HM3CoreKill/sdk/ZEngineDatabase.h b/HM3CoreKill/HM3CoreKill/sdk/ZEngineDatabase.h
index 197df7d..08f58b4 100644
--- a/HM3CoreKill/HM3CoreKill/sdk/ZEngineDatabase.h
+++ b/HM3CoreKill/HM3CoreKill/sdk/ZEngineDatabase.h
@@ -1,6 +1,8 @@
#pragma once
#include
+#include
+#include
#include
#include
@@ -139,7 +141,7 @@ namespace ioi { namespace hm3 {
virtual void Function_0028(); //#0028 +0070 .rdata:007564d4
virtual void Function_0029(); //#0029 +0074 .rdata:007564d8
virtual void Function_0030(); //#0030 +0078 .rdata:007564dc
- virtual void getVariableValue(const char* varName, std::intptr_t& result); //#0031 +007C .rdata:007564e0
+ virtual void getSTDOBJEntityIdByName(const char* entityName, std::uintptr_t* result); //#0031 +007C .rdata:007564e0
virtual void Function_0032(); //#0032 +0080 .rdata:007564e4
virtual void Function_0033(); //#0033 +0084 .rdata:007564e8
virtual void Function_0034(); //#0034 +0088 .rdata:007564ec
@@ -150,8 +152,10 @@ namespace ioi { namespace hm3 {
virtual void Function_0039(); //#0039 +009c .rdata:00756500
virtual void Function_0040(); //#0040 +00a0 .rdata:00756504
virtual void Function_0041(); //#0041 +00a4 .rdata:00756508
- virtual void Function_0042(); //#0042 +00a8 .rdata:0075650c
+ virtual void Function_0042(); //#0042 +00a8 .rdata:0075650c
};
CCOM* getCCOMObjectFromEngineDB(ZEngineDatabase* instance);
+ ZSTDOBJ* getSTDOBJById(std::uintptr_t objectId);
+ REFTAB32* getEntitiesListFromCCOM(CCOM* instance);
}}
\ No newline at end of file
diff --git a/HM3CoreKill/HM3CoreKill/sdk/ZGUI.h b/HM3CoreKill/HM3CoreKill/sdk/ZGUI.h
index eec386f..397fe6b 100644
--- a/HM3CoreKill/HM3CoreKill/sdk/ZGUI.h
+++ b/HM3CoreKill/HM3CoreKill/sdk/ZGUI.h
@@ -2,142 +2,167 @@
#include
-#define CONCAT_IMPL(a,b) a##b
-#define CONCAT(a,b) CONCAT_IMPL(a,b)
-#define MEMBER_PAD(id, size) unsigned char CONCAT(CONCAT(__pad_, id),__)[size];
-
namespace ioi { namespace hm3 {
class ZGUI
{
public:
- virtual void UnknownFunction_0();// +0000
- virtual void UnknownFunction_1();// +0004
- virtual void UnknownFunction_2();// +0008
- virtual void UnknownFunction_3();// +000C
- virtual void UnknownFunction_4();// +0010
- virtual void UnknownFunction_5();// +0014
- virtual void UnknownFunction_6();// +0018
- virtual void UnknownFunction_7();// +001C
- virtual void UnknownFunction_8();// +0020
- virtual void UnknownFunction_9();// +0024
- virtual void UnknownFunction_10();// +0028
- virtual void UnknownFunction_11();// +002C
- virtual void UnknownFunction_12();// +0030
- virtual void UnknownFunction_13();// +0034
- virtual void UnknownFunction_14();// +0038
- virtual void UnknownFunction_15();// +003C
- virtual void UnknownFunction_16();// +0040
- virtual void UnknownFunction_17();// +0044
- virtual void UnknownFunction_18();// +0048
- virtual void UnknownFunction_19();// +004C
- virtual void UnknownFunction_20();// +0050
- virtual void UnknownFunction_21();// +0054
- virtual void UnknownFunction_22();// +0058
- virtual void UnknownFunction_23();// +005C
- virtual void UnknownFunction_24();// +0060
- virtual void UnknownFunction_25();// +0064
- virtual void UnknownFunction_26();// +0068
- virtual void UnknownFunction_27();// +006C
- virtual void UnknownFunction_28();// +0070
- virtual void UnknownFunction_29();// +0074
- virtual void UnknownFunction_30();// +0078
- virtual void UnknownFunction_31();// +007C
- virtual void UnknownFunction_32();// +0080
- virtual void UnknownFunction_33();// +0084
- virtual void UnknownFunction_34();// +0088
- virtual void UnknownFunction_35();// +008C
- virtual void UnknownFunction_36();// +0090
- virtual void UnknownFunction_37();// +0094
- virtual void UnknownFunction_38();// +0098
- virtual void UnknownFunction_39();// +009C
- virtual void UnknownFunction_40();// +00A0
- virtual void UnknownFunction_41();// +00A4
- virtual void UnknownFunction_42();// +00A8
- virtual void UnknownFunction_43();// +00AC
- virtual void UnknownFunction_44();// +00B0
- virtual void UnknownFunction_45();// +00B4
- virtual void UnknownFunction_46();// +00B8
- virtual void UnknownFunction_47();// +00BC
- virtual void UnknownFunction_48();// +00C0
- virtual void UnknownFunction_49();// +00C4
- virtual void UnknownFunction_50();// +00C8
- virtual void UnknownFunction_51();// +00CC
- virtual void UnknownFunction_52();// +00D0
- virtual void UnknownFunction_53();// +00D4
- virtual void UnknownFunction_54();// +00D8
- virtual void UnknownFunction_55();// +00DC
- virtual void UnknownFunction_56();// +00E0
- virtual void UnknownFunction_57();// +00E4
- virtual void UnknownFunction_58();// +00E8
- virtual void UnknownFunction_59();// +00EC
- virtual void UnknownFunction_60();// +00F0
- virtual void UnknownFunction_61();// +00F4
- virtual void UnknownFunction_62();// +00F8
- virtual void UnknownFunction_63();// +00FC
- virtual void UnknownFunction_64();// +0100
- virtual void UnknownFunction_65();// +0104
- virtual void UnknownFunction_66();// +0108
- virtual void UnknownFunction_67();// +010C
- virtual void UnknownFunction_68();// +0110
- virtual void UnknownFunction_69();// +0114
- virtual void UnknownFunction_70();// +0118
- virtual void UnknownFunction_71();// +011C
- virtual void UnknownFunction_72();// +0120
- virtual void UnknownFunction_73();// +0124
- virtual void UnknownFunction_74();// +0128
- virtual void UnknownFunction_75();// +012C
- virtual void UnknownFunction_76();// +0130
- virtual void UnknownFunction_77();// +0134
- virtual void UnknownFunction_78();// +0138
- virtual void UnknownFunction_79();// +013C
- virtual void UnknownFunction_80();// +0140
- virtual void UnknownFunction_81();// +0144
- virtual void UnknownFunction_82();// +0148
- virtual void UnknownFunction_83();// +014C
- virtual void UnknownFunction_84();// +0150
- virtual void UnknownFunction_85();// +0154
- virtual void UnknownFunction_86();// +0158
- virtual void UnknownFunction_87();// +015C
- virtual void UnknownFunction_88();// +0160
- virtual void UnknownFunction_89();// +0164
- virtual void UnknownFunction_90();// +0168
- virtual void UnknownFunction_91();// +016C
- virtual void UnknownFunction_92();// +0170
- virtual void UnknownFunction_93();// +0174
- virtual void UnknownFunction_94();// +0178
- virtual void UnknownFunction_95();// +017C
- virtual void UnknownFunction_96();// +0180
- virtual void UnknownFunction_97();// +0184
- virtual void UnknownFunction_98();// +0188
- virtual void UnknownFunction_99();// +018C
- virtual void UnknownFunction_100();// +0190
- virtual void UnknownFunction_101();// +0194
- virtual void UnknownFunction_102();// +0198
- virtual void UnknownFunction_103();// +019C
- virtual void UnknownFunction_104();// +01A0
- virtual void UnknownFunction_105();// +01A4
- virtual void UnknownFunction_106();// +01A8
- virtual void UnknownFunction_107();// +01AC
- virtual void UnknownFunction_108();// +01B0
- virtual void UnknownFunction_109();// +01B4
- virtual void UnknownFunction_110();// +01B8
- virtual void UnknownFunction_111();// +01BC
- virtual void UnknownFunction_112();// +01C0
- virtual void UnknownFunction_113();// +01C4
- virtual void UnknownFunction_114();// +01C8
- virtual void UnknownFunction_115();// +01CC
- virtual void UnknownFunction_116();// +01D0
- virtual void UnknownFunction_117();// +01D4
- virtual void UnknownFunction_118();// +01D8
- virtual void UnknownFunction_119();// +01DC
+ virtual void Function_0000(); //#0 +0 .rdata:007a1a54
+ virtual void Function_0001(); //#1 +4 .rdata:007a1a58
+ virtual void Function_0002(); //#2 +8 .rdata:007a1a5c
+ virtual void Function_0003(); //#3 +c .rdata:007a1a60
+ virtual void Function_0004(); //#4 +10 .rdata:007a1a64
+ virtual void Function_0005(); //#5 +14 .rdata:007a1a68
+ virtual void Function_0006(); //#6 +18 .rdata:007a1a6c
+ virtual void Function_0007(); //#7 +1c .rdata:007a1a70
+ virtual void Function_0008(); //#8 +20 .rdata:007a1a74
+ virtual void Function_0009(); //#9 +24 .rdata:007a1a78
+ virtual void Function_0010(); //#10 +28 .rdata:007a1a7c
+ virtual void Function_0011(); //#11 +2c .rdata:007a1a80
+ virtual void Function_0012(); //#12 +30 .rdata:007a1a84
+ virtual void Function_0013(); //#13 +34 .rdata:007a1a88
+ virtual void Function_0014(); //#14 +38 .rdata:007a1a8c
+ virtual void Function_0015(); //#15 +3c .rdata:007a1a90
+ virtual void Function_0016(); //#16 +40 .rdata:007a1a94
+ virtual void Function_0017(); //#17 +44 .rdata:007a1a98
+ virtual void Function_0018(); //#18 +48 .rdata:007a1a9c
+ virtual void Function_0019(); //#19 +4c .rdata:007a1aa0
+ virtual void Function_0020(); //#20 +50 .rdata:007a1aa4
+ virtual void Function_0021(); //#21 +54 .rdata:007a1aa8
+ virtual void Function_0022(); //#22 +58 .rdata:007a1aac
+ virtual void Function_0023(); //#23 +5c .rdata:007a1ab0
+ virtual void Function_0024(); //#24 +60 .rdata:007a1ab4
+ virtual void Function_0025(); //#25 +64 .rdata:007a1ab8
+ virtual void Function_0026(); //#26 +68 .rdata:007a1abc
+ virtual void Function_0027(); //#27 +6c .rdata:007a1ac0
+ virtual void Function_0028(); //#28 +70 .rdata:007a1ac4
+ virtual void Function_0029(); //#29 +74 .rdata:007a1ac8
+ virtual void Function_0030(); //#30 +78 .rdata:007a1acc
+ virtual void Function_0031(); //#31 +7c .rdata:007a1ad0
+ virtual void Function_0032(); //#32 +80 .rdata:007a1ad4
+ virtual void Function_0033(); //#33 +84 .rdata:007a1ad8
+ virtual void Function_0034(); //#34 +88 .rdata:007a1adc
+ virtual void Function_0035(); //#35 +8c .rdata:007a1ae0
+ virtual void Function_0036(); //#36 +90 .rdata:007a1ae4
+ virtual void Function_0037(); //#37 +94 .rdata:007a1ae8
+ virtual void Function_0038(); //#38 +98 .rdata:007a1aec
+ virtual void Function_0039(); //#39 +9c .rdata:007a1af0
+ virtual void Function_0040(); //#40 +a0 .rdata:007a1af4
+ virtual void Function_0041(); //#41 +a4 .rdata:007a1af8
+ virtual void Function_0042(); //#42 +a8 .rdata:007a1afc
+ virtual void Function_0043(); //#43 +ac .rdata:007a1b00
+ virtual void Function_0044(); //#44 +b0 .rdata:007a1b04
+ virtual void Function_0045(); //#45 +b4 .rdata:007a1b08
+ virtual void Function_0046(); //#46 +b8 .rdata:007a1b0c
+ virtual void Function_0047(); //#47 +bc .rdata:007a1b10
+ virtual void Function_0048(); //#48 +c0 .rdata:007a1b14
+ virtual void Function_0049(); //#49 +c4 .rdata:007a1b18
+ virtual void Function_0050(); //#50 +c8 .rdata:007a1b1c
+ virtual void Function_0051(); //#51 +cc .rdata:007a1b20
+ virtual void Function_0052(); //#52 +d0 .rdata:007a1b24
+ virtual void Function_0053(); //#53 +d4 .rdata:007a1b28
+ virtual void Function_0054(); //#54 +d8 .rdata:007a1b2c
+ virtual void Function_0055(); //#55 +dc .rdata:007a1b30
+ virtual void Function_0056(); //#56 +e0 .rdata:007a1b34
+ virtual void Function_0057(); //#57 +e4 .rdata:007a1b38
+ virtual void Function_0058(); //#58 +e8 .rdata:007a1b3c
+ virtual void Function_0059(); //#59 +ec .rdata:007a1b40
+ virtual void Function_0060(); //#60 +f0 .rdata:007a1b44
+ virtual void Function_0061(); //#61 +f4 .rdata:007a1b48
+ virtual void Function_0062(); //#62 +f8 .rdata:007a1b4c
+ virtual void Function_0063(); //#63 +fc .rdata:007a1b50
+ virtual void Function_0064(); //#64 +100 .rdata:007a1b54
+ virtual void Function_0065(); //#65 +104 .rdata:007a1b58
+ virtual void Function_0066(); //#66 +108 .rdata:007a1b5c
+ virtual void Function_0067(); //#67 +10c .rdata:007a1b60
+ virtual void Function_0068(); //#68 +110 .rdata:007a1b64
+ virtual void Function_0069(); //#69 +114 .rdata:007a1b68
+ virtual void Function_0070(); //#70 +118 .rdata:007a1b6c
+ virtual void Function_0071(); //#71 +11c .rdata:007a1b70
+ virtual void Function_0072(); //#72 +120 .rdata:007a1b74
+ virtual void Function_0073(); //#73 +124 .rdata:007a1b78
+ virtual void Function_0074(); //#74 +128 .rdata:007a1b7c
+ virtual void Function_0075(); //#75 +12c .rdata:007a1b80
+ virtual void Function_0076(); //#76 +130 .rdata:007a1b84
+ virtual void Function_0077(); //#77 +134 .rdata:007a1b88
+ virtual void Function_0078(); //#78 +138 .rdata:007a1b8c
+ virtual void Function_0079(); //#79 +13c .rdata:007a1b90
+ virtual void Function_0080(); //#80 +140 .rdata:007a1b94
+ virtual void Function_0081(); //#81 +144 .rdata:007a1b98
+ virtual void Function_0082(); //#82 +148 .rdata:007a1b9c
+ virtual void Function_0083(); //#83 +14c .rdata:007a1ba0
+ virtual void Function_0084(); //#84 +150 .rdata:007a1ba4
+ virtual void Function_0085(); //#85 +154 .rdata:007a1ba8
+ virtual void Function_0086(); //#86 +158 .rdata:007a1bac
+ virtual void Function_0087(); //#87 +15c .rdata:007a1bb0 [update]
+ virtual void Function_0088(); //#88 +160 .rdata:007a1bb4
+ virtual void Function_0089(); //#89 +164 .rdata:007a1bb8
+ virtual void Function_0090(); //#90 +168 .rdata:007a1bbc
+ virtual void Function_0091(); //#91 +16c .rdata:007a1bc0
+ virtual void Function_0092(); //#92 +170 .rdata:007a1bc4
+ virtual void Function_0093(); //#93 +174 .rdata:007a1bc8
+ virtual void Function_0094(); //#94 +178 .rdata:007a1bcc
+ virtual void Function_0095(); //#95 +17c .rdata:007a1bd0
+ virtual void Function_0096(); //#96 +180 .rdata:007a1bd4
+ virtual void Function_0097(); //#97 +184 .rdata:007a1bd8
+ virtual void Function_0098(); //#98 +188 .rdata:007a1bdc
+ virtual void Function_0099(); //#99 +18c .rdata:007a1be0
+ virtual void Function_0100(); //#100 +190 .rdata:007a1be4
+ virtual void Function_0101(); //#101 +194 .rdata:007a1be8
+ virtual void Function_0102(); //#102 +198 .rdata:007a1bec
+ virtual void Function_0103(); //#103 +19c .rdata:007a1bf0
+ virtual void Function_0104(); //#104 +1a0 .rdata:007a1bf4
+ virtual void Function_0105(); //#105 +1a4 .rdata:007a1bf8
+ virtual void Function_0106(); //#106 +1a8 .rdata:007a1bfc
+ virtual void Function_0107(); //#107 +1ac .rdata:007a1c00
+ virtual void Function_0108(); //#108 +1b0 .rdata:007a1c04
+ virtual void Function_0109(); //#109 +1b4 .rdata:007a1c08
+ virtual void Function_0110(); //#110 +1b8 .rdata:007a1c0c
+ virtual void Function_0111(); //#111 +1bc .rdata:007a1c10
+ virtual void Function_0112(); //#112 +1c0 .rdata:007a1c14
+ virtual void Function_0113(); //#113 +1c4 .rdata:007a1c18
+ virtual void Function_0114(); //#114 +1c8 .rdata:007a1c1c
+ virtual void Function_0115(); //#115 +1cc .rdata:007a1c20
+ virtual void Function_0116(); //#116 +1d0 .rdata:007a1c24
+ virtual void Function_0117(); //#117 +1d4 .rdata:007a1c28
+ virtual void Function_0118(); //#118 +1d8 .rdata:007a1c2c
+ virtual void Function_0119(); //#119 +1dc .rdata:007a1c30
/// ---------- MEMBERS -----------
- MEMBER_PAD(0, 0x5C);
- std::uintptr_t m_InventoryMenu; //5C
- MEMBER_PAD(1, 0x1C);
- std::uintptr_t m_Unknown_WINPIC; //7C
- //TODO: Complete it
+ uint32_t m_entityLocator; //0x0004
+ char pad_0008[4]; //0x0008
+ uint32_t __MEMCHECK__; //0x000C [should be equal to 0x50000, otherwise memory corrupted!]
+ int32_t m_uiFlags; //0x0010
+ char pad_0014[16]; //0x0014
+ int32_t m_uiMapState; //0x0024
+ char pad_0028[12]; //0x0028
+ uint32_t m_postFilterCollectionEvent; //0x0034
+ uint32_t m_postFilterEvent; //0x0038
+ uint32_t m_postFilterSetEvent; //0x003C
+ char pad_0040[28]; //0x0040
+ uint32_t m_inventoryMenu; //0x005C
+ char pad_0060[212]; //0x0060
+ int32_t m_isWeaponShowed; //0x0134
+ char pad_0138[32]; //0x0138
+ uint32_t m_camera; //0x0158
+ uint32_t m_cameraClass; //0x015C
+ char pad_0160[92]; //0x0160
+ uint32_t m_weaponDisplay; //0x01BC
+ char pad_01C0[4]; //0x01C0
+ int32_t m_iconClassId; //0x01C4
+ char pad_01C8[16]; //0x01C8
+ uint32_t m_infoDisplay; //0x01D8
+ char pad_01DC[240]; //0x01DC
+ uint32_t m_cheatMenu; //0x02CC
+ char pad_02D0[16]; //0x02D0
+ uint32_t m_pickupMenu; //0x02E0
+ char pad_02E4[16]; //0x02E4
+ uint32_t m_dropDisplay; //0x02F4
+ char pad_02F8[16]; //0x02F8
+ uint32_t m_actionMenu; //0x0308
+ char pad_030C[16]; //0x030C
+ uint32_t m_containerMenu; //0x031C
+ char pad_0320[32]; //0x0320
};
}}
diff --git a/HM3CoreKill/HM3CoreKill/sdk/ZGUIBase.h b/HM3CoreKill/HM3CoreKill/sdk/ZGUIBase.h
index 54fc82c..0baf40c 100644
--- a/HM3CoreKill/HM3CoreKill/sdk/ZGUIBase.h
+++ b/HM3CoreKill/HM3CoreKill/sdk/ZGUIBase.h
@@ -1,6 +1,7 @@
#pragma once
#include
+#include
namespace ioi {
namespace hm3 {
@@ -22,68 +23,7 @@ namespace hm3 {
virtual int sub_563D20(int, int);
virtual void RESERVED_0();
- char Name[64]; //+ 0x04
- int32_t X; //+ 0x68
- int32_t Y; //+ 0x72
- };
-
- /****
-
- +------(IGUIElement)----
- |+------(ZGUIBase)-----
- 0x0 || {vfptr}
- 0x4 || char Name[64];
- 0x68 || int32_t X
- 0x72 || int32_t Y
- |+---------------------
- 0x76 | {vfptr}
- 0x7A | int32_t unk0;
- 0x7E | int32_t unk1;
- 0x82 | int32_t unk2;
- 0x86 | int32_t unk3;
- 0x8A | int32_t unk4;
- 0x8E | int32_t unk5;
- 0x92 | bool unk6;
- +-----------------------
- ****/
- class IGUIElement : public ZGUIBase
- {
- public:
- //14 METHODS
- virtual int sub_55E230(int, int);
- virtual void RESERVED_0();
- virtual void RESERVED_1();
- virtual void RESERVED_2();
- virtual void RESERVED_3();
- virtual void sub_580400();
- virtual void RESERVED_4();
- virtual void sub_55E4B0();
- virtual void RESERVED_5();
- virtual void sub_6F7FC0();
- virtual void RESERVED_6();
- virtual void RESERVED_7();
- virtual void RESERVED_8();
-
- // TODO: RECONSTRUCT INLINE STRUCTURE
- int32_t Unknown_0;
- int32_t Unknown_1;
- int32_t Unknown_2;
- int32_t Unknown_3;
- int32_t Unknown_4;
- int32_t Unknown_5;
- bool Unknown_6;
- };
-
- class ZNavigator : public IGUIElement, public ZGUIBase
- {
- public:
- //16 METHODS
-
- };
-
- class ZNavigatorGeneric : public ZNavigator
- {
- public:
- //16 METHODS
+ char m_name[64]; //0x0004
+ Vector2 m_position; //0x0044
};
}}
\ No newline at end of file
diff --git a/HM3CoreKill/HM3CoreKill/sdk/ZGameControlWintel.h b/HM3CoreKill/HM3CoreKill/sdk/ZGameControlWintel.h
new file mode 100644
index 0000000..02e9f6d
--- /dev/null
+++ b/HM3CoreKill/HM3CoreKill/sdk/ZGameControlWintel.h
@@ -0,0 +1,17 @@
+#pragma once
+
+namespace ioi { namespace hm3 {
+
+ class ZGameControlWintel
+ {
+ public:
+ /// === members ===
+ char pad_0004[76]; //0x0004
+ int32_t m_tick; //0x0050
+ char pad_0054[496]; //0x0054
+
+ /// === vftable ===
+ virtual void Function0();
+ };
+
+} }
\ No newline at end of file
diff --git a/HM3CoreKill/HM3CoreKill/sdk/ZGameGlobals.h b/HM3CoreKill/HM3CoreKill/sdk/ZGameGlobals.h
index d3c5b8d..ab89a5a 100644
--- a/HM3CoreKill/HM3CoreKill/sdk/ZGameGlobals.h
+++ b/HM3CoreKill/HM3CoreKill/sdk/ZGameGlobals.h
@@ -38,6 +38,7 @@ namespace hm3 {
static const std::uintptr_t ScriptComponent = 0x008A89CC; //Based on ZScriptComponent
static const std::uintptr_t ItemIdToNameMap = 0x008031E0; //Map between item ID and their code name (1'st - id, 2'nd - char*)
static const std::uintptr_t ItemNameToIdMap = 0x008031E4; //Map between item codename and their id (1'st - name ptr, 2'nd - id)
+ static const std::uintptr_t ActionManager = 0x008ACAC4; //Based on ZActionManager
static const std::uintptr_t ComponentManager_RuntimeComponentBase = 0x002DB0038; //Based on ZComponentManager : ZComponentManagerBase : ZComponentBase : NotCopyable
diff --git a/HM3CoreKill/HM3CoreKill/sdk/ZHM3Actor.h b/HM3CoreKill/HM3CoreKill/sdk/ZHM3Actor.h
index b95ec74..e6c7273 100644
--- a/HM3CoreKill/HM3CoreKill/sdk/ZHM3Actor.h
+++ b/HM3CoreKill/HM3CoreKill/sdk/ZHM3Actor.h
@@ -1,6 +1,7 @@
#pragma once
#include
+#include
#include
#include
#include
@@ -318,7 +319,7 @@ namespace hm3 {
virtual void Function_0258(); //#258 +408 .rdata:0079673c
virtual void Function_0259(); //#259 +40c .rdata:00796740
virtual void Function_0260(); //#260 +410 .rdata:00796744
- virtual void Function_0261(); //#261 +414 .rdata:00796748
+ virtual const char* Function_0261(); //#261 +414 .rdata:00796748
virtual void Function_0262(); //#262 +418 .rdata:0079674c
virtual void Function_0263(); //#263 +41c .rdata:00796750
virtual void Function_0264(); //#264 +420 .rdata:00796754
@@ -511,6 +512,14 @@ namespace hm3 {
ActorInfos* ActorInformation; //0x0004
char pad_0008[68]; //0x0008
SuiteMask m_suitMask; //0x004C
+ char pad_0050[932]; //0x0050
+ ZHumanBoid* m_boid; //0x03F4
+ char pad_03F8[1288]; //0x03F8
+ int32_t m_onMapType; //0x0900
+ char pad_0904[452]; //0x0904
+ uint32_t m_currentZROOM; //0x0AC8
+ char pad_0ACC[148]; //0x0ACC
+
// === custom ===
ZIKHAND* getHand(HandType type);
diff --git a/HM3CoreKill/HM3CoreKill/sdk/ZHM3Camera.h b/HM3CoreKill/HM3CoreKill/sdk/ZHM3Camera.h
index cd38d25..6be03b8 100644
--- a/HM3CoreKill/HM3CoreKill/sdk/ZHM3Camera.h
+++ b/HM3CoreKill/HM3CoreKill/sdk/ZHM3Camera.h
@@ -2,52 +2,85 @@
#include
#include
+#include
+#include
+#include
namespace ioi {
namespace hm3 {
- class ZHM3Camera
+ class ZHM3Camera : public ZLinkedListNodeBase
{
public:
- virtual void Function0(); //
- virtual void Function1(); //
- virtual void Function2(); //
- virtual void Function3(); //
- virtual void Function4(); //
- virtual void Function5(); //
- virtual void Function6(); //
- virtual void Function7(); //
- virtual void Function8(); //
- virtual void Function9(); //
- virtual void Function10(); //
- virtual void Function11(); //
- virtual void Function12(); //
- virtual void Function13(); //
- virtual void Function14(); //
- virtual void Function15(); //
- virtual void Function16(); //
- virtual void Function17(); //
- virtual void Function18(); //
- virtual void Function19(); //
- virtual void Function20(); //
- virtual void Function21(); //
- virtual void Function22(); //
- virtual void Function23(); //
+ /// === vftable ===
+ virtual void Function_0000(); //#0 +0 .rdata:0078d99c
+ virtual void Function_0001(); //#1 +4 .rdata:0078d9a0
+ virtual void Function_0002(); //#2 +8 .rdata:0078d9a4
+ virtual void Function_0003(); //#3 +c .rdata:0078d9a8
+ virtual void Function_0004(); //#4 +10 .rdata:0078d9ac
+ virtual void Function_0005(); //#5 +14 .rdata:0078d9b0
+ virtual void Function_0006(); //#6 +18 .rdata:0078d9b4
+ virtual void Function_0007(); //#7 +1c .rdata:0078d9b8
+ virtual void Function_0008(); //#8 +20 .rdata:0078d9bc
+ virtual void Function_0009(); //#9 +24 .rdata:0078d9c0
+ virtual void Function_0010(); //#10 +28 .rdata:0078d9c4
+ virtual void Function_0011(); //#11 +2c .rdata:0078d9c8
+ virtual void Function_0012(); //#12 +30 .rdata:0078d9cc
+ virtual void Function_0013(); //#13 +34 .rdata:0078d9d0
+ virtual void Function_0014(); //#14 +38 .rdata:0078d9d4
+ virtual void Function_0015(); //#15 +3c .rdata:0078d9d8
+ virtual void Function_0016(); //#16 +40 .rdata:0078d9dc
+ virtual void Function_0017(); //#17 +44 .rdata:0078d9e0
+ virtual void Function_0018(); //#18 +48 .rdata:0078d9e4
+ virtual void Function_0019(); //#19 +4c .rdata:0078d9e8
+ virtual void Function_0020(); //#20 +50 .rdata:0078d9ec
+ virtual void Function_0021(); //#21 +54 .rdata:0078d9f0
+ virtual void Function_0022(); //#22 +58 .rdata:0078d9f4
+ virtual void Function_0023(); //#23 +5c .rdata:0078d9f8
+ virtual void Function_0024(); //#24 +60 .rdata:0078d9fc
+ virtual void Function_0025(); //#25 +64 .rdata:0078da00
+ virtual void Function_0026(); //#26 +68 .rdata:0078da04
+ virtual void Function_0027(); //#27 +6c .rdata:0078da08
+ virtual void Function_0028(); //#28 +70 .rdata:0078da0c
+ virtual void Function_0029(); //#29 +74 .rdata:0078da10
+ virtual void Function_0030(); //#30 +78 .rdata:0078da14
+ virtual void Function_0031(); //#31 +7c .rdata:0078da18
+ virtual void Function_0032(); //#32 +80 .rdata:0078da1c
+ virtual void Function_0033(); //#33 +84 .rdata:0078da20
+ virtual void Function_0034(); //#34 +88 .rdata:0078da24
+ virtual void Function_0035(); //#35 +8c .rdata:0078da28
+ virtual void Function_0036(); //#36 +90 .rdata:0078da2c
+ virtual void Function_0037(); //#37 +94 .rdata:0078da30
+ virtual void Function_0038(); //#38 +98 .rdata:0078da34
+ virtual void Function_0039(); //#39 +9c .rdata:0078da38
+ virtual void Function_0040(); //#40 +a0 .rdata:0078da3c
+ virtual void Function_0041(); //#41 +a4 .rdata:0078da40
+ virtual void Function_0042(); //#42 +a8 .rdata:0078da44
+ virtual void Function_0043(); //#43 +ac .rdata:0078da48
+ virtual void Function_0044(); //#44 +b0 .rdata:0078da4c
+ virtual void Function_0045(); //#45 +b4 .rdata:0078da50
+ virtual void Function_0046(); //#46 +b8 .rdata:0078da54
+ virtual void Function_0047(); //#47 +bc .rdata:0078da58
+ virtual void Function_0048(); //#48 +c0 .rdata:0078da5c
- // sub_4E4300 - recalculate camera factor
-
- char pad_0x0004[0x30]; //0x0004
- Vector2 m_CameraSpaceSize; //0x0034
- float m_ZCamOffset; //0x003C
- float m_camZoom; //0x0040
- float N00001B61; //0x0044
- __int32 N00001B62; //0x0048
- float N00001B6D; //0x004C
- float m_fogDist; //0x0050 (default 30000.0)
- char pad_0x0054[0x50]; //0x0054
- float N00001B83; //0x00A4
- char pad_0x00A8[0x10]; //0x00A8
- float N00001B88; //0x00B8
- char pad_0x00BC[0x10]; //0x00BC
+ /// === members ===
+
+ char pad_0014[16]; //0x0014
+ ZHM3CameraClass* m_cameraClass; //0x0024
+ char pad_0028[4]; //0x0028
+ ZGlacierRTTI* m_RTTI; //0x002C
+ char pad_0030[4]; //0x0030
+ Vector2 m_CameraSpaceSize; //0x0034
+ float m_ZCamOffset; //0x003C
+ float m_camZoom; //0x0040
+ float N00001B61; //0x0044
+ __int32 N00001B62; //0x0048
+ float N00001B6D; //0x004C
+ float m_fogDist; //0x0050 (default 30000.0)
+ char pad_0x0054[0x50]; //0x0054
+ float N00001B83; //0x00A4
+ char pad_0x00A8[0x10]; //0x00A8
+ float N00001B88; //0x00B8
+ char pad_0x00BC[0x10]; //0x00BC
}; //Size=0x009C
diff --git a/HM3CoreKill/HM3CoreKill/sdk/ZHM3CameraClass.h b/HM3CoreKill/HM3CoreKill/sdk/ZHM3CameraClass.h
index d5b6197..542b4e1 100644
--- a/HM3CoreKill/HM3CoreKill/sdk/ZHM3CameraClass.h
+++ b/HM3CoreKill/HM3CoreKill/sdk/ZHM3CameraClass.h
@@ -1,11 +1,173 @@
#pragma once
+#include
+
namespace ioi { namespace hm3 {
class ZHM3CameraClass
{
public:
- virtual void Func0();
+
+ virtual void Function_0000(); //#0 +0 .rdata:0078df5c
+ virtual void Function_0001(); //#1 +4 .rdata:0078df60
+ virtual void Function_0002(); //#2 +8 .rdata:0078df64
+ virtual void Function_0003(); //#3 +c .rdata:0078df68
+ virtual void Function_0004(); //#4 +10 .rdata:0078df6c
+ virtual void Function_0005(); //#5 +14 .rdata:0078df70
+ virtual void Function_0006(); //#6 +18 .rdata:0078df74
+ virtual void Function_0007(); //#7 +1c .rdata:0078df78
+ virtual void Function_0008(); //#8 +20 .rdata:0078df7c
+ virtual void Function_0009(); //#9 +24 .rdata:0078df80
+ virtual void Function_0010(); //#10 +28 .rdata:0078df84
+ virtual void Function_0011(); //#11 +2c .rdata:0078df88
+ virtual void Function_0012(); //#12 +30 .rdata:0078df8c
+ virtual void Function_0013(); //#13 +34 .rdata:0078df90
+ virtual void Function_0014(); //#14 +38 .rdata:0078df94
+ virtual void Function_0015(); //#15 +3c .rdata:0078df98
+ virtual void Function_0016(); //#16 +40 .rdata:0078df9c
+ virtual void Function_0017(); //#17 +44 .rdata:0078dfa0
+ virtual void Function_0018(); //#18 +48 .rdata:0078dfa4
+ virtual void Function_0019(); //#19 +4c .rdata:0078dfa8
+ virtual void Function_0020(); //#20 +50 .rdata:0078dfac
+ virtual void Function_0021(); //#21 +54 .rdata:0078dfb0
+ virtual void Function_0022(); //#22 +58 .rdata:0078dfb4
+ virtual void Function_0023(); //#23 +5c .rdata:0078dfb8
+ virtual void Function_0024(); //#24 +60 .rdata:0078dfbc
+ virtual void Function_0025(); //#25 +64 .rdata:0078dfc0
+ virtual void Function_0026(); //#26 +68 .rdata:0078dfc4
+ virtual void Function_0027(); //#27 +6c .rdata:0078dfc8
+ virtual void Function_0028(); //#28 +70 .rdata:0078dfcc
+ virtual void Function_0029(); //#29 +74 .rdata:0078dfd0
+ virtual void Function_0030(); //#30 +78 .rdata:0078dfd4
+ virtual void Function_0031(); //#31 +7c .rdata:0078dfd8
+ virtual void Function_0032(); //#32 +80 .rdata:0078dfdc
+ virtual void Function_0033(); //#33 +84 .rdata:0078dfe0
+ virtual void Function_0034(); //#34 +88 .rdata:0078dfe4
+ virtual void Function_0035(); //#35 +8c .rdata:0078dfe8
+ virtual void Function_0036(); //#36 +90 .rdata:0078dfec
+ virtual void Function_0037(); //#37 +94 .rdata:0078dff0
+ virtual void Function_0038(); //#38 +98 .rdata:0078dff4
+ virtual void Function_0039(); //#39 +9c .rdata:0078dff8
+ virtual void Function_0040(); //#40 +a0 .rdata:0078dffc
+ virtual void Function_0041(); //#41 +a4 .rdata:0078e000
+ virtual void Function_0042(); //#42 +a8 .rdata:0078e004
+ virtual void Function_0043(); //#43 +ac .rdata:0078e008
+ virtual void Function_0044(); //#44 +b0 .rdata:0078e00c
+ virtual void Function_0045(); //#45 +b4 .rdata:0078e010
+ virtual void Function_0046(); //#46 +b8 .rdata:0078e014
+ virtual void Function_0047(); //#47 +bc .rdata:0078e018
+ virtual void Function_0048(); //#48 +c0 .rdata:0078e01c
+ virtual void Function_0049(); //#49 +c4 .rdata:0078e020
+ virtual void Function_0050(); //#50 +c8 .rdata:0078e024
+ virtual void Function_0051(); //#51 +cc .rdata:0078e028
+ virtual void Function_0052(); //#52 +d0 .rdata:0078e02c
+ virtual void Function_0053(); //#53 +d4 .rdata:0078e030
+ virtual void Function_0054(); //#54 +d8 .rdata:0078e034
+ virtual void Function_0055(); //#55 +dc .rdata:0078e038
+ virtual void Function_0056(); //#56 +e0 .rdata:0078e03c
+ virtual void Function_0057(); //#57 +e4 .rdata:0078e040
+ virtual void Function_0058(); //#58 +e8 .rdata:0078e044
+ virtual void Function_0059(); //#59 +ec .rdata:0078e048
+ virtual void Function_0060(); //#60 +f0 .rdata:0078e04c
+ virtual void Function_0061(); //#61 +f4 .rdata:0078e050
+ virtual void Function_0062(); //#62 +f8 .rdata:0078e054
+ virtual void Function_0063(); //#63 +fc .rdata:0078e058
+ virtual void Function_0064(); //#64 +100 .rdata:0078e05c
+ virtual void Function_0065(); //#65 +104 .rdata:0078e060
+ virtual void Function_0066(); //#66 +108 .rdata:0078e064
+ virtual void Function_0067(); //#67 +10c .rdata:0078e068
+ virtual void Function_0068(); //#68 +110 .rdata:0078e06c
+ virtual void Function_0069(); //#69 +114 .rdata:0078e070
+ virtual void Function_0070(); //#70 +118 .rdata:0078e074
+ virtual void Function_0071(); //#71 +11c .rdata:0078e078
+ virtual void Function_0072(); //#72 +120 .rdata:0078e07c
+ virtual void Function_0073(); //#73 +124 .rdata:0078e080
+ virtual void Function_0074(); //#74 +128 .rdata:0078e084
+ virtual void Function_0075(); //#75 +12c .rdata:0078e088
+ virtual void Function_0076(); //#76 +130 .rdata:0078e08c
+ virtual void Function_0077(); //#77 +134 .rdata:0078e090
+ virtual void Function_0078(); //#78 +138 .rdata:0078e094
+ virtual void Function_0079(); //#79 +13c .rdata:0078e098
+ virtual void Function_0080(); //#80 +140 .rdata:0078e09c
+ virtual void Function_0081(); //#81 +144 .rdata:0078e0a0
+ virtual void Function_0082(); //#82 +148 .rdata:0078e0a4
+ virtual void Function_0083(); //#83 +14c .rdata:0078e0a8
+ virtual void Function_0084(); //#84 +150 .rdata:0078e0ac
+ virtual void Function_0085(); //#85 +154 .rdata:0078e0b0
+ virtual void Function_0086(); //#86 +158 .rdata:0078e0b4
+ virtual void Function_0087(); //#87 +15c .rdata:0078e0b8
+ virtual void Function_0088(); //#88 +160 .rdata:0078e0bc
+ virtual void Function_0089(); //#89 +164 .rdata:0078e0c0
+ virtual void Function_0090(); //#90 +168 .rdata:0078e0c4
+ virtual void Function_0091(); //#91 +16c .rdata:0078e0c8
+ virtual void Function_0092(); //#92 +170 .rdata:0078e0cc
+ virtual void Function_0093(); //#93 +174 .rdata:0078e0d0
+ virtual void Function_0094(); //#94 +178 .rdata:0078e0d4
+ virtual void Function_0095(); //#95 +17c .rdata:0078e0d8
+ virtual void Function_0096(); //#96 +180 .rdata:0078e0dc
+ virtual void Function_0097(); //#97 +184 .rdata:0078e0e0
+ virtual void Function_0098(); //#98 +188 .rdata:0078e0e4
+ virtual void Function_0099(); //#99 +18c .rdata:0078e0e8
+ virtual void Function_0100(); //#100 +190 .rdata:0078e0ec
+ virtual void Function_0101(); //#101 +194 .rdata:0078e0f0
+ virtual void Function_0102(); //#102 +198 .rdata:0078e0f4
+ virtual void Function_0103(); //#103 +19c .rdata:0078e0f8
+ virtual void Function_0104(); //#104 +1a0 .rdata:0078e0fc
+ virtual void Function_0105(); //#105 +1a4 .rdata:0078e100
+ virtual void Function_0106(); //#106 +1a8 .rdata:0078e104
+ virtual void Function_0107(); //#107 +1ac .rdata:0078e108
+ virtual void Function_0108(); //#108 +1b0 .rdata:0078e10c
+ virtual void Function_0109(); //#109 +1b4 .rdata:0078e110
+ virtual void Function_0110(); //#110 +1b8 .rdata:0078e114
+ virtual void Function_0111(); //#111 +1bc .rdata:0078e118
+ virtual void Function_0112(); //#112 +1c0 .rdata:0078e11c
+ virtual void Function_0113(); //#113 +1c4 .rdata:0078e120
+ virtual void Function_0114(); //#114 +1c8 .rdata:0078e124
+ virtual void Function_0115(); //#115 +1cc .rdata:0078e128
+ virtual void Function_0116(); //#116 +1d0 .rdata:0078e12c
+ virtual void Function_0117(); //#117 +1d4 .rdata:0078e130
+ virtual void Function_0118(); //#118 +1d8 .rdata:0078e134
+ virtual void Function_0119(); //#119 +1dc .rdata:0078e138
+ virtual void Function_0120(); //#120 +1e0 .rdata:0078e13c
+ virtual void Function_0121(); //#121 +1e4 .rdata:0078e140
+ virtual void setFOV(float fovValue); //#122 +1e8 .rdata:0078e144
+ virtual float getFOV(); //#123 +1ec .rdata:0078e148
+ virtual void Function_0124(); //#124 +1f0 .rdata:0078e14c
+ virtual void Function_0125(); //#125 +1f4 .rdata:0078e150
+ virtual void Function_0126(); //#126 +1f8 .rdata:0078e154
+ virtual void Function_0127(); //#127 +1fc .rdata:0078e158
+ virtual void Function_0128(); //#128 +200 .rdata:0078e15c
+ virtual void Function_0129(); //#129 +204 .rdata:0078e160
+ virtual void Function_0130(); //#130 +208 .rdata:0078e164
+ virtual void Function_0131(); //#131 +20c .rdata:0078e168
+ virtual void Function_0132(); //#132 +210 .rdata:0078e16c
+ virtual void Function_0133(); //#133 +214 .rdata:0078e170
+ virtual void Function_0134(); //#134 +218 .rdata:0078e174
+ virtual void Function_0135(); //#135 +21c .rdata:0078e178
+ virtual void Function_0136(); //#136 +220 .rdata:0078e17c
+ virtual void Function_0137(); //#137 +224 .rdata:0078e180
+ virtual void Function_0138(); //#138 +228 .rdata:0078e184
+ virtual void Function_0139(); //#139 +22c .rdata:0078e188
+ virtual void Function_0140(); //#140 +230 .rdata:0078e18c
+ virtual void Function_0141(); //#141 +234 .rdata:0078e190
+ virtual void Function_0142(); //#142 +238 .rdata:0078e194
+ virtual void Function_0143(); //#143 +23c .rdata:0078e198
+ virtual void Function_0144(); //#144 +240 .rdata:0078e19c
+ virtual void Function_0145(); //#145 +244 .rdata:0078e1a0
+ virtual void Function_0146(); //#146 +248 .rdata:0078e1a4
+ virtual void Function_0147(); //#147 +24c .rdata:0078e1a8
+ virtual void Function_0148(); //#148 +250 .rdata:0078e1ac
+ virtual void Function_0149(); //#149 +254 .rdata:0078e1b0
+ virtual void Function_0150(); //#150 +258 .rdata:0078e1b4
+ virtual void Function_0151(); //#151 +25c .rdata:0078e1b8
+ virtual void Function_0152(); //#152 +260 .rdata:0078e1bc
+
+ /// === members ===
+ Matrix4x4* m_transform; //0x0004 [readOnly]
+ char pad_0008[44]; //0x0008
+ Vector2 m_viewport; //0x0034
+ Vector3 m_cameraOffset; //0x003C
+
};
ZHM3CameraClass* getCameraClassByIndex(int cameraIndex);
diff --git a/HM3CoreKill/HM3CoreKill/sdk/ZHM3GameData.h b/HM3CoreKill/HM3CoreKill/sdk/ZHM3GameData.h
index a57b6b8..eb76407 100644
--- a/HM3CoreKill/HM3CoreKill/sdk/ZHM3GameData.h
+++ b/HM3CoreKill/HM3CoreKill/sdk/ZHM3GameData.h
@@ -5,6 +5,8 @@
#include
#include
#include
+#include
+#include
#include
#include
#include
@@ -17,11 +19,8 @@ namespace ioi {
namespace hm3 {
DECLARE_UNKNOWN_TYPE_PTR(N00001B3F);
DECLARE_UNKNOWN_TYPE_PTR(N000033C1);
- DECLARE_UNKNOWN_TYPE_PTR(REFTAB);
DECLARE_UNKNOWN_TYPE_PTR(ZHM3GameStats);
DECLARE_UNKNOWN_TYPE_PTR(N0000163D);
- DECLARE_UNKNOWN_TYPE_PTR(ZGui);
- DECLARE_UNKNOWN_TYPE_PTR(m_Gui);
DECLARE_UNKNOWN_TYPE_PTR(CGlobalCom);
DECLARE_UNKNOWN_TYPE_PTR(ZHM3WeaponUpgradeControl);
DECLARE_UNKNOWN_TYPE_PTR(ZHM3CameraEventCameraClass);
@@ -84,7 +83,7 @@ namespace hm3 {
char pad_0x0A44[0x4]; //0x0A44
ZHM3LevelControl* m_LevelControl; //0x0A48
ZOSD* m_OSD; //0x0A4C
- ZGui* m_Gui; //0x0A50
+ ZGUI* m_Gui; //0x0A50
CIngameMap* m_IngameMap; //0x0A54
char pad_0x0A58[0x4]; //0x0A58
CGlobalCom* m_GlobCom; //0x0A5C
@@ -96,7 +95,7 @@ namespace hm3 {
char pad_68FC[116]; //0x68FC
ZHM3WeaponUpgradeControl* m_WeaponUpgradeControl; //0x6970
ZHM3CameraEventCameraClass* m_CameraEventCameraClass; //0x6974
- ZHM3Camera* m_CameraClass; //0x6978
+ int m_CameraClass; //0x6978 [NOT CAMERA, JUST CAMERA CLASS]
char pad_697C[32]; //0x697C
ZClothTracker* m_ClothTracker; //0x699C
char pad_69A0[8]; //0x69A0
diff --git a/HM3CoreKill/HM3CoreKill/sdk/ZHM3Hitman3.h b/HM3CoreKill/HM3CoreKill/sdk/ZHM3Hitman3.h
index afd957c..05d60eb 100644
--- a/HM3CoreKill/HM3CoreKill/sdk/ZHM3Hitman3.h
+++ b/HM3CoreKill/HM3CoreKill/sdk/ZHM3Hitman3.h
@@ -5,11 +5,14 @@
#include
#include
#include
+#include
+#include
#include
#include
#include
#include
+
namespace ioi {
namespace hm3 {
@@ -89,7 +92,7 @@ namespace hm3 {
virtual void Function_0061(); // [0061] +00F4 [.rdata at 0x00790F80]
virtual void Function_0062(); // [0062] +00F8 [.rdata at 0x00790F84]
virtual void Function_0063(); // [0063] +00FC [.rdata at 0x00790F88]
- virtual void Function_0064(); // [0064] +0100 [.rdata at 0x00790F8C]
+ virtual int getComponent(const char* componentName); // [0064] +0100 [.rdata at 0x00790F8C]
virtual void Function_0065(); // [0065] +0104 [.rdata at 0x00790F90]
virtual void Function_0066(); // [0066] +0108 [.rdata at 0x00790F94]
virtual void Function_0067(); // [0067] +010C [.rdata at 0x00790F98]
@@ -98,7 +101,7 @@ namespace hm3 {
virtual void Function_0070(); // [0070] +0118 [.rdata at 0x00790FA4]
virtual void Function_0071(); // [0071] +011C [.rdata at 0x00790FA8]
virtual void sendEvent(std::uintptr_t evId, int* unk1, int unk2); // [0072] +0120 [.rdata at 0x00790FAC]
- virtual void Function_0073(); // [0073] +0124 [.rdata at 0x00790FB0]
+ virtual void sendEventWithNonSTDOBJ(int a1, std::intptr_t ev, int a3); // [0073] +0124 [.rdata at 0x00790FB0]
virtual void sendEventWithSTDOBJ(ZSTDOBJ* stdObj, std::intptr_t ev, int* pResult); // [0074] +0128 [.rdata at 0x00790FB4]
virtual void Function_0075(); // [0075] +012C [.rdata at 0x00790FB8]
virtual void Function_0076(); // [0076] +0130 [.rdata at 0x00790FBC]
@@ -443,8 +446,7 @@ namespace hm3 {
char pad_0004[376]; //0x0004
uint32_t m_lnkActionQueue; //0x017C
char pad_0180[612]; //0x0180
- uint32_t m_humanBoid0; //0x03E4
-
+ ZHumanBoid* m_humanBoid0; //0x03E4
int32_t m_pad0; //+3E8
int32_t m_pad1; //+3EC
int32_t m_pad2; //+3F0
@@ -513,7 +515,7 @@ namespace hm3 {
char pad_0B44[4]; //0x0B44
uint32_t m_group; //0x0B48
uint32_t m_timeMultEffectControl; //0x0B4C
- uint32_t m_camera; //0x0B50
+ ZHM3Camera* m_camera; //0x0B50
char pad_0B54[8]; //0x0B54
uint32_t m_zMovementGuideToMatPos2; //0x0B5C
char pad_0B60[996]; //0x0B60
diff --git a/HM3CoreKill/HM3CoreKill/sdk/ZHM3LevelControl.h b/HM3CoreKill/HM3CoreKill/sdk/ZHM3LevelControl.h
index 88945db..07f20ab 100644
--- a/HM3CoreKill/HM3CoreKill/sdk/ZHM3LevelControl.h
+++ b/HM3CoreKill/HM3CoreKill/sdk/ZHM3LevelControl.h
@@ -14,108 +14,107 @@ namespace ioi { namespace hm3 {
uint32_t m_startPoint; //0x0024
char pad_0028[124]; //0x0028
- virtual void Function0();
- virtual void Function1();
- virtual void Function2();
- virtual void Function3();
- virtual void Function4();
- virtual void Function5();
- virtual void Function6();
- virtual void Function7();
- virtual void Function8();
- virtual void Function9();
- virtual void Function10();
- virtual void Function11();
- virtual void Function12();
- virtual void Function13();
- virtual void Function14();
- virtual void Function15();
- virtual void Function16();
- virtual void Function17();
- virtual void Function18();
- virtual void Function19();
- virtual void Function20();
- virtual void Function21();
- virtual void Function22();
- virtual void Function23();
- virtual void Function24();
- virtual void Function25();
- virtual void Function26();
- virtual void Function27();
- virtual void Function28();
- virtual void Function29();
- virtual void Function30();
- virtual void Function31();
- virtual void Function32();
- virtual void Function33();
- virtual void Function34();
- virtual void Function35();
- virtual void Function36();
- virtual void Function37();
- virtual void Function38();
- virtual void Function39();
- virtual void Function40();
- virtual void Function41();
- virtual void Function42();
- virtual void Function43();
- virtual void Function44();
- virtual void Function45();
- virtual void Function46();
- virtual void Function47();
- virtual void Function48();
- virtual void Function49();
- virtual void Function50();
- virtual void Function51();
- virtual void Function52();
- virtual void Function53();
- virtual void Function54();
- virtual void Function55();
- virtual void Function56();
- virtual void Function57();
- virtual void Function58();
- virtual void Function59();
- virtual void failMissionWithMessage(const char* dialogName); //#60
- virtual void Function61();
- virtual void Function62();
- virtual void completeLevelRequest(); //63
- virtual void Function64();
- virtual void Function65();
- virtual ZHM3BriefingControl* getBriefingControl(int a2); //66
- virtual void Function67();
- virtual void Function68();
- virtual void Function69();
- virtual void Function70();
- virtual void Function71();
- virtual void sendEvent(std::uintptr_t evId, int unk1, int unk2);
- virtual void Function73();
- virtual void sendEventWithSTDOBJ(ZSTDOBJ* stdObj, std::intptr_t ev, int* pResult);
- virtual void Function75();
- virtual void Function76();
- virtual void Function77();
- virtual void Function78();
- virtual void Function79();
- virtual void Function80();
- virtual void Function81();
- virtual void Function82();
- virtual void Function83();
- virtual void Function84();
- virtual void Function85();
- virtual void Function86();
- virtual void Function87();
- virtual void Function88();
- virtual void Function89();
- virtual void Function90();
- virtual void Function91();
- virtual void Function92();
- virtual void Function93();
- virtual void Function94();
- virtual void Function95();
- virtual void Function96();
- virtual void Function97();
- virtual void Function98();
- virtual void Function99();
- virtual void Function100();
- virtual void Function101();
+ virtual void Function_0000(); //#0 +0 .rdata:007ac9b4
+ virtual void Function_0001(); //#1 +4 .rdata:007ac9b8
+ virtual void Function_0002(); //#2 +8 .rdata:007ac9bc
+ virtual void Function_0003(); //#3 +c .rdata:007ac9c0
+ virtual void Function_0004(); //#4 +10 .rdata:007ac9c4
+ virtual void Function_0005(); //#5 +14 .rdata:007ac9c8
+ virtual void Function_0006(); //#6 +18 .rdata:007ac9cc
+ virtual void Function_0007(); //#7 +1c .rdata:007ac9d0
+ virtual void Function_0008(); //#8 +20 .rdata:007ac9d4
+ virtual void Function_0009(); //#9 +24 .rdata:007ac9d8
+ virtual void Function_0010(); //#10 +28 .rdata:007ac9dc
+ virtual void Function_0011(); //#11 +2c .rdata:007ac9e0
+ virtual void Function_0012(); //#12 +30 .rdata:007ac9e4
+ virtual void Function_0013(); //#13 +34 .rdata:007ac9e8
+ virtual void Function_0014(); //#14 +38 .rdata:007ac9ec
+ virtual void Function_0015(); //#15 +3c .rdata:007ac9f0
+ virtual void Function_0016(); //#16 +40 .rdata:007ac9f4
+ virtual void Function_0017(); //#17 +44 .rdata:007ac9f8
+ virtual void Function_0018(); //#18 +48 .rdata:007ac9fc
+ virtual const char* getTypeName(); //#19 +4c .rdata:007aca00
+ virtual void Function_0020(); //#20 +50 .rdata:007aca04
+ virtual void Function_0021(); //#21 +54 .rdata:007aca08
+ virtual void Function_0022(); //#22 +58 .rdata:007aca0c
+ virtual void Function_0023(); //#23 +5c .rdata:007aca10
+ virtual void Function_0024(); //#24 +60 .rdata:007aca14
+ virtual void Function_0025(); //#25 +64 .rdata:007aca18
+ virtual void Function_0026(); //#26 +68 .rdata:007aca1c
+ virtual void Function_0027(); //#27 +6c .rdata:007aca20
+ virtual void Function_0028(); //#28 +70 .rdata:007aca24
+ virtual void Function_0029(); //#29 +74 .rdata:007aca28
+ virtual void Function_0030(); //#30 +78 .rdata:007aca2c
+ virtual void Function_0031(); //#31 +7c .rdata:007aca30
+ virtual void Function_0032(); //#32 +80 .rdata:007aca34
+ virtual void Function_0033(); //#33 +84 .rdata:007aca38
+ virtual void Function_0034(); //#34 +88 .rdata:007aca3c
+ virtual void Function_0035(); //#35 +8c .rdata:007aca40
+ virtual void Function_0036(); //#36 +90 .rdata:007aca44
+ virtual void Function_0037(); //#37 +94 .rdata:007aca48
+ virtual void Function_0038(); //#38 +98 .rdata:007aca4c
+ virtual void Function_0039(); //#39 +9c .rdata:007aca50
+ virtual void Function_0040(); //#40 +a0 .rdata:007aca54
+ virtual void Function_0041(); //#41 +a4 .rdata:007aca58
+ virtual void Function_0042(); //#42 +a8 .rdata:007aca5c
+ virtual void Function_0043(); //#43 +ac .rdata:007aca60
+ virtual void Function_0044(); //#44 +b0 .rdata:007aca64
+ virtual void Function_0045(); //#45 +b4 .rdata:007aca68
+ virtual void Function_0046(); //#46 +b8 .rdata:007aca6c
+ virtual void Function_0047(); //#47 +bc .rdata:007aca70
+ virtual void Function_0048(); //#48 +c0 .rdata:007aca74
+ virtual void Function_0049(); //#49 +c4 .rdata:007aca78
+ virtual void Function_0050(); //#50 +c8 .rdata:007aca7c
+ virtual void Function_0051(); //#51 +cc .rdata:007aca80
+ virtual void Function_0052(); //#52 +d0 .rdata:007aca84
+ virtual void Function_0053(); //#53 +d4 .rdata:007aca88
+ virtual void Function_0054(); //#54 +d8 .rdata:007aca8c
+ virtual void Function_0055(); //#55 +dc .rdata:007aca90
+ virtual void Function_0056(); //#56 +e0 .rdata:007aca94
+ virtual void Function_0057(); //#57 +e4 .rdata:007aca98
+ virtual void Function_0058(); //#58 +e8 .rdata:007aca9c
+ virtual void Function_0059(); //#59 +ec .rdata:007acaa0
+ virtual void failMissionWithMessage(const char* dialogName); //#60 +f0 .rdata:007acaa4
+ virtual void Function_0061(); //#61 +f4 .rdata:007acaa8
+ virtual void Function_0062(); //#62 +f8 .rdata:007acaac
+ virtual void completeLevelRequest(); //#63 +fc .rdata:007acab0
+ virtual void Function_0064(); //#64 +100 .rdata:007acab4
+ virtual void Function_0065(); //#65 +104 .rdata:007acab8
+ virtual ZHM3BriefingControl* getBriefingControl(int a2); //#66 +108 .rdata:007acabc
+ virtual void Function_0067(); //#67 +10c .rdata:007acac0
+ virtual void Function_0068(); //#68 +110 .rdata:007acac4
+ virtual void Function_0069(); //#69 +114 .rdata:007acac8
+ virtual void Function_0070(); //#70 +118 .rdata:007acacc
+ virtual void Function_0071(); //#71 +11c .rdata:007acad0
+ virtual void sendEvent(std::uintptr_t evId, int unk1, int unk2); //#72 +120 .rdata:007acad4
+ virtual void Function_0073(); //#73 +124 .rdata:007acad8
+ virtual void sendEventWithSTDOBJ(ZSTDOBJ* stdObj, std::intptr_t ev, int* pResult); //#74 +128 .rdata:007acadc
+ virtual void Function_0075(); //#75 +12c .rdata:007acae0
+ virtual void Function_0076(); //#76 +130 .rdata:007acae4
+ virtual void Function_0077(); //#77 +134 .rdata:007acae8
+ virtual void Function_0078(); //#78 +138 .rdata:007acaec
+ virtual void Function_0079(); //#79 +13c .rdata:007acaf0
+ virtual void Function_0080(); //#80 +140 .rdata:007acaf4
+ virtual void Function_0081(); //#81 +144 .rdata:007acaf8
+ virtual void Function_0082(); //#82 +148 .rdata:007acafc
+ virtual void Function_0083(); //#83 +14c .rdata:007acb00
+ virtual void Function_0084(); //#84 +150 .rdata:007acb04
+ virtual void Function_0085(); //#85 +154 .rdata:007acb08
+ virtual void Function_0086(); //#86 +158 .rdata:007acb0c
+ virtual void Function_0087(); //#87 +15c .rdata:007acb10
+ virtual void Function_0088(); //#88 +160 .rdata:007acb14
+ virtual void Function_0089(); //#89 +164 .rdata:007acb18
+ virtual void Function_0090(); //#90 +168 .rdata:007acb1c
+ virtual void Function_0091(); //#91 +16c .rdata:007acb20
+ virtual void Function_0092(); //#92 +170 .rdata:007acb24
+ virtual void Function_0093(); //#93 +174 .rdata:007acb28
+ virtual void Function_0094(); //#94 +178 .rdata:007acb2c
+ virtual void Function_0095(); //#95 +17c .rdata:007acb30
+ virtual void Function_0096(); //#96 +180 .rdata:007acb34
+ virtual void Function_0097(); //#97 +184 .rdata:007acb38
+ virtual void Function_0098(); //#98 +188 .rdata:007acb3c
+ virtual void Function_0099(); //#99 +18c .rdata:007acb40
+ virtual void Function_0100(); //#100 +190 .rdata:007acb44
};
}}
\ No newline at end of file
diff --git a/HM3CoreKill/HM3CoreKill/sdk/ZHM3MenuElements.h b/HM3CoreKill/HM3CoreKill/sdk/ZHM3MenuElements.h
index 5bf553f..67d8da1 100644
--- a/HM3CoreKill/HM3CoreKill/sdk/ZHM3MenuElements.h
+++ b/HM3CoreKill/HM3CoreKill/sdk/ZHM3MenuElements.h
@@ -1,16 +1,32 @@
#pragma once
+#include
+#include
+#include
+#include
+
namespace ioi { namespace hm3 {
class ZHM3MenuElements
{
public:
- virtual void Function_0() {}
- virtual void Function_1() {}
- virtual void Function_2() {}
- virtual void Function_3() {}
- virtual void Function_4() {}
- virtual void Function_5() {}
+ /// === members ===
+ ZXMLGUISystem* m_XMLGUISystem; //0x0004
+ char pad_0008[8196]; //0x0008
+ ZStandardMenuFactory* m_standardMenuFactory_1; //0x200C
+ ZHM3MenuFactory* m_hm3MenuFactory_1; //0x2010
+ ZOnlineElements* m_onlineElementsFactory; //0x2014
+ char pad_2018[8]; //0x2018
+ ZStandardMenuFactory* m_standardMenuFactory; //0x2020
+ ZHM3MenuFactory* m_hm3MenuFactory; //0x2024
+
+ /// === vftable ===
+ virtual void Function_0();
+ virtual void Function_1();
+ virtual void Function_2();
+ virtual void Function_3(const char* menuName);
+ virtual void Function_4();
+ virtual void Function_5();
};
}}
\ No newline at end of file
diff --git a/HM3CoreKill/HM3CoreKill/sdk/ZHM3MenuFactory.h b/HM3CoreKill/HM3CoreKill/sdk/ZHM3MenuFactory.h
new file mode 100644
index 0000000..719fdcb
--- /dev/null
+++ b/HM3CoreKill/HM3CoreKill/sdk/ZHM3MenuFactory.h
@@ -0,0 +1,17 @@
+#pragma once
+
+#include
+#include
+
+namespace ioi { namespace hm3 {
+
+ class ZHM3MenuFactory
+ {
+ public:
+ virtual std::uintptr_t getZListInterfaceProviderByInterfaceName(const char* interfaceName); //#0 +0 .rdata:007a57c8
+ virtual void Function_0001(); //#1 +4 .rdata:007a57cc
+ virtual std::uintptr_t getOnlineWindowByName(const char* windowName, int unk1); //#2 +8 .rdata:007a57d0
+ virtual ZGUIBase* getUIComponentByName(const char* componentName); //#3 +c .rdata:007a57d4
+ };
+
+}}
\ No newline at end of file
diff --git a/HM3CoreKill/HM3CoreKill/sdk/ZHumanBoid.h b/HM3CoreKill/HM3CoreKill/sdk/ZHumanBoid.h
new file mode 100644
index 0000000..294c7f2
--- /dev/null
+++ b/HM3CoreKill/HM3CoreKill/sdk/ZHumanBoid.h
@@ -0,0 +1,41 @@
+#pragma once
+
+#include
+#include
+
+namespace ioi { namespace hm3 {
+
+ class ZHM3Actor;
+
+ enum class BoidState : int32_t { Moving = 0, Staying = 1, ParentActorDestroyed = 2, Sitting = 5, Unk6 = 6 };
+
+ class ZHumanBoid
+ {
+ public:
+ virtual void Function_0000(); //#0 +0 .rdata:00782d7c
+ virtual void Function_0001(); //#1 +4 .rdata:00782d80
+ virtual float getFloat_8(); //#2 +8 .rdata:00782d84
+ virtual void Function_0003(); //#3 +c .rdata:00782d88
+ virtual void Function_0004(); //#4 +10 .rdata:00782d8c
+ virtual void Function_0005(); //#5 +14 .rdata:00782d90
+ virtual void setPosition(float* newPosition); //#6 +18 .rdata:00782d94
+ virtual void Function_0007(float*); //#7 +1c .rdata:00782d98
+ virtual float setFloat_8 (float); //#8 +20 .rdata:00782d9c
+ virtual void Function_0009(); //#9 +24 .rdata:00782da0
+ virtual void Function_0010(); //#10 +28 .rdata:00782da4
+ virtual void Function_0011(); //#11 +2c .rdata:00782da8
+
+ /// === members ===
+ BoidState m_boidState; //0x0004
+ float m_speed; //0x0008
+ char pad_000C[4]; //0x000C
+ ZHM3Actor* m_actor; //0x0010 [self object, for player ZHitman3, for actor ZHM3Actor]
+ char pad_0014[8]; //0x0014
+ Vector3 m_pos; //0x001C
+ Vector3 m_newPos; //0x0028
+ char pad_0034[132]; //0x0034
+ float m_speed2; //0x00B8
+ char pad_00BC[52]; //0x00BC
+ };
+
+} }
\ No newline at end of file
diff --git a/HM3CoreKill/HM3CoreKill/sdk/ZOnlineElements.h b/HM3CoreKill/HM3CoreKill/sdk/ZOnlineElements.h
new file mode 100644
index 0000000..682b920
--- /dev/null
+++ b/HM3CoreKill/HM3CoreKill/sdk/ZOnlineElements.h
@@ -0,0 +1,16 @@
+#pragma once
+
+#include
+
+namespace ioi { namespace hm3 {
+
+ class ZOnlineElements
+ {
+ public:
+ virtual void getListInterfaceProviderByName(const char* interfaceName); //#0 +0 .rdata:007a7884
+ virtual void getTableInterfaceProviderByName(const char* interfaceName); //#1 +4 .rdata:007a7888
+ virtual void Function_0002(); //#2 +8 .rdata:007a788c
+ virtual void getMenuByName(const char* menuName); //#3 +c .rdata:007a7890
+ };
+
+}}
\ No newline at end of file
diff --git a/HM3CoreKill/HM3CoreKill/sdk/ZPathFollower.h b/HM3CoreKill/HM3CoreKill/sdk/ZPathFollower.h
new file mode 100644
index 0000000..14efac0
--- /dev/null
+++ b/HM3CoreKill/HM3CoreKill/sdk/ZPathFollower.h
@@ -0,0 +1,73 @@
+#pragma once
+
+#include
+#include
+#include
+
+namespace ioi { namespace hm3 {
+
+ class ZHM3Actor;
+
+ class ZPathFollower : public ZLinkedListNodeBase
+ {
+ public:
+ /// === members ===
+ // { skipped entities from ZLinkedListNodeBase }
+ char pad_0014[16]; //0x0014
+ ZHM3Actor* m_actor; //0x0024
+ char pad_0028[4]; //0x0028
+ ZGlacierRTTI* m_RTTI; //0x002C
+ ioi::REFTAB m_reftab; //0x0030
+ ioi::ZLIST* m_currentPathPointsList; //0x004C
+ int32_t m_pointsCount; //0x0050
+ int32_t pad_0001; //0x0054
+ int32_t pad_0002; //0x0058
+ int32_t pad_0003; //0x005C
+ int32_t pad_0004; //0x0060
+ int32_t pad_0005; //0x0064
+ int32_t m_pointsAvUnk0; //0x0068
+ int32_t pad_0007; //0x006C
+
+ /// === vftable ===
+ virtual void Function_0000(); //#0 +0 .rdata:0079d9fc
+ virtual void Function_0001(); //#1 +4 .rdata:0079da00
+ virtual void Function_0002(); //#2 +8 .rdata:0079da04
+ virtual void Function_0003(); //#3 +c .rdata:0079da08
+ virtual void Function_0004(); //#4 +10 .rdata:0079da0c
+ virtual void Function_0005(); //#5 +14 .rdata:0079da10
+ virtual void Function_0006(); //#6 +18 .rdata:0079da14
+ virtual void Function_0007(); //#7 +1c .rdata:0079da18
+ virtual void Function_0008(); //#8 +20 .rdata:0079da1c
+ virtual void Function_0009(); //#9 +24 .rdata:0079da20
+ virtual void Function_0010(); //#10 +28 .rdata:0079da24
+ virtual void Function_0011(); //#11 +2c .rdata:0079da28
+ virtual void Function_0012(); //#12 +30 .rdata:0079da2c
+ virtual void Function_0013(); //#13 +34 .rdata:0079da30
+ virtual ZLIST* Function_0014(); //#14 +38 .rdata:0079da34
+ virtual void Function_0015(); //#15 +3c .rdata:0079da38
+ virtual void Function_0016(); //#16 +40 .rdata:0079da3c
+ virtual void Function_0017(); //#17 +44 .rdata:0079da40
+ virtual int assignPath(ZPathFollower* anotherPath); //#18 +48 .rdata:0079da44
+ virtual const char* getTypeName(); //#19 +4c .rdata:0079da48
+ virtual void Function_0020(); //#20 +50 .rdata:0079da4c
+ virtual void Function_0021(); //#21 +54 .rdata:0079da50
+ virtual void Function_0022(); //#22 +58 .rdata:0079da54
+ virtual void Function_0023(); //#23 +5c .rdata:0079da58
+ virtual void Function_0024(); //#24 +60 .rdata:0079da5c
+ virtual void Function_0025(); //#25 +64 .rdata:0079da60
+ virtual void Function_0026(); //#26 +68 .rdata:0079da64
+ virtual void Function_0027(); //#27 +6c .rdata:0079da68
+ virtual void Function_0028(); //#28 +70 .rdata:0079da6c
+ virtual void processIncomingEvents(signed int evType, int arg0, int arg1); //#29 +74 .rdata:0079da70
+ virtual void Function_0030(); //#30 +78 .rdata:0079da74
+ virtual void Function_0031(); //#31 +7c .rdata:0079da78
+ virtual void Function_0032(); //#32 +80 .rdata:0079da7c
+ virtual void Function_0033(); //#33 +84 .rdata:0079da80
+ virtual void setRuntimeInformation(ioi::hm3::ZGlacierRTTI* rtti); //#34 +88 .rdata:0079da84
+ virtual void Function_0035(); //#35 +8c .rdata:0079da88
+
+
+ /// sub_654380 <- Switch to path # | signature : int __thiscall sub654380(ZPathFollower*, int pathIndex)
+ };
+
+} }
\ No newline at end of file
diff --git a/HM3CoreKill/HM3CoreKill/sdk/ZSTD.h b/HM3CoreKill/HM3CoreKill/sdk/ZSTD.h
index 4a42cde..c492c45 100644
--- a/HM3CoreKill/HM3CoreKill/sdk/ZSTD.h
+++ b/HM3CoreKill/HM3CoreKill/sdk/ZSTD.h
@@ -6,12 +6,57 @@
namespace ioi
{
+ namespace hm3 {
+ class ZGlacierRTTI;
+ }
+
class REFTAB
{
public:
- char pad_0000[20]; //0x0000
- int32_t subItemsCount; //0x0014
- char pad_0018[8]; //0x0018
+ // === members ===
+ uint32_t m_raw; //0x0004
+ uint32_t m_raw2; //0x0008
+ int32_t m_unk0; //0x000C
+ int32_t m_unk1; //0x0010
+ int32_t m_unk2; //0x0014
+ int32_t m_unk3; //0x0018
+
+ // === vftable ==
+ virtual void Function_0000(); //#0 +0 .rdata:007569ec
+ virtual void Function_0001(); //#1 +4 .rdata:007569f0
+ virtual void Function_0002(); //#2 +8 .rdata:007569f4
+ virtual void Function_0003(); //#3 +c .rdata:007569f8
+ virtual void Function_0004(); //#4 +10 .rdata:007569fc
+ virtual int getCapacity(); //#5 +14 .rdata:00756a00
+ virtual void Function_0006(); //#6 +18 .rdata:00756a04
+ virtual void Function_0007(); //#7 +1c .rdata:00756a08
+ virtual void Function_0008(); //#8 +20 .rdata:00756a0c
+ virtual void Function_0009(); //#9 +24 .rdata:00756a10
+ virtual void Function_0010(); //#10 +28 .rdata:00756a14
+ virtual void Function_0011(); //#11 +2c .rdata:00756a18
+ virtual void Function_0012(); //#12 +30 .rdata:00756a1c
+ virtual int at(int index); //#13 +34 .rdata:00756a20
+ virtual void Function_0014(); //#14 +38 .rdata:00756a24
+ virtual void Function_0015(); //#15 +3c .rdata:00756a28
+ virtual void Function_0016(); //#16 +40 .rdata:00756a2c
+ virtual void Function_0017(); //#17 +44 .rdata:00756a30
+ virtual void Function_0018(); //#18 +48 .rdata:00756a34
+ virtual void Function_0019(); //#19 +4c .rdata:00756a38
+ virtual void Function_0020(); //#20 +50 .rdata:00756a3c
+ virtual void Function_0021(); //#21 +54 .rdata:00756a40
+ virtual void Function_0022(); //#22 +58 .rdata:00756a44
+ virtual void Function_0023(); //#23 +5c .rdata:00756a48
+ virtual void Function_0024(); //#24 +60 .rdata:00756a4c
+ virtual void Function_0025(); //#25 +64 .rdata:00756a50
+ virtual void Function_0026(); //#26 +68 .rdata:00756a54
+ virtual void Function_0027(); //#27 +6c .rdata:00756a58
+ virtual void Function_0028(); //#28 +70 .rdata:00756a5c
+ virtual void Function_0029(); //#29 +74 .rdata:00756a60
+ virtual void Function_0030(); //#30 +78 .rdata:00756a64
+ virtual void Function_0031(); //#31 +7c .rdata:00756a68
+ virtual void Function_0032(); //#32 +80 .rdata:00756a6c
+ virtual void Function_0033(); //#33 +84 .rdata:00756a70
+ virtual void Function_0034(); //#34 +88 .rdata:00756a74
}; //Size: 0x0020
class ZSTDOBJ_TeleportEntity
@@ -28,135 +73,137 @@ namespace ioi
class ZLIST
{
public:
- char pad_0004[12]; //0x0004
- REFTAB* m_refTab; //0x0010
+ int32_t m_unk0; //possible user data or something else +0x0004
+ char pad_0008[4]; //0x0008
+ int32_t __MEMCHECK__; //0x000C
+ REFTAB* m_reftab; //0x0010
- virtual void Function0();
- virtual void Function1();
- virtual void Function2();
- virtual void Function3();
- virtual void Function4();
- virtual void Function5();
- virtual void Function6();
- virtual void Function7();
- virtual void Function8();
- virtual void Function9();
- virtual void Function10();
- virtual void Function11();
- virtual void Function12();
- virtual void Function13();
- virtual void Function14();
- virtual void Function15();
- virtual void Function16();
- virtual void Function17();
- virtual void Function18();
- virtual void Function19();
- virtual void Function20();
- virtual void Function21();
- virtual void Function22();
- virtual void Function23();
- virtual void Function24();
- virtual void Function25();
- virtual void Function26();
- virtual void Function27();
- virtual void Function28();
- virtual void Function29();
- virtual void Function30();
- virtual void Function31();
- virtual void Function32();
- virtual void Function33();
- virtual void Function34();
- virtual void Function35();
- virtual void Function36();
- virtual void Function37();
- virtual void Function38();
- virtual void Function39();
- virtual void Function40();
- virtual void Function41();
- virtual void Function42();
- virtual void Function43();
- virtual void Function44();
- virtual void Function45();
- virtual void Function46();
- virtual void Function47();
- virtual void Function48();
- virtual void Function49();
- virtual void Function50();
- virtual void Function51();
- virtual void Function52();
- virtual void Function53();
- virtual void Function54();
- virtual void Function55();
- virtual void Function56();
- virtual void Function57();
- virtual void Function58();
- virtual void Function59();
- virtual void Function60();
- virtual void Function61();
- virtual void Function62();
- virtual void Function63();
- virtual void Function64();
- virtual void Function65();
- virtual void Function66();
- virtual void Function67();
- virtual void Function68();
- virtual void Function69();
- virtual void Function70();
- virtual void Function71();
- virtual void Function72();
- virtual void Function73();
- virtual void Function74();
- virtual void Function75();
- virtual void Function76();
- virtual void Function77();
- virtual void Function78();
- virtual void Function79();
- virtual void Function80();
- virtual void Function81();
- virtual void Function82();
- virtual void Function83();
- virtual void Function84();
- virtual void Function85();
- virtual void Function86();
- virtual void Function87();
- virtual void Function88();
- virtual void Function89();
- virtual void Function90();
- virtual void Function91();
- virtual void Function92();
- virtual void Function93();
- virtual void Function94();
- virtual void Function95();
- virtual void Function96();
- virtual void Function97();
- virtual void Function98();
- virtual void Function99();
- virtual void Function100();
- virtual void Function101();
- virtual void Function102();
- virtual void Function103();
- virtual void Function104();
- virtual void Function105();
- virtual void Function106();
- virtual void Function107();
- virtual void Function108();
- virtual void Function109();
- virtual void Function110();
- virtual void Function111();
- virtual void Function112();
- virtual void Function113();
- virtual void Function114();
- virtual void Function115();
- virtual void Function116();
- virtual void Function117();
- virtual void Function118();
- virtual void Function119();
- virtual void Function120();
- virtual void Function121();
- virtual void Function122();
- virtual void Function123();
- virtual void Function124();
- virtual void Function125();
+ virtual void Function_0000(); //#0 +0 .rdata:0076bedc
+ virtual void Function_0001(); //#1 +4 .rdata:0076bee0
+ virtual void Function_0002(); //#2 +8 .rdata:0076bee4
+ virtual void Function_0003(); //#3 +c .rdata:0076bee8
+ virtual void Function_0004(); //#4 +10 .rdata:0076beec
+ virtual void Function_0005(); //#5 +14 .rdata:0076bef0
+ virtual void Function_0006(); //#6 +18 .rdata:0076bef4
+ virtual void Function_0007(); //#7 +1c .rdata:0076bef8
+ virtual void Function_0008(); //#8 +20 .rdata:0076befc
+ virtual void Function_0009(); //#9 +24 .rdata:0076bf00
+ virtual void Function_0010(); //#10 +28 .rdata:0076bf04
+ virtual void Function_0011(); //#11 +2c .rdata:0076bf08
+ virtual void Function_0012(); //#12 +30 .rdata:0076bf0c
+ virtual void Function_0013(); //#13 +34 .rdata:0076bf10
+ virtual void Function_0014(); //#14 +38 .rdata:0076bf14
+ virtual void Function_0015(); //#15 +3c .rdata:0076bf18
+ virtual void Function_0016(); //#16 +40 .rdata:0076bf1c
+ virtual void Function_0017(); //#17 +44 .rdata:0076bf20
+ virtual void Function_0018(); //#18 +48 .rdata:0076bf24
+ virtual void Function_0019(); //#19 +4c .rdata:0076bf28
+ virtual void Function_0020(); //#20 +50 .rdata:0076bf2c
+ virtual void Function_0021(); //#21 +54 .rdata:0076bf30
+ virtual void Function_0022(); //#22 +58 .rdata:0076bf34
+ virtual void Function_0023(); //#23 +5c .rdata:0076bf38
+ virtual void Function_0024(); //#24 +60 .rdata:0076bf3c
+ virtual void Function_0025(); //#25 +64 .rdata:0076bf40
+ virtual void Function_0026(); //#26 +68 .rdata:0076bf44
+ virtual void Function_0027(); //#27 +6c .rdata:0076bf48
+ virtual void Function_0028(); //#28 +70 .rdata:0076bf4c
+ virtual void Function_0029(); //#29 +74 .rdata:0076bf50
+ virtual void Function_0030(); //#30 +78 .rdata:0076bf54
+ virtual void Function_0031(); //#31 +7c .rdata:0076bf58
+ virtual void Function_0032(); //#32 +80 .rdata:0076bf5c
+ virtual void Function_0033(); //#33 +84 .rdata:0076bf60
+ virtual void Function_0034(); //#34 +88 .rdata:0076bf64
+ virtual void Function_0035(); //#35 +8c .rdata:0076bf68
+ virtual void Function_0036(); //#36 +90 .rdata:0076bf6c
+ virtual void Function_0037(); //#37 +94 .rdata:0076bf70
+ virtual void Function_0038(); //#38 +98 .rdata:0076bf74
+ virtual void Function_0039(); //#39 +9c .rdata:0076bf78
+ virtual void Function_0040(); //#40 +a0 .rdata:0076bf7c
+ virtual void Function_0041(); //#41 +a4 .rdata:0076bf80
+ virtual void Function_0042(); //#42 +a8 .rdata:0076bf84
+ virtual void Function_0043(); //#43 +ac .rdata:0076bf88
+ virtual void Function_0044(); //#44 +b0 .rdata:0076bf8c
+ virtual void Function_0045(); //#45 +b4 .rdata:0076bf90
+ virtual void Function_0046(); //#46 +b8 .rdata:0076bf94
+ virtual void Function_0047(); //#47 +bc .rdata:0076bf98
+ virtual void Function_0048(); //#48 +c0 .rdata:0076bf9c
+ virtual void Function_0049(); //#49 +c4 .rdata:0076bfa0
+ virtual void Function_0050(); //#50 +c8 .rdata:0076bfa4
+ virtual void Function_0051(); //#51 +cc .rdata:0076bfa8
+ virtual void Function_0052(); //#52 +d0 .rdata:0076bfac
+ virtual void Function_0053(); //#53 +d4 .rdata:0076bfb0
+ virtual void Function_0054(); //#54 +d8 .rdata:0076bfb4
+ virtual void Function_0055(); //#55 +dc .rdata:0076bfb8
+ virtual void Function_0056(); //#56 +e0 .rdata:0076bfbc
+ virtual void Function_0057(); //#57 +e4 .rdata:0076bfc0
+ virtual void Function_0058(); //#58 +e8 .rdata:0076bfc4
+ virtual void Function_0059(); //#59 +ec .rdata:0076bfc8
+ virtual void Function_0060(); //#60 +f0 .rdata:0076bfcc
+ virtual void Function_0061(); //#61 +f4 .rdata:0076bfd0
+ virtual void Function_0062(); //#62 +f8 .rdata:0076bfd4
+ virtual void Function_0063(); //#63 +fc .rdata:0076bfd8
+ virtual void Function_0064(); //#64 +100 .rdata:0076bfdc
+ virtual void Function_0065(); //#65 +104 .rdata:0076bfe0
+ virtual void Function_0066(); //#66 +108 .rdata:0076bfe4
+ virtual void Function_0067(); //#67 +10c .rdata:0076bfe8
+ virtual void Function_0068(); //#68 +110 .rdata:0076bfec
+ virtual void Function_0069(); //#69 +114 .rdata:0076bff0
+ virtual void Function_0070(); //#70 +118 .rdata:0076bff4
+ virtual void Function_0071(); //#71 +11c .rdata:0076bff8
+ virtual void Function_0072(); //#72 +120 .rdata:0076bffc
+ virtual void Function_0073(); //#73 +124 .rdata:0076c000
+ virtual void Function_0074(); //#74 +128 .rdata:0076c004
+ virtual void Function_0075(); //#75 +12c .rdata:0076c008
+ virtual void Function_0076(); //#76 +130 .rdata:0076c00c
+ virtual void Function_0077(); //#77 +134 .rdata:0076c010
+ virtual void Function_0078(); //#78 +138 .rdata:0076c014
+ virtual void Function_0079(); //#79 +13c .rdata:0076c018
+ virtual void Function_0080(); //#80 +140 .rdata:0076c01c
+ virtual void Function_0081(); //#81 +144 .rdata:0076c020
+ virtual void Function_0082(); //#82 +148 .rdata:0076c024
+ virtual void Function_0083(); //#83 +14c .rdata:0076c028
+ virtual void Function_0084(); //#84 +150 .rdata:0076c02c
+ virtual void Function_0085(); //#85 +154 .rdata:0076c030
+ virtual void Function_0086(); //#86 +158 .rdata:0076c034
+ virtual void Function_0087(); //#87 +15c .rdata:0076c038
+ virtual void Function_0088(); //#88 +160 .rdata:0076c03c
+ virtual void Function_0089(); //#89 +164 .rdata:0076c040
+ virtual void Function_0090(); //#90 +168 .rdata:0076c044
+ virtual void Function_0091(); //#91 +16c .rdata:0076c048
+ virtual void Function_0092(); //#92 +170 .rdata:0076c04c
+ virtual void Function_0093(); //#93 +174 .rdata:0076c050
+ virtual void Function_0094(); //#94 +178 .rdata:0076c054
+ virtual void Function_0095(); //#95 +17c .rdata:0076c058
+ virtual void Function_0096(); //#96 +180 .rdata:0076c05c
+ virtual void Function_0097(); //#97 +184 .rdata:0076c060
+ virtual void Function_0098(); //#98 +188 .rdata:0076c064
+ virtual void Function_0099(); //#99 +18c .rdata:0076c068
+ virtual void Function_0100(); //#100 +190 .rdata:0076c06c
+ virtual void Function_0101(); //#101 +194 .rdata:0076c070
+ virtual void Function_0102(); //#102 +198 .rdata:0076c074
+ virtual void Function_0103(); //#103 +19c .rdata:0076c078
+ virtual void Function_0104(); //#104 +1a0 .rdata:0076c07c
+ virtual void Function_0105(); //#105 +1a4 .rdata:0076c080
+ virtual void Function_0106(); //#106 +1a8 .rdata:0076c084
+ virtual void Function_0107(); //#107 +1ac .rdata:0076c088
+ virtual void Function_0108(); //#108 +1b0 .rdata:0076c08c
+ virtual void Function_0109(); //#109 +1b4 .rdata:0076c090
+ virtual void Function_0110(); //#110 +1b8 .rdata:0076c094
+ virtual void Function_0111(); //#111 +1bc .rdata:0076c098
+ virtual void Function_0112(); //#112 +1c0 .rdata:0076c09c
+ virtual void Function_0113(); //#113 +1c4 .rdata:0076c0a0
+ virtual void Function_0114(); //#114 +1c8 .rdata:0076c0a4
+ virtual void Function_0115(); //#115 +1cc .rdata:0076c0a8
+ virtual void Function_0116(); //#116 +1d0 .rdata:0076c0ac
+ virtual void Function_0117(); //#117 +1d4 .rdata:0076c0b0
+ virtual void Function_0118(); //#118 +1d8 .rdata:0076c0b4
+ virtual void Function_0119(); //#119 +1dc .rdata:0076c0b8
+ virtual void Function_0120(); //#120 +1e0 .rdata:0076c0bc
+ virtual void Function_0121(); //#121 +1e4 .rdata:0076c0c0
+ virtual void Function_0122(); //#122 +1e8 .rdata:0076c0c4
+ virtual void Function_0123(); //#123 +1ec .rdata:0076c0c8
+ virtual void Function_0124(); //#124 +1f0 .rdata:0076c0cc
+ virtual void Function_0125(); //#125 +1f4 .rdata:0076c0d0
}; //Size: 0x0014
class ZSTDOBJ
diff --git a/HM3CoreKill/HM3CoreKill/sdk/ZStandardMenuFactory.h b/HM3CoreKill/HM3CoreKill/sdk/ZStandardMenuFactory.h
new file mode 100644
index 0000000..ba3383a
--- /dev/null
+++ b/HM3CoreKill/HM3CoreKill/sdk/ZStandardMenuFactory.h
@@ -0,0 +1,14 @@
+#pragma once
+
+#include
+
+namespace ioi { namespace hm3 {
+ class ZStandardMenuFactory
+ {
+ public:
+ virtual void Function_0000(); //#0 +0 .rdata:00780f6c
+ virtual void Function_0001(); //#1 +4 .rdata:00780f70
+ virtual void Function_0002(); //#2 +8 .rdata:00780f74
+ virtual std::uintptr_t getMenuElementByName(const char* elementClassName); //#3 +c .rdata:00780f78
+ };
+}}
\ No newline at end of file
diff --git a/HM3CoreKill/HM3CoreKill/sdk/ZSysInputWintel.h b/HM3CoreKill/HM3CoreKill/sdk/ZSysInputWintel.h
index 7ae9c1d..7e35a38 100644
--- a/HM3CoreKill/HM3CoreKill/sdk/ZSysInputWintel.h
+++ b/HM3CoreKill/HM3CoreKill/sdk/ZSysInputWintel.h
@@ -3,6 +3,7 @@
#include
#include
#include
+#include
namespace ioi { namespace hm3 {
@@ -11,9 +12,10 @@ namespace ioi { namespace hm3 {
class ZSysInputWintel
{
public:
- char pad_0004[12]; //0x0004
- ZMouseWintel* m_mouseDevice; //0x0010
- ZKeyboardWintel* m_keyboardDevice; //0x0014
+ char pad_0004[12]; //0x0004
+ ZMouseWintel* m_mouseDevice; //0x0010
+ ZKeyboardWintel* m_keyboardDevice; //0x0014
+ ZGameControlWintel* m_gameControllerDevice; //0x0018
virtual void Function_0000(); //#0 +0 .rdata:0075f75c
virtual void Function_0001(); //#1 +4 .rdata:0075f760
@@ -22,7 +24,7 @@ namespace ioi { namespace hm3 {
virtual void Function_0004(); //#4 +10 .rdata:0075f76c
virtual void Function_0005(); //#5 +14 .rdata:0075f770
virtual void Function_0006(); //#6 +18 .rdata:0075f774
- virtual void Function_0007(); //#7 +1c .rdata:0075f778
+ virtual void Function_0007(); //#7 +1c .rdata:0075f778 [ask mouse device]
virtual void Function_0008(); //#8 +20 .rdata:0075f77c
virtual void Function_0009(); //#9 +24 .rdata:0075f780
virtual void Function_0010(); //#10 +28 .rdata:0075f784
diff --git a/HM3CoreKill/HM3CoreKill/sdk/ZSysMem.h b/HM3CoreKill/HM3CoreKill/sdk/ZSysMem.h
index b1d097c..cf62db9 100644
--- a/HM3CoreKill/HM3CoreKill/sdk/ZSysMem.h
+++ b/HM3CoreKill/HM3CoreKill/sdk/ZSysMem.h
@@ -14,4 +14,5 @@ Vftable Methods Flags Type Hierarchy
static void deallocate(void* _ptr);
};
+ //_DWORD *__thiscall sub_4EED50(void *this, const char *entityName, int entityLocator) <- Allocate ZLIST
}}
\ No newline at end of file
diff --git a/HM3CoreKill/HM3CoreKill/sdk/ZWINDOW.h b/HM3CoreKill/HM3CoreKill/sdk/ZWINDOW.h
new file mode 100644
index 0000000..7f8ee97
--- /dev/null
+++ b/HM3CoreKill/HM3CoreKill/sdk/ZWINDOW.h
@@ -0,0 +1,177 @@
+#pragma once
+
+#include
+#include
+
+namespace ioi { namespace hm3 {
+ class ZWINDOW
+ {
+ public:
+ virtual void Function_0000(); //#0 +0 .rdata:0077fe04
+ virtual void Function_0001(); //#1 +4 .rdata:0077fe08
+ virtual void Function_0002(); //#2 +8 .rdata:0077fe0c
+ virtual void Function_0003(); //#3 +c .rdata:0077fe10
+ virtual void Function_0004(); //#4 +10 .rdata:0077fe14
+ virtual void Function_0005(); //#5 +14 .rdata:0077fe18
+ virtual void Function_0006(); //#6 +18 .rdata:0077fe1c
+ virtual void Function_0007(); //#7 +1c .rdata:0077fe20
+ virtual void Function_0008(); //#8 +20 .rdata:0077fe24
+ virtual void Function_0009(); //#9 +24 .rdata:0077fe28
+ virtual void Function_0010(); //#10 +28 .rdata:0077fe2c
+ virtual void Function_0011(); //#11 +2c .rdata:0077fe30
+ virtual void Function_0012(); //#12 +30 .rdata:0077fe34
+ virtual void Function_0013(); //#13 +34 .rdata:0077fe38
+ virtual void Function_0014(); //#14 +38 .rdata:0077fe3c
+ virtual void Function_0015(); //#15 +3c .rdata:0077fe40
+ virtual void Function_0016(); //#16 +40 .rdata:0077fe44
+ virtual void Function_0017(); //#17 +44 .rdata:0077fe48
+ virtual void Function_0018(); //#18 +48 .rdata:0077fe4c
+ virtual void Function_0019(); //#19 +4c .rdata:0077fe50
+ virtual void Function_0020(); //#20 +50 .rdata:0077fe54
+ virtual void Function_0021(); //#21 +54 .rdata:0077fe58
+ virtual void Function_0022(); //#22 +58 .rdata:0077fe5c
+ virtual void Function_0023(); //#23 +5c .rdata:0077fe60
+ virtual void Function_0024(); //#24 +60 .rdata:0077fe64
+ virtual void Function_0025(); //#25 +64 .rdata:0077fe68
+ virtual void Function_0026(); //#26 +68 .rdata:0077fe6c
+ virtual void Function_0027(); //#27 +6c .rdata:0077fe70
+ virtual void Function_0028(); //#28 +70 .rdata:0077fe74
+ virtual void Function_0029(); //#29 +74 .rdata:0077fe78
+ virtual void Function_0030(); //#30 +78 .rdata:0077fe7c
+ virtual void Function_0031(); //#31 +7c .rdata:0077fe80
+ virtual void Function_0032(); //#32 +80 .rdata:0077fe84
+ virtual void Function_0033(); //#33 +84 .rdata:0077fe88
+ virtual void Function_0034(); //#34 +88 .rdata:0077fe8c
+ virtual void Function_0035(); //#35 +8c .rdata:0077fe90
+ virtual void Function_0036(); //#36 +90 .rdata:0077fe94
+ virtual void Function_0037(); //#37 +94 .rdata:0077fe98
+ virtual void Function_0038(); //#38 +98 .rdata:0077fe9c
+ virtual void Function_0039(); //#39 +9c .rdata:0077fea0
+ virtual void Function_0040(); //#40 +a0 .rdata:0077fea4
+ virtual void Function_0041(); //#41 +a4 .rdata:0077fea8
+ virtual void Function_0042(); //#42 +a8 .rdata:0077feac
+ virtual void Function_0043(); //#43 +ac .rdata:0077feb0
+ virtual void Function_0044(); //#44 +b0 .rdata:0077feb4
+ virtual void Function_0045(); //#45 +b4 .rdata:0077feb8
+ virtual void Function_0046(); //#46 +b8 .rdata:0077febc
+ virtual void Function_0047(); //#47 +bc .rdata:0077fec0
+ virtual void Function_0048(); //#48 +c0 .rdata:0077fec4
+ virtual void Function_0049(); //#49 +c4 .rdata:0077fec8
+ virtual void Function_0050(); //#50 +c8 .rdata:0077fecc
+ virtual void Function_0051(); //#51 +cc .rdata:0077fed0
+ virtual void Function_0052(); //#52 +d0 .rdata:0077fed4
+ virtual void Function_0053(); //#53 +d4 .rdata:0077fed8
+ virtual void Function_0054(); //#54 +d8 .rdata:0077fedc
+ virtual void Function_0055(); //#55 +dc .rdata:0077fee0
+ virtual void Function_0056(); //#56 +e0 .rdata:0077fee4
+ virtual void Function_0057(); //#57 +e4 .rdata:0077fee8
+ virtual void Function_0058(); //#58 +e8 .rdata:0077feec
+ virtual void Function_0059(); //#59 +ec .rdata:0077fef0
+ virtual void Function_0060(); //#60 +f0 .rdata:0077fef4
+ virtual void Function_0061(); //#61 +f4 .rdata:0077fef8
+ virtual void Function_0062(); //#62 +f8 .rdata:0077fefc
+ virtual void Function_0063(); //#63 +fc .rdata:0077ff00
+ virtual void Function_0064(); //#64 +100 .rdata:0077ff04
+ virtual void Function_0065(); //#65 +104 .rdata:0077ff08
+ virtual void Function_0066(); //#66 +108 .rdata:0077ff0c
+ virtual void Function_0067(); //#67 +10c .rdata:0077ff10
+ virtual void Function_0068(); //#68 +110 .rdata:0077ff14
+ virtual void Function_0069(); //#69 +114 .rdata:0077ff18
+ virtual void Function_0070(); //#70 +118 .rdata:0077ff1c
+ virtual void Function_0071(); //#71 +11c .rdata:0077ff20
+ virtual void Function_0072(); //#72 +120 .rdata:0077ff24
+ virtual void Function_0073(); //#73 +124 .rdata:0077ff28
+ virtual void Function_0074(); //#74 +128 .rdata:0077ff2c
+ virtual void Function_0075(); //#75 +12c .rdata:0077ff30
+ virtual void Function_0076(); //#76 +130 .rdata:0077ff34
+ virtual void Function_0077(); //#77 +134 .rdata:0077ff38
+ virtual void Function_0078(); //#78 +138 .rdata:0077ff3c
+ virtual void Function_0079(); //#79 +13c .rdata:0077ff40
+ virtual void Function_0080(); //#80 +140 .rdata:0077ff44
+ virtual void Function_0081(); //#81 +144 .rdata:0077ff48
+ virtual void Function_0082(); //#82 +148 .rdata:0077ff4c
+ virtual void Function_0083(); //#83 +14c .rdata:0077ff50
+ virtual void Function_0084(); //#84 +150 .rdata:0077ff54
+ virtual void Function_0085(); //#85 +154 .rdata:0077ff58
+ virtual void Function_0086(); //#86 +158 .rdata:0077ff5c
+ virtual void Function_0087(); //#87 +15c .rdata:0077ff60
+ virtual void Function_0088(); //#88 +160 .rdata:0077ff64
+ virtual void Function_0089(); //#89 +164 .rdata:0077ff68
+ virtual void Function_0090(); //#90 +168 .rdata:0077ff6c
+ virtual void Function_0091(); //#91 +16c .rdata:0077ff70
+ virtual void Function_0092(); //#92 +170 .rdata:0077ff74
+ virtual void Function_0093(); //#93 +174 .rdata:0077ff78
+ virtual void Function_0094(); //#94 +178 .rdata:0077ff7c
+ virtual void Function_0095(); //#95 +17c .rdata:0077ff80
+ virtual void Function_0096(); //#96 +180 .rdata:0077ff84
+ virtual void Function_0097(); //#97 +184 .rdata:0077ff88
+ virtual void Function_0098(); //#98 +188 .rdata:0077ff8c
+ virtual void Function_0099(); //#99 +18c .rdata:0077ff90
+ virtual void Function_0100(); //#100 +190 .rdata:0077ff94
+ virtual void Function_0101(); //#101 +194 .rdata:0077ff98
+ virtual void Function_0102(); //#102 +198 .rdata:0077ff9c
+ virtual void Function_0103(); //#103 +19c .rdata:0077ffa0
+ virtual void Function_0104(); //#104 +1a0 .rdata:0077ffa4
+ virtual void Function_0105(); //#105 +1a4 .rdata:0077ffa8
+ virtual void Function_0106(); //#106 +1a8 .rdata:0077ffac
+ virtual void Function_0107(); //#107 +1ac .rdata:0077ffb0
+ virtual void Function_0108(); //#108 +1b0 .rdata:0077ffb4
+ virtual void Function_0109(); //#109 +1b4 .rdata:0077ffb8
+ virtual void Function_0110(); //#110 +1b8 .rdata:0077ffbc
+ virtual void Function_0111(); //#111 +1bc .rdata:0077ffc0
+ virtual void Function_0112(); //#112 +1c0 .rdata:0077ffc4
+ virtual void Function_0113(); //#113 +1c4 .rdata:0077ffc8
+ virtual void Function_0114(); //#114 +1c8 .rdata:0077ffcc
+ virtual void Function_0115(); //#115 +1cc .rdata:0077ffd0
+ virtual void Function_0116(); //#116 +1d0 .rdata:0077ffd4
+ virtual void Function_0117(); //#117 +1d4 .rdata:0077ffd8
+ virtual void Function_0118(); //#118 +1d8 .rdata:0077ffdc
+ virtual void Function_0119(); //#119 +1dc .rdata:0077ffe0
+ virtual void Function_0120(); //#120 +1e0 .rdata:0077ffe4
+ virtual void Function_0121(); //#121 +1e4 .rdata:0077ffe8
+ virtual void Function_0122(); //#122 +1e8 .rdata:0077ffec
+ virtual void Function_0123(); //#123 +1ec .rdata:0077fff0
+ virtual void Function_0124(); //#124 +1f0 .rdata:0077fff4
+ virtual void Function_0125(); //#125 +1f4 .rdata:0077fff8
+ virtual void Function_0126(); //#126 +1f8 .rdata:0077fffc
+ virtual void Function_0127(); //#127 +1fc .rdata:00780000
+ virtual void Function_0128(); //#128 +200 .rdata:00780004
+ virtual void Function_0129(); //#129 +204 .rdata:00780008
+ virtual void Function_0130(); //#130 +208 .rdata:0078000c
+ virtual void Function_0131(); //#131 +20c .rdata:00780010
+ virtual void Function_0132(); //#132 +210 .rdata:00780014
+ virtual void Function_0133(); //#133 +214 .rdata:00780018
+ virtual void Function_0134(); //#134 +218 .rdata:0078001c
+ virtual void Function_0135(); //#135 +21c .rdata:00780020
+ virtual void Function_0136(); //#136 +220 .rdata:00780024
+ virtual void Function_0137(); //#137 +224 .rdata:00780028
+ virtual void Function_0138(); //#138 +228 .rdata:0078002c
+ virtual void Function_0139(); //#139 +22c .rdata:00780030
+ virtual void Function_0140(); //#140 +230 .rdata:00780034
+ virtual void Function_0141(); //#141 +234 .rdata:00780038
+ virtual void Function_0142(); //#142 +238 .rdata:0078003c
+ virtual void Function_0143(); //#143 +23c .rdata:00780040
+ virtual void Function_0144(); //#144 +240 .rdata:00780044
+ virtual void Function_0145(); //#145 +244 .rdata:00780048
+ virtual void Function_0146(); //#146 +248 .rdata:0078004c
+ virtual void Function_0147(); //#147 +24c .rdata:00780050
+ virtual void Function_0148(); //#148 +250 .rdata:00780054
+ virtual void Function_0149(); //#149 +254 .rdata:00780058
+ virtual void Function_0150(); //#150 +258 .rdata:0078005c
+ virtual void Function_0151(); //#151 +25c .rdata:00780060
+ virtual void Function_0152(); //#152 +260 .rdata:00780064
+ virtual void Function_0153(); //#153 +264 .rdata:00780068
+ virtual void Function_0154(); //#154 +268 .rdata:0078006c
+ virtual void Function_0155(); //#155 +26c .rdata:00780070
+ virtual void Function_0156(); //#156 +270 .rdata:00780074
+ virtual void Function_0157(); //#157 +274 .rdata:00780078
+ virtual void Function_0158(); //#158 +278 .rdata:0078007c
+ virtual void Function_0159(); //#159 +27c .rdata:00780080
+
+ /// === members ===
+ ZEntityLocator* m_entityLocator; //0x0004
+ char pad_0008[64]; //0x0008
+ int32_t m_topWindowID; //0x0048
+ char pad_004C[52]; //0x004C
+ };
+}}
\ No newline at end of file
diff --git a/HM3CoreKill/HM3CoreKill/sdk/ZWINDOWS.h b/HM3CoreKill/HM3CoreKill/sdk/ZWINDOWS.h
new file mode 100644
index 0000000..7d8fc6f
--- /dev/null
+++ b/HM3CoreKill/HM3CoreKill/sdk/ZWINDOWS.h
@@ -0,0 +1,203 @@
+#pragma once
+
+#include
+#include
+
+namespace ioi { namespace hm3 {
+
+
+ class ZWINDOWS
+ {
+ public:
+ /// === members ===
+ ZEntityLocator* m_entityLocator; //0x0004
+
+ /// === vftable ===
+ virtual void Function_0000(); //#0 +0 .rdata:0077d484
+ virtual void Function_0001(); //#1 +4 .rdata:0077d488
+ virtual void Function_0002(); //#2 +8 .rdata:0077d48c
+ virtual void Function_0003(); //#3 +c .rdata:0077d490
+ virtual void Function_0004(); //#4 +10 .rdata:0077d494
+ virtual void Function_0005(); //#5 +14 .rdata:0077d498
+ virtual void Function_0006(); //#6 +18 .rdata:0077d49c
+ virtual void Function_0007(); //#7 +1c .rdata:0077d4a0
+ virtual void Function_0008(); //#8 +20 .rdata:0077d4a4
+ virtual void Function_0009(); //#9 +24 .rdata:0077d4a8
+ virtual void Function_0010(); //#10 +28 .rdata:0077d4ac
+ virtual void Function_0011(); //#11 +2c .rdata:0077d4b0
+ virtual void Function_0012(); //#12 +30 .rdata:0077d4b4
+ virtual int getTypeID(); //#13 +34 .rdata:0077d4b8
+ virtual void Function_0014(); //#14 +38 .rdata:0077d4bc
+ virtual void Function_0015(); //#15 +3c .rdata:0077d4c0
+ virtual void Function_0016(); //#16 +40 .rdata:0077d4c4
+ virtual void Function_0017(); //#17 +44 .rdata:0077d4c8
+ virtual void Function_0018(); //#18 +48 .rdata:0077d4cc
+ virtual void Function_0019(); //#19 +4c .rdata:0077d4d0
+ virtual void Function_0020(); //#20 +50 .rdata:0077d4d4
+ virtual void Function_0021(); //#21 +54 .rdata:0077d4d8
+ virtual void Function_0022(); //#22 +58 .rdata:0077d4dc
+ virtual void Function_0023(); //#23 +5c .rdata:0077d4e0
+ virtual void Function_0024(); //#24 +60 .rdata:0077d4e4
+ virtual void Function_0025(); //#25 +64 .rdata:0077d4e8
+ virtual void Function_0026(); //#26 +68 .rdata:0077d4ec
+ virtual void Function_0027(); //#27 +6c .rdata:0077d4f0
+ virtual void Function_0028(); //#28 +70 .rdata:0077d4f4
+ virtual void Function_0029(); //#29 +74 .rdata:0077d4f8
+ virtual void Function_0030(); //#30 +78 .rdata:0077d4fc
+ virtual void Function_0031(); //#31 +7c .rdata:0077d500
+ virtual void Function_0032(); //#32 +80 .rdata:0077d504
+ virtual void Function_0033(); //#33 +84 .rdata:0077d508
+ virtual void Function_0034(); //#34 +88 .rdata:0077d50c
+ virtual void Function_0035(); //#35 +8c .rdata:0077d510
+ virtual void Function_0036(); //#36 +90 .rdata:0077d514
+ virtual void Function_0037(); //#37 +94 .rdata:0077d518
+ virtual void Function_0038(); //#38 +98 .rdata:0077d51c
+ virtual void Function_0039(); //#39 +9c .rdata:0077d520
+ virtual void Function_0040(); //#40 +a0 .rdata:0077d524
+ virtual void Function_0041(); //#41 +a4 .rdata:0077d528
+ virtual void Function_0042(); //#42 +a8 .rdata:0077d52c
+ virtual void Function_0043(); //#43 +ac .rdata:0077d530
+ virtual void Function_0044(); //#44 +b0 .rdata:0077d534
+ virtual void Function_0045(); //#45 +b4 .rdata:0077d538
+ virtual void Function_0046(); //#46 +b8 .rdata:0077d53c
+ virtual void Function_0047(); //#47 +bc .rdata:0077d540
+ virtual void Function_0048(); //#48 +c0 .rdata:0077d544
+ virtual void Function_0049(); //#49 +c4 .rdata:0077d548
+ virtual void Function_0050(); //#50 +c8 .rdata:0077d54c
+ virtual void Function_0051(); //#51 +cc .rdata:0077d550
+ virtual void Function_0052(); //#52 +d0 .rdata:0077d554
+ virtual void Function_0053(); //#53 +d4 .rdata:0077d558
+ virtual void Function_0054(); //#54 +d8 .rdata:0077d55c
+ virtual void Function_0055(); //#55 +dc .rdata:0077d560
+ virtual void Function_0056(); //#56 +e0 .rdata:0077d564
+ virtual void Function_0057(); //#57 +e4 .rdata:0077d568
+ virtual void Function_0058(); //#58 +e8 .rdata:0077d56c
+ virtual void Function_0059(); //#59 +ec .rdata:0077d570
+ virtual void Function_0060(); //#60 +f0 .rdata:0077d574
+ virtual void Function_0061(); //#61 +f4 .rdata:0077d578
+ virtual void Function_0062(); //#62 +f8 .rdata:0077d57c
+ virtual void Function_0063(); //#63 +fc .rdata:0077d580
+ virtual void Function_0064(); //#64 +100 .rdata:0077d584
+ virtual void Function_0065(); //#65 +104 .rdata:0077d588
+ virtual void Function_0066(); //#66 +108 .rdata:0077d58c
+ virtual void Function_0067(); //#67 +10c .rdata:0077d590
+ virtual void Function_0068(); //#68 +110 .rdata:0077d594
+ virtual void Function_0069(); //#69 +114 .rdata:0077d598
+ virtual void Function_0070(); //#70 +118 .rdata:0077d59c
+ virtual void Function_0071(); //#71 +11c .rdata:0077d5a0
+ virtual void Function_0072(); //#72 +120 .rdata:0077d5a4
+ virtual void Function_0073(); //#73 +124 .rdata:0077d5a8
+ virtual void Function_0074(); //#74 +128 .rdata:0077d5ac
+ virtual void Function_0075(); //#75 +12c .rdata:0077d5b0
+ virtual void Function_0076(); //#76 +130 .rdata:0077d5b4
+ virtual void Function_0077(); //#77 +134 .rdata:0077d5b8
+ virtual void Function_0078(); //#78 +138 .rdata:0077d5bc
+ virtual void Function_0079(); //#79 +13c .rdata:0077d5c0
+ virtual void Function_0080(); //#80 +140 .rdata:0077d5c4
+ virtual void Function_0081(); //#81 +144 .rdata:0077d5c8
+ virtual void Function_0082(); //#82 +148 .rdata:0077d5cc
+ virtual void Function_0083(); //#83 +14c .rdata:0077d5d0
+ virtual void Function_0084(); //#84 +150 .rdata:0077d5d4
+ virtual void Function_0085(); //#85 +154 .rdata:0077d5d8
+ virtual void Function_0086(); //#86 +158 .rdata:0077d5dc
+ virtual void Function_0087(); //#87 +15c .rdata:0077d5e0
+ virtual void Function_0088(); //#88 +160 .rdata:0077d5e4
+ virtual void Function_0089(); //#89 +164 .rdata:0077d5e8
+ virtual void Function_0090(); //#90 +168 .rdata:0077d5ec
+ virtual void Function_0091(); //#91 +16c .rdata:0077d5f0
+ virtual void Function_0092(); //#92 +170 .rdata:0077d5f4
+ virtual void Function_0093(); //#93 +174 .rdata:0077d5f8
+ virtual void Function_0094(); //#94 +178 .rdata:0077d5fc
+ virtual void Function_0095(); //#95 +17c .rdata:0077d600
+ virtual void Function_0096(); //#96 +180 .rdata:0077d604
+ virtual void Function_0097(); //#97 +184 .rdata:0077d608
+ virtual void Function_0098(); //#98 +188 .rdata:0077d60c
+ virtual void Function_0099(); //#99 +18c .rdata:0077d610
+ virtual void Function_0100(); //#100 +190 .rdata:0077d614
+ virtual void Function_0101(); //#101 +194 .rdata:0077d618
+ virtual void Function_0102(); //#102 +198 .rdata:0077d61c
+ virtual void Function_0103(); //#103 +19c .rdata:0077d620
+ virtual void Function_0104(); //#104 +1a0 .rdata:0077d624
+ virtual void Function_0105(); //#105 +1a4 .rdata:0077d628
+ virtual void Function_0106(); //#106 +1a8 .rdata:0077d62c
+ virtual void Function_0107(); //#107 +1ac .rdata:0077d630
+ virtual void Function_0108(); //#108 +1b0 .rdata:0077d634
+ virtual void Function_0109(); //#109 +1b4 .rdata:0077d638
+ virtual void Function_0110(); //#110 +1b8 .rdata:0077d63c
+ virtual void Function_0111(); //#111 +1bc .rdata:0077d640
+ virtual void Function_0112(); //#112 +1c0 .rdata:0077d644
+ virtual void Function_0113(); //#113 +1c4 .rdata:0077d648
+ virtual void Function_0114(); //#114 +1c8 .rdata:0077d64c
+ virtual void Function_0115(); //#115 +1cc .rdata:0077d650
+ virtual void Function_0116(); //#116 +1d0 .rdata:0077d654
+ virtual void Function_0117(); //#117 +1d4 .rdata:0077d658
+ virtual void Function_0118(); //#118 +1d8 .rdata:0077d65c
+ virtual void Function_0119(); //#119 +1dc .rdata:0077d660
+ virtual void Function_0120(); //#120 +1e0 .rdata:0077d664
+ virtual void Function_0121(); //#121 +1e4 .rdata:0077d668
+ virtual void Function_0122(); //#122 +1e8 .rdata:0077d66c
+ virtual void Function_0123(); //#123 +1ec .rdata:0077d670
+ virtual void Function_0124(); //#124 +1f0 .rdata:0077d674
+ virtual void Function_0125(); //#125 +1f4 .rdata:0077d678
+ virtual void Function_0126(); //#126 +1f8 .rdata:0077d67c
+ virtual void Function_0127(); //#127 +1fc .rdata:0077d680
+ virtual void Function_0128(); //#128 +200 .rdata:0077d684
+ virtual void Function_0129(); //#129 +204 .rdata:0077d688
+ virtual void Function_0130(); //#130 +208 .rdata:0077d68c
+ virtual void Function_0131(); //#131 +20c .rdata:0077d690
+ virtual void Function_0132(); //#132 +210 .rdata:0077d694
+ virtual void Function_0133(); //#133 +214 .rdata:0077d698
+ virtual void Function_0134(); //#134 +218 .rdata:0077d69c
+ virtual void Function_0135(); //#135 +21c .rdata:0077d6a0
+ virtual void Function_0136(); //#136 +220 .rdata:0077d6a4
+ virtual void Function_0137(); //#137 +224 .rdata:0077d6a8
+ virtual void Function_0138(); //#138 +228 .rdata:0077d6ac
+ virtual void Function_0139(); //#139 +22c .rdata:0077d6b0
+ virtual void Function_0140(); //#140 +230 .rdata:0077d6b4
+ virtual void Function_0141(); //#141 +234 .rdata:0077d6b8
+ virtual void Function_0142(); //#142 +238 .rdata:0077d6bc
+ virtual void Function_0143(); //#143 +23c .rdata:0077d6c0
+ virtual void Function_0144(); //#144 +240 .rdata:0077d6c4
+ virtual void Function_0145(); //#145 +244 .rdata:0077d6c8
+ virtual void Function_0146(); //#146 +248 .rdata:0077d6cc
+ virtual void Function_0147(); //#147 +24c .rdata:0077d6d0
+ virtual void Function_0148(); //#148 +250 .rdata:0077d6d4
+ virtual void Function_0149(); //#149 +254 .rdata:0077d6d8
+ virtual void Function_0150(); //#150 +258 .rdata:0077d6dc
+ virtual void Function_0151(); //#151 +25c .rdata:0077d6e0
+ virtual void Function_0152(); //#152 +260 .rdata:0077d6e4
+ virtual void Function_0153(); //#153 +264 .rdata:0077d6e8
+ virtual void Function_0154(); //#154 +268 .rdata:0077d6ec
+ virtual void Function_0155(); //#155 +26c .rdata:0077d6f0
+ virtual void Function_0156(); //#156 +270 .rdata:0077d6f4
+ virtual void Function_0157(); //#157 +274 .rdata:0077d6f8
+ virtual void Function_0158(); //#158 +278 .rdata:0077d6fc
+ virtual void Function_0159(); //#159 +27c .rdata:0077d700
+ virtual void Function_0160(); //#160 +280 .rdata:0077d704
+ virtual int getTopUIComponent(); //#161 +284 .rdata:0077d708
+ virtual void Function_0162(); //#162 +288 .rdata:0077d70c
+ virtual void Function_0163(int); //#163 +28c .rdata:0077d710
+ virtual void Function_0164(); //#164 +290 .rdata:0077d714
+ virtual void Function_0165(); //#165 +294 .rdata:0077d718
+ virtual void Function_0166(); //#166 +298 .rdata:0077d71c
+ virtual void Function_0167(); //#167 +29c .rdata:0077d720
+ virtual void Function_0168(); //#168 +2a0 .rdata:0077d724
+ virtual void Function_0169(); //#169 +2a4 .rdata:0077d728
+ virtual void Function_0170(); //#170 +2a8 .rdata:0077d72c
+ virtual void Function_0171(); //#171 +2ac .rdata:0077d730
+ virtual void Function_0172(); //#172 +2b0 .rdata:0077d734
+ virtual void Function_0173(); //#173 +2b4 .rdata:0077d738
+ virtual void Function_0174(); //#174 +2b8 .rdata:0077d73c
+ virtual void Function_0175(); //#175 +2bc .rdata:0077d740
+ virtual void Function_0176(); //#176 +2c0 .rdata:0077d744
+ virtual void Function_0177(); //#177 +2c4 .rdata:0077d748
+ virtual void Function_0178(); //#178 +2c8 .rdata:0077d74c
+ virtual void Function_0179(); //#179 +2cc .rdata:0077d750
+ virtual void Function_0180(); //#180 +2d0 .rdata:0077d754
+ virtual void Function_0181(); //#181 +2d4 .rdata:0077d758
+ virtual void Function_0182(); //#182 +2d8 .rdata:0077d75c
+ virtual void Function_0183(); //#183 +2dc .rdata:0077d760
+ virtual void Function_0184(); //#184 +2e0 .rdata:0077d764
+ };
+
+} }
\ No newline at end of file
diff --git a/HM3CoreKill/HM3CoreKill/sdk/ZXMLGUISystem.h b/HM3CoreKill/HM3CoreKill/sdk/ZXMLGUISystem.h
new file mode 100644
index 0000000..28780d3
--- /dev/null
+++ b/HM3CoreKill/HM3CoreKill/sdk/ZXMLGUISystem.h
@@ -0,0 +1,77 @@
+#pragma once
+
+#include
+#include
+#include
+#include
+#include
+
+namespace ioi { namespace hm3 {
+
+ class ZXMLGUISystem : public ZLinkedListNodeBase
+ {
+ public:
+ virtual void Function_0000(); //#0 +0 .rdata:00781244
+ virtual void Function_0001(); //#1 +4 .rdata:00781248
+ virtual void Function_0002(); //#2 +8 .rdata:0078124c
+ virtual void Function_0003(); //#3 +c .rdata:00781250
+ virtual void Function_0004(); //#4 +10 .rdata:00781254
+ virtual void Function_0005(); //#5 +14 .rdata:00781258
+ virtual void Function_0006(); //#6 +18 .rdata:0078125c
+ virtual void Function_0007(); //#7 +1c .rdata:00781260
+ virtual void Function_0008(); //#8 +20 .rdata:00781264
+ virtual void Function_0009(); //#9 +24 .rdata:00781268
+ virtual void Function_0010(); //#10 +28 .rdata:0078126c
+ virtual void Function_0011(); //#11 +2c .rdata:00781270
+ virtual void Function_0012(); //#12 +30 .rdata:00781274
+ virtual void Function_0013(); //#13 +34 .rdata:00781278
+ virtual void Function_0014(); //#14 +38 .rdata:0078127c
+ virtual void Function_0015(); //#15 +3c .rdata:00781280
+ virtual void Function_0016(); //#16 +40 .rdata:00781284
+ virtual void Function_0017(); //#17 +44 .rdata:00781288
+ virtual void Function_0018(); //#18 +48 .rdata:0078128c
+ virtual void Function_0019(); //#19 +4c .rdata:00781290
+ virtual void Function_0020(); //#20 +50 .rdata:00781294
+ virtual void Function_0021(); //#21 +54 .rdata:00781298
+ virtual void Function_0022(); //#22 +58 .rdata:0078129c
+ virtual void Function_0023(); //#23 +5c .rdata:007812a0
+ virtual void Function_0024(); //#24 +60 .rdata:007812a4
+ virtual void Function_0025(); //#25 +64 .rdata:007812a8
+ virtual void Function_0026(); //#26 +68 .rdata:007812ac
+ virtual void Function_0027(); //#27 +6c .rdata:007812b0
+ virtual void Function_0028(); //#28 +70 .rdata:007812b4
+ virtual void Function_0029(); //#29 +74 .rdata:007812b8
+ virtual void Function_0030(); //#30 +78 .rdata:007812bc
+ virtual void Function_0031(); //#31 +7c .rdata:007812c0
+ virtual void Function_0032(); //#32 +80 .rdata:007812c4
+ virtual void Function_0033(); //#33 +84 .rdata:007812c8
+ virtual void Function_0034(); //#34 +88 .rdata:007812cc
+ virtual void Function_0035(); //#35 +8c .rdata:007812d0
+ virtual ZWINDOWS* getZWindowsSubsystem(); //#36 +90 .rdata:007812d4
+ virtual void Function_0037(); //#37 +94 .rdata:007812d8
+ virtual void Function_0038(); //#38 +98 .rdata:007812dc
+ virtual void Function_0039(); //#39 +9c .rdata:007812e0
+ virtual void Function_0040(); //#40 +a0 .rdata:007812e4
+ virtual void Function_0041(); //#41 +a4 .rdata:007812e8
+ virtual void Function_0042(); //#42 +a8 .rdata:007812ec
+ virtual void Function_0043(); //#43 +ac .rdata:007812f0
+ virtual void Function_0044(); //#44 +b0 .rdata:007812f4
+ virtual void Function_0045(); //#45 +b4 .rdata:007812f8
+ virtual void Function_0046(); //#46 +b8 .rdata:007812fc
+ virtual void Function_0047(); //#47 +bc .rdata:00781300
+ virtual void Function_0048(); //#48 +c0 .rdata:00781304
+ virtual void Function_0049(); //#49 +c4 .rdata:00781308
+ virtual int Function_0050(); //#50 +c8 .rdata:0078130c
+ virtual void Function_0051(); //#51 +cc .rdata:00781310
+
+
+ /// === members ===
+ char pad_0014[16]; //0x0014
+ ZWINDOW* m_window; //0x0024
+ char pad_0028[4]; //0x0028
+ ZGlacierRTTI* m_RTTI; //0x002C
+ char pad_0030[2013]; //0x0030
+
+ };
+
+} }
\ No newline at end of file