Installing 100+ Female Poses
Installing this pack takes one line in server.cfg. Getting a pose onto a character takes a little more, because the pack has no menu and no command — read What you still need before you call the job done.
Requirements
| Required | ||
|---|---|---|
| RedM server | Yes | Any build supporting fx_version 'cerulean' and lua54 'yes' |
| Asset packs | Yes | The manifest declares dependency '/assetpacks' |
| Framework | No | VORP, RSG, RedEM:RP or none. The pack never touches one |
| Database | No | The only server script is a single print |
| An emote system | In practice, yes | Nothing in the pack plays a pose. Something has to call the natives |
That last row is the one that surprises people. The pack is 104 .ycd dictionaries plus a reference table, and no code that plays them. Either an emote resource drives the clips, or you write the few lines yourself — see Playing a pose.
Asset packs is a real entitlement check, not a soft warning
dependency '/assetpacks' is checked against your server's licence key by Cfx.re. This pack streams 104 files, so the requirement is genuine rather than boilerplate.
If the key does not have asset packs enabled, the resource refuses to start and no amount of configuration gets around it. Enable asset packs for your key in the Cfx.re portal, then start the resource again. Nothing else on this page matters until that passes.
No npm, no build step, no SQL import, no extra dependencies.
Install
Unzip the download into a folder your server loads resources from. The archive is
rm_100_female_pose.zip, so the folder isrm_100_female_pose:resources/[animations]/rm_100_female_pose resources/[standalone]/rm_100_female_poseStrip any version suffix the unzip adds, such as
rm_100_female_pose-1.0.0.Add one line to
server.cfg:cfgensure rm_100_female_poseOrder barely matters — there are no server scripts to race and no database to wait on. The one exception is an emote resource that reads the dictionaries at start-up: put this line before or alongside it.
Restart the server, or from the server console:
refresh ensure rm_100_female_poseConfirm the start line appears in the server console, then play a pose. The console line alone is not proof — see Check it worked.
A correct tree. There is no config.lua, no client.lua and no html/ folder, and none are missing — the pack simply does not have them:
rm_100_female_pose/
fxmanifest.lua
clips.lua
server.lua
README.md
stream/
redmorrow@[email protected]
redmorrow@[email protected]
redmorrow@[email protected]
... 104 in total, 452 KBFolder name, resource name and the .ycd names
The manifest says name 'redmorrow', the folder says rm_100_female_pose, and the README tells you to rename the folder. Three different names, and it is worth being precise about which one the server actually uses.
In CFX, the resource name is the directory name. The name field in fxmanifest.lua is descriptive metadata. It does not rename anything and the server never loads a resource by it.
So there is exactly one rule:
The ensure line must match the folder on disk
Nothing else. If the folder is rm_100_female_pose, write ensure rm_100_female_pose. If you renamed it to redmorrow, write ensure redmorrow.
| Folder on disk | Line in server.cfg | Works |
|---|---|---|
rm_100_female_pose | ensure rm_100_female_pose | Yes |
redmorrow | ensure redmorrow | Yes |
rm_100_female_pose | ensure redmorrow | No — no such resource |
rm_100_female_pose-1.0.0 | ensure rm_100_female_pose | No — rename the folder first |
Both working names are genuinely equivalent here, and that is worth saying because it is not true of the sibling 30+ Female Poses pack. That one exposes exports, and exports['rm_30-custom-female-pose'] breaks the moment its folder is renamed. This pack has no exports, no command and no key binding, so nothing about it is keyed to the folder name.
The dictionary names are a separate matter again. Every dictionary is redmorrow@…@f, and that prefix comes from inside the .ycd files themselves, not from the resource. Renaming the folder to taco would still leave you playing redmorrow@pose5@f.
Never rename a .ycd file
An RDR2 dictionary stores its own name inside the file. Renaming the file does not rename the dictionary — it only makes the two disagree, and that one dictionary becomes unreachable while the other 103 keep working. If you have one pose failing and the rest fine, this is almost always why.
Check it worked
On start, server.lua prints one line to the server console:
[redmorrow] Female animation pack started.That line is hardcoded, so it says redmorrow whatever you named the folder.
The console line proves less than it looks like it does
It proves the resource started and the asset-pack check passed. It does not prove a single .ycd reached a client, and it certainly does not prove a pose will play — the pack contains no code that plays one.
The next check is client-side. In the F8 console in game:
DoesAnimDictExist('redmorrow@pose5@f')true means the dictionary streamed to your client. false means the resource is not started, you never ran refresh after copying the folder in, or the asset-pack check failed.
The only test that proves the whole chain is playing a pose. Paste this into F8 — it reports the failure instead of leaving you looking at a character who is doing nothing:
CreateThread(function()
local dict, clip = 'redmorrow@pose5@f', 'pose5'
RequestAnimDict(dict)
local timeout = GetGameTimer() + 5000
while not HasAnimDictLoaded(dict) do
if GetGameTimer() > timeout then
print('FAILED: ' .. dict .. ' never loaded — is the resource started?')
return
end
Wait(0)
end
TaskPlayAnim(PlayerPedId(), dict, clip, 4.0, -4.0, -1, 1, 0.0, false, 0, false, 0, false)
print('SUCCESS: pose5 is playing. ClearPedTasks(PlayerPedId()) to stop it.')
end)The timeout matters. A clip requested from a dictionary that never loaded fails silently — no error, no red line, the character just stands there. Always wait on HasAnimDictLoaded and always give the wait a deadline. Full detail, including why the RDR3 flag values are not GTA V's, is on Playing a pose.
Verification checklist
| Step | How | Expected |
|---|---|---|
| Asset packs | Server console on start | No entitlement error |
| Resource started | Server console after ensure | [redmorrow] Female animation pack started. |
| Dictionary streamed | DoesAnimDictExist('redmorrow@pose5@f') in F8 | true |
| A pose plays | The script above, in F8 | The character holds the pose |
| Stop works | ClearPedTasks(PlayerPedId()) | The character returns to idle |
Common install mistakes
| Mistake | Symptom | Fix |
|---|---|---|
| Asset packs not enabled | Resource refuses to start | Enable asset packs on your Cfx.re key |
ensure name and folder name disagree | No such resource in the console | Make the line match the folder |
| Version suffix left on the folder | Same | Rename the folder |
Forgot refresh | Dictionaries missing after copying it in | refresh, then ensure |
Renamed a .ycd | One pose fails, 98 work | Restore the original name |
| Waiting for a menu or a command | Nothing happens on any key | There is none. See below |
| Expecting FiveM | Nothing loads at all | These are RDR2 .ycd files. RedM only |
What you still need
This is where it is worth being blunt, because the pack's own documentation points the other way.
The resource's README.md and the comment header of clips.lua describe features this build does not have. They mention an in-game menu, a /redmorrow command, exports['redmorrow']:Play() and :GetClips(), a Config.ForceBody option, and files called config.lua, client.lua and html/. None of that ships here — the client side of this resource is clips.lua and nothing else. The documents look like they were written against a fuller build or a template; they are stale rather than wrong-headed, and the assets themselves are all present and correct. Trust clips.lua's data and these pages, not the README's prose.
What you actually have after installing:
| You have | You do not have |
|---|---|
104 streamed .ycd dictionaries | An in-game menu |
99 playable poses listed in clips.lua | A chat command |
A readable, editable clips.lua | A key binding |
| A server console line on start | Any exports |
| Any config options |
So one more step is needed before players can use the pack:
- Write a few lines yourself.
RequestAnimDict, wait forHasAnimDictLoaded, thenTaskPlayAnim. Walked through on Playing a pose. - Or feed the pairs to an emote resource. The
dictandclipvalues from the animation list go straight into an emote table. RedM Emotes takes them — see three ways to add an emote. Other emote systems work the same way, with their own table format.
Config.Clips is not readable from another resource
clips.lua sets a global called Config.Clips, and it is a global inside this resource. CFX gives every resource its own Lua state, so your script cannot see it however it asks.
To use the list from your own code, either copy the table into your own resource or add your own client script to this one. Integrating covers both.
Two more things worth knowing before you build on it. Never derive a dictionary from an id — six of the 99 rows have a dictionary that does not match, listed on the animation list. And the pack ships female dictionaries only, so poses will play on a male ped but were not authored for those proportions.
About the count
clips.lua holds 105 rows. Six are commented out — pose78, pose87, pose93, redmorrow_p23, pose29 and pose35 — which leaves 99 live poses against a product name of "100+".
Ninety-nine is the real number, and nothing is missing from your download. Every live clip has its dictionary in stream/, and the .ycd files for five of the six disabled rows are sitting there too. Re-enabling one is deleting the leading -- from its line; the asset is already on disk. The remaining row, pose29, points at redmorrow@pose26@f, which the live pose26 entry still uses.
Updating
Stop the resource, or stop the server.
Replace the folder with the new one, keeping the same name so your
ensureline still matches.Keep your
clips.luaif you edited it.escrow_ignorecoversclips.luaandREADME.md, soclips.luaships readable and editable and a fresh copy will overwrite your labels, categories and any rows you re-enabled. Diff the two rather than dropping the new one in blind — a new version may add rows you want.refresh, thenensurethe resource, and re-run the F8 play test above.
The .ycd files in stream/ are assets rather than Lua, so escrow does not apply to them at all. They are also identical between installs, which means a reinstall never changes a dictionary or clip name.
Next
- Playing a pose — the natives, the loading wait, and stopping cleanly
- Animation list — all 99 with dictionary, clip and duration
- The clips.lua table — every field, and what reads it
- Integrating — getting the list into your own resource or an emote menu
- Troubleshooting — symptom, cause, fix
- Animation Basics — how RedM animations work in general
- RedM platform notes — artifacts, natives and the differences from FiveM