Releases: OrfeasZ/ZHMModSDK
v4.0.0-rc.3
β οΈ PRE-RELEASE β οΈ
NOTICE: This is a pre-release version of the mod SDK, meant to test out the new features and changes before a proper
release. Unless you're a mod developer, we'd suggest waiting for the final release.
This release brings support for the latest game update (3.250.0.0), alongside a variety of new features and
improvements.
β οΈ Breaking Changes β οΈ
New Linking Requirements
When compiling your mod, you might get an unresolved external symbol linker error. To resolve it, add implot to target_link_libraries in your CMakeLists.txt.
ZString Constructor Changes
The ZString(const char*) constructor has been removed. Code using const char* variables must now use
ZString::AllocateFromCStr(myStr) or convert to std::string. String literals continue to work as before.
IRenderer Interface Changes
The DrawText2D method now requires separate horizontal and vertical alignment parameters (the last parameter was split
into two).
Glacier Hook, Function, and Type Changes
Several Glacier hooks, functions, and types have changed. Please make sure to go through any usages in your mods and update your code accordingly. Some notable changes are listed below for clarity:
ZDynamicObject::ToStringnow takesZString&instead ofZString*.ZEntitySceneContext::LoadScenereturn type is changed from void to bool.m_RepositoryIdinZItemConfigDescriptoris renamed tom_ItemID.m_aActiveActorsinZActorManageris renamed tom_activatedActors.m_nCurrentBehaviorIndexproperty inZActoris renamed tom_nActorRuntimeId.SBehaviorDatais renamed toSBehaviorStateand moved intoZBehaviorService.- Renamed
GetWorldMatrixtoGetObjectToWorldMatrixandSetWorldMatrixtoSetObjectToWorldMatrixFromEditorand replacedm_nUnknownFlagswith bitfields inZSpatialEntity. - Classes and structures in
ZEntity.handReflection.hare renamed and their fields and methods are renamed:ZClassPropertyis renamed toSNamedPropertyInfoZClassConstructorInfois renamed toZConstructorInfoZClassComponentis replaced withSBaseClassInfoandSComponentMapEntryZEnumEntryis renamed toSEnumItemSArrayFunctionsis renamed toSContainerTypeVTableZEntityPropertyis renamed toSPropertyDataZEntityInterfaceis renamed toSInterfaceDataZPinis renamed toSPinData
For additional details on changes to Glacier types see PR #238.
New Features
Editor Enhancements
- Keyboard Navigation: Added keyboard selection support in entity tree.
- Repository ID Support: Handle repository IDs in entity properties.
- Improved Filters: Added popup with class names, search bar for entity names, and clear filters button.
- Property Fixes: Fixed crash when getting properties on entities with no properties pointer.
- NavKit Integration: NavKit can now be used alongside the editor to generate nav meshes for levels.
- Dynamic & Unparented Entities: Dynamically spawned entities and entities not parented to the scene are now shown in the entity tree.
- Added copy buttons for entity name, repository ID, and runtime resource ID.
- Added more entity parent resource IDs to the entity properties windows.
- Added Unicode-aware string handling and diacritic-insensitive search.
- Added Rooms menu with search, visibility filters and entity selection.
- Added support for dynamic entities for debug entities.
- Added copy buttons to more property types.
- Add support for
ZCurve,TFixedArray,ZRuntimeResourceID,ZGuidandZGameTimeproperty types. - Added 2D curve visualization with ImPlot.
- Implemented full actor inventory management in the Actors menu:
- Display inventory items
- Add and remove items
- Select main weapon
- Filters for alive actors, civilians, guards, male actors, female actors, targets, active enforcers, potential enforcers, dynamic enforcers, crowd characters, active sentries and actors with cloth outfit are added in Actors menu.
- Added option to automatically scroll the actor list to the actor selected with the mouse in game.
- Menus (Items, Actors, Debug Channels) are now independent of editor window visibility.
Debug & Visualization Features
- NavPower Support: Added navmesh loading, viewing, and chunking support.
- Reasoning Grid Visualization: Options to draw planner areas, solid areas, colorize usage flags, connectivity, and
penalty multipliers. - Gizmo Rendering: Added support for rendering debug gizmos (useful for entities that don't have a visual presence).
- Highlight Modes: Added options to select highlight mode (lines/triangles) for selected entities.
- 3D Depth Drawing: New
OnDepthDraw3Dcallback for mods, which occludes drawn primitives based on depth.
Input & Controls
- Noclip Improvements: Added proper input action bindings instead of using
GetAsyncKeyState. - FreeCam Updates: Changed teleport binding to
LCTRL/RCTRL+F6. - Input Event Buffering: Prevent buffered events from being processed by the game after ImGui is closed.
Crash Reporting & Stability
- Optional Sentry Integration: Added opt-in crash reporting via Sentry. You will be prompted to configure this on first startup.
- Startup Validation: Added additional checks during SDK startup to prevent breaking the game on major updates.
- Mod Compatibility Checking: Prevents loading incompatible mods that haven't been updated.
New Player mod
- Extracted player-related functionality from DebugMod into a dedicated Player mod.
- Display initial outfit name, character set index, and outfit variation index.
- Fixed outfit changing logic.
- Fixed various crashes when transitioning between scenes.
- Added toggles for invisibility, invincibility, and infinite ammo.
- Fixed cameras detecting Hitman when invisible.
New Assets mod
- Extracted assets menu from Editor into a standalone mod.
- Improved item type detection logic.
New Outfits mod
- Allows loading/unloading outfits from other scenes and specific outfit bricks.
New Randomizer mod
- Provides configurable item and weapon randomization.
New World mod
- Allows modifying the game time multiplier.
New TitaniumBullets mod
- Allows for shooting through walls.
Math & Rendering
- Frustum & Distance Culling: Implemented view frustum and distance culling for 3D rendering.
- DirectXTK Renderer:
- Improve support for line, triangle, and text rendering.
- Implemented rendering for bounding quads, triangles, meshes, and 3D text.
- Added UTF-8 text rendering support for 3D text.
Online Tools
- Dynamic Resource Loading: Added option to enable dynamic resource loading (fixes Peacock strings issue)
- ZString Improvements: Fixed issues around ZString usage, better string handling and memory management
Other Changes
- Fixed game crash on editor unload.
- Fixed issue where player menu couldn't be closed.
- Fixed
ActivateRagdollfunction. - Fixed enum property casting issues.
- Fixed memory leaks in various systems.
- Fixed F11 not hiding 3D SDK elements.
- Specifying the
auto_load_sceneoption in the SDK ini allows auto-loading a scene on game startup. - Introduced editor-style freecam setting with persistent checkbox state to the FreeCam mod.
- Scene names, code name hints, and titles are now loaded from JSON files instead of being hardcoded in the DiscordRichPresence mod.
- Fixed entity tree sorting for numeric name suffixes.
Community Contributions
This release includes contributions from:
- @pavledev - Extensive editor improvements, rendering enhancements, and bug fixes
- @dbierek - NavKit integration and editor UI improvements
- @ldallmayr - Dynamic resource loading option
- @Deji69 - Editor improvements and bug fixes
- @HRSoftware - Editor improvements and bug fixes
- @elijah-wright - DebugMod / ActorManager bug fixes
- @piepieonline - New hooks
- @scrungofan - Editor mod property display improvements
- @toast003 - Steam Deck installation instruction fixes
- @Prekzursil - TitaniumBullets mod
- @Joschuka - Further navkit integration refinements
v4.0.0-rc.2
β οΈ PRE-RELEASE β οΈ
NOTICE: This is a pre-release version of the mod SDK, meant to test out the new features and changes before a proper
release. Unless you're a mod developer, we'd suggest waiting for the final release.
This release brings support for the latest game update (3.240.3.0), alongside a variety of new features and
improvements.
β οΈ Breaking Changes β οΈ
ZString Constructor Changes
The ZString(const char*) constructor has been removed. Code using const char* variables must now use
ZString::AllocateFromCStr(myStr) or convert to std::string. String literals continue to work as before.
IRenderer Interface Changes
The DrawText2D method now requires separate horizontal and vertical alignment parameters (the last parameter was split
into two).
Glacier Hook, Function, and Type Changes
Several Glacier hooks, functions, and types have changed. Please make sure to go through any usages in your mods and update your code accordingly.
New Features
Editor Enhancements
- Keyboard Navigation: Added keyboard selection support in entity tree.
- Repository ID Support: Handle repository IDs in entity properties.
- Improved Filters: Added popup with class names, search bar for entity names, and clear filters button.
- Property Fixes: Fixed crash when getting properties on entities with no properties pointer.
- NavKit Integration: NavKit can now be used alongside the editor to generate nav meshes for levels.
- Dynamic & Unparented Entities: Dynamically spawned entities and entities not parented to the scene are now shown in the entity tree.
- Added copy buttons for entity name, repository ID, and runtime resource ID.
- Added more entity parent resource IDs to the entity properties windows.
Debug & Visualization Features
- NavPower Support: Added navmesh loading, viewing, and chunking support.
- Reasoning Grid Visualization: Options to draw planner areas, solid areas, colorize usage flags, connectivity, and
penalty multipliers. - Gizmo Rendering: Added support for rendering debug gizmos (useful for entities that don't have a visual presence).
- Highlight Modes: Added options to select highlight mode (lines/triangles) for selected entities.
- 3D Depth Drawing: New
OnDepthDraw3Dcallback for mods, which occludes drawn primitives based on depth.
Input & Controls
- Noclip Improvements: Added proper input action bindings instead of using
GetAsyncKeyState. - FreeCam Updates: Changed teleport binding to
LCTRL/RCTRL+F6. - Input Event Buffering: Prevent buffered events from being processed by the game after ImGui is closed.
Crash Reporting & Stability
- Optional Sentry Integration: Added opt-in crash reporting via Sentry. You will be prompted to configure this on first startup.
- Startup Validation: Added additional checks during SDK startup to prevent breaking the game on major updates.
- Mod Compatibility Checking: Prevents loading incompatible mods that haven't been updated.
New Player Mod
- Extracted player-related functionality from DebugMod into a dedicated Player mod.
- Display initial outfit name, character set index, and outfit variation index.
- Fixed outfit changing logic.
- Fixed various crashes when transitioning between scenes.
- Added toggles for invisibility, invincibility, and infinite ammo.
- Fixed cameras detecting Hitman when invisible.
New Assets Mod
- Extracted assets menu from Editor into a standalone mod.
- Improved item type detection logic.
Math & Rendering
- Frustum & Distance Culling: Implemented view frustum and distance culling for 3D rendering.
- DirectXTK Renderer:
- Improve support for line, triangle, and text rendering.
- Implemented rendering for bounding quads, triangles, meshes, and 3D text.
Online Tools
- Dynamic Resource Loading: Added option to enable dynamic resource loading (fixes Peacock strings issue)
- ZString Improvements: Fixed issues around ZString usage, better string handling and memory management
Other Changes
- Fixed game crash on editor unload.
- Fixed issue where player menu couldn't be closed.
- Fixed
ActivateRagdollfunction. - Fixed enum property casting issues.
- Fixed memory leaks in various systems.
- Fixed F11 not hiding 3D SDK elements.
- Specifying the
auto_load_sceneoption in the SDK ini allows auto-loading a scene on game startup.
Community Contributions
This release includes contributions from:
- @pavledev - Extensive editor improvements, rendering enhancements, and bug fixes
- @dbierek - NavKit integration and editor UI improvements
- @ldallmayr - Dynamic resource loading option
- @Deji69 - Editor improvements and bug fixes
- @HRSoftware - Editor improvements and bug fixes
- @elijah-wright - DebugMod / ActorManager bug fixes
- @piepieonline - New hooks
- @scrungofan - Editor mod property display improvements
v4.0.0-rc.1
β οΈ PRE-RELEASE β οΈ
NOTICE: This is a pre-release version of the mod SDK, meant to test out the new features and changes before a proper
release. Unless you're a mod developer, we'd suggest waiting for the final release.
This release brings support for the latest game update (3.240.1.0), alongside a variety of new features and
improvements.
β οΈ Breaking Changes β οΈ
ZString Constructor Changes
The ZString(const char*) constructor has been removed. Code using const char* variables must now use
ZString::AllocateFromCStr(myStr) or convert to std::string. String literals continue to work as before.
IRenderer Interface Changes
The DrawText2D method now requires separate horizontal and vertical alignment parameters (the last parameter was split
into two).
Glacier Hook, Function, and Type Changes
Several Glacier hooks, functions, and types have changed. Please make sure to go through any usages in your mods and update your code accordingly.
New Features
Editor Enhancements
- Keyboard Navigation: Added keyboard selection support in entity tree.
- Repository ID Support: Handle repository IDs in entity properties.
- Improved Filters: Added popup with class names, search bar for entity names, and clear filters button.
- Property Fixes: Fixed crash when getting properties on entities with no properties pointer.
- NavKit Integration: NavKit can now be used alongside the editor to generate nav meshes for levels.
Debug & Visualization Features
- NavPower Support: Added navmesh loading, viewing, and chunking support.
- Reasoning Grid Visualization: Options to draw planner areas, solid areas, colorize usage flags, connectivity, and
penalty multipliers. - Gizmo Rendering: Added support for rendering debug gizmos (useful for entities that don't have a visual presence).
- Highlight Modes: Added options to select highlight mode (lines/triangles) for selected entities.
- 3D Depth Drawing: New
OnDepthDraw3Dcallback for mods, which occludes drawn primitives based on depth.
Input & Controls
- Noclip Improvements: Added proper input action bindings instead of using
GetAsyncKeyState. - FreeCam Updates: Changed teleport binding to
LCTRL/RCTRL+F6. - Input Event Buffering: Prevent buffered events from being processed by the game after ImGui is closed.
Crash Reporting & Stability
- Optional Sentry Integration: Added opt-in crash reporting via Sentry. You will be prompted to configure this on first startup.
- Startup Validation: Added additional checks during SDK startup to prevent breaking the game on major updates.
- Mod Compatibility Checking: Prevents loading incompatible mods that haven't been updated.
New Player Mod
- Extracted player-related functionality from DebugMod into a dedicated Player mod.
- Display initial outfit name, character set index, and outfit variation index.
- Fixed outfit changing logic.
- Fixed various crashes when transitioning between scenes.
New Assets Mod
- Extracted assets menu from Editor into a standalone mod.
- Improved item type detection logic.
Math & Rendering
- Frustum & Distance Culling: Implemented view frustum and distance culling for 3D rendering.
- DirectXTK Renderer:
- Improve support for line, triangle, and text rendering.
- Implemented rendering for bounding quads, triangles, meshes, and 3D text.
Online Tools
- Dynamic Resource Loading: Added option to enable dynamic resource loading (fixes Peacock strings issue)
- ZString Improvements: Fixed issues around ZString usage, better string handling and memory management
Other Changes
- Fixed game crash on editor unload.
- Fixed issue where player menu couldn't be closed.
- Fixed
ActivateRagdollfunction. - Fixed enum property casting issues.
- Fixed memory leaks in various systems.
Community Contributions
This release includes contributions from:
- @pavledev - Extensive editor improvements, rendering enhancements, and bug fixes
- @dbierek - NavKit integration
- @ldallmayr - Dynamic resource loading option
- @Deji69 - Editor improvements and bug fixes
- @HRSoftware - Editor improvements and bug fixes
- @elijah-wright - DebugMod / ActorManager bug fixes
- @piepieonline - New hooks
v3.1.1
v3.1.0
What's Changed
- Fix editor style freecam by @Notexe in #148
- [DebugMod] Actor select via NPC Menu highlights them in world (and vice versa) by @HRSoftware in #133
- [DebugMod] Clean up menus, assets box fixes, some other mod fixes by @AnthonyFuller in #154
- Fixed position box crash by @HRSoftware in #156
- Draw scaleform detour crash fix by @HRSoftware in #155
- Improve support with Steam and Game Pass versions of the game
New Contributors
- @HRSoftware made their first contribution in #133
Full Changelog: v3.0.0...v3.1.0
v3.0.0
β οΈ Breaking changes β οΈ
The function and hook ZPlayerRegistry_GetLocalPlayer are no longer available. If your mods were using this function, you must update them to use SDK()->GetLocalPlayer() instead. There is no replacement for the hook currently.
SDK changes
- Make SDK compatible with Hitman
3.210.1.0and3.210.2.0 - Introduce the OnlineTools mod (superseding the CertPinBypass mod) which allows changing the domain the game connects to as well as various other online-related settings (by @AnthonyFuller in #135)
- SDK menu is now scrollable when there are too many items in it (using the scrollbar or Shift + Scroll Wheel)
- Add a hotkey (
F11by default) that hides / shows the SDK UI - Add proper support for handling custom console commands (by @AnthonyFuller in #135)
- Add support for modifying game config vars from the console (e.g.
config online_VersionConfigDomain config.hitman.io, for a list of known commands see here) (by @AnthonyFuller in #135) - Fix
GetPluginSettingBoolnot returning the default value when the stored value is invalid (by @piepieonline in #139) - Fix implementation of
TArray
Mod specific changes
- [DebugMod] Fix incompatibilities with the Editor and FreeCam mods
- [DebugMod] Remove entity selection functionality - use the Editor mod for that
- [Editor] Added a toggle to enable / disable the editor server (by @dbierek in #114)
- [FreeCam] Add a toggle to allow moving the hitman while in FreeCam (without having to hold a button)
- [FreeCam] Allow pausing the game while in freecam (using
F8or from the menu) (by @Tosox in #129) - [FreeCam] Move all freecam options from the top menu to a dedicated window
New contributors
- @dbierek made their first contribution in #114
- @Tosox made their first contribution in #129
- @piepieonline made their first contribution in #139
- @AnthonyFuller made their first contribution in #135
Full Changelog: v2.0.0...v3.0.0
v2.0.0
What's Changed
- Make console key customizable (fixes #64)
- Add an update check and notice during startup
- [Clumsy] Fix clumsy crashing when dab sound is missing (fixes #88)
- [DebugMod] Fix asset / npc / item names not being displayed in full
- [Editor] Add support for editing transforms in the QNE format
- [Editor] Make number properties draggable
- [Editor] Add support for editing TEntityRef properties through the editor server
- Fix exception that occurs when player menu is opened again after rest⦠by @pavledev in #97
- Add hooks for loading screen detection by @Deji69 in #99
- Change how editor messages define entity source and fix msgId being required on every message by @atampy25 in #103
New Contributors
Full Changelog: v2.0.0-rc.3...v2.0.0
v2.0.0-rc.3
Changes
- Fix distribution CMake file
v2.0.0-rc.2
Changes
- [Editor] Add support for entity property manipulation
- [Editor] Introduce a websocket server for remotely controlling the editor, eg. via QNE (see here)
- Remove deprecated CodeGen mod
- Add support for drawing quads
- [DebugMod] Fix asset list (Fixes #83 #89)
- Disable EOS overlay in debug builds to allow using tools like nSight / RenderDoc
- Improve D3D hooking code (Fixes #90 #93 #77)
- Add support for mods to maintain and persist their own settings (see
Get/SetSettingmethods inIPluginInterface) - [Editor] Persist snapping preferences in settings
Contributor changes
- Clarify usage of the SDK panel by @TheBoxyBear in #67
- [Editor] Add toggle camera entity feature by @Notexe in #65
- Added feature for freecam to track selected NPCs. by @CrunchyBiscuit19 in #54
- Block input while the ImGui menu is open by @pavledev in #71
- Modify m_PrimitiveScale property while using scale mode in ImGuizmo by @pavledev in #74
- Update ZPhysics.h by @pavledev in #76
- Add options to teleport player and kill NPC using free camera by @pavledev in #79
- Add DebugCheckKeyEntityEnabler mod by @pavledev in #72
- Add code for SColorRGB and SColorRGBA properties by @pavledev in #82
- Editor style freecam and Editor mod QoL features/changes by @Notexe in #75
New Contributors
- @TheBoxyBear made their first contribution in #67
- @CrunchyBiscuit19 made their first contribution in #54
Full Changelog: v2.0.0-rc.1...v2.0.0-rc.2
v2.0.0-rc.1
!! BREAKING CHANGES !!
Warning This release contains breaking changes. You will have to update your mods accordingly.
DEFINE_ZHM_PLUGINandDECLARE_ZHM_PLUGINhave swapped places (DEFINEis nowDECLAREand vice versa).DEFINE_PLUGIN_DETOURandDECLARE_PLUGIN_DETOURhave swapped places (similarly to above).
Changes
- [Editor] Fix several crashes on level load.
- [Editor] Add display of current actor behaviors.
- [Editor] Add entity search by type.
- [Editor] Deselect entity on backspace.
- [Editor] Fix gizmo mode selection with Tab.
- [NoClip] Add a very basic noclip mod.
- Allow launching multiple game instances.