Skip to content

Animations ​

Almost every RedM script that moves a character is doing one of four things. Knowing which one you are looking at is most of the work, because they take different values and fail in different ways.

KindWhat it isWhat it needs
AnimationA clip from a dictionary, played on the pedA dict and a name
ScenarioA packaged behaviour the game drives itselfA WORLD_HUMAN_* name, hashed at runtime
Walk styleHow the character moves when walkingAn MP_Style_* string
PropA model attached to a bone, usually with a clipA model, a bone, a position and a rotation

Dictionaries and clips ​

An animation is addressed by two strings — the dictionary it lives in, and the clip inside it:

lua
dict = 'amb_wander@code_human_basket_wander@female_a@base'
name = 'base'

The dictionary has to be requested and loaded before the clip will play. A script that asks for a clip from a dictionary that never loaded usually fails silently — the character simply stands there — which is why most resources wait on the request with a timeout and then give up rather than hanging.

The clip name is often base

Ambient dictionaries tend to hold one long idle called base, with the variation living in the dictionary name rather than the clip name. That is why the dictionaries are so specific — female_a, male_a, @base, @wip_base.

Scenarios ​

A scenario is a whole behaviour rather than a single clip — the game picks the animations, the props and the transitions itself.

WORLD_HUMAN_SMOKING
WORLD_HUMAN_CAMP_FIRE_STAND
GENERIC_SEAT_CHAIR_SCENARIO
MP_LOBBY_PROP_HUMAN_SEAT_CHAIR

They take no dictionary. Resources that store both kinds in one table usually leave the dictionary column empty, or put a placeholder in it, for scenario rows.

Scenarios are also the thing most likely to refuse politely: a seated scenario that does not suit the prop a character is standing next to simply will not take, and the character stands back up.

Walk styles ​

MP_Style_Default

A walk style is applied and then stays applied — it is not a clip that ends. Scripts that offer them usually have to provide an explicit way back to normal, because stopping an emote does not clear one.

Walk styles are also the one animation kind that generally survives being mounted.

Flags ​

Animation flags are a bitmask, and two bits come up constantly:

BitValueEffect
11Loop
1616Upper body only
3232Keep player control

48 is the pair that matters — upper body plus keep control — which is what lets a character wave while still walking. A script that offers "emotes you can move during" is almost always ORing the flags with 48.

Full-body animations without those bits hold the character in place until the animation is cleared.

Where the names come from ​

There is no official catalogue. The community one everyone uses is rdr3_discoveries, whose ingameanims_list.lua is a listing of in-game animation names, and whose scenario data is the usual reference for WORLD_HUMAN_* names.

Those are name lists, not game data. Nothing is extracted and nothing is redistributed — a resource stores the names and asks the game to load them at runtime, which is why an animation pack adds no download weight to your server.

This is why animation packs are large but weightless

RedM Emotes ships an optional pack of 4,133 animations generated from that listing. It is 546 KB of SQL and adds nothing at all to what a player downloads, because every clip it names is already in the game.

When an animation does nothing ​

In rough order of likelihood:

CauseHow it looks
The dictionary never loadedNothing happens, no error
Wrong clip for that dictionaryNothing happens, no error
Something else cleared the ped's tasksThe animation starts and is immediately cancelled
The character is mountedMost resources refuse outright while on a horse
A scenario that does not suit the spotThe character stands back up

Two scripts animating the same ped will fight

Starting an animation usually clears the ped's existing tasks, and the other resource's TaskPlayAnim will clear yours right back. This is the single most common cause of "my emote cancels itself" — and it is not a bug in either resource.

If you are writing one, stop the other resource's animation deliberately rather than hoping. RedM Emotes exposes Stop() for exactly this.

Props on a bone ​

A prop animation attaches a model to a skeleton bone with a position and rotation offset:

lua
prop = {
    model    = 'p_cup02x',
    bone     = 'SKEL_R_Finger12',
    position = { x = 0.07, y = 0.02, z = 0.04 },
    rotation = { x = -20.0, y = 0.0, z = 0.0 },
},

Getting those offsets right is trial and error — there is no formula, and the same offsets on a different bone or a different model will be wrong. Starting from a known-good entry and nudging it is far faster than starting from zero.

A prop also has to be cleaned up: if the game drops it, or the animation ends without the script noticing, you are left holding nothing or holding it forever.

Animation packs ​

Pack
30+ Female PosesFree. 29 custom female poses as native .ycd dictionaries, with an in-game menu and exports

Where to go next ​

A library of emotes, walk styles, scenarios and propsRedM Emotes
Playing an animation from your own resourceRedM Emotes Developer API
Which key opens whatKeybind Hashes
The platform itselfRedM

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