Mystery Box
Mystery Box mod for DayZ, inspired by the Magic Box featured in Black Ops 1 Much love to the DeadByZed community for funding this project, and allowing me to release it to the public Server Install Instructions: The mod comes with 4 preset Box Locations - 1 at Tisy, 2 at NWAF and 1 at NEAF. It is highly recommended you read the settings below on how to modify the boxes and the contents This mod has a configuration… (more)
Mystery Box mod for DayZ, inspired by the Magic Box featured in Black Ops 1 Much love to the DeadByZed community for funding this project, and allowing me to release it to the public Server Install Instructions: The mod comes with 4 preset Box Locations - 1 at Tisy, 2 at NWAF and 1 at NEAF. It is highly recommended you read the settings below on how to modify the boxes and the contents This mod has a configuration file included with it, there are multiple settings for the mod that you can configure as a server owner, here are the descriptions This is the type of currency that the magic box will use. Some information about each type MagicCrateExchangeType: [NONE, EXPANSION, and TRADER] NONE: This will make the box free and always openable EXPANSION: Expansion Market will be used to control the currency TRADER: Dr. J0nes trader will be used, and rubels will be the currency The price at which the magic box will require to be opened at, invalid if NONE is selected for the exchange type MagicCratePrice: [0 ... infinity] Can the crate change locations? There must be multiple positions defined if this is true CanCrateChangeLocations: [0 / 1] How many rolls will the box always give you before randomly deciding to change places MinimumRollBeforeFailChance: [0 ... infinity] The percentage chance it has to fail after the box has been rolled MinimumRollBeforeFailChance times BoxFailChance: [0 ... 100] The positions in the world where the box can be located, it is recommended you use the DayZ Editor to place down magic_box_proxy objects to find these positions. A few examples are given by default. PossibleBoxPositions: { "Position": [0, 0, 0], "Orientation": [0, 0, 0] } The possible items available in the crates, along with their attachments, and magazines (mags will be filled automatically by the default bullet available in config). Items DO NOT have to be weapons, all items are supported, but weapons are assumed. PossibleCrateItems: [ { "Item": "MyItemType", "Attachments": ["Attachment1", "Attachment2"], "Mag": "MagazineInGun" }] Monetization: You are hereby given monetization approval under the conditions that you follow the DayZ Server Monetization agreement and have obtained permission from Bohemia. Read more here [www.bohemia.net]. Repacking: You are not permitted to repack any part of the Mystery Box. We don't give permission to anyone to repack it. We won't approve your request to repack it. DON'T ASK Credits: InclementDab: Scripting ZeRoY: Models and Configuration Support: If you have questions you can direct them to my Discord. Source code is available on Github If you enjoy the work available in this mod, you can donate to InclementDab and zeroy99 to help them continue working on projects like these. This item is not authorized for posting on Steam, except under the Steam account https://steamcommunity.com/id/InclementD or as a contributor if direct authorization is given by the author of this item.
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.
less than 0.001% of each server frame at 100 players (0.004 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; 12 others share it. Ranked list.
Event hooks carry 100% of this mod's structural load. 0.004 ms/s in all.
5 hooks · 0.004 ms/s
| Event hooksrun when something happens: an inventory move, a hit, an action | 5 hooks | 0.004 ms/s | 100% | ItemBase.EEItemLocationChanged, ItemBase.CanPutInCargo, ItemBase.CanPutIntoHands and 2 more |
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
- ActionTakeItem.OnExecuteServer calls super.OnExecuteServer() only on some paths — on the others the chain below this mod is dropped.
Scripts.pbo::4_World\MagicBox\Classes\UserActionComponent\ActionTakeItem.c:3 - ActionTakeItemToHands.OnExecute calls super.OnExecute() only on some paths — on the others the chain below this mod is dropped.
Scripts.pbo::4_World\MagicBox\Classes\UserActionComponent\ActionTakeItemToHands.c:3
- ActionTakeItem.OnExecuteServer calls super.OnExecuteServer() 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 11 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 | ✓ | Scripts.pbo::4_World\MagicBox\Classes\UserActionComponent\ActionConstructor.c:3 |
ActionTakeItem.OnExecuteServer |
— | yes | conditional | Scripts.pbo::4_World\MagicBox\Classes\UserActionComponent\ActionTakeItem.c:3 |
ActionTakeItemToHands.OnExecute |
— | yes | conditional | Scripts.pbo::4_World\MagicBox\Classes\UserActionComponent\ActionTakeItemToHands.c:3 |
ItemBase.EEItemLocationChanged |
T2 | yes | ✓ | Scripts.pbo::4_World\MagicBox\Entities\ItemBase.c:15 |
ItemBase.CanPutIntoHands |
T2 | yes | ✓ | Scripts.pbo::4_World\MagicBox\Entities\ItemBase.c:34 |
ItemBase.CanPutInCargo |
T2 | yes | ✓ | Scripts.pbo::4_World\MagicBox\Entities\ItemBase.c:39 |
ItemBase.IsTakeable |
— | yes | ✓ | Scripts.pbo::4_World\MagicBox\Entities\ItemBase.c:44 |
ItemBase.CanDisplayCargo |
— | yes | ✓ | Scripts.pbo::4_World\MagicBox\Entities\ItemBase.c:49 |
ItemBase.IsInventoryVisible |
T2 | yes | ✓ | Scripts.pbo::4_World\MagicBox\Entities\ItemBase.c:54 |
ItemBase.OnRPC |
T2 | yes | ✓ | Scripts.pbo::4_World\MagicBox\Entities\ItemBase.c:59 |
JMModuleConstructor.RegisterModules |
— | yes | ✓ | Scripts.pbo::5_Mission\MagicBox\JMModuleConstructor.c:3 |
Dispatch surfaces and timers the grade prices
| surface | tier | rate (Hz) | rate source | ms/s |
|---|---|---|---|---|
ItemBase.EEItemLocationChanged | T2 | 130.0 | measured | 0.0032 |
ItemBase.CanPutIntoHands | T2 | 8.0 | placeholder | 0.0002 |
ItemBase.CanPutInCargo | T2 | 8.0 | placeholder | 0.0002 |
ItemBase.IsInventoryVisible | T2 | 8.0 | placeholder | 0.0002 |
ItemBase.OnRPC | T2 | 8.0 | placeholder | 0.0002 |
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.
Models.pbo
MagicCrate_ModelsrequiredVersion 0.1 — requiresDZ_Data
Scripts.pbo
MagicBox_ScriptsrequiredVersion 0.1 — requiresDZ_Scripts,JM_CF_Scripts,DF_Scripts
census 1.1 · findings 1.1 · hash 3f3b592e14185afe