PVEZ
It is allowed to be used, copied, packed, modded, you're absolutely free to do whatever you want with this mod and it's source code. The mod is designed for PvE/PvPvE servers. PVEZ provides several customizable features to help server admins to regulate and manage PvE rules on their server: - restore health lost when attacked by another player in PvE area; - reflect different types of damage to the attacker; - setup… (more)
It is allowed to be used, copied, packed, modded, you're absolutely free to do whatever you want with this mod and it's source code. The mod is designed for PvE/PvPvE servers. PVEZ provides several customizable features to help server admins to regulate and manage PvE rules on their server: - restore health lost when attacked by another player in PvE area; - reflect different types of damage to the attacker; - setup zones as PvP or PvE areas; - notifications sent to a player on entering/leaving a zone; - 4 modes: PvE with PvP zones, PvP with PvE zones, PvE (the whole map is PvE area), PvP (same as vanilla, useful if you just want to use zones notifications). - disable damage to clothing and cargo if the damage is caused by other players in PvE area; - option to allow PVP damage from PVE to PVP zone and vise versa; - the Lawbreakers system, which helps to deal with those who break PvE rules; - option to show lawbreakers on the map; - bounties for killing lawbreakers; - quite a lot of other customizable options. What is the Lawbreakers system? When someone breaks the rules by killing another player in PvE area, he gets the Lawbreaker status. A lawbreaker won't be healed upon getting damage even in PVE areas, and those who attack the lawbreaker won't get damage back (despite the settings). So, when a player sees the guy who have killed his friend, the player could get revenge for his friend and it will be considered an act of justice, no consequences for the player. Within the "PVEZ_Config" folder (see step 4 of the server installation instructions) you'll find the file "PVEZ_Lawbreakers.json", it will store the data of all players who break the rules. Every lawbreaker data includes the lawbreaker UID (44 digits identificator), last three names he have recently used on the server, the amount of murders he performed against the law and date+time of his latest murder. When a lawbreaker dies, he will not be a lawbreaker upon the respawn. But his murder count won't reset. As an option, when someone becomes a lawbreaker the chat message could be sent to all players providing the information about who has broke the law. It also will be included in server logs (providing the info about lawbreaker name, his victim, the weapon and date+time of the murder. Also, lawbreakers positions could be shown to other players on the map. If you enable it, consider to set the setting to allow lawbreakers to attack other players, so they could fight back when other player will hunt them down. Known issues: Shotgun in the face kills. Grenades kill. If something can kill with just one hit - it will kill. Unfortunately, Bohemia doesn't let us to get access to the actual damage registration, we can't modify/disable damage at runtime. PVEZ just restores the health to a player who has been hit by another player in PvE area, but apparently, it doesn't work in one hit - one death cases. INSTALLATION INSTRUCTIONS FOR SERVER ADMINS: Subscribe to the PVEZ mod at Steam Workshop; Copy/paste the mod folder from your "DayZ/!Wokshop/" folder into your server root folder ("DayZServer/"); Copy/paste the *.bikey file from "@PVEZ/Keys" to your "DayZServer/Keys/" folder; Set up your server *.bat to launch the server with PVEZ mod (e.g., -mod=@PVEZ;). Start the server. The mod will then create PVEZ folder within your server profile folder. In that folder you'll find the file Admins.txt. To use PVEZ UI menu in game, add your 44-sign GUID or Steam64 ID to the file and save it. Then relog to server. Set the key to open PVEZ menu in the in-game input settings. PLUGINS: Airdrop plugin - turn airdrop points into PvP zones. VanillaPlusPlusMap plugin - display lawbreakers markers and zones borderlines on VPP map. DayZ-Expansion plugin - dislpay lawbreakers markers and zones borderlines on DayZ-Expansion map, turn Expansion airdrop points into PVP zones.
Patterns that can stall a single frame regardless of the load figure — see below.
1 chain break, all on specific classes the mod replaces wholesale — matters only if another mod patches the same classes.
0.0243% of each server frame at 100 players (0.243 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; 25 others share it. Ranked list.
Repeating timers carry 58% of this mod's structural load. 0.243 ms/s in all.
1 hook · 0.025 ms/s
1 hook · 0.074 ms/s
6 hooks · 0.0042 ms/s
3 hooks · 0.000006 ms/s
1 timer · 0.14 ms/s
| Every-frame hooksrun every server frame | 1 hook | 0.025 ms/s | 10% | MissionServer.OnUpdate |
| Per-player hooksrun about 30 times a second for each player | 1 hook | 0.074 ms/s | 31% | PlayerBase.OnScheduledTick |
| Event hooksrun when something happens: an inventory move, a hit, an action | 6 hooks | 0.0042 ms/s | 1.7% | ItemBase.OnItemLocationChanged, DayZGame.OnRPC, ItemBase.EEHitBy and 3 more |
| Lifecycle hooksrun when an entity is created, loaded or deleted | 3 hooks | 0.000006 ms/s | <0.1% | MissionServer.PlayerDisconnected, PlayerBase.EEKilled, Wreck_UH1Y.EEDelete |
| Repeating timersstay in the timer queue, which is walked every frame | 1 timer | 0.14 ms/s | 58% | every 1 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
1 override 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.
EEDelete
Only this class is affected. Matters only if another mod in your stack patches the same class.
1 class
Wreck_UH1Y1 location
PVEZ.pbo::4_world\entities\building\wrecks\wreck_uh1y.c:9Where 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 · 1 · warning
- ItemBase.EEHitBy calls super.EEHitBy() only on some paths — on the others the chain below this mod is dropped.
PVEZ.pbo::4_world\entities\itembase.c:35
- ItemBase.EEHitBy calls super.EEHitBy() only on some paths — on the others the chain below this mod is dropped.
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.
PVEZ.pbo::4_world\entities\manbase\playerbase.c:211
- PlayerBase.OnScheduledTick runs once per player per tick (~30 Hz/player): cost scales with population on the hottest per-player surface.
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 28 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 |
|---|---|---|---|---|
ActionUnpin.OnStartServer |
— | yes | ✓ | PVEZ.pbo::4_world\classes\useractionscomponent\actions\singleuse\actionunpin.c:3 |
BasicMapMenu.Init |
— | yes | ✓ | PVEZ.pbo::plugins\basicmap\3_game\basicmapmenu.c:4 |
BasicMapMenu.UpdateMarkers |
— | yes | ✓ | PVEZ.pbo::plugins\basicmap\3_game\basicmapmenu.c:11 |
DayZGame.OnRPC |
T2 | yes | ✓ | PVEZ.pbo::3_game\dayzgame.c:77 |
DayZPlayerImplement.HandleView |
— | yes | ✓ | PVEZ.pbo::4_world\entities\dayzplayerimplement.c:3 |
IngameHud.Init |
— | yes | ✓ | PVEZ.pbo::5_mission\gui\ingamehud.c:5 |
IngameHud.ShowHud |
— | yes | ✓ | PVEZ.pbo::5_mission\gui\ingamehud.c:11 |
IngameHud.ShowHudUI |
— | yes | ✓ | PVEZ.pbo::5_mission\gui\ingamehud.c:17 |
IngameHud.UpdatePVEZIcon |
— | yes | ✓ | PVEZ.pbo::5_mission\gui\ingamehud.c:23 |
IngameHud.ShowPVEZNotification |
— | yes | ✓ | PVEZ.pbo::5_mission\gui\ingamehud.c:29 |
ItemBase.OnItemLocationChanged |
T2 | yes | ✓ | PVEZ.pbo::4_world\entities\itembase.c:17 |
ItemBase.EEHitBy |
T2 | yes | conditional | PVEZ.pbo::4_world\entities\itembase.c:35 |
ItemBase.DamageItemInCargo |
— | yes | ✓ | PVEZ.pbo::4_world\entities\itembase.c:61 |
MapMenu.Init |
— | yes | ✓ | PVEZ.pbo::5_mission\gui\mapmenu.c:3 |
MissionGameplay.OnUpdate |
T0 | yes | ✓ | PVEZ.pbo::5_mission\missiongameplay.c:11 |
MissionServer.OnUpdate |
T0 | yes | ✓ | PVEZ.pbo::5_mission\missionserver.c:43 |
MissionServer.PlayerDisconnected |
T3 | yes | ✓ | PVEZ.pbo::5_mission\missionserver.c:82 |
PlayerBase.OnPlayerLoaded |
— | yes | ✓ | PVEZ.pbo::4_world\entities\manbase\playerbase.c:25 |
PlayerBase.EEHitBy |
T2 | yes | ✓ | PVEZ.pbo::4_world\entities\manbase\playerbase.c:53 |
PlayerBase.OnBleedingSourceRemoved |
— | yes | ✓ | PVEZ.pbo::4_world\entities\manbase\playerbase.c:82 |
PlayerBase.EEKilled |
T3 | yes | ✓ | PVEZ.pbo::4_world\entities\manbase\playerbase.c:91 |
PlayerBase.OnRPC |
T2 | yes | ✓ | PVEZ.pbo::4_world\entities\manbase\playerbase.c:123 |
PlayerBase.OnScheduledTick |
T1 | yes | ✓ | PVEZ.pbo::4_world\entities\manbase\playerbase.c:211 |
TerritoryFlag.SetRefresherActive |
— | yes | ✓ | PVEZ.pbo::4_world\entities\itembase\basebuildingbase\totem.c:18 |
Wreck_UH1Y.EEDelete |
T3 | yes | ✗ none | PVEZ.pbo::4_world\entities\building\wrecks\wreck_uh1y.c:9 |
ZombieBase.Init |
— | yes | ✓ | PVEZ.pbo::4_world\entities\creatures\infected\zombiebase.c:13 |
ZombieBase.EEHitBy |
T2 | yes | ✓ | PVEZ.pbo::4_world\entities\creatures\infected\zombiebase.c:18 |
ZombieBase.EvaluateDeathAnimation |
— | yes | ✓ | PVEZ.pbo::4_world\entities\creatures\infected\zombiebase.c:35 |
Dispatch surfaces and timers the grade prices
| surface | tier | rate (Hz) | rate source | ms/s |
|---|---|---|---|---|
PlayerBase.OnScheduledTick | T1 | 3000.0 | measured | 0.0744 |
MissionServer.OnUpdate | T0 | 1000.0 | measured | 0.0248 |
ItemBase.OnItemLocationChanged | T2 | 130.0 | measured | 0.0032 |
DayZGame.OnRPC | T2 | 8.0 | placeholder | 0.0002 |
ZombieBase.EEHitBy | T2 | 8.0 | placeholder | 0.0002 |
ItemBase.EEHitBy | T2 | 8.0 | placeholder | 0.0002 |
PlayerBase.EEHitBy | T2 | 8.0 | placeholder | 0.0002 |
PlayerBase.OnRPC | T2 | 8.0 | placeholder | 0.0002 |
Wreck_UH1Y.EEDelete | T3 | 0.1 | placeholder | 0.0000 |
PlayerBase.EEKilled | T3 | 0.1 | placeholder | 0.0000 |
MissionServer.PlayerDisconnected | T3 | 0.1 | placeholder | 0.0000 |
Repeating timers
| period (ms) | residency ms/s | firing ms/s | where |
|---|---|---|---|
| 1000 | 0.1400 | 0.000025 | PVEZ.pbo::3_game\pvez_notificationgui.c:65 |
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.
PVEZ.pbo
PVEZrequiredVersion 0.1 — requiresDZ_Data,DZ_Gear_Navigation
census 1.1 · findings 1.1 · hash 1b9503fcdbe6b641