How to add custom horses into RedM
Step 1 - MetaPed Base Definition
Define metapeds.ymt in your fxmanifest.lua and create empty file:
--fxmanifest.lua
fx_version "cerulean"
game "rdr3"
rdr3_warning "I acknowledge that this is a prerelease build of RedM, and I am aware my resources *will* become incompatible once RedM ships."
file 'metapeds.ymt'
data_file 'PED_METADATA_FILE' 'metapeds.ymt'
Then add into your file any horse info from original in-game metapeds.ymt (for example A_C_Horse_AmericanPaint_Overo). Then change the <Name>
tag value into custom one.
In my example I’ve copied A_C_Horse_AmericanPaint_Overo and changed it to A_C_Horse_AmericanPaint_Overo_02.
Your final metapeds.ymt
<CPedModelInfo__InitDataList>
<InitDatas itemType="CPedModelInfo__InitData">
<Item>
<Name>A_C_Horse_AmericanPaint_Overo_02</Name>
<LocoArchetypes>
<Item>qbrbnwza_0x84adaa9b</Item>
<Item>gqwazacc_0xf120e07b</Item>
</LocoArchetypes>
<FragName>META_Base_Horse_01</FragName>
<ClipDictionaryName>kaijyfca_0x7c3d01e8</ClipDictionaryName>
<BlendShapeFileName>null</BlendShapeFileName>
<ExpressionSetName>ngjxywoa_0xa793a6fe</ExpressionSetName>
<Pedtype>animal</Pedtype>
<MovementClipSet>batxynoa_0x0a436673</MovementClipSet>
<fdhdosga_0xd282b498>default</fdhdosga_0xd282b498>
<FullBodyDamageClipSet>cduofona_0xfdc5862e</FullBodyDamageClipSet>
<AdditiveDamageClipSet>jezrqhaa_0xf4e562e1</AdditiveDamageClipSet>
<ajulutca_0xf656e7cc>lemajjfa_0xeea838e6</ajulutca_0xf656e7cc>
<mosasnka_0x33ee71a3>amb_creature_mammal@world_horse_injured_on_ground@death</mosasnka_0x33ee71a3>
<puyzvqga_0x7b02f627>clip_set_id_invalid</puyzvqga_0x7b02f627>
<GestureSettingsName>horse</GestureSettingsName>
<FacialClipsetGroupName>agocgfca_0xb6f66776</FacialClipsetGroupName>
<DefaultVisemeClipSet>anim_group_visemes_m_lo</DefaultVisemeClipSet>
<SidestepClipSet>wgqmmaga_0xbcb78f61</SidestepClipSet>
<PoseMatcherName>Horse</PoseMatcherName>
<GetupSetHash>nmbs_horse_getups</GetupSetHash>
<ScenarioCapabilities />
<CreatureMetadataName>yzvjmeea_0xe6bf2427</CreatureMetadataName>
<qcrlzvka_0x3207fdf6>default</qcrlzvka_0x3207fdf6>
<DecisionMakerName>puyaaala_0xc87f6a22</DecisionMakerName>
<kwpxjyqa_0xc4e3a8e3>horse</kwpxjyqa_0xc4e3a8e3>
<MotionTaskDataSetName>horse</MotionTaskDataSetName>
<DefaultTaskDataSetName>animal</DefaultTaskDataSetName>
<PedCapsuleName>horse</PedCapsuleName>
<PedLayoutName>xclvljma_0x692611fa</PedLayoutName>
<PedComponentSetName>horse</PedComponentSetName>
<PedIKSettingsName>ggoxhlsa_0x32681820</PedIKSettingsName>
<TaskDataName>horse</TaskDataName>
<ClimbParamsName>horse</ClimbParamsName>
<nuubccla_0x0ce51a59>standard_ped</nuubccla_0x0ce51a59>
<AmbulanceShouldRespondTo value="False" />
<CanRideBikeWithNoHelmet value="False" />
<CanSpawnInCar value="True" />
<bOnlyBulkyItemVariations value="False" />
<RelationshipGroup>htclfqla_0x9ba3f8c6</RelationshipGroup>
<NavCapabilitiesName>horse</NavCapabilitiesName>
<SpeedDataName>default</SpeedDataName>
<PerceptionInfo>nreyahqa_0x1cae576e</PerceptionInfo>
<DefaultBrawlingStyle>uzkwanca_0xf6b775f3</DefaultBrawlingStyle>
<DefaultUnarmedWeapon>weapon_horse</DefaultUnarmedWeapon>
<DefaultMeleeProgram>xvkhspsa_0x4fc75164</DefaultMeleeProgram>
<DefaultCombatDirector>lfjindga_0x7507fc63</DefaultCombatDirector>
<StatName>uyspfrka_0xf6db2e94</StatName>
<SpeciesName>kfvniicb_0xb905d604</SpeciesName>
<DiscoverableName>qfhktqda_0x8427080c</DiscoverableName>
<UndiscoveredName>eafibcfa_0x4cfe1ff3</UndiscoveredName>
<vhzqgnba_0x9e63e6ed>ruhuymea_0x4a59c18f</vhzqgnba_0x9e63e6ed>
<ScavengerLayout>horse</ScavengerLayout>
<Personality>drcvzhaa_0x39cd1b26</Personality>
<AmbientResponseProfile>standard_ped</AmbientResponseProfile>
<DefaultWeaponLoadout>loadout_horse</DefaultWeaponLoadout>
<koorpvda_0x936a1503 />
<WeaponAnimationsGroup />
<HealthConfigHash>traswcna_0x7e2af3c5</HealthConfigHash>
<elhtqona_0x895861da>kbwqduqb_0x3d018c4a</elhtqona_0x895861da>
<xhvibkra_0xb2fe2edf />
<CombatInfo>qydrxgba_0xb44afaae</CombatInfo>
<qpnkkvea_0x3cf2af47>horse</qpnkkvea_0x3cf2af47>
<VfxInfoName>eoqpwika_0x1789a1fe</VfxInfoName>
<AmbientClipsForFlee />
<GenericSkinningSize>XLarge</GenericSkinningSize>
<usjpufaa_0x43d57fd3 value="False" />
<Drivers />
<QualityProbability />
<Radio1>RADIO_GENRE_OFF</Radio1>
<Radio2>RADIO_GENRE_OFF</Radio2>
<MinActivationImpulse value="110" />
<Stubble value="0" />
<kcdwdkxa_0x0ab020bb value="0" />
<FurEffect value="0" />
<HDDist value="10" />
<dnqiqydc_0xc5691df9 value="-1" />
<gkuzagra_0xc6af94a8 value="0" />
<ntqafoba_0x5b0be8dc value="False" />
<PedSize>PS_EXTRA_LARGE</PedSize>
<Scale value="1" />
<CutsceneScale value="1" />
<ScaleRandomOffset value="0" />
<KilledPerceptionRangeModifer value="-1" />
<Sexiness />
<tiqffsfa_0x7f0093da />
<AgeGroup>AGE_ADULT</AgeGroup>
<mmgrbpma_0x6899d915>ibcedirb_0x22d02028</mmgrbpma_0x6899d915>
<MaxPassengersInCar value="0" />
<ExternallyDrivenDOFs>BREATHING</ExternallyDrivenDOFs>
<PedVoiceGroup>szzfriaa_0x087d1fc0</PedVoiceGroup>
<AnimalAudioObject>animal_params_horse</AnimalAudioObject>
<ninvcmlb_0x8c9ccceb />
<ncuqpzia_0x7c337da0>zcizpmqa_0xa54bbb71</ncuqpzia_0x7c337da0>
<BreathingSettingsName>horse</BreathingSettingsName>
<AbilityType>SAT_NONE</AbilityType>
<SecondaryAbilityType>SAT_NONE</SecondaryAbilityType>
<SuperlodType>ucgznnla_0xa26058ae</SuperlodType>
<ScenarioPopStreamingSlot>SCENARIO_POP_STREAMING_NORMAL</ScenarioPopStreamingSlot>
<DefaultSpawningPreference>DSP_NORMAL</DefaultSpawningPreference>
<SpawnRange>SR_Default</SpawnRange>
<TrackPed value="True" />
<TrackerPathWidth value="1" />
<lodDistances>25 50 100</lodDistances>
<zutiasba_0xf45d226f value="1" />
<AttributeSet>mblcifca_0x7ba0c856</AttributeSet>
<chskwqha_0xc6d90bc4 />
<zrxuobaa_0x120c7ac8 value="0" />
<scorgaqa_0x187e18e5 value="50" />
<pbwlkcaa_0x15fd61aa value="50" />
<vslhbdca_0x2fc486f7 value="1" />
<xsmxfeaa_0xcffe931e value="False" />
<wdzndzba_0xa5229965 value="False" />
</Item>
</InitDatas>
</CPedModelInfo__InitDataList>
Step 2 - MetaPed Outfit Preset
Next step is to create metaped outfit preset for A_C_Horse_AmericanPaint_Overo_02
, which will be streamed. You should create new file inside stream folder with name a_c_horse_americanpaint_overo_02.ymt and paste there content from original in-game file a_c_horse_americanpaint_overo.ymt
a_c_horse_americanpaint_overo_02.ymt
a_c_horse_americanpaint_overo_02.ymt (33.3 KB)
At this step as the result we have a copy of existing in-game horse with different hash name A_C_Horse_AmericanPaint_Overo_02
. If you spawn it in game it will look like this:
Step 3 (Optional) - Modify Textures (Albedo)
We can set a different albedo for horse parts like head, body, hairs etc. inside a_c_horse_americanpaint_overo_02.ymt file. Let’s set it like this:
I’ve changed <albedo>
tag values for head and body:
- p_c_horse_01_head_000_c0_895_ab → mp_horse_01_head_000_c0_835_ab
- p_c_horse_01_hand_000_c0_895_ab → mp_horse_01_hand_000_c0_835_ab
You can find other values in in-game file assets_albedo.ymt
.
As the result we have horse with different textures:
Step 4 (Optional) - Modify Horse Colour (Tint)
You can modify your horse tint inside a_c_horse_americanpaint_overo_02.ymt. Take a look on values tint0, tint1 and tint2.
I’ll use yellow colour (70) for horse head and set it for tint0, tint1 and tint2 and.
To find other colour values you open file (in GIMP) horse_color_palette.xcf (48.6 KB) (source: Horse Color Palette at Red Dead Redemption 2 Nexus - Mods and community)
Next I set yellow colour for horse body:
As the result we have:
Summary
We’ve added a new horse with name A_C_Horse_AmericanPaint_Overo_02. We also tried different horse textures and colors. You can download final resource from here.
There are couple known issues/bugs which remains unsolved (:
-
Invisible reins
-
Weird deformations of legs
References
Ped Modification and MetaData Overview - Outfits, Assets, Expressions, Shop Items, Overlays, etc.
Maybe there are more issues than that - if so please report it in this topic or if you know how to solve these issues share with us.