Skip to content

Configuration ​

Two files, both readable and editable after escrow.

FileHolds
config.luaMenu, keys, playback
clips.luaThe pose list

Both are loaded when the resource starts, so restart it after editing either:

restart rm_30-custom-female-pose
KeyDefault
Config.Title'Female Poses'Shown in the menu header
Config.UseMenutruefalse removes the menu; the command lists poses in the F8 console instead
Config.Command'rm_female_poses'The chat command
Config.MenuSide'right''left' or 'right'
Config.CloseOnPlayfalseClose the menu after pressing Play
Config.Theme'redm''redm' or 'fivem'
Config.Accent''Accent colour, e.g. '#9b2d20'. Empty uses the theme default

With Config.UseMenu = false, /rm_female_poses prints the numbered pose list to the player's own F8 console. Chat gets a single pointer line — 29 animations listed in the F8 console. Use /rm_female_poses <id|number> — and nothing at all if the server has no chat resource started.

Keys ​

KeyDefault
Config.MenuKeyVK0x76 (F7)Virtual-key code that opens the menu
Config.MenuKeyLabel'F7'The key name the open menu listens for to close itself
Config.StopKeyVK0x58 (X)Virtual-key code that stops the pose
Config.StopKeyLabel'X'Displayed in the menu
Config.MenuControlnilControl-hash fallback
Config.StopControlnilControl-hash fallback

The two labels do different jobs

StopKeyLabel is the one that is drawn in the menu.

MenuKeyLabel is not drawn at all — the interface compares it against the key you press to decide whether to close. So if you change MenuKeyVK to F9 and leave the label as 'F7', F9 opens the menu and then will not close it, because the interface is still listening for F7.

Change both together, and keep the label spelled as the browser names the key.

These are Windows virtual-key codes, not control hashes

RedM has no RegisterKeyMapping, so the pack uses RegisterRawKeymap — a RedM-only native that takes a raw virtual key. Players cannot rebind it in the game's key settings; you set it once for the server.

Useful codes, from config.lua's own comments:

KeyCode
F50x74
F60x75 — photo mode, avoid
F70x76
F90x78
X0x58
Z0x5A
DELETE0x2E
PAGE DOWN0x22

Set a code to 0 to unbind that key entirely. The label disappears from the menu automatically when nothing is bound — the menu only shows a label for a key that really exists.

MenuControl and StopControl are a fallback for builds where the raw keymap fails to register.

Playback ​

KeyDefault
Config.BlendIn4.0Blend-in speed
Config.BlendOut-4.0Blend-out speed
Config.StopBlend2.0Blend used when stopping
Config.DefaultSpeed1.0Starting playback speed
Config.MinSpeed0.25Slowest the menu allows
Config.MaxSpeed2.0Fastest the menu allows
Config.HolsterWeapontrueHolster a drawn weapon before a full-body pose
Config.BlockOnMounttrueRefuse a full-body pose while mounted or in a vehicle (wagon, coach, boat)
Config.RootMotionExtraFlags0Extra flags ORed in for clips marked rootMotion
Config.DebugfalseConsole tracing, and enables /rm_female_poses debug

HolsterWeapon only applies to full-body poses. An upper-body pose leaves the weapon alone, because you are still moving.

BlockOnMount likewise only refuses full-body poses, and it covers any vehicle as well as a mount — a wagon, stagecoach, boat or canoe refuses the same way a horse does. Upper-body poses are allowed in all of them, since they layer over the riding or sitting animation rather than replacing it.

Config.StopBlend also times a hard clear

Besides setting the blend-out rate, StopBlend times a safety net on explicit stops. When you stop a pose with the stop key, /rm_female_poses stop or the Stop export, the resource checks the ped again 1000 / max(StopBlend, 0.5) + 200 ms later — 700 ms at the 2.0 default, and never more than 2200 ms, because the divisor is clamped at 0.5. If a clip of this pack is still playing then, the resource calls ClearPedTasks, which clears all of the ped's tasks, not just this pack's.

So lowering StopBlend below about 0.5 buys no extra blend time. At 0.2 the blend-out needs roughly five seconds, but the hard clear fires at 2200 ms — cutting the blend off mid-way and cancelling unrelated tasks on the character. For a softer stop, stay at or above 0.5.

Config.Dict is a fallback, not a setting you need

Config.Dict = 'redmorrow_com@pose5' is used only for a clip that somehow has no dict of its own. Every shipped clip has one, so it never comes into play.

clips.lua ​

One entry per pose:

lua
{
    id         = 'pose5',
    label      = 'pose5',
    dict       = 'redmorrow_com@pose5',
    clip       = 'pose5',
    category   = 'pose5',
    duration   = 1.967,
    mode       = 'loop',
    rootMotion = false,
},

Safe to edit ​

Field
labelThe name shown in the menu
categoryHow the menu groups poses — 'Portrait', 'Saloon', 'Casual'
modeDefault playback: 'once', 'loop' or 'hold'
walkAdd walk = true to make a pose default to upper-body
durationShown as the length badge on each menu row; nothing reads it for playback — every clip is played with duration -1

Giving the poses real names and categories is the single highest-value edit here. The shipped labels are the internal ids, which tell a player nothing.

lua
{ id = 'pose5', label = 'Leaning on the rail', dict = 'redmorrow_com@pose5',
  clip = 'pose5', category = 'Saloon', duration = 1.967, mode = 'loop', rootMotion = false },

Never edit ​

FieldWhy
dictMust match the name stored inside the .ycd file
clipMust match the clip name inside that dictionary

A wrong dict means the dictionary never loads. A wrong clip means it loads and nothing plays. Neither raises an error.

Two entries are already unusual — leave them alone

hatsdown_clip uses dict redmorrow_com@pose7, and pose29 uses dict redmorrow_com@pose26. They look like mistakes and are not. "Correcting" them breaks both poses.

flags ​

An entry may carry a numeric flags field. If present it is used verbatim as the flag value — the resource stops deriving flags from mode, walk and rootMotion for that clip, so Config.RootMotionExtraFlags is not ORed in either.

walk still applies outside the flag value, though. It alone decides whether Config.BlockOnMount refuses the pose while mounted or in a vehicle, and whether Config.HolsterWeapon holsters a drawn weapon — both are tested against walk, not against your flag bits. The task slot, by contrast, is taken from your flags. So for a clip that should layer over locomotion, include UPPERBODY | SECONDARY (24) yourself, and set walk = true as well if it should be allowed on a mount or in a vehicle and leave the weapon drawn.

That is the escape hatch for a pose that needs something the three modes do not express. Leave it off unless you know the RDR3 flag values; they are listed in the Developer API.

rootMotion ​

Marks a clip that moves the character rather than holding it in place. Every shipped pose is false.

When a clip is marked true and is played full-body, Config.RootMotionExtraFlags is ORed into its flags — which is the hook for adding something like USE_MOVER_EXTRACTION if you add a travelling clip of your own.

What escrow protects ​

EditableProtected
config.luastream/*.ycd
clips.luaclient.lua
README.md, LICENSE.md, docs/*.mdhtml/

You can rename, regroup and re-time every pose, change the menu and rebind the keys. You cannot extract or alter the animation data.

After editing ​

restart rm_30-custom-female-pose

Both files are client scripts read at load. A refresh alone is not enough.

Documentation for RedMorrow. Scripts are licensed per server — redistribution is not permitted.