zm workbench
🔧 ZM Workbench - Advanced Crafting System ⚠️ THIS MOD IS CURRENTLY IN BETA - Expect bugs and changes! 🤖 Disclaimer: AI has been heavily used in the development of this mod. Description ZM Workbench adds a comprehensive crafting system to DayZ with modular workbenches, advanced recipe management, and intuitive inventory tracking. Build, craft, and create with an immersive progression system! ✨ Features 🛠️ Two… (more)
🔧 ZM Workbench - Advanced Crafting System ⚠️ THIS MOD IS CURRENTLY IN BETA - Expect bugs and changes! 🤖 Disclaimer: AI has been heavily used in the development of this mod. Description ZM Workbench adds a comprehensive crafting system to DayZ with modular workbenches, advanced recipe management, and intuitive inventory tracking. Build, craft, and create with an immersive progression system! ✨ Features 🛠️ Two Workbench Types Public Workbench - All modules built-in, perfect for trader zones Modular Workbench - Requires module attachments for progression-based gameplay 🔩 Attachable Modules Unlock advanced crafting by attaching modules to your workbench: Drill Press - Metal working & drilling Grinder - Sharpening, cutting & grinding Vice - Holding items & bending metal Soldering Station - Electronics & wire work Welding - Metal joining & repairs Sewing Machine - Fabric & leather crafting 🐦🔥 ⚡ Advanced Systems Power System - Some recipes require power to craft Module Consumables - Drill bits, grinding discs, and welding wire wear out over time Material Ping System - Find nearby tracked materials with ease Recipe Tracking - Track ingredients across your inventory Craft Queue - Queue multiple crafts Recipe Variants - One recipe can produce different colors/styles 📋 Server Customization Fully configurable recipes via JSON Enable/disable individual features Set craft times, power requirements, and consumable chances Organize recipes by categories Inn game recipes refresh if you add your self as admin in WorkbenchSettings.json add custum logo in WorkbenchSettings.json 📦 Included Items Workbench Kit (for placing workbenches) Grinding Discs Drill Bits Welding Wire Soldering Tips Spray Cans (7 colors) 🛠️ Tools Other tools like handsaw, hammer or screwdriver can be used in recipes Tools must be stored inside the workbench to be used for crafting Tools take damage with each craft (configurable damage rates) Server admins can add custom tools via the config ⚠️ Beta Notice This mod is in active development. Please report any bugs or issues in the comments or on my Discord. Features may change, and recipes may be adjusted based on feedback. Known limitations: Some features may change in future updates � Server Installation Add CF and this mod to your server's mod list Configure recipes in $profile:WorkbenchMod/recipes.json Add workbenches/items to your trader or loot tables Restart your server 📝 Requirements DayZ Standalone CF (Community Framework) - Steam Workshop Link 💬 Feedback & Support Your feedback helps improve this mod! Please leave comments with: Bug reports Feature suggestions Balance feedback Thank you for testing the beta! 🙏 No repacks!
No file I/O on hot paths, no timers created per event, no per-player-per-frame hooks.
Every server-visible override preserves its chain.
0.0725% of each server frame at 100 players (0.725 ms/s). Counts hook dispatch and timers only, not what the hooks do inside. Methodology.
Structural load of the 328 scripted mods analyzed, lightest on the left. This mod's bar is lit; 27 others share it. Ranked list.
Repeating timers carry 97% of this mod's structural load. 0.725 ms/s in all.
1 hook · 0.025 ms/s
1 hook · 0.0002 ms/s
2 hooks · 0.000004 ms/s
5 timers · 0.7 ms/s
| Every-frame hooksrun every server frame | 1 hook | 0.025 ms/s | 3.4% | MissionServer.OnUpdate |
| Event hooksrun when something happens: an inventory move, a hit, an action | 1 hook | 0.0002 ms/s | <0.1% | PlayerBase.SetActions |
| Lifecycle hooksrun when an entity is created, loaded or deleted | 2 hooks | 0.000004 ms/s | <0.1% | MissionServer.OnInit, MissionServer.OnMissionFinish |
| Repeating timersstay in the timer queue, which is walked every frame | 5 timers | 0.7 ms/s | 97% | 4 × every 1 s, every 3 s |
Counts how often each hook is dispatched and how many timers stay alive, not what the code inside does. Some rates are order-of-magnitude estimates; the methodology lists which.
Where this mod runs often
Hooks on per-frame and high-rate surfaces, with what their bodies call. Body work, not the hook itself, is what costs frame time.
Other findings
super() only on some paths · 3 · warning
- Hologram.EvaluateCollision calls super.EvaluateCollision() only on some paths — on the others the chain below this mod is dropped.
WorkbenchMod.pbo::Scripts\4_World\Entities\Hologram\zm_WorkbenchHologram.c:124 - Hologram.GetProjectionName calls super.GetProjectionName() only on some paths — on the others the chain below this mod is dropped.
WorkbenchMod.pbo::Scripts\4_World\Entities\Hologram\zm_WorkbenchHologram.c:15 - Hologram.RefreshVisual calls super.RefreshVisual() only on some paths — on the others the chain below this mod is dropped.
WorkbenchMod.pbo::Scripts\4_World\Entities\Hologram\zm_WorkbenchHologram.c:113
- Hologram.EvaluateCollision calls super.EvaluateCollision() only on some paths — on the others the chain below this mod is dropped.
Which vanilla methods the mod hooks, which of them drop the chain, how often each hook fires, and which risky calls sit inside hot hooks.
How long hook bodies take, network cost, or engine-side load. Measured across live fleets, most server lag comes from the engine and world state, not mod script chains — a light footprint does not clear a mod of lag, and a heavy one does not convict it. Methodology.
Everything else
All 32 overrides
Surface is the dispatch tier the rubric can price (— = unpriced); server is whether the override exists on a dedicated server; super() shows whether the vanilla chain is preserved on a server.
| method | surface | server | super() | where |
|---|---|---|---|---|
ActionConstructor.RegisterActions |
— | yes | ✓ | WorkbenchMod.pbo::Scripts\4_World\Classes\UserActionsComponent\ActionConstructor.c:4 |
ActionTargetsCursor.GetItemDesc |
— | yes | ✓ | WorkbenchMod.pbo::Scripts\5_Mission\GUI\TrackedInventoryMod.c:638 |
ActionTargetsCursor.SetItemDesc |
— | yes | ✓ | WorkbenchMod.pbo::Scripts\5_Mission\GUI\TrackedInventoryMod.c:673 |
ActionTargetsCursor.Update |
— | yes | ✓ | WorkbenchMod.pbo::Scripts\5_Mission\GUI\TrackedInventoryMod.c:737 |
ExpansionMarketMenuItem.OnSetView |
— | yes | ✓ | WorkbenchMod.pbo::Scripts\5_Mission\GUI\ExpansionMarketMenuItem_Workbench.c:13 |
ExpansionMarketMenuItem.UpdateView |
— | yes | ✓ | WorkbenchMod.pbo::Scripts\5_Mission\GUI\ExpansionMarketMenuItem_Workbench.c:92 |
Hologram.GetProjectionName |
— | yes | conditional | WorkbenchMod.pbo::Scripts\4_World\Entities\Hologram\zm_WorkbenchHologram.c:15 |
Hologram.UpdateHologram |
— | yes | ✓ | WorkbenchMod.pbo::Scripts\4_World\Entities\Hologram\zm_WorkbenchHologram.c:84 |
Hologram.RefreshVisual |
— | yes | conditional | WorkbenchMod.pbo::Scripts\4_World\Entities\Hologram\zm_WorkbenchHologram.c:113 |
Hologram.EvaluateCollision |
— | yes | conditional | WorkbenchMod.pbo::Scripts\4_World\Entities\Hologram\zm_WorkbenchHologram.c:124 |
Hologram.EvaluateCollision |
— | yes | ✓ | WorkbenchMod.pbo::Scripts\4_World\System\Hologram.c:5 |
Hologram.GetProjectionRadius |
— | yes | ✓ | WorkbenchMod.pbo::Scripts\4_World\System\Hologram.c:22 |
Icon.Refresh |
— | yes | ✓ | WorkbenchMod.pbo::Scripts\5_Mission\GUI\TrackedInventoryMod.c:515 |
Icon.UpdateInterval |
— | yes | ✓ | WorkbenchMod.pbo::Scripts\5_Mission\GUI\TrackedInventoryMod.c:520 |
Icon.HideOwnedTooltip |
— | yes | ✓ | WorkbenchMod.pbo::Scripts\5_Mission\GUI\TrackedInventoryMod.c:527 |
InspectMenuNew.SetItem |
— | yes | ✓ | WorkbenchMod.pbo::Scripts\5_Mission\GUI\TrackedInventoryMod.c:501 |
InventoryMenu.OnHide |
— | yes | ✓ | WorkbenchMod.pbo::Scripts\5_Mission\GUI\TrackedInventoryMod.c:771 |
ItemManager.ShowTooltip |
— | yes | ✓ | WorkbenchMod.pbo::Scripts\5_Mission\GUI\TrackedInventoryMod.c:781 |
ItemManager.HideTooltip |
— | yes | ✓ | WorkbenchMod.pbo::Scripts\5_Mission\GUI\TrackedInventoryMod.c:791 |
MissionGameplay.OnMissionStart |
T3 | yes | ✓ | WorkbenchMod.pbo::Scripts\5_Mission\mission\MissionGameplay.c:9 |
MissionGameplay.OnKeyPress |
— | yes | ✓ | WorkbenchMod.pbo::Scripts\5_Mission\mission\MissionGameplay.c:296 |
MissionGameplay.OnUpdate |
T0 | yes | ✓ | WorkbenchMod.pbo::Scripts\5_Mission\mission\MissionGameplay.c:362 |
MissionGameplay.CreateScriptedMenu |
— | yes | ✓ | WorkbenchMod.pbo::Scripts\5_Mission\mission\MissionGameplay.c:522 |
MissionServer.OnInit |
T3 | yes | ✓ | WorkbenchMod.pbo::Scripts\5_Mission\mission\MissionServer.c:8 |
MissionServer.OnMissionFinish |
T3 | yes | ✓ | WorkbenchMod.pbo::Scripts\5_Mission\mission\MissionServer.c:423 |
MissionServer.OnUpdate |
T0 | yes | ✓ | WorkbenchMod.pbo::Scripts\5_Mission\mission\MissionServer.c:461 |
ModItemRegisterCallbacks.RegisterHeavy |
— | yes | ✓ | WorkbenchMod.pbo::Scripts\4_World\ModItemRegisterCallbacks.c:5 |
PlayerBase.SetActions |
T2 | yes | ✓ | WorkbenchMod.pbo::Scripts\4_World\Entities\ManBase\PlayerBase.c:7 |
PluginRecipesManager.RegisterRecipies |
— | yes | ✓ | WorkbenchMod.pbo::Scripts\4_World\Classes\Recipes\PluginRecipesManagerBase.c:5 |
SlotsIcon.Refresh |
— | yes | ✓ | WorkbenchMod.pbo::Scripts\5_Mission\GUI\TrackedInventoryMod.c:568 |
SlotsIcon.UpdateInterval |
— | yes | ✓ | WorkbenchMod.pbo::Scripts\5_Mission\GUI\TrackedInventoryMod.c:573 |
SlotsIcon.HideOwnedTooltip |
— | yes | ✓ | WorkbenchMod.pbo::Scripts\5_Mission\GUI\TrackedInventoryMod.c:578 |
Dispatch surfaces and timers the grade prices
| surface | tier | rate (Hz) | rate source | ms/s |
|---|---|---|---|---|
MissionServer.OnUpdate | T0 | 1000.0 | measured | 0.0248 |
PlayerBase.SetActions | T2 | 8.0 | placeholder | 0.0002 |
MissionServer.OnInit | T3 | 0.1 | placeholder | 0.0000 |
MissionServer.OnMissionFinish | T3 | 0.1 | placeholder | 0.0000 |
Repeating timers
| period (ms) | residency ms/s | firing ms/s | where |
|---|---|---|---|
| 1000 | 0.1400 | 0.000025 | WorkbenchMod.pbo::Scripts\4_World\Entities\zm_WorkbenchBase.c:551 |
| 1000 | 0.1400 | 0.000025 | WorkbenchMod.pbo::Scripts\4_World\Entities\zm_WorkbenchBase.c:571 |
| 1000 | 0.1400 | 0.000025 | WorkbenchMod.pbo::Scripts\4_World\Entities\zm_WorkbenchBase.c:4428 |
| 1000 | 0.1400 | 0.000025 | WorkbenchMod.pbo::Scripts\4_World\Entities\zm_WorkbenchBase.c:4498 |
| 3000 | 0.1400 | 0.000008 | WorkbenchMod.pbo::Scripts\5_Mission\GUI\WorkbenchMenu.c:2013 |
Includes 0.000 ms/s from placeholder-rated surfaces.
Load-order constraints (CfgPatches)
What each PBO declares: its addon identity and the addons it requires to be loaded first (requiredAddons). A partial load-order signal from the mod's own metadata.
WorkbenchMod.pbo
WorkbenchModrequiredVersion 0.1 — requiresDZ_Data,DZ_Gear_Camping,DZ_Gear_Tools,JM_CF_Scriptszm_DrillPressrequiredVersion 0.1 — requiresDZ_Data,DZ_scriptszm_GrinderrequiredVersion 0.1 — requiresDZ_Data,DZ_scriptszm_KitrequiredVersion 0.1 — requiresDZ_Data,DZ_scriptszm_SewingrequiredVersion 0.1 — requiresDZ_Data,DZ_scriptszm_SolderingrequiredVersion 0.1 — requiresDZ_Data,DZ_scriptszm_SprayCansrequiredVersion 0.1 — requiresDZ_Data,DZ_scriptsWB_VehicleMarkerrequiredVersion 0.1 — requiresDZ_Data,DZ_scriptszm_VicerequiredVersion 0.1 — requiresDZ_Data,DZ_scriptszm_WeldingrequiredVersion 0.1 — requiresDZ_Data,DZ_scriptszm_WorkbenchrequiredVersion 0.1 — requiresDZ_Data,DZ_scripts
zmw_extrawb.pbo
CustomWorkbench_ModrequiredVersion 0.1 — requiresDZ_Data,DZ_Scripts,zm_Workbench
census 1.1 · findings 1.1 · hash 17c6bbe837895835