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