PvZmoD_Spawn_System
Key Features : - Dynamic spawn system (spawn zeds around players) - Static spawn system (spawn zeds in chosen places when players approach them) - Can be use in place of vanilla system or to complete it. - Fire Barrels generate a "zombie safe zone" - Possibility to change zombies type and quantities for night time - Fully customisable (you don't like something, modify it !) - Real time tweaks (for general… (more)
Key Features : - Dynamic spawn system (spawn zeds around players) - Static spawn system (spawn zeds in chosen places when players approach them) - Can be use in place of vanilla system or to complete it. - Fire Barrels generate a "zombie safe zone" - Possibility to change zombies type and quantities for night time - Fully customisable (you don't like something, modify it !) - Real time tweaks (for general behaviours) - Chernarus, Livonia, Namalsk, DeerIsle, Takistan, Banov, Chiemsee*, Pripyat* and Rostow* profiles. ---------------------------------------------------------------------------------------------------- Dynamic spawn system - Spawn more zeds as you progress inland (easy to progress on the coast but hard in Tisy). - Spawn zeds everywhere, even in countryside. - Automatic adaptation of spawn quantity if many player are close (to keep surviving possible for groups of player) - Focus system that spawn zombies only near some players so some players do not spawn zeds (or very few) and the others spawn a lot of zombie. The objective of this sub-system is creating zombies waves feeling. - Zones cleaning basic mechanics - You can desactivate the dynamic spawn system if you only want to add Static spawn (and keep the vanilla system for the common zeds). Static spawn system : - Can be use to make hordes. Comparing to other existing hordes mods, zeds are not "permanent", they don't spawn if there is no player around and despawn if players go away (saving server performances). "Static" spawn just mean the hordes always spawn at the same places. - Can spawn zeds in buildings and in the floors of them (police stations, fire stations, hospitals... have been populated for exemple). - You can spawn a loot-chest with static spawn (to create hight risk / hight reward situations). Zombies : - You can customize the items on the zeds (can be use to support Dayz Central Loot Econnomie witch is not very easy to balance). - Max number of zombies automaticaly adjusted according to the number of player on the server. Other : - No need to update the mod when you modify datas (just a server restart for some datas, players have nothing to update). - Some Data can be refresh without restart (those in json file) - Well documented files - These systems can be adapted for new maps (need work but can be done). - These system can be useful to create PvE PvZ events. - DayZ updates should not affect the mod (as it is not modifications but creations from scratch) - No conflict with any other mods. ---------------------------------------------------------------------------------------------------- Disclaimer : - 100 players max but less than 30 is better (if more, zeds can despawn to save server performances) - The mod have to be load server And client side. - The loot-chest is not persistent (only 1 hour) - My system is close to the 2012 Dayz-mod system. The zombies always spawn near the players (there is no real static zeds always here even if no player around), so this mod is not recommended on PvP servers where KoS is very common because meta gaming can lead to unfair situations. Need Feedback : If you like the mod, the best you can do is giving Feedbacks because it surely need some tweaks. Known bugs : - Zombies can spawn in the walls (but can't go through them, they stay stuck inside) - LootChests can spawn a little bit above the ground. - The loot defined with the vanilla xml files don't work properly with the zombies spawned with the pvzmod spawn system. - If you find new one, use the Bug Thread ---------------------------------------------------------------------------------------------------- Installation : Read carefully this thread: Installation instructions ---------------------------------------------------------------------------------------------------- Permissions : You CAN use, modify, repack the mod as you need. (just do not simply redistribute it with another name and don't forget credits) If you find the mod useful, a thumb up is welcome. And don't forget feedbacks. Credits : - *tmbt78 for the Chiemsee profile. - *Madzilla for the Pripyat profile. - *neXt for the Rostow profile. ---------------------------------------------------------------------------------------------------- My other mods: PvZmoD Dark Horde PvZmoD Customisable Zombies Longer Sunrise And Sunset Pumpkin On Zombies Christmas Event Enhanced Complete Vehicles Spawner ZombiesVsPredators
Patterns that can stall a single frame regardless of the load figure — see below.
2 chain breaks on base classes or persisted data.
0.057% of each server frame at 100 players (0.570 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 74% of this mod's structural load. 0.570 ms/s in all.
3 hooks · 0.074 ms/s
1 hook · 0.074 ms/s
4 hooks · 0.00079 ms/s
4 hooks · 0.000008 ms/s
3 timers · 0.42 ms/s
| Every-frame hooksrun every server frame | 3 hooks | 0.074 ms/s | 13% | MissionServer.TickScheduler, ZombieBase.EOnFrame, ZombieBase.EOnPostFrame |
| Per-player hooksrun about 30 times a second for each player | 1 hook | 0.074 ms/s | 13% | PlayerBase.OnScheduledTick |
| Event hooksrun when something happens: an inventory move, a hit, an action | 4 hooks | 0.00079 ms/s | 0.1% | Container_Base.CanPutInCargo, Container_Base.CanPutIntoHands, PlayerBase.EEHitBy and 1 more |
| Lifecycle hooksrun when an entity is created, loaded or deleted | 4 hooks | 0.000008 ms/s | <0.1% | MissionBase.OnMissionFinish, MissionServer.InvokeOnConnect, MissionServer.InvokeOnDisconnect and 1 more |
| Repeating timersstay in the timer queue, which is walked every frame | 3 timers | 0.42 ms/s | 74% | 2 × every 1 s, every 10 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.
Chain breaks, by consequence
2 overrides that skip super(), ranked by how much they can affect. On any server a break replaces vanilla's behaviour on that method and silences every earlier-loaded mod hooking it.
ZombieBase.EOnFrame T1
Vanilla's work on this method, and any earlier-loaded mod's, never runs for any ZombieBase.
PvZmoD_Spawn_System.pbo::Scripts\4_World\PvZ_SS_4_World\SS_entities\creatures\infected\PvzZombieBase.c:204ZombieBase.EOnPostFrame T1
Vanilla's work on this method, and any earlier-loaded mod's, never runs for any ZombieBase.
PvZmoD_Spawn_System.pbo::Scripts\4_World\PvZ_SS_4_World\SS_entities\creatures\infected\PvzZombieBase.c:92Where 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
Per-player-per-frame hooks · 1 · warning
- PlayerBase.OnScheduledTick runs once per player per tick (~30 Hz/player): cost scales with population on the hottest per-player surface.
PvZmoD_Spawn_System.pbo::Scripts\4_World\PvZ_SS_4_World\SS_manbase\PvzPlayerBase.c:42
- PlayerBase.OnScheduledTick runs once per player per tick (~30 Hz/player): cost scales with population on the hottest per-player surface.
super() only on some paths · 2 · info
- Container_Base.CanPutInCargo vetoes early (returns false) on some paths and defers to super.CanPutInCargo() otherwise — composes safely with vanilla's and earlier mods' conditions.
PvZmoD_Spawn_System.pbo::Scripts\4_World\PvZ_SS_4_World\SS_entities\itembase\gear\camping\LootChest.c:72 - Container_Base.CanPutIntoHands vetoes early (returns false) on some paths and defers to super.CanPutIntoHands() otherwise — composes safely with vanilla's and earlier mods' conditions.
PvZmoD_Spawn_System.pbo::Scripts\4_World\PvZ_SS_4_World\SS_entities\itembase\gear\camping\LootChest.c:79
- Container_Base.CanPutInCargo vetoes early (returns false) on some paths and defers to super.CanPutInCargo() otherwise — composes safely with vanilla's and earlier mods' conditions.
Timers created inside event paths · 1 · heuristic
- PlayerBase.EEHitBy (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.
PvZmoD_Spawn_System.pbo::Scripts\4_World\PvZ_SS_4_World\SS_manbase\PvzPlayerBase.c:394
- PlayerBase.EEHitBy (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 |
|---|---|---|---|---|
Container_Base.CanPutInCargo |
T2 | yes | conditional | PvZmoD_Spawn_System.pbo::Scripts\4_World\PvZ_SS_4_World\SS_entities\itembase\gear\camping\LootChest.c:72 |
Container_Base.CanPutIntoHands |
T2 | yes | conditional | PvZmoD_Spawn_System.pbo::Scripts\4_World\PvZ_SS_4_World\SS_entities\itembase\gear\camping\LootChest.c:79 |
MissionBase.OnKeyPress |
— | yes | ✓ | PvZmoD_Spawn_System.pbo::Scripts\5_Mission\PvZ_SS_5_Mission\PvzMissionBase.c:178 |
MissionBase.OnMissionFinish |
T3 | yes | ✓ | PvZmoD_Spawn_System.pbo::Scripts\5_Mission\PvZ_SS_5_Mission\PvzMissionBase.c:281 |
MissionGameplay.OnUpdate |
T0 | yes | ✓ | PvZmoD_Spawn_System.pbo::Scripts\5_Mission\PvZ_SS_5_Mission\PvzMissionGameplay.c:7 |
MissionServer.TickScheduler |
T0 | yes | ✓ | PvZmoD_Spawn_System.pbo::Scripts\5_Mission\PvZ_SS_5_Mission\PvzMissionServer.c:19 |
MissionServer.InvokeOnDisconnect |
T3 | yes | ✓ | PvZmoD_Spawn_System.pbo::Scripts\5_Mission\PvZ_SS_5_Mission\PvzMissionServer.c:27 |
MissionServer.InvokeOnConnect |
T3 | yes | ✓ | PvZmoD_Spawn_System.pbo::Scripts\5_Mission\PvZ_SS_5_Mission\PvzMissionServer.c:36 |
PlayerBase.OnScheduledTick |
T1 | yes | ✓ | PvZmoD_Spawn_System.pbo::Scripts\4_World\PvZ_SS_4_World\SS_manbase\PvzPlayerBase.c:42 |
PlayerBase.EEHitBy |
T2 | yes | ✓ | PvZmoD_Spawn_System.pbo::Scripts\4_World\PvZ_SS_4_World\SS_manbase\PvzPlayerBase.c:394 |
ZombieBase.EOnPostFrame |
T1 | yes | ✗ none | PvZmoD_Spawn_System.pbo::Scripts\4_World\PvZ_SS_4_World\SS_entities\creatures\infected\PvzZombieBase.c:92 |
ZombieBase.EOnFrame |
T1 | yes | ✗ none | PvZmoD_Spawn_System.pbo::Scripts\4_World\PvZ_SS_4_World\SS_entities\creatures\infected\PvzZombieBase.c:204 |
ZombieBase.EOnInit |
T3 | yes | ✓ | PvZmoD_Spawn_System.pbo::Scripts\4_World\PvZ_SS_4_World\SS_entities\creatures\infected\PvzZombieBase.c:221 |
ZombieBase.EEHitBy |
T2 | yes | ✓ | PvZmoD_Spawn_System.pbo::Scripts\4_World\PvZ_SS_4_World\SS_entities\creatures\infected\PvzZombieBase.c:429 |
Dispatch surfaces and timers the grade prices
| surface | tier | rate (Hz) | rate source | ms/s |
|---|---|---|---|---|
PlayerBase.OnScheduledTick | T1 | 3000.0 | measured | 0.0744 |
ZombieBase.EOnPostFrame | T1 | 1000.0 | placeholder | 0.0248 |
ZombieBase.EOnFrame | T1 | 1000.0 | placeholder | 0.0248 |
MissionServer.TickScheduler | T0 | 1000.0 | measured | 0.0248 |
ZombieBase.EEHitBy | T2 | 8.0 | placeholder | 0.0002 |
Container_Base.CanPutInCargo | T2 | 8.0 | placeholder | 0.0002 |
Container_Base.CanPutIntoHands | T2 | 8.0 | placeholder | 0.0002 |
PlayerBase.EEHitBy | T2 | 8.0 | placeholder | 0.0002 |
ZombieBase.EOnInit | T3 | 0.1 | placeholder | 0.0000 |
MissionBase.OnMissionFinish | T3 | 0.1 | placeholder | 0.0000 |
MissionServer.InvokeOnDisconnect | T3 | 0.1 | placeholder | 0.0000 |
MissionServer.InvokeOnConnect | T3 | 0.1 | placeholder | 0.0000 |
Repeating timers
| period (ms) | residency ms/s | firing ms/s | where |
|---|---|---|---|
| 1000 | 0.1400 | 0.000025 | PvZmoD_Spawn_System.pbo::Scripts\4_World\PvZ_SS_4_World\SS_manbase\PvzPlayerBase.c:420 |
| 1000 | 0.1400 | 0.000025 | PvZmoD_Spawn_System.pbo::Scripts\5_Mission\PvZ_SS_5_Mission\SS_Main\PvzMissionServerLogic.c:320 |
| 10000 | 0.1400 | 0.000002 | PvZmoD_Spawn_System.pbo::Scripts\4_World\PvZ_SS_4_World\SS_manbase\PvzPlayerBase.c:421 |
Includes 0.050 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.
PvZmoD_Spawn_System.pbo
LIVEN_PvZmoD_Spawn_SystemrequiredVersion 0.1 — requiresJM_CF_Scripts,DZ_Gear_Camping
census 1.1 · findings 1.1 · hash 33a832c31a5de0a5