DayZ Horse
Description This mod adds rideable horses to the game. Horses can be found in fields like in the real world. The horse can walk, trot, gallop, jump over fences and swim. They can also walk backwards. Horses can be killed and skinned. There are lots of color variants. How It Works For riding the horse, you need a Saddle and a Bridle. Put the saddle into your hands and then attach it to the horse to set ownership.… (more)
Description This mod adds rideable horses to the game. Horses can be found in fields like in the real world. The horse can walk, trot, gallop, jump over fences and swim. They can also walk backwards. Horses can be killed and skinned. There are lots of color variants. How It Works For riding the horse, you need a Saddle and a Bridle. Put the saddle into your hands and then attach it to the horse to set ownership. Control movement by using WSAD, mouse wheel and Space for jump. You can also build a stable for your horses. Craft the stable base building kit and then build the stable. Horses have their own stamina, so their speed is limited by time. When you hit obstacles, you will be dismounted from the horse. You can call your owned horse by using an apple. You can also use an apple as bait for a horse when you do not have a saddle, but want take a horse to your base. This mod is far from complete, but basic features are already working. Lots of players have been waiting a long time for this mod, so this is my summer gift to the community. Development will continue. Territory files for various maps are included together with a manual of how to set up the mod. Known Issues - incompatible mod: Expansion Animations - not all animations are imported yet (kicking and so on) - sometimes horse dont want go to water ( https://feedback.bistudio.com/T181744 ) - the mod is very complex and of course there may be a lot of issues Story This mod was started more than two years ago. I started with a reskinned cow made by Sajid. Then, when KAMO and Nazzgy figured out survivor animations, KAMO did the first rider animations. Later, I found great model of a horse with animations, so I started making a custom animgraph and step by step added more features. It was a very long journey and it is still not at the end. This mod still holds a lot of potential and a lot of ideas and features can be added. Of course, a lot of issues and bugs should be fixed, but I just publish this mod right now as is, because something is better than nothing. I hope you enjoy it. Any feedback or constructive criticism helps me improve and continue on development of this mod. Further Info No repacks allowed. Don't ask. Repacking is cancer of DayZ community. You are allowed to look into the mod for learning purposes, or if you want to know how it works. Discord: https://discord.gg/49FvN7rRpF Any feedback welcome! -Hunterz- Credits Kamo - did all the animations of the horse rider MarioE - general animation lessons Mrtea101 - lot of hints in Blender and anims Van - provided horse sounds and explanations Rag Tyson - helped me with models, rvmats and especially with the saddle Lugge - imported and prepared stable model and scripts Nazzgy - help with rvmats and edible base Fenwichs - testing, territory files Windstride - horse retextures Dave - IK animations for items Malbers Animations - horse model with anims ta.holovan - stable model (Sketchfab) nimikko - modular stable assets (cgtrader) srikanthsamba - horse obstacles (cgtrader) novoGOD - importing and preparing assets dustypeek - saddlebags model Survivalist - help with models Tawny - another saddle model import Admiral - bugfixes & testing
Patterns that can stall a single frame regardless of the load figure — see below.
Every server-visible override preserves its chain.
0.0103% of each server frame at 100 players (0.103 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.
Per-player hooks carry 72% of this mod's structural load. 0.103 ms/s in all.
1 hook · 0.025 ms/s
1 hook · 0.074 ms/s
6 hooks · 0.0042 ms/s
2 hooks · 0.000004 ms/s
| Every-frame hooksrun every server frame | 1 hook | 0.025 ms/s | 24% | DayZPlayerCameraIronsights.OnUpdate |
| Per-player hooksrun about 30 times a second for each player | 1 hook | 0.074 ms/s | 72% | PlayerBase.CommandHandler |
| Event hooksrun when something happens: an inventory move, a hit, an action | 6 hooks | 0.0042 ms/s | 4.1% | ItemBase.EEItemLocationChanged, BandageDressing.SetActions, PlayerBase.CanDropEntity and 3 more |
| Lifecycle hooksrun when an entity is created, loaded or deleted | 2 hooks | 0.000004 ms/s | <0.1% | MissionServer.OnMissionFinish, MissionServer.PlayerDisconnected |
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 · 23 · 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_horse.pbo::Scripts\4_World\ActionManagerBase.c:4 - AttachmentCategoriesRow.DoubleClick calls super.DoubleClick() only on some paths — on the others the chain below this mod is dropped.
dayz_horse.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_horse.pbo::Scripts\4_World\DayZAnimalCommandMoveModdable.c:59 - Hologram.EvaluateCollision calls super.EvaluateCollision() only on some paths — on the others the chain below this mod is dropped.
dayz_horse.pbo::Scripts\4_World\DayZHorseStable\Hologram.c:13 - Hologram.ProjectionBasedOnParent calls super.ProjectionBasedOnParent() only on some paths — on the others the chain below this mod is dropped.
dayz_horse.pbo::Scripts\4_World\DayZHorseStable\Hologram.c:3 - PlayerBase.CanReceiveItemIntoHands returns true without consulting super.CanReceiveItemIntoHands() on some paths — vanilla's conditions and every earlier-loaded mod's vetoes are bypassed there.
dayz_horse.pbo::Scripts\4_World\PlayerBase.c:31 - PlayerContainer.DoubleClick calls super.DoubleClick() only on some paths — on the others the chain below this mod is dropped.
dayz_horse.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_horse.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_horse.pbo::Scripts\5_Mission\PlayerContainer.c:36 - StanceIndicator.Update calls super.Update() only on some paths — on the others the chain below this mod is dropped.
dayz_horse.pbo::Scripts\4_World\stanceindicator.c:4 - 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_horse.pbo::Scripts\4_World\AnimalBase.c:3 - DayZPlayerImplement.CanJump vetoes early (returns false) on some paths and defers to super.CanJump() otherwise — composes safely with vanilla's and earlier mods' conditions.
dayz_horse.pbo::Scripts\4_World\DayZPlayerImplement.c:446 - DayZPlayerImplement.HeadingModel vetoes early (returns false) on some paths and defers to super.HeadingModel() otherwise — composes safely with vanilla's and earlier mods' conditions.
dayz_horse.pbo::Scripts\4_World\DayZPlayerImplement.c:461 - EmoteManager.CanPlayEmote vetoes early (returns false) on some paths and defers to super.CanPlayEmote() otherwise — composes safely with vanilla's and earlier mods' conditions.
dayz_horse.pbo::Scripts\4_World\EmoteManager.c:4 - HandSelectAnimationOfForceSwapInHandsEvent.GuardCondition vetoes early (returns false) on some paths and defers to super.GuardCondition() otherwise — composes safely with vanilla's and earlier mods' conditions.
dayz_horse.pbo::Scripts\3_Game\HorseHandAnimationGuards.c:40 - HandSelectAnimationOfMoveFromHandsEvent.GuardCondition vetoes early (returns false) on some paths and defers to super.GuardCondition() otherwise — composes safely with vanilla's and earlier mods' conditions.
dayz_horse.pbo::Scripts\3_Game\HorseHandAnimationGuards.c:29 - HandSelectAnimationOfSwapInHandsEvent.GuardCondition vetoes early (returns false) on some paths and defers to super.GuardCondition() otherwise — composes safely with vanilla's and earlier mods' conditions.
dayz_horse.pbo::Scripts\3_Game\HorseHandAnimationGuards.c:51 - HandSelectAnimationOfTakeToHandsEvent.GuardCondition vetoes early (returns false) on some paths and defers to super.GuardCondition() otherwise — composes safely with vanilla's and earlier mods' conditions.
dayz_horse.pbo::Scripts\3_Game\HorseHandAnimationGuards.c:18 - PlayerBase.CanBeTargetedByAI vetoes early (returns false) on some paths and defers to super.CanBeTargetedByAI() otherwise — composes safely with vanilla's and earlier mods' conditions.
dayz_horse.pbo::Scripts\4_World\PlayerBase.c:485 - PlayerBase.CanClimb vetoes early (returns false) on some paths and defers to super.CanClimb() otherwise — composes safely with vanilla's and earlier mods' conditions.
dayz_horse.pbo::Scripts\4_World\PlayerBase.c:314 - 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_horse.pbo::Scripts\4_World\PlayerBase.c:246 - 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_horse.pbo::Scripts\4_World\PlayerBase.c:305 - PlayerBase.CanPickupHeavyItem vetoes early (returns false) on some paths and defers to super.CanPickupHeavyItem() otherwise — composes safely with vanilla's and earlier mods' conditions.
dayz_horse.pbo::Scripts\4_World\PlayerBase.c:323
- ActionManagerBase.ActionPossibilityCheck returns true without consulting super.ActionPossibilityCheck() on some paths — vanilla's conditions and every earlier-loaded mod's vetoes are bypassed there.
Per-player-per-frame hooks · 1 · warning
- PlayerBase.CommandHandler runs once per player per tick (~30 Hz/player): cost scales with population on the hottest per-player surface.
dayz_horse.pbo::Scripts\4_World\PlayerBase.c:49
- PlayerBase.CommandHandler 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 54 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_horse.pbo::Scripts\4_World\Actions\ActionConstructor.c:3 |
ActionManagerBase.ActionPossibilityCheck |
— | yes | conditional | dayz_horse.pbo::Scripts\4_World\ActionManagerBase.c:4 |
AnimalBase.CanBeTargetedByAI |
— | yes | conditional | dayz_horse.pbo::Scripts\4_World\AnimalBase.c:3 |
AttachmentCategoriesRow.RefreshSlot |
— | yes | ✓ | dayz_horse.pbo::Scripts\5_Mission\PlayerContainer.c:94 |
AttachmentCategoriesRow.DoubleClick |
— | yes | conditional | dayz_horse.pbo::Scripts\5_Mission\PlayerContainer.c:219 |
BandageDressing.SetActions |
T2 | yes | ✓ | dayz_horse.pbo::Scripts\4_World\Bandages.c:3 |
DayZAnimalCommandAttackModdable.PreAnimUpdate |
— | yes | conditional | dayz_horse.pbo::Scripts\4_World\DayZAnimalCommandMoveModdable.c:59 |
DayZAnimalCommandLookAtModdable.PreAnimUpdate |
— | yes | ✓ | dayz_horse.pbo::Scripts\4_World\DayZAnimalCommandMoveModdable.c:41 |
DayZAnimalCommandMoveModdable.PreAnimUpdate |
— | yes | ✓ | dayz_horse.pbo::Scripts\4_World\DayZAnimalCommandMoveModdable.c:5 |
DayZPlayerCamera1stPerson.OnUpdate |
T0 | yes | ✓ | dayz_horse.pbo::Scripts\4_World\DayzPlayerCamera3rdPerson.c:31 |
DayZPlayerCamera3rdPerson.OnUpdate |
T0 | yes | ✓ | dayz_horse.pbo::Scripts\4_World\DayzPlayerCamera3rdPerson.c:92 |
DayZPlayerCameraIronsights.OnUpdate |
T0 | yes | ✓ | dayz_horse.pbo::Scripts\4_World\DayzPlayerCamera3rdPerson.c:74 |
DayZPlayerImplement.ProcessJumpOrClimb |
— | yes | ✓ | dayz_horse.pbo::Scripts\4_World\DayZPlayerImplement.c:440 |
DayZPlayerImplement.CanJump |
— | yes | conditional | dayz_horse.pbo::Scripts\4_World\DayZPlayerImplement.c:446 |
DayZPlayerImplement.HeadingModel |
— | yes | conditional | dayz_horse.pbo::Scripts\4_World\DayZPlayerImplement.c:461 |
DayZPlayerImplement.AimingModel |
— | yes | ✓ | dayz_horse.pbo::Scripts\4_World\DayZPlayerImplement.c:494 |
DayZPlayerImplement.ModCommandHandlerAfter |
— | yes | ✓ | dayz_horse.pbo::Scripts\4_World\DayZPlayerImplement.c:573 |
EmoteManager.CanPlayEmote |
— | yes | conditional | dayz_horse.pbo::Scripts\4_World\EmoteManager.c:4 |
HandSelectAnimationOfForceSwapInHandsEvent.GuardCondition |
— | yes | conditional | dayz_horse.pbo::Scripts\3_Game\HorseHandAnimationGuards.c:40 |
HandSelectAnimationOfMoveFromHandsEvent.GuardCondition |
— | yes | conditional | dayz_horse.pbo::Scripts\3_Game\HorseHandAnimationGuards.c:29 |
HandSelectAnimationOfSwapInHandsEvent.GuardCondition |
— | yes | conditional | dayz_horse.pbo::Scripts\3_Game\HorseHandAnimationGuards.c:51 |
HandSelectAnimationOfTakeToHandsEvent.GuardCondition |
— | yes | conditional | dayz_horse.pbo::Scripts\3_Game\HorseHandAnimationGuards.c:18 |
Hologram.ProjectionBasedOnParent |
— | yes | conditional | dayz_horse.pbo::Scripts\4_World\DayZHorseStable\Hologram.c:3 |
Hologram.EvaluateCollision |
— | yes | conditional | dayz_horse.pbo::Scripts\4_World\DayZHorseStable\Hologram.c:13 |
IngameHud.Init |
— | yes | ✓ | dayz_horse.pbo::Scripts\5_Mission\ingamehud.c:8 |
IngameHud.DisplayStance |
— | yes | conditional | dayz_horse.pbo::Scripts\5_Mission\ingamehud.c:20 |
IngameHud.SetHorseStamina |
— | yes | ✗ none | dayz_horse.pbo::Scripts\5_Mission\ingamehud.c:44 |
IngameHud.SetHorseSpeedNumber |
— | yes | ✗ none | dayz_horse.pbo::Scripts\5_Mission\ingamehud.c:68 |
ItemBase.EEItemLocationChanged |
T2 | yes | ✓ | dayz_horse.pbo::Scripts\4_World\ItemBase.c:4 |
MissionGameplay.OnUpdate |
T0 | yes | ✓ | dayz_horse.pbo::Scripts\5_Mission\MissionGamePlay.c:28 |
MissionServer.OnMissionFinish |
T3 | yes | ✓ | dayz_horse.pbo::Scripts\5_Mission\MissionServer.c:15 |
MissionServer.PlayerDisconnected |
T3 | yes | ✓ | dayz_horse.pbo::Scripts\5_Mission\MissionServer.c:21 |
ModItemRegisterCallbacks.RegisterHeavy |
— | yes | ✓ | dayz_horse.pbo::Scripts\4_World\ModItemRegisterCallbacks.c:9 |
ModItemRegisterCallbacks.RegisterCustom |
— | yes | ✓ | dayz_horse.pbo::Scripts\4_World\ModItemRegisterCallbacks.c:16 |
ModItemRegisterCallbacks.RegisterTwoHanded |
— | yes | ✓ | dayz_horse.pbo::Scripts\4_World\ModItemRegisterCallbacks.c:31 |
PlayerBase.CanReceiveItemIntoHands |
T2 | yes | conditional | dayz_horse.pbo::Scripts\4_World\PlayerBase.c:31 |
PlayerBase.CommandHandler |
T1 | yes | ✓ | dayz_horse.pbo::Scripts\4_World\PlayerBase.c:49 |
PlayerBase.OnCommandDeathStart |
— | yes | ✓ | dayz_horse.pbo::Scripts\4_World\PlayerBase.c:150 |
PlayerBase.OnUnconsciousStop |
— | yes | ✓ | dayz_horse.pbo::Scripts\4_World\PlayerBase.c:176 |
PlayerBase.CanDropEntity |
T2 | yes | conditional | dayz_horse.pbo::Scripts\4_World\PlayerBase.c:246 |
PlayerBase.CanJump |
— | yes | conditional | dayz_horse.pbo::Scripts\4_World\PlayerBase.c:305 |
PlayerBase.CanClimb |
— | yes | conditional | dayz_horse.pbo::Scripts\4_World\PlayerBase.c:314 |
PlayerBase.CanPickupHeavyItem |
— | yes | conditional | dayz_horse.pbo::Scripts\4_World\PlayerBase.c:323 |
PlayerBase.CanBeTargetedByAI |
— | yes | conditional | dayz_horse.pbo::Scripts\4_World\PlayerBase.c:485 |
PlayerBase.OnConnect |
— | yes | ✓ | dayz_horse.pbo::Scripts\4_World\PlayerBase.c:498 |
PlayerBase.SetActions |
T2 | yes | ✓ | dayz_horse.pbo::Scripts\4_World\PlayerBase.c:560 |
PlayerContainer.ItemAttached |
— | yes | conditional | dayz_horse.pbo::Scripts\5_Mission\PlayerContainer.c:6 |
PlayerContainer.MouseClick |
— | yes | conditional | dayz_horse.pbo::Scripts\5_Mission\PlayerContainer.c:36 |
PlayerContainer.DoubleClick |
— | yes | conditional | dayz_horse.pbo::Scripts\5_Mission\PlayerContainer.c:55 |
PluginManager.Init |
— | yes | ✓ | dayz_horse.pbo::Scripts\4_World\PluginManager.c:3 |
PluginRecipesManagerBase.RegisterRecipies |
— | yes | ✓ | dayz_horse.pbo::Scripts\4_World\classes\PluginRecipeManagerBase.c:3 |
Rag.SetActions |
T2 | yes | ✓ | dayz_horse.pbo::Scripts\4_World\Bandages.c:12 |
StanceIndicator.Update |
— | yes | conditional | dayz_horse.pbo::Scripts\4_World\stanceindicator.c:4 |
ZombieBase.CanBeTargetedByAI |
— | yes | ✓ | dayz_horse.pbo::Scripts\4_World\ZombieBase.c:3 |
Dispatch surfaces and timers the grade prices
| surface | tier | rate (Hz) | rate source | ms/s |
|---|---|---|---|---|
PlayerBase.CommandHandler | T1 | 3000.0 | measured | 0.0744 |
DayZPlayerCameraIronsights.OnUpdate | T0 | 1000.0 | measured | 0.0248 |
ItemBase.EEItemLocationChanged | T2 | 130.0 | measured | 0.0032 |
BandageDressing.SetActions | T2 | 8.0 | placeholder | 0.0002 |
Rag.SetActions | T2 | 8.0 | placeholder | 0.0002 |
PlayerBase.CanReceiveItemIntoHands | T2 | 8.0 | placeholder | 0.0002 |
PlayerBase.CanDropEntity | T2 | 8.0 | placeholder | 0.0002 |
PlayerBase.SetActions | T2 | 8.0 | placeholder | 0.0002 |
MissionServer.OnMissionFinish | T3 | 0.1 | placeholder | 0.0000 |
MissionServer.PlayerDisconnected | T3 | 0.1 | placeholder | 0.0000 |
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.
dayz_horse.pbo
HorseDZ_AIrequiredVersion 0.1 — requiresDZ_Data,DZ_data_aiconfigs,DZ_AIDayz_HorserequiredVersion 0.1 — requiresDZ_Data,DZ_Scripts,DZ_Sounds_Effects,DZ_Animals,DZ_Characters,DZ_Gear_Camping,DZ_Gear_Crafting,DZ_Gear_Tools,JM_CF_Scripts
census 1.1 · findings 1.1 · hash ee38fcf00909abdb