Skip to content
This repository was archived by the owner on Sep 12, 2021. It is now read-only.

Commit 22fb0d7

Browse files
authored
Merge pull request #50 from DronCode/gui_system_some_ingame_features_and_more_actions
Changelog ------------- * Reversed action ZHitmanActionChargeHitStungun * Reversed action ZHitmanActionDestroyDualWeapons * Reversed action ZHitmanActionReloadItem * Reversed action ZHitmanReviveCIAAgent / ZHitmanSedateCIAAgent (M04 specific stuff) * Partially reversed CMetalDetector entity * Found and declared class CRagdoll2, ConstrainedParticleSystem (we can take it from ZActor class) * Reversed ZBodyInfo structure (no vftable, no member functions) * Reversed UI widget class ZCHAROBJ (Label) * Added ZConstructors class (not a part of Glacier engine, just our small wrapper under glacier's allocator) * Reversed player flags location and bindings (added into "Player info" tab in ReHitman|Debugger) * Fixed crash with DX9 switch context (yep, again, old fix regressed) * Reversed ZActor::processAI method (small demo inside HM3Game::ZCustomActor::onUpdate) * Reversed ZEngineDB root pointers of ZLinkedList based components (custom ZLinkedListHeader template) * Reversed global static method ZGROUP::getGroupByEntityLocator * Added smart casting of ZSTDOBJ to any other entity (if subclass allow that) * Partially reversed ZGuardQuarterController class * Many changes in ZHM3Actor * Partially reversed mission load flow * Reversed global static method ZHM3Item::getItemIDByItemInstance * Completed reverse of ZIKHAND (all methods reversed and documented, can be used in any custom logic) * Found old legacy IO subsystem : ZIOInputStream * Reversed ZInfoDisplay, ZPickUpMenu, ZWeaponDisplay * Reversed ZLnkActionQueue and tested * Reversed global static method ZROOM::getRoomByEntityLocator * Reversed class ZROOM * Reversed class LINKREFTAB (part of ZSTD) * Reversed class ZOffsetAlloc, ZOctreeCompiled * Reversed class ZSysFileWintel * Fixed class ZSysInterfaceWintel * Partially reversed ZWeaponStorage * Added more details inside ZXMLGUISystem * Fixed class ZLnkAction * Partially reversed ZTextureManagerD3D class (and method loadTEXPackage) * Small results in ZScriptC (reversed internal structure but not behaviour)
2 parents 710c804 + 1d008d9 commit 22fb0d7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

71 files changed

+4291
-593
lines changed

HM3CoreKill/HM3CoreKill/HM3CoreKill.vcxproj

+34
Original file line numberDiff line numberDiff line change
@@ -208,14 +208,22 @@
208208
<ClInclude Include="ck\HM3ScopedProtection.h" />
209209
<ClInclude Include="ck\HM3Types.h" />
210210
<ClInclude Include="mp\MP.h" />
211+
<ClInclude Include="sdk\actions\ZHitmanActionChargeHitStungun.h" />
212+
<ClInclude Include="sdk\actions\ZHitmanActionDestroyDualWeapons.h" />
211213
<ClInclude Include="sdk\actions\ZHitmanActionPickLock.h" />
214+
<ClInclude Include="sdk\actions\ZHitmanActionReloadItem.h" />
215+
<ClInclude Include="sdk\actions\ZHitmanReviveCIAAgent.h" />
216+
<ClInclude Include="sdk\actions\ZHitmanSedateCIAAgent.h" />
212217
<ClInclude Include="sdk\actions\ZHM3ActorPunch.h" />
213218
<ClInclude Include="sdk\actions\ZLnkAction.h" />
214219
<ClInclude Include="sdk\CCutSequence.h" />
215220
<ClInclude Include="sdk\CDoor.h" />
216221
<ClInclude Include="sdk\CIngameMap.h" />
217222
<ClInclude Include="sdk\CInventory.h" />
218223
<ClInclude Include="sdk\CMapObject.h" />
224+
<ClInclude Include="sdk\CMetalDetector.h" />
225+
<ClInclude Include="sdk\ConstrainedParticleSystem.h" />
226+
<ClInclude Include="sdk\CRagdoll2.h" />
219227
<ClInclude Include="sdk\CTelePortList.h" />
220228
<ClInclude Include="sdk\FsZip_t.h" />
221229
<ClInclude Include="sdk\game\ZHM3MovementGuideToMatPos.h" />
@@ -231,19 +239,29 @@
231239
<ClInclude Include="sdk\render\ZTextureManagerD3D.h" />
232240
<ClInclude Include="sdk\ResourceCollection.h" />
233241
<ClInclude Include="sdk\scripting\ZScriptC.h" />
242+
<ClInclude Include="sdk\ZAction.h" />
234243
<ClInclude Include="sdk\ZActionDispatcher.h" />
235244
<ClInclude Include="sdk\ZActionManager.h" />
245+
<ClInclude Include="sdk\ZActorCommunication.h" />
236246
<ClInclude Include="sdk\ZAnimationInfo.h" />
247+
<ClInclude Include="sdk\ZBodyInfo.h" />
237248
<ClInclude Include="sdk\ZBoxPrimitive.h" />
249+
<ClInclude Include="sdk\ZCHAROBJ.h" />
250+
<ClInclude Include="sdk\ZCheatMenu.h" />
251+
<ClInclude Include="sdk\ZConstructors.h" />
238252
<ClInclude Include="sdk\ZDirect3DDevice.h" />
239253
<ClInclude Include="sdk\ZEngineDatabase.h" />
240254
<ClInclude Include="sdk\ZEntityLocator.h" />
255+
<ClInclude Include="sdk\ZEventBase.h" />
241256
<ClInclude Include="sdk\ZEventBuffer.h" />
257+
<ClInclude Include="sdk\ZFightController.h" />
242258
<ClInclude Include="sdk\ZGameControlWintel.h" />
243259
<ClInclude Include="sdk\ZGameFunctions.h" />
244260
<ClInclude Include="sdk\ZGEOM.h" />
245261
<ClInclude Include="sdk\ZGeomBuffer.h" />
246262
<ClInclude Include="sdk\ZGlacierRTTI.h" />
263+
<ClInclude Include="sdk\ZGROUP.h" />
264+
<ClInclude Include="sdk\ZGuardQuarterController.h" />
247265
<ClInclude Include="sdk\ZGUI.h" />
248266
<ClInclude Include="sdk\ZHM3Actor.h" />
249267
<ClInclude Include="sdk\ZHM3BriefingControl.h" />
@@ -257,7 +275,9 @@
257275
<ClInclude Include="sdk\ZHM3Camera.h" />
258276
<ClInclude Include="sdk\ZHM3Hitman3.h" />
259277
<ClInclude Include="sdk\ZHM3HmAs.h" />
278+
<ClInclude Include="sdk\ZHM3InventoryMenu.h" />
260279
<ClInclude Include="sdk\ZHM3Item.h" />
280+
<ClInclude Include="sdk\ZHM3ItemBomb.h" />
261281
<ClInclude Include="sdk\ZHM3ItemTemplate.h" />
262282
<ClInclude Include="sdk\ZHM3ItemTemplateAmmo.h" />
263283
<ClInclude Include="sdk\ZHM3LevelControl.h" />
@@ -266,21 +286,31 @@
266286
<ClInclude Include="sdk\ZHM3WeaponItem.h" />
267287
<ClInclude Include="sdk\ZHumanBoid.h" />
268288
<ClInclude Include="sdk\ZIKHAND.h" />
289+
<ClInclude Include="sdk\ZInfoDisplay.h" />
290+
<ClInclude Include="sdk\ZInputStream.h" />
291+
<ClInclude Include="sdk\ZIOInputStream.h" />
269292
<ClInclude Include="sdk\ZKeyboardWintel.h" />
270293
<ClInclude Include="sdk\ZLinkedListNodeBase.h" />
294+
<ClInclude Include="sdk\ZLnkActionQueue.h" />
271295
<ClInclude Include="sdk\ZLNKWHANDS.h" />
272296
<ClInclude Include="sdk\ZMouseWintel.h" />
297+
<ClInclude Include="sdk\ZMoveTo.h" />
273298
<ClInclude Include="sdk\ZOnlineElements.h" />
274299
<ClInclude Include="sdk\ZOSD.h" />
300+
<ClInclude Include="sdk\ZPackedInput.h" />
275301
<ClInclude Include="sdk\ZPathFollower.h" />
302+
<ClInclude Include="sdk\ZPickupMenu.h" />
276303
<ClInclude Include="sdk\ZRenderWintelD3D.h" />
304+
<ClInclude Include="sdk\ZROOM.h" />
277305
<ClInclude Include="sdk\ZStandardMenuFactory.h" />
278306
<ClInclude Include="sdk\ZSTD.h" />
279307
<ClInclude Include="sdk\ZSysFile.h" />
280308
<ClInclude Include="sdk\ZSysInputWintel.h" />
281309
<ClInclude Include="sdk\ZSysInterfaceWintel.h" />
282310
<ClInclude Include="sdk\ZSysMem.h" />
283311
<ClInclude Include="sdk\ZCar.h" />
312+
<ClInclude Include="sdk\ZWeaponDisplay.h" />
313+
<ClInclude Include="sdk\ZWeaponStorage.h" />
284314
<ClInclude Include="sdk\ZWINDOW.h" />
285315
<ClInclude Include="sdk\ZWINDOWS.h" />
286316
<ClInclude Include="sdk\ZXMLGUISystem.h" />
@@ -329,12 +359,16 @@
329359
<ClCompile Include="ck\HM3ProcessCache.cpp" />
330360
<ClCompile Include="DllEntry.cpp" />
331361
<ClCompile Include="sdk\CTelePortList.cpp" />
362+
<ClCompile Include="sdk\ZAnimationInfo.cpp" />
363+
<ClCompile Include="sdk\ZConstructors.cpp" />
364+
<ClCompile Include="sdk\ZGROUP.cpp" />
332365
<ClCompile Include="sdk\ZHM3Actor.cpp" />
333366
<ClCompile Include="sdk\ZHM3Hitman3.cpp" />
334367
<ClCompile Include="sdk\ZEngineDatabase.cpp" />
335368
<ClCompile Include="sdk\ZHM3CameraClass.cpp" />
336369
<ClCompile Include="sdk\ZHM3Item.cpp" />
337370
<ClCompile Include="sdk\ZLNKWHANDS.cpp" />
371+
<ClCompile Include="sdk\ZROOM.cpp" />
338372
<ClCompile Include="sdk\ZSysMem.cpp" />
339373
<ClCompile Include="third_party\fmt\src\format.cc" />
340374
<ClCompile Include="third_party\fmt\src\os.cc" />

HM3CoreKill/HM3CoreKill/HM3CoreKill.vcxproj.filters

+108-1
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,6 @@
363363
<ClInclude Include="sdk\ZLinkedListNodeBase.h">
364364
<Filter>sdk</Filter>
365365
</ClInclude>
366-
<ClInclude Include="sdk\game\ZHM3WeaponsControl.h" />
367366
<ClInclude Include="sdk\game\ZHM3MovementGuideToMatPos.h">
368367
<Filter>sdk\game</Filter>
369368
</ClInclude>
@@ -409,6 +408,99 @@
409408
<ClInclude Include="sdk\ZWINDOW.h">
410409
<Filter>sdk</Filter>
411410
</ClInclude>
411+
<ClInclude Include="sdk\ZROOM.h">
412+
<Filter>sdk</Filter>
413+
</ClInclude>
414+
<ClInclude Include="sdk\ZActorCommunication.h">
415+
<Filter>sdk</Filter>
416+
</ClInclude>
417+
<ClInclude Include="sdk\ZCHAROBJ.h">
418+
<Filter>sdk</Filter>
419+
</ClInclude>
420+
<ClInclude Include="sdk\ZWeaponDisplay.h">
421+
<Filter>sdk</Filter>
422+
</ClInclude>
423+
<ClInclude Include="sdk\ZHM3InventoryMenu.h">
424+
<Filter>sdk</Filter>
425+
</ClInclude>
426+
<ClInclude Include="sdk\ZCheatMenu.h">
427+
<Filter>sdk</Filter>
428+
</ClInclude>
429+
<ClInclude Include="sdk\ZEventBase.h">
430+
<Filter>sdk</Filter>
431+
</ClInclude>
432+
<ClInclude Include="sdk\actions\ZHitmanReviveCIAAgent.h">
433+
<Filter>sdk\actions</Filter>
434+
</ClInclude>
435+
<ClInclude Include="sdk\actions\ZHitmanSedateCIAAgent.h">
436+
<Filter>sdk\actions</Filter>
437+
</ClInclude>
438+
<ClInclude Include="sdk\actions\ZHitmanActionChargeHitStungun.h">
439+
<Filter>sdk\actions</Filter>
440+
</ClInclude>
441+
<ClInclude Include="sdk\ZLnkActionQueue.h">
442+
<Filter>sdk</Filter>
443+
</ClInclude>
444+
<ClInclude Include="sdk\actions\ZHitmanActionReloadItem.h">
445+
<Filter>sdk\actions</Filter>
446+
</ClInclude>
447+
<ClInclude Include="sdk\actions\ZHitmanActionDestroyDualWeapons.h">
448+
<Filter>sdk\actions</Filter>
449+
</ClInclude>
450+
<ClInclude Include="sdk\ZGROUP.h">
451+
<Filter>sdk</Filter>
452+
</ClInclude>
453+
<ClInclude Include="sdk\ZPickupMenu.h">
454+
<Filter>sdk</Filter>
455+
</ClInclude>
456+
<ClInclude Include="sdk\ZAction.h">
457+
<Filter>sdk</Filter>
458+
</ClInclude>
459+
<ClInclude Include="sdk\ZHM3ItemBomb.h">
460+
<Filter>sdk</Filter>
461+
</ClInclude>
462+
<ClInclude Include="sdk\ZPackedInput.h">
463+
<Filter>sdk</Filter>
464+
</ClInclude>
465+
<ClInclude Include="sdk\ZInputStream.h">
466+
<Filter>sdk</Filter>
467+
</ClInclude>
468+
<ClInclude Include="sdk\ZIOInputStream.h">
469+
<Filter>sdk</Filter>
470+
</ClInclude>
471+
<ClInclude Include="sdk\CMetalDetector.h">
472+
<Filter>sdk</Filter>
473+
</ClInclude>
474+
<ClInclude Include="sdk\ConstrainedParticleSystem.h">
475+
<Filter>sdk</Filter>
476+
</ClInclude>
477+
<ClInclude Include="sdk\CRagdoll2.h">
478+
<Filter>sdk</Filter>
479+
</ClInclude>
480+
<ClInclude Include="sdk\ZBodyInfo.h">
481+
<Filter>sdk</Filter>
482+
</ClInclude>
483+
<ClInclude Include="sdk\game\ZHM3WeaponsControl.h">
484+
<Filter>sdk</Filter>
485+
</ClInclude>
486+
<ClInclude Include="sdk\ZInfoDisplay.h">
487+
<Filter>sdk</Filter>
488+
</ClInclude>
489+
<ClInclude Include="sdk\ZMoveTo.h">
490+
<Filter>sdk</Filter>
491+
</ClInclude>
492+
<ClInclude Include="sdk\ZGuardQuarterController.h">
493+
<Filter>sdk</Filter>
494+
</ClInclude>
495+
<ClInclude Include="sdk\ZWeaponStorage.h">
496+
<Filter>sdk</Filter>
497+
</ClInclude>
498+
<ClInclude Include="sdk\ZFightController.h">
499+
<Filter>sdk</Filter>
500+
</ClInclude>
501+
<ClInclude Include="sdk\ZConstructors.h">
502+
<Filter>sdk</Filter>
503+
</ClInclude>
412504
</ItemGroup>
413505
<ItemGroup>
414506
<ClCompile Include="ck\HM3DebugConsole.cpp">
@@ -514,5 +606,20 @@
514606
<ClCompile Include="ck\HM3GamepadSupport.cpp">
515607
<Filter>ck</Filter>
516608
</ClCompile>
609+
<ClCompile Include="sdk\ZAnimationInfo.cpp">
610+
<Filter>sdk</Filter>
611+
</ClCompile>
612+
<ClCompile Include="sdk\ZGROUP.cpp">
613+
<Filter>sdk</Filter>
614+
</ClCompile>
615+
<ClCompile Include="sdk\ZROOM.cpp">
616+
<Filter>sdk</Filter>
617+
</ClCompile>
618+
<ClCompile Include="sdk\CTelePortList.cpp">
619+
<Filter>sdk</Filter>
620+
</ClCompile>
621+
<ClCompile Include="sdk\ZConstructors.cpp">
622+
<Filter>sdk</Filter>
623+
</ClCompile>
517624
</ItemGroup>
518625
</Project>

HM3CoreKill/HM3CoreKill/ck/HM3Direct3D.cpp

+7-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
#include <ck/HM3Function.h>
33
#include <ck/HM3InGameTools.h>
44

5+
#include <imgui.h>
6+
#include <imgui_impl_dx9.h>
7+
8+
59
//#define CKD3D_USE_TEXTURES_HOOK
610
#define CKD3D_USE_VERTEX_BINDER_HOOK
711

@@ -49,8 +53,10 @@ namespace ck
4953

5054
HRESULT __stdcall Direct3DDevice_OnReset(IDirect3DDevice9* device, D3DPRESENT_PARAMETERS* pPresentationParameters)
5155
{
56+
ImGui_ImplDX9_InvalidateDeviceObjects();
5257
auto result = originalResetFunc(device, pPresentationParameters);
53-
58+
ImGui_ImplDX9_CreateDeviceObjects();
59+
5460
auto callback = HM3Direct3D::getInstance().onDeviceLost;
5561
if (callback)
5662
callback(device);

HM3CoreKill/HM3CoreKill/ck/HM3Game.cpp

+29-9
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,6 @@ void __stdcall OnTeleportsListLoaded_Callback(DWORD R1)
3636
HM3_DEBUG("[ result at 0x%X ]\n", R1);
3737
}
3838

39-
void __stdcall ShowWindowRequest()
40-
{
41-
HM3_DEBUG("Require show window with HWND is 0x%.8X\n", HM3Game::GetSystemInterface()->m_renderer->m_HWND);
42-
ShowWindow(HM3Game::GetSystemInterface()->m_renderer->m_HWND, SW_SHOW);
43-
}
44-
4539
struct ComponentWatcher
4640
{
4741
void onComponentRequest(const char* componentName)
@@ -50,6 +44,16 @@ struct ComponentWatcher
5044
}
5145
};
5246

