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

Commit 91ed8c8

Browse files
authored
Final commit of "Death of a Showman" project
Changes: 1. Reversed RTTI information structure 2. Reversed event system 3. Reversed ZHitman3 class 4. Reversed CInventory class 5. Added play animation for player feature 6. Reversed items subsystem (item, itemtemplate, itemweapon) 7. Reversed hands API for actor & player (added viewer of items) 8. Reversed method `ZHM3Actor::kill()`. Added demo for it (kill actor or all actors in actors viewer tool) 9. Minor changes in debug menu design 10. Fixed crash when we trying to alt+tab in full screen mode (#23) 11. Implemented wireframe mode (wireframe, wireframe & normal and normal mode) 12. Implemented first version of ZIP Free Filesystem : [documentation](https://github.com/DronCode/ReHitman/wiki/ZIP-Free-File-System) 13. Added near actors locator in debug menu 14. Added project logo
2 parents f1f0ce7 + d72bb4d commit 91ed8c8

File tree

97 files changed

+14710
-16866
lines changed

Some content is hidden

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

97 files changed

+14710
-16866
lines changed

GitHub/logo.png

100 KB
Loading

HM3CoreKill/HM3CoreKill/HM3CoreKill.vcxproj

+51-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<?xml version="1.0" encoding="utf-8"?>
1+
<?xml version="1.0" encoding="utf-8"?>
22
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33
<ItemGroup Label="ProjectConfigurations">
44
<ProjectConfiguration Include="CK_DebugGame|Win32">
@@ -97,12 +97,12 @@
9797
<PropertyGroup Label="UserMacros" />
9898
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
9999
<TargetExt>.dll</TargetExt>
100-
<IncludePath>third_party/ImGUI/examples;third_party/ImGUI;third_party;utils/zydis/include;.;$(IncludePath)</IncludePath>
100+
<IncludePath>third_party/ImGUI/examples;third_party/ImGUI;third_party/fmt/include;third_party;utils/zydis/include;.;$(IncludePath)</IncludePath>
101101
<LibraryPath>utils/zydis/lib;$(LibraryPath)</LibraryPath>
102102
</PropertyGroup>
103103
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='CK_DebugGame|Win32'">
104104
<TargetExt>.dll</TargetExt>
105-
<IncludePath>third_party/ImGUI/examples;third_party/ImGUI;third_party;utils/zydis/include;.;$(IncludePath)</IncludePath>
105+
<IncludePath>third_party/fmt/include;third_party/ImGUI/examples;third_party/ImGUI;third_party;utils/zydis/include;.;$(IncludePath)</IncludePath>
106106
<LibraryPath>utils/zydis/lib;$(LibraryPath)</LibraryPath>
107107
<OutDir>$(ReHitmanGameFolder)</OutDir>
108108
</PropertyGroup>
@@ -188,11 +188,13 @@
188188
</ItemDefinitionGroup>
189189
<ItemGroup>
190190
<ClInclude Include="ck\Features.h" />
191+
<ClInclude Include="ck\HM3DoorsRegistry.h" />
191192
<ClInclude Include="ck\HM3ActionFactory.h" />
192193
<ClInclude Include="ck\HM3AnimationRegistry.h" />
193194
<ClInclude Include="ck\HM3CrashHandler.h" />
194195
<ClInclude Include="ck\HM3DebugConsole.h" />
195196
<ClInclude Include="ck\HM3Direct3D.h" />
197+
<ClInclude Include="ck\HM3FreeFileSystemLocatorProxy.h" />
196198
<ClInclude Include="ck\HM3Function.h" />
197199
<ClInclude Include="ck\HM3Game.h" />
198200
<ClInclude Include="ck\HM3Hooks.h" />
@@ -204,33 +206,57 @@
204206
<ClInclude Include="ck\HM3ScopedProtection.h" />
205207
<ClInclude Include="ck\HM3Types.h" />
206208
<ClInclude Include="mp\MP.h" />
209+
<ClInclude Include="sdk\actions\ZHitmanActionPickLock.h" />
210+
<ClInclude Include="sdk\actions\ZHM3ActorPunch.h" />
207211
<ClInclude Include="sdk\actions\ZLnkAction.h" />
212+
<ClInclude Include="sdk\CDoor.h" />
213+
<ClInclude Include="sdk\CIngameMap.h" />
214+
<ClInclude Include="sdk\CInventory.h" />
215+
<ClInclude Include="sdk\CMapObject.h" />
208216
<ClInclude Include="sdk\CTelePortList.h" />
209-
<ClInclude Include="sdk\HM3DebugAPI.h" />
217+
<ClInclude Include="sdk\FsZip_t.h" />
210218
<ClInclude Include="sdk\InterfacesProvider.h" />
219+
<ClInclude Include="sdk\internal\ZLoaderSequenceScriptHeader.h" />
220+
<ClInclude Include="sdk\REFTAB32.h" />
221+
<ClInclude Include="sdk\render\ZPrimControlWintel.h" />
222+
<ClInclude Include="sdk\render\ZRenderMaterialBufferD3D.h" />
223+
<ClInclude Include="sdk\render\ZRenderWintelD3DDll.h" />
224+
<ClInclude Include="sdk\render\ZTextureManagerD3D.h" />
211225
<ClInclude Include="sdk\ResourceCollection.h" />
212226
<ClInclude Include="sdk\scripting\ZScriptC.h" />
227+
<ClInclude Include="sdk\ZActionDispatcher.h" />
213228
<ClInclude Include="sdk\ZAnimationInfo.h" />
214229
<ClInclude Include="sdk\ZBoxPrimitive.h" />
215230
<ClInclude Include="sdk\ZDirect3DDevice.h" />
216231
<ClInclude Include="sdk\ZEngineDatabase.h" />
217232
<ClInclude Include="sdk\ZEntityLocator.h" />
218233
<ClInclude Include="sdk\ZEventBuffer.h" />
219234
<ClInclude Include="sdk\ZGameFunctions.h" />
235+
<ClInclude Include="sdk\ZGEOM.h" />
220236
<ClInclude Include="sdk\ZGeomBuffer.h" />
237+
<ClInclude Include="sdk\ZGlacierRTTI.h" />
238+
<ClInclude Include="sdk\ZGUI.h" />
221239
<ClInclude Include="sdk\ZHM3Actor.h" />
222240
<ClInclude Include="sdk\ZHM3BriefingControl.h" />
223241
<ClInclude Include="sdk\ZHM3CameraClass.h" />
242+
<ClInclude Include="sdk\ZHM3ClothBundle.h" />
224243
<ClInclude Include="sdk\ZHM3GameData.h" />
225244
<ClInclude Include="sdk\MathCommon.h" />
226245
<ClInclude Include="sdk\ZGameDataFactory.h" />
227246
<ClInclude Include="sdk\ZGameGlobals.h" />
228247
<ClInclude Include="sdk\ZGUIBase.h" />
229248
<ClInclude Include="sdk\ZHM3Camera.h" />
230249
<ClInclude Include="sdk\ZHM3Hitman3.h" />
250+
<ClInclude Include="sdk\ZHM3HmAs.h" />
251+
<ClInclude Include="sdk\ZHM3Item.h" />
252+
<ClInclude Include="sdk\ZHM3ItemTemplate.h" />
253+
<ClInclude Include="sdk\ZHM3ItemTemplateAmmo.h" />
231254
<ClInclude Include="sdk\ZHM3LevelControl.h" />
232255
<ClInclude Include="sdk\ZHM3MenuElements.h" />
256+
<ClInclude Include="sdk\ZHM3WeaponItem.h" />
257+
<ClInclude Include="sdk\ZIKHAND.h" />
233258
<ClInclude Include="sdk\ZKeyboardWintel.h" />
259+
<ClInclude Include="sdk\ZLNKWHANDS.h" />
234260
<ClInclude Include="sdk\ZMouseWintel.h" />
235261
<ClInclude Include="sdk\ZOSD.h" />
236262
<ClInclude Include="sdk\ZRenderWintelD3D.h" />
@@ -239,6 +265,18 @@
239265
<ClInclude Include="sdk\ZSysInputWintel.h" />
240266
<ClInclude Include="sdk\ZSysInterfaceWintel.h" />
241267
<ClInclude Include="sdk\ZSysMem.h" />
268+
<ClInclude Include="third_party\fmt\include\fmt\chrono.h" />
269+
<ClInclude Include="third_party\fmt\include\fmt\color.h" />
270+
<ClInclude Include="third_party\fmt\include\fmt\compile.h" />
271+
<ClInclude Include="third_party\fmt\include\fmt\core.h" />
272+
<ClInclude Include="third_party\fmt\include\fmt\format-inl.h" />
273+
<ClInclude Include="third_party\fmt\include\fmt\format.h" />
274+
<ClInclude Include="third_party\fmt\include\fmt\locale.h" />
275+
<ClInclude Include="third_party\fmt\include\fmt\os.h" />
276+
<ClInclude Include="third_party\fmt\include\fmt\ostream.h" />
277+
<ClInclude Include="third_party\fmt\include\fmt\posix.h" />
278+
<ClInclude Include="third_party\fmt\include\fmt\printf.h" />
279+
<ClInclude Include="third_party\fmt\include\fmt\ranges.h" />
242280
<ClInclude Include="third_party\ImGUI\examples\imgui_impl_dx9.h" />
243281
<ClInclude Include="third_party\ImGUI\examples\imgui_impl_win32.h" />
244282
<ClInclude Include="third_party\ImGUI\imconfig.h" />
@@ -260,15 +298,24 @@
260298
<ClCompile Include="ck\HM3CrashHandler.cpp" />
261299
<ClCompile Include="ck\HM3DebugConsole.cpp" />
262300
<ClCompile Include="ck\HM3Direct3D.cpp" />
301+
<ClCompile Include="ck\HM3DoorsRegistry.cpp" />
302+
<ClCompile Include="ck\HM3FreeFileSystemLocatorProxy.cpp" />
263303
<ClCompile Include="ck\HM3Game.cpp" />
264304
<ClCompile Include="ck\HM3Hooks.cpp" />
265305
<ClCompile Include="ck\HM3InGameTools.cpp" />
266306
<ClCompile Include="ck\HM3MemoryProvider.cpp" />
267307
<ClCompile Include="ck\HM3Player.cpp" />
268308
<ClCompile Include="ck\HM3ProcessCache.cpp" />
269309
<ClCompile Include="DllEntry.cpp" />
310+
<ClCompile Include="sdk\ZHM3Actor.cpp" />
311+
<ClCompile Include="sdk\ZHM3Hitman3.cpp" />
270312
<ClCompile Include="sdk\ZEngineDatabase.cpp" />
271313
<ClCompile Include="sdk\ZHM3CameraClass.cpp" />
314+
<ClCompile Include="sdk\ZHM3Item.cpp" />
315+
<ClCompile Include="sdk\ZLNKWHANDS.cpp" />
316+
<ClCompile Include="sdk\ZSysMem.cpp" />
317+
<ClCompile Include="third_party\fmt\src\format.cc" />
318+
<ClCompile Include="third_party\fmt\src\os.cc" />
272319
<ClCompile Include="third_party\ImGUI\examples\imgui_impl_dx9.cpp" />
273320
<ClCompile Include="third_party\ImGUI\examples\imgui_impl_win32.cpp" />
274321
<ClCompile Include="third_party\ImGUI\imgui.cpp" />

HM3CoreKill/HM3CoreKill/HM3CoreKill.vcxproj.filters

+159-3
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,21 @@
2525
<Filter Include="third_party\ImGUI">
2626
<UniqueIdentifier>{511e04c8-c4e2-4298-91e9-44c1d3e1d269}</UniqueIdentifier>
2727
</Filter>
28+
<Filter Include="sdk\internal">
29+
<UniqueIdentifier>{c5004be6-3580-4a72-8222-c6798b82ab75}</UniqueIdentifier>
30+
</Filter>
31+
<Filter Include="sdk\render">
32+
<UniqueIdentifier>{5779f6a9-04a5-4806-960c-3ce52300846c}</UniqueIdentifier>
33+
</Filter>
34+
<Filter Include="third_party\fmt">
35+
<UniqueIdentifier>{e5f8d816-68eb-47e1-a746-dc35bac9ae3a}</UniqueIdentifier>
36+
</Filter>
37+
<Filter Include="third_party\fmt\include">
38+
<UniqueIdentifier>{ea790aac-5675-4b19-8961-56f463efcb54}</UniqueIdentifier>
39+
</Filter>
40+
<Filter Include="third_party\fmt\src">
41+
<UniqueIdentifier>{bf47c2cc-0bbd-4b03-a241-0332615a92bc}</UniqueIdentifier>
42+
</Filter>
2843
</ItemGroup>
2944
<ItemGroup>
3045
<ClInclude Include="ck\HM3DebugConsole.h">
@@ -57,9 +72,6 @@
5772
<ClInclude Include="ck\HM3CrashHandler.h">
5873
<Filter>ck</Filter>
5974
</ClInclude>
60-
<ClInclude Include="sdk\HM3DebugAPI.h">
61-
<Filter>sdk</Filter>
62-
</ClInclude>
6375
<ClInclude Include="ck\HM3ScopedProtection.h">
6476
<Filter>ck</Filter>
6577
</ClInclude>
@@ -222,6 +234,123 @@
222234
<ClInclude Include="ck\HM3AnimationRegistry.h">
223235
<Filter>ck</Filter>
224236
</ClInclude>
237+
<ClInclude Include="sdk\ZGUI.h">
238+
<Filter>sdk</Filter>
239+
</ClInclude>
240+
<ClInclude Include="sdk\ZGlacierRTTI.h">
241+
<Filter>sdk</Filter>
242+
</ClInclude>
243+
<ClInclude Include="sdk\CMapObject.h">
244+
<Filter>sdk</Filter>
245+
</ClInclude>
246+
<ClInclude Include="sdk\CIngameMap.h">
247+
<Filter>sdk</Filter>
248+
</ClInclude>
249+
<ClInclude Include="ck\HM3DoorsRegistry.h">
250+
<Filter>ck</Filter>
251+
</ClInclude>
252+
<ClInclude Include="sdk\actions\ZHitmanActionPickLock.h">
253+
<Filter>sdk\actions</Filter>
254+
</ClInclude>
255+
<ClInclude Include="sdk\CDoor.h">
256+
<Filter>sdk</Filter>
257+
</ClInclude>
258+
<ClInclude Include="sdk\ZIKHAND.h">
259+
<Filter>sdk</Filter>
260+
</ClInclude>
261+
<ClInclude Include="sdk\FsZip_t.h">
262+
<Filter>sdk</Filter>
263+
</ClInclude>
264+
<ClInclude Include="sdk\ZHM3HmAs.h">
265+
<Filter>sdk</Filter>
266+
</ClInclude>
267+
<ClInclude Include="sdk\ZHM3ClothBundle.h">
268+
<Filter>sdk</Filter>
269+
</ClInclude>
270+
<ClInclude Include="sdk\ZGEOM.h">
271+
<Filter>sdk</Filter>
272+
</ClInclude>
273+
<ClInclude Include="sdk\REFTAB32.h">
274+
<Filter>sdk</Filter>
275+
</ClInclude>
276+
<ClInclude Include="sdk\CInventory.h">
277+
<Filter>sdk</Filter>
278+
</ClInclude>
279+
<ClInclude Include="sdk\ZHM3ItemTemplate.h">
280+
<Filter>sdk</Filter>
281+
</ClInclude>
282+
<ClInclude Include="sdk\ZHM3ItemTemplateAmmo.h">
283+
<Filter>sdk</Filter>
284+
</ClInclude>
285+
<ClInclude Include="sdk\ZHM3Item.h">
286+
<Filter>sdk</Filter>
287+
</ClInclude>
288+
<ClInclude Include="sdk\ZLNKWHANDS.h">
289+
<Filter>sdk</Filter>
290+
</ClInclude>
291+
<ClInclude Include="sdk\ZActionDispatcher.h">
292+
<Filter>sdk</Filter>
293+
</ClInclude>
294+
<ClInclude Include="sdk\actions\ZHM3ActorPunch.h">
295+
<Filter>sdk\actions</Filter>
296+
</ClInclude>
297+
<ClInclude Include="sdk\ZHM3WeaponItem.h">
298+
<Filter>sdk</Filter>
299+
</ClInclude>
300+
<ClInclude Include="sdk\internal\ZLoaderSequenceScriptHeader.h">
301+
<Filter>sdk\internal</Filter>
302+
</ClInclude>
303+
<ClInclude Include="ck\HM3FreeFileSystemLocatorProxy.h">
304+
<Filter>ck</Filter>
305+
</ClInclude>
306+
<ClInclude Include="sdk\render\ZRenderWintelD3DDll.h">
307+
<Filter>sdk\render</Filter>
308+
</ClInclude>
309+
<ClInclude Include="sdk\render\ZTextureManagerD3D.h">
310+
<Filter>sdk\render</Filter>
311+
</ClInclude>
312+
<ClInclude Include="sdk\render\ZRenderMaterialBufferD3D.h">
313+
<Filter>sdk\render</Filter>
314+
</ClInclude>
315+
<ClInclude Include="sdk\render\ZPrimControlWintel.h">
316+
<Filter>sdk\render</Filter>
317+
</ClInclude>
318+
<ClInclude Include="third_party\fmt\include\fmt\chrono.h">
319+
<Filter>third_party\fmt\include</Filter>
320+
</ClInclude>
321+
<ClInclude Include="third_party\fmt\include\fmt\color.h">
322+
<Filter>third_party\fmt\include</Filter>
323+
</ClInclude>
324+
<ClInclude Include="third_party\fmt\include\fmt\compile.h">
325+
<Filter>third_party\fmt\include</Filter>
326+
</ClInclude>
327+
<ClInclude Include="third_party\fmt\include\fmt\core.h">
328+
<Filter>third_party\fmt\include</Filter>
329+
</ClInclude>
330+
<ClInclude Include="third_party\fmt\include\fmt\format.h">
331+
<Filter>third_party\fmt\include</Filter>
332+
</ClInclude>
333+
<ClInclude Include="third_party\fmt\include\fmt\format-inl.h">
334+
<Filter>third_party\fmt\include</Filter>
335+
</ClInclude>
336+
<ClInclude Include="third_party\fmt\include\fmt\locale.h">
337+
<Filter>third_party\fmt\include</Filter>
338+
</ClInclude>
339+
<ClInclude Include="third_party\fmt\include\fmt\os.h">
340+
<Filter>third_party\fmt\include</Filter>
341+
</ClInclude>
342+
<ClInclude Include="third_party\fmt\include\fmt\ostream.h">
343+
<Filter>third_party\fmt\include</Filter>
344+
</ClInclude>
345+
<ClInclude Include="third_party\fmt\include\fmt\posix.h">
346+
<Filter>third_party\fmt\include</Filter>
347+
</ClInclude>
348+
<ClInclude Include="third_party\fmt\include\fmt\printf.h">
349+
<Filter>third_party\fmt\include</Filter>
350+
</ClInclude>
351+
<ClInclude Include="third_party\fmt\include\fmt\ranges.h">
352+
<Filter>third_party\fmt\include</Filter>
353+
</ClInclude>
225354
</ItemGroup>
226355
<ItemGroup>
227356
<ClCompile Include="ck\HM3DebugConsole.cpp">
@@ -294,5 +423,32 @@
294423
<ClCompile Include="ck\HM3AnimationRegistry.cpp">
295424
<Filter>ck</Filter>
296425
</ClCompile>
426+
<ClCompile Include="ck\HM3DoorsRegistry.cpp">
427+
<Filter>ck</Filter>
428+
</ClCompile>
429+
<ClCompile Include="sdk\ZHM3Hitman3.cpp">
430+
<Filter>sdk</Filter>
431+
</ClCompile>
432+
<ClCompile Include="sdk\ZHM3Item.cpp">
433+
<Filter>sdk</Filter>
434+
</ClCompile>
435+
<ClCompile Include="sdk\ZHM3Actor.cpp">
436+
<Filter>sdk</Filter>
437+
</ClCompile>
438+
<ClCompile Include="sdk\ZLNKWHANDS.cpp">
439+
<Filter>sdk</Filter>
440+
</ClCompile>
441+
<ClCompile Include="sdk\ZSysMem.cpp">
442+
<Filter>sdk</Filter>
443+
</ClCompile>
444+
<ClCompile Include="ck\HM3FreeFileSystemLocatorProxy.cpp">
445+
<Filter>ck</Filter>
446+
</ClCompile>
447+
<ClCompile Include="third_party\fmt\src\os.cc">
448+
<Filter>third_party\fmt\src</Filter>
449+
</ClCompile>
450+
<ClCompile Include="third_party\fmt\src\format.cc">
451+
<Filter>third_party\fmt\src</Filter>
452+
</ClCompile>
297453
</ItemGroup>
298454
</Project>

HM3CoreKill/HM3CoreKill/ck/Features.cpp

+29
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,35 @@
99
#include <sdk/CTelePortList.h>
1010

1111
namespace ck {
12+
/*
13+
if (ImGui::Button("Test LockPick action"))
14+
{
15+
const auto& doorsRegistry = HM3DoorsRegistry::getRegistry();
16+
const auto& animationsRegistry = HM3AnimationRegistry::getRegistry();
17+
18+
auto pAction = reinterpret_cast<ioi::hm3::ZHitmanActionPickLock*>(HM3ActionFactory::createActionByType(hitman3, ioi::hm3::ZLnkActionType::HitmanActionPickLock));
19+
HM3_ASSERT(pAction != nullptr, "Action Factory must return not null pointer!");
20+
21+
auto pDoor = doorsRegistry.getDoorByName("D03A_Door_Auditorium_01");
22+
HM3_ASSERT(pDoor != nullptr, "DoorRegistry| Unable to find door!");
23+
24+
pAction->m_door = pDoor->m_doorSTD;
25+
pAction->m_animPickLockStart = animationsRegistry.getAnimationByName("anim:Hero/Hero#Pick_Lock_Start");
26+
pAction->m_animPickLockStop = animationsRegistry.getAnimationByName("anim:Hero/Hero#Pick_Lock_Stop");
27+
pAction->m_animPickLockLoop = animationsRegistry.getAnimationByName("anim:Hero/Hero#Pick_Lock_Loop");
28+
29+
HM3_ASSERT(pAction->m_door != nullptr, "Door:STDOBJ must be loaded!");
30+
HM3_ASSERT(pAction->m_animPickLockStart != nullptr, "PickLock:Start animation must be loaded!");
31+
HM3_ASSERT(pAction->m_animPickLockStop != nullptr, "PickLock:Stop animation must be loaded!");
32+
HM3_ASSERT(pAction->m_animPickLockLoop != nullptr, "PickLock:Loop animation must be loaded!");
33+
34+
HM3_DEBUG("Trying to perform action %s\n", pAction->GetActionName());
35+
36+
pAction->Function2();
37+
}
38+
*/
39+
40+
1241
/*
1342
void teleportPlayer()
1443
{

HM3CoreKill/HM3CoreKill/ck/HM3ActionFactory.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#include <sdk/ZGameFunctions.h>
44
#include <utils/X86Snippets.h>
55

6-
ioi::hm3::ZLnkAction* HM3ActionFactory::createActionByType(ioi::hm3::ZHitman3* hitman, ioi::hm3::ZLnkActionType actionType)
6+
ioi::hm3::ZLnkAction* HM3ActionFactory::createActionByType(ioi::hm3::ZHM3Hitman3* hitman, ioi::hm3::ZLnkActionType actionType)
77
{
88
ioi::hm3::ZLnkAction* result = nullptr;
99

HM3CoreKill/HM3CoreKill/ck/HM3ActionFactory.h

+1-9
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,5 @@
88
class HM3ActionFactory
99
{
1010
public:
11-
static ioi::hm3::ZLnkAction* createActionByType(ioi::hm3::ZHitman3* hitman, ioi::hm3::ZLnkActionType actionType);
12-
13-
static ioi::hm3::ZLnkAction* createPhoningAction(ioi::hm3::ZHitman3* hitman)
14-
{
15-
//1. Create action
16-
//2. Fill fields (+16, +20)
17-
//3. Register in lvl ctl
18-
return nullptr;
19-
}
11+
static ioi::hm3::ZLnkAction* createActionByType(ioi::hm3::ZHM3Hitman3* hitman, ioi::hm3::ZLnkActionType actionType);
2012
};

0 commit comments

Comments
 (0)