Zens Notes
What Is This? This is another notes mod. The main difference with this one is that it's open-source and I allow repacking so you have full control over it as a server admin, and it also allows you to select from several different font styles and colors (and you can easily add your own). It also allows you to blacklist certain words that you don't want on your server. It will log all player notes to a logs folder… (more)
What Is This? This is another notes mod. The main difference with this one is that it's open-source and I allow repacking so you have full control over it as a server admin, and it also allows you to select from several different font styles and colors (and you can easily add your own). It also allows you to blacklist certain words that you don't want on your server. It will log all player notes to a logs folder including player names, SteamIDs and note locations to make it easy to moderate. It doesn't use the vanilla note system, it uses a custom-made GUI system which allows for a lot more customization and removes some bugs with the other notes mods (such as your character freezing after reading a note). The disadvantage is that it may contain bugs I haven't experienced on my servers, so please report any issues you encounter - or feel free to fix them yourself and repack. Here is a video showing how the notes work: https://youtu.be/UiiRnS5Zehs And here's a video guide on how to add/change fonts: https://youtu.be/KSwArPgOcwA Installation Instructions: Note: ZenModCore is a dependency - https://steamcommunity.com/sharedfiles/filedetails/?id=3702420204 Install this mod like any other mod - copy it into your server folder and add it to your mods list. It must be run on both server and client. Make sure to copy the .bikey into your server keys. Also don't forget to copy over the types.xml into your server types. You can either import my types.xml separately (here's a guide: https://www.youtube.com/watch?v=PAAEhdiQ_vE) - OR make sure to only copy & paste lines 3-36 into your vanilla types.xml file. ZenNote is the written note object - you'll want to set that to be persistent for at least a day, by default it's set to 2 weeks. The pens are all optional and you should adjust their spawn numbers according to your preference (remove any colors you don't want, and set the nominal/min/max values to whatever is appropriate for your map & server setup). Repack & Source Code: Unfortunately due to lack of time I can't maintain all of my mods all of the time. I do my best, but these mods are offered as-is. If there's a problem, you have the source code and my permission to fix it yourself and upload a fixed version to the workshop without any credit necessary. It's all free. You can repack this mod if you like, and do anything else you want with it for that matter. The source code is on my GitHub at www.zenarchist.com Learn Modding Want to learn how to make your own mods? Check out my guides on YouTube: https://www.youtube.com/@Zenarchist Buy Me A Coffee / Contact Me: All my mods are free and open source, but it takes an enormous amount of time to put some of these mods together. If I've helped you out, please consider helping me buy my next coffee! I don't expect it, but I very much appreciate it. To contact me you can send me a message there too - I get an insane amount of messages so it's the best way for me to filter out the noise and focus on people who are willing to support my work with a coffee first: https://buymeacoffee.com/zenarchist Enjoy!
Patterns that can stall a single frame regardless of the load figure — see below.
Every server-visible override preserves its chain.
0.0141% of each server frame at 100 players (0.141 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; 40 others share it. Ranked list.
Repeating timers carry 99% of this mod's structural load. 0.141 ms/s in all.
4 hooks · 0.00079 ms/s
1 hook · 0.000002 ms/s
1 timer · 0.14 ms/s
| Event hooksrun when something happens: an inventory move, a hit, an action | 4 hooks | 0.00079 ms/s | 0.6% | ActionDeployObject.ActionCondition, Paper.OnRPC, Paper.SetActions and 1 more |
| Lifecycle hooksrun when an entity is created, loaded or deleted | 1 hook | 0.000002 ms/s | <0.1% | MissionServer.OnMissionFinish |
| Repeating timersstay in the timer queue, which is walked every frame | 1 timer | 0.14 ms/s | 99% | every 200 ms |
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 · 2 · warning
- ActionDeployObject.SetupAnimation calls super.SetupAnimation() only on some paths — on the others the chain below this mod is dropped.
ZenNotes.pbo::scripts\4_World\ZenNotes\Classes\UserActionsComponent\Vanilla\ActionDeployObject.c:18 - Hologram.EvaluateCollision calls super.EvaluateCollision() only on some paths — on the others the chain below this mod is dropped.
ZenNotes.pbo::scripts\4_World\ZenNotes\Classes\Hologram.c:3
- ActionDeployObject.SetupAnimation calls super.SetupAnimation() only on some paths — on the others the chain below this mod is dropped.
Timers created inside event paths · 1 · heuristic
- Paper.OnRPC (T2) registers timers inside a per-event path (CallLater). If these are not cleaned up, each live timer costs ~140 ns/frame of queue residency and the count grows with player activity — verify the cleanup path by reading the code.
ZenNotes.pbo::scripts\4_World\ZenNotes\Entities\ItemBase\Paper.c:18
- Paper.OnRPC (T2) registers timers inside a per-event path (CallLater). If these are not cleaned up, each live timer costs ~140 ns/frame of queue residency and the count grows with player activity — verify the cleanup path by reading the code.
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 14 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 | ✓ | ZenNotes.pbo::scripts\4_World\ZenNotes\Classes\UserActionsComponent\ActionConstructor.c:3 |
ActionDeployObject.ActionCondition |
T2 | yes | ✓ | ZenNotes.pbo::scripts\4_World\ZenNotes\Classes\UserActionsComponent\Vanilla\ActionDeployObject.c:3 |
ActionDeployObject.SetupAnimation |
— | yes | conditional | ZenNotes.pbo::scripts\4_World\ZenNotes\Classes\UserActionsComponent\Vanilla\ActionDeployObject.c:18 |
Hologram.EvaluateCollision |
— | yes | conditional | ZenNotes.pbo::scripts\4_World\ZenNotes\Classes\Hologram.c:3 |
MissionBase.CreateScriptedMenu |
— | yes | ✓ | ZenNotes.pbo::scripts\5_Mission\ZenNotes\Mission\MissionBase.c:3 |
MissionGameplay.OnKeyPress |
— | yes | ✓ | ZenNotes.pbo::scripts\5_Mission\ZenNotes\Mission\MissionGameplay.c:3 |
MissionServer.OnMissionFinish |
T3 | yes | ✓ | ZenNotes.pbo::scripts\5_Mission\ZenNotes\Mission\MissionServer.c:3 |
ModItemRegisterCallbacks.RegisterOneHanded |
— | yes | ✓ | ZenNotes.pbo::scripts\4_World\ZenNotes\Entities\ManBase\DayZPlayer\ModItemRegisterCallbacks.c:3 |
Paper.SetActions |
T2 | yes | ✓ | ZenNotes.pbo::scripts\4_World\ZenNotes\Entities\ItemBase\Paper.c:3 |
Paper.OnRPC |
T2 | yes | ✓ | ZenNotes.pbo::scripts\4_World\ZenNotes\Entities\ItemBase\Paper.c:18 |
Pen_ColorBase.SetActions |
T2 | yes | ✓ | ZenNotes.pbo::scripts\4_World\ZenNotes\Entities\ItemBase\Pen.c:3 |
PlayerBase.OnUnconsciousStart |
— | yes | ✓ | ZenNotes.pbo::scripts\4_World\ZenNotes\Entities\ManBase\PlayerBase.c:3 |
ZenConfigRegister.RegisterPreload |
— | yes | ✓ | ZenNotes.pbo::scripts\3_Game\ZenNotes\Config\ZenNotes\ZenNotesClientConfig.c:11 |
ZenConfigRegister.RegisterPreload |
— | yes | ✓ | ZenNotes.pbo::scripts\3_Game\ZenNotes\Config\ZenNotes\ZenNotesConfig.c:11 |
Dispatch surfaces and timers the grade prices
| surface | tier | rate (Hz) | rate source | ms/s |
|---|---|---|---|---|
ActionDeployObject.ActionCondition | T2 | 8.0 | placeholder | 0.0002 |
Paper.SetActions | T2 | 8.0 | placeholder | 0.0002 |
Paper.OnRPC | T2 | 8.0 | placeholder | 0.0002 |
Pen_ColorBase.SetActions | T2 | 8.0 | placeholder | 0.0002 |
MissionServer.OnMissionFinish | T3 | 0.1 | placeholder | 0.0000 |
Repeating timers
| period (ms) | residency ms/s | firing ms/s | where |
|---|---|---|---|
| 200 | 0.1400 | 0.000124 | ZenNotes.pbo::scripts\4_World\ZenNotes\Entities\ItemBase\Paper.c:144 |
Includes 0.001 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.
ZenNotes.pbo
ZenNotesrequiredVersion 0.1 — requiresDZ_Data,DZ_Scripts,DZ_Gear_Consumables,ZenModCore
census 1.1 · findings 1.1 · hash aed18c0c7e842062