47+
struct ZCustomActor : public ioi::hm3::ZHM3Actor
48+
{
49+
bool onUpdate()
50+
{
51+
typedef bool(__thiscall* ZActor_onUpdate_t)(ZCustomActor*);
52+
ZActor_onUpdate_t onUpdate = (ZActor_onUpdate_t)0x00504CB0;
53+
return onUpdate(this);
54+
}
55+
};
56+
5357
void HM3Game::Initialise()
5458
{
5559
if (!checkBuildVersion())
@@ -87,6 +91,24 @@ void HM3Game::Initialise()
8791
setupCutSequenceConstructorHook();
8892
//setupGetComponentHook();
8993

94+
{
95+
/*
96+
/// Patch AI
97+
HM3Function::overrideInstruction(
98+
HM3_PROCESS_NAME,
99+
0x0063E1C0,
100+
{
101+
//1'st
102+
0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
103+
//2'nd
104+
0x90, 0x90, 0x90, 0xC3
105+
});
106+
107+
bool(__thiscall ZCustomActor::* onUpdateCallback)() = &ZCustomActor::onUpdate;
108+
HM3Function::hookFunction<bool(__thiscall*)(), 5>(HM3_PROCESS_NAME, 0x0063E1C0, (DWORD)(DWORD*&)onUpdateCallback, {}, {});
109+
*/
110+
}
111+
90112
/*
91113
92114
sub_4E6AF0 <- Add resource frontend
@@ -382,9 +404,7 @@ void HM3Game::setupGetComponentHook()
382404

383405
void HM3Game::onD3DInitialized(IDirect3DDevice9* device)
384406
{
385-
const auto renderer = GetSystemInterface()->m_renderer;
386-
387-
ck::HM3InGameTools::getInstance().initialize(renderer->m_HWND, device);
407+
ck::HM3InGameTools::getInstance().initialize(GetSystemInterface()->m_renderer->m_HWND, device);
388408
}
389409

390410
void HM3Game::onD3DBeginScene(IDirect3DDevice9* device)

0 commit comments

Comments
 (0)