DayZ-Dog
Description You can now have a dog companion! Your dog can follow you, attack infected or wait in place for you. Every player can have one dog. You can get your own dog from dog house if you have a bone. You can also tame wild dog feeding him by bones or meat. Server admins will determine where dog houses are placed on the map or can setup dog territories in villages and towns (example configs shipped with mod).… (more)
Description You can now have a dog companion! Your dog can follow you, attack infected or wait in place for you. Every player can have one dog. You can get your own dog from dog house if you have a bone. You can also tame wild dog feeding him by bones or meat. Server admins will determine where dog houses are placed on the map or can setup dog territories in villages and towns (example configs shipped with mod). InstallationCopy @DayZ-Dog from your !Workshop folder to your server folder ( or if you are using a server panel, just add the mod )Copy the bikey file from the Keys folder to your server's keys folderAdd entries from the example types.xml to your server's types.xml (not a full file replacer)Add this mod to your "-mod=" parameter in your server's start command lineRun the server once to create the server config file located in YourServersProfilesFolder/Dayz-Dog together with mod are now shipped example configs for adding territories for wild tameable dogs (look inside first, not copy paste!) Enjoy How it works - You can get your own dog interacting with dog house with a bone (or defined item in server config) in your hands - If you not able interact with dog house, commit suicide to reset dog status - You can tame wild dog using bones or meat - Each player can have only one dog - You can select which dog you like. Currently you can choose from: German Shepherd (more variants) Siberian Husky (more variants) Czechoslovak Wolfdog ( WIP reskin of shepherd ) Golden Retriever Belgian Shepherd Doberman Bullterrier RottweilerAkita Inu Labrador Dalmatian PitbullGerman PointerSaint BernardColie BorderColie BoxerViszla - Your dog is "logged off" and "logged in" together with you ( the dog will stay in the last known location ) - You can whistle to call (teleport) dog to you (See game options > keybinds) - Dogs have 3 modes: follow, patrol and stay here. Follow ( switched automatically to patrol mode when an infected in range targets you ) Patrol ( can attack nearby infected ) Stay Here - When in follow mode, your dog can enter a vehicle with you - You can control your dog using emotes too. - Watch out for your companion, if your dog gets too injured they will die! - If you die, you will lose your dog! Videos: How dogs attack infected Hunting Deer Known Issues I know this mod is not perfect, be patient as it is a work in progress! The dog is sometimes very lazy and doesn't want follow you The dog sometimes wanders off, whistle to call him back Sometimes is not played eating/taming animation Likely more Background Information This mod prototype was created by HennySea. His prototype works only in offline mode. I got an offer to finish this mod. I added server logic and new code for selecting dogs. A lot of friends helped me purchase assets from cgtrader and turbosquid. Genius modellers and Sajid_Alfa helped import these models to into the game. Rag Tyson helps me with dog shed models and their scripts. Mrtea101 did custom animations. MarioE and MDC given me lot of very useful hints. I must say this mod is just teamwork. Thanks guys for help with this mod! Permissions You are not allowed to repack or reupload this mod! You are allowed look into mod for learning purposes or if you would like know how it works... This mod is owned by ACTIVEROLE Mod is allowed be part of these server packs: ACTIVEROLE servers The Expendables DayZ S.T.A.L.K.E.R Shadow of Survival DayzUnderground & DDU have permission to use Rottweiler, Dobermann, Shepherd and Pitbull models from this mod. This item is not authorized for posting on Steam, except under these Steam accounts: Fenwichs456 ESPACTIVEROLE Hunterz Contributors ( only if direct authorization is given by the author of this item ) Support and Feedback If you have any questions, visit my Discord https://discord.gg/49FvN7rRpF or directly as HunterzCZ#4660 Any feedback is welcome! -Hunterz- Si tiene alguna pregunta, la mejor manera de ponerse en contacto conmigo en discord 🅵🅴🅽🆆🅸🅲🅷🆂456#2928 Credits - HennySea - original author of this mod, a big thanks for your working prototype - Leo - genius modeller, would be impossible create this mod without your fantastic work - Lusk-Hlynge - we cooperated for a very long time, testing started with his sheperd model - Fenwichs456 - Tested well on his servers - Rag Tyson - helps me with dog shed models and scripts for these assets - TH - created menu layout for selecting dog spawn - Sotty - created logo and graphics for this mod - Windstride - retexture of shepherd (black) and eye fixes - MarioE - explained the basics of animations and helped me with a lot of things - Mrtea101 - he is working on custom animations - Misho - help with rottweiler dog and dog models in general - Sajid_Alfa - new dog models, he is now very experienced, big thanks - jye07 - retexture of shephers to czechoslovak wolfdog - dustypeek - he creating awesome assets for mods - MDC - big help with advanced scripts - All translators who help me translate mod for more languages - Big thanks to all who helps me purchase assets from cgtrader and turbosquid - All authors of dog models and other assets
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.0338% of each server frame at 100 players (0.338 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 98% of this mod's structural load. 0.338 ms/s in all.
10 hooks · 0.008 ms/s
3 hooks · 0.000006 ms/s
2 timers · 0.33 ms/s
| Event hooksrun when something happens: an inventory move, a hit, an action | 10 hooks | 0.008 ms/s | 2.4% | ItemBase.EEItemLocationChanged, PlayerBase.EEItemAttached, BandageDressing.SetActions and 7 more |
| Lifecycle hooksrun when an entity is created, loaded or deleted | 3 hooks | 0.000006 ms/s | <0.1% | AnimalBase.EEKilled, MissionServer.OnMissionFinish, MissionServer.PlayerDisconnected |
| Repeating timersstay in the timer queue, which is walked every frame | 2 timers | 0.33 ms/s | 98% | 2 × every frame |
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 · 15 · warning
- ActionManagerBase.ActionPossibilityCheck returns true without consulting super.ActionPossibilityCheck() on some paths — vanilla's conditions and every earlier-loaded mod's vetoes are bypassed there.
dayz_dog.pbo::scripts\4_world\overrides\ActionManagerBase.c:3 - AttachmentCategoriesRow.DoubleClick calls super.DoubleClick() only on some paths — on the others the chain below this mod is dropped.
dayz_dog.pbo::scripts\5_mission\PlayerContainer.c:219 - DayZAnimalCommandAttackModdable.PreAnimUpdate calls super.PreAnimUpdate() only on some paths — on the others the chain below this mod is dropped.
dayz_dog.pbo::scripts\4_world\DayZAnimalCommandMoveModdable.c:35 - Hologram.EvaluateCollision calls super.EvaluateCollision() only on some paths — on the others the chain below this mod is dropped.
dayz_dog.pbo::scripts\4_world\Hologram.c:21 - Hologram.ProjectionBasedOnParent calls super.ProjectionBasedOnParent() only on some paths — on the others the chain below this mod is dropped.
dayz_dog.pbo::scripts\4_world\Hologram.c:4 - PlayerBase.CanBeTargetedByAI returns true without consulting super.CanBeTargetedByAI() on some paths — vanilla's conditions and every earlier-loaded mod's vetoes are bypassed there.
dayz_dog.pbo::scripts\4_world\overrides\PlayerBase.c:569 - PlayerContainer.DoubleClick calls super.DoubleClick() only on some paths — on the others the chain below this mod is dropped.
dayz_dog.pbo::scripts\5_mission\PlayerContainer.c:55 - PlayerContainer.ItemAttached calls super.ItemAttached() only on some paths — on the others the chain below this mod is dropped.
dayz_dog.pbo::scripts\5_mission\PlayerContainer.c:6 - PlayerContainer.MouseClick calls super.MouseClick() only on some paths — on the others the chain below this mod is dropped.
dayz_dog.pbo::scripts\5_mission\PlayerContainer.c:36 - AnimalBase.CanBeTargetedByAI vetoes early (returns false) on some paths and defers to super.CanBeTargetedByAI() otherwise — composes safely with vanilla's and earlier mods' conditions.
dayz_dog.pbo::scripts\4_world\overrides\AnimalBase.c:3 - CarScript.CanBeTargetedByAI vetoes early (returns false) on some paths and defers to super.CanBeTargetedByAI() otherwise — composes safely with vanilla's and earlier mods' conditions.
dayz_dog.pbo::scripts\4_world\overrides\CarScript.c:3 - PlayerBase.CanDropEntity vetoes early (returns false) on some paths and defers to super.CanDropEntity() otherwise — composes safely with vanilla's and earlier mods' conditions.
dayz_dog.pbo::scripts\4_world\overrides\PlayerBase.c:383 - PlayerBase.CanJump vetoes early (returns false) on some paths and defers to super.CanJump() otherwise — composes safely with vanilla's and earlier mods' conditions.
dayz_dog.pbo::scripts\4_world\overrides\PlayerBase.c:134 - PlayerBase.CanReceiveAttachment vetoes early (returns false) on some paths and defers to super.CanReceiveAttachment() otherwise — composes safely with vanilla's and earlier mods' conditions.
dayz_dog.pbo::scripts\4_world\overrides\PlayerBase.c:392 - ZombieBase.CanBeTargetedByAI vetoes early (returns false) on some paths and defers to super.CanBeTargetedByAI() otherwise — composes safely with vanilla's and earlier mods' conditions.
dayz_dog.pbo::scripts\4_world\overrides\zombiebase.c:40
- ActionManagerBase.ActionPossibilityCheck returns true without consulting super.ActionPossibilityCheck() on some paths — vanilla's conditions and every earlier-loaded mod's vetoes are bypassed there.
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 47 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 | ✓ | dayz_dog.pbo::scripts\4_world\actions\ActionConstructor.c:3 |
ActionGetInTransport.OnEndServer |
— | yes | ✓ | dayz_dog.pbo::scripts\4_world\overrides\ActionGetInTransport.c:3 |
ActionGetOutTransport.OnEndServer |
— | yes | ✓ | dayz_dog.pbo::scripts\4_world\overrides\ActionGetOutTransport.c:3 |
ActionManagerBase.ActionPossibilityCheck |
— | yes | conditional | dayz_dog.pbo::scripts\4_world\overrides\ActionManagerBase.c:3 |
AnimalBase.CanBeTargetedByAI |
— | yes | conditional | dayz_dog.pbo::scripts\4_world\overrides\AnimalBase.c:3 |
AnimalBase.EEKilled |
T3 | yes | ✓ | dayz_dog.pbo::scripts\4_world\overrides\AnimalBase.c:14 |
AttachmentCategoriesRow.RefreshSlot |
— | yes | ✓ | dayz_dog.pbo::scripts\5_mission\PlayerContainer.c:94 |
AttachmentCategoriesRow.DoubleClick |
— | yes | conditional | dayz_dog.pbo::scripts\5_mission\PlayerContainer.c:219 |
BandageDressing.SetActions |
T2 | yes | ✓ | dayz_dog.pbo::scripts\4_world\overrides\Bandages.c:3 |
CarScript.CanBeTargetedByAI |
— | yes | conditional | dayz_dog.pbo::scripts\4_world\overrides\CarScript.c:3 |
DayZAnimalCommandAttackModdable.PreAnimUpdate |
— | yes | conditional | dayz_dog.pbo::scripts\4_world\DayZAnimalCommandMoveModdable.c:35 |
DayZAnimalCommandMoveModdable.PreAnimUpdate |
— | yes | ✓ | dayz_dog.pbo::scripts\4_world\DayZAnimalCommandMoveModdable.c:5 |
DayZPlayerImplement.ModCommandHandlerAfter |
— | yes | ✓ | dayz_dog.pbo::scripts\4_world\overrides\DayZPlayerImplement.c:112 |
DayZPlayerImplementThrowing.HandleThrowing |
— | yes | ✓ | dayz_dog.pbo::scripts\4_world\overrides\dayzplayerimplementthrowing.c:4 |
EmoteManager.PlayEmote |
— | yes | ✓ | dayz_dog.pbo::scripts\4_world\emotemanager.c:3 |
EmoteManager.OnEmoteEnd |
— | yes | ✓ | dayz_dog.pbo::scripts\4_world\emotemanager.c:12 |
EmoteManager.Update |
— | yes | ✓ | dayz_dog.pbo::scripts\4_world\emotemanager.c:38 |
Hologram.ProjectionBasedOnParent |
— | yes | conditional | dayz_dog.pbo::scripts\4_world\Hologram.c:4 |
Hologram.EvaluateCollision |
— | yes | conditional | dayz_dog.pbo::scripts\4_world\Hologram.c:21 |
IntroSceneCharacter.CharacterLoad |
— | yes | ✓ | dayz_dog.pbo::scripts\4_world\overrides\IntroSceneCharacter.c:4 |
ItemBase.EEItemLocationChanged |
T2 | yes | ✓ | dayz_dog.pbo::scripts\4_world\overrides\ItemBase.c:4 |
MissionBase.CreateScriptedMenu |
— | yes | ✓ | dayz_dog.pbo::scripts\5_mission\missionBase.c:2 |
MissionGameplay.OnUpdate |
T0 | yes | ✓ | dayz_dog.pbo::scripts\5_mission\MissionGameplay.c:26 |
MissionServer.OnMissionFinish |
T3 | yes | ✓ | dayz_dog.pbo::scripts\5_mission\MissionServer.c:19 |
MissionServer.PlayerDisconnected |
T3 | yes | ✓ | dayz_dog.pbo::scripts\5_mission\MissionServer.c:25 |
ModItemRegisterCallbacks.RegisterHeavy |
— | yes | ✓ | dayz_dog.pbo::scripts\4_world\ModItemRegisterCallbacks.c:3 |
ModItemRegisterCallbacks.RegisterTwoHanded |
— | yes | ✓ | dayz_dog.pbo::scripts\4_world\ModItemRegisterCallbacks.c:17 |
PlayerBase.Init |
— | yes | ✓ | dayz_dog.pbo::scripts\4_world\overrides\PlayerBase.c:22 |
PlayerBase.EEHitBy |
T2 | yes | ✓ | dayz_dog.pbo::scripts\4_world\overrides\PlayerBase.c:32 |
PlayerBase.EOnContact |
— | yes | ✓ | dayz_dog.pbo::scripts\4_world\overrides\PlayerBase.c:107 |
PlayerBase.EEItemAttached |
T2 | yes | ✓ | dayz_dog.pbo::scripts\4_world\overrides\PlayerBase.c:126 |
PlayerBase.CanJump |
— | yes | conditional | dayz_dog.pbo::scripts\4_world\overrides\PlayerBase.c:134 |
PlayerBase.SetActions |
T2 | yes | ✓ | dayz_dog.pbo::scripts\4_world\overrides\PlayerBase.c:203 |
PlayerBase.OnVariablesSynchronized |
T2 | yes | ✓ | dayz_dog.pbo::scripts\4_world\overrides\PlayerBase.c:218 |
PlayerBase.CanDropEntity |
T2 | yes | conditional | dayz_dog.pbo::scripts\4_world\overrides\PlayerBase.c:383 |
PlayerBase.CanReceiveAttachment |
T2 | yes | conditional | dayz_dog.pbo::scripts\4_world\overrides\PlayerBase.c:392 |
PlayerBase.CanBeTargetedByAI |
— | yes | conditional | dayz_dog.pbo::scripts\4_world\overrides\PlayerBase.c:569 |
PlayerBase.OnCommandDeathStart |
— | yes | ✓ | dayz_dog.pbo::scripts\4_world\overrides\PlayerBase.c:753 |
PlayerBase.OnConnect |
— | yes | ✓ | dayz_dog.pbo::scripts\4_world\overrides\PlayerBase.c:762 |
PlayerBase.OnDisconnect |
— | yes | ✓ | dayz_dog.pbo::scripts\4_world\overrides\PlayerBase.c:821 |
PlayerContainer.ItemAttached |
— | yes | conditional | dayz_dog.pbo::scripts\5_mission\PlayerContainer.c:6 |
PlayerContainer.MouseClick |
— | yes | conditional | dayz_dog.pbo::scripts\5_mission\PlayerContainer.c:36 |
PlayerContainer.DoubleClick |
— | yes | conditional | dayz_dog.pbo::scripts\5_mission\PlayerContainer.c:55 |
PluginRecipesManager.RegisterRecipies |
— | yes | ✓ | dayz_dog.pbo::scripts\4_world\classes\recipies\recipies\pluginrecipesmanagerbase.c:3 |
Rag.SetActions |
T2 | yes | ✓ | dayz_dog.pbo::scripts\4_world\overrides\Bandages.c:12 |
ZombieBase.EEHitBy |
T2 | yes | ✓ | dayz_dog.pbo::scripts\4_world\overrides\zombiebase.c:10 |
ZombieBase.CanBeTargetedByAI |
— | yes | conditional | dayz_dog.pbo::scripts\4_world\overrides\zombiebase.c:40 |
Dispatch surfaces and timers the grade prices
| surface | tier | rate (Hz) | rate source | ms/s |
|---|---|---|---|---|
ItemBase.EEItemLocationChanged | T2 | 130.0 | measured | 0.0032 |
PlayerBase.EEItemAttached | T2 | 130.0 | measured | 0.0032 |
BandageDressing.SetActions | T2 | 8.0 | placeholder | 0.0002 |
Rag.SetActions | T2 | 8.0 | placeholder | 0.0002 |
PlayerBase.EEHitBy | T2 | 8.0 | placeholder | 0.0002 |
PlayerBase.SetActions | T2 | 8.0 | placeholder | 0.0002 |
PlayerBase.OnVariablesSynchronized | T2 | 8.0 | placeholder | 0.0002 |
PlayerBase.CanDropEntity | T2 | 8.0 | placeholder | 0.0002 |
PlayerBase.CanReceiveAttachment | T2 | 8.0 | placeholder | 0.0002 |
ZombieBase.EEHitBy | T2 | 8.0 | placeholder | 0.0002 |
AnimalBase.EEKilled | T3 | 0.1 | placeholder | 0.0000 |
MissionServer.OnMissionFinish | 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 |
|---|---|---|---|
| 0 | 0.1400 | 0.024800 | dayz_dog.pbo::scripts\4_world\dog_shed_big\dog_shed_big.c:268 |
| 0 | 0.1400 | 0.024800 | dayz_dog.pbo::scripts\4_world\dog_shed_big\dog_shed_big.c:298 |
Includes 0.002 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.
0_DayzDogDefines.pbo
DayzDogDefinesrequiredVersion 0.1 — no requiredAddons
dayz_dog.pbo
Dayz_DogrequiredVersion 0.1 — requiresDZ_Data,DZ_Scripts,DZ_Sounds_Effects,DZ_Animals,DZ_Characters,JM_CF_ScriptsDoggoDZ_AIrequiredVersion 0.1 — requiresDZ_Data,DZ_data_aiconfigs,DZ_AI
census 1.1 · findings 1.1 · hash 592ca71a5a2033fe