Skip to content

Releases: OrfeasZ/ZHMModSDK

v4.0.0-rc.3

27 Jan 16:58

Choose a tag to compare

v4.0.0-rc.3 Pre-release
Pre-release

⚠️ 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 ⚠️

⚠️ This release contains breaking changes. You will need to update your mods accordingly! ⚠️

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::ToString now takes ZString& instead of ZString*.
  • ZEntitySceneContext::LoadScene return type is changed from void to bool.
  • m_RepositoryId in ZItemConfigDescriptor is renamed to m_ItemID.
  • m_aActiveActors in ZActorManager is renamed to m_activatedActors.
  • m_nCurrentBehaviorIndex property in ZActor is renamed to m_nActorRuntimeId.
  • SBehaviorData is renamed to SBehaviorState and moved into ZBehaviorService.
  • Renamed GetWorldMatrix to GetObjectToWorldMatrix and SetWorldMatrix to SetObjectToWorldMatrixFromEditor and replaced m_nUnknownFlags with bitfields in ZSpatialEntity.
  • Classes and structures in ZEntity.h and Reflection.h are renamed and their fields and methods are renamed:
    • ZClassProperty is renamed to SNamedPropertyInfo
    • ZClassConstructorInfo is renamed to ZConstructorInfo
    • ZClassComponent is replaced with SBaseClassInfo and SComponentMapEntry
    • ZEnumEntry is renamed to SEnumItem
    • SArrayFunctions is renamed to SContainerTypeVTable
    • ZEntityProperty is renamed to SPropertyData
    • ZEntityInterface is renamed to SInterfaceData
    • ZPin is renamed to SPinData

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, ZGuid and ZGameTime property 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 OnDepthDraw3D callback 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 ActivateRagdoll function.
  • Fixed enum property casting issues.
  • Fixed memory leaks in various systems.
  • Fixed F11 not hiding 3D SDK elements.
  • Specifying the auto_load_scene option 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:

v4.0.0-rc.2

15 Nov 16:29

Choose a tag to compare

v4.0.0-rc.2 Pre-release
Pre-release

⚠️ 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 ⚠️

⚠️ This release contains breaking changes. You will need to update your mods accordingly! ⚠️

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 OnDepthDraw3D callback 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 ActivateRagdoll function.
  • Fixed enum property casting issues.
  • Fixed memory leaks in various systems.
  • Fixed F11 not hiding 3D SDK elements.
  • Specifying the auto_load_scene option in the SDK ini allows auto-loading a scene on game startup.

Community Contributions

This release includes contributions from:

v4.0.0-rc.1

13 Oct 15:26
e0a7d2c

Choose a tag to compare

v4.0.0-rc.1 Pre-release
Pre-release

⚠️ 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 ⚠️

⚠️ This release contains breaking changes. You will need to update your mods accordingly! ⚠️

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 OnDepthDraw3D callback 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 ActivateRagdoll function.
  • Fixed enum property casting issues.
  • Fixed memory leaks in various systems.

Community Contributions

This release includes contributions from:

v3.1.1

25 Jan 02:18

Choose a tag to compare

Fix update notice

v3.1.0

25 Jan 00:02

Choose a tag to compare

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

Full Changelog: v3.0.0...v3.1.0

v3.0.0

01 Jan 18:13

Choose a tag to compare

⚠️ Breaking changes ⚠️

⚠️ This release contains breaking changes. You will need to update your mods accordingly! ⚠️

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.0 and 3.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 (F11 by 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 GetPluginSettingBool not 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 F8 or from the menu) (by @Tosox in #129)
  • [FreeCam] Move all freecam options from the top menu to a dedicated window

New contributors

Full Changelog: v2.0.0...v3.0.0

v2.0.0

28 Apr 22:25

Choose a tag to compare

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

01 Feb 12:57
855cc14

Choose a tag to compare

v2.0.0-rc.3 Pre-release
Pre-release

Changes

  • Fix distribution CMake file

v2.0.0-rc.2

01 Feb 11:30

Choose a tag to compare

v2.0.0-rc.2 Pre-release
Pre-release

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/SetSetting methods in IPluginInterface)
  • [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

Full Changelog: v2.0.0-rc.1...v2.0.0-rc.2

v2.0.0-rc.1

09 Apr 21:01

Choose a tag to compare

v2.0.0-rc.1 Pre-release
Pre-release

!! BREAKING CHANGES !!

Warning This release contains breaking changes. You will have to update your mods accordingly.

  • DEFINE_ZHM_PLUGIN and DECLARE_ZHM_PLUGIN have swapped places (DEFINE is now DECLARE and vice versa).
  • DEFINE_PLUGIN_DETOUR and DECLARE_PLUGIN_DETOUR have 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.