Anim dict suffix is NOT the anim name — mech_pickup@loot@cash_register@open_grab contains enter_picklockoxxo_*, not open_grab
Context
You want a "rob the cash register" animation. You grep the discoveries anim list for cash_register and find dict mech_pickup@loot@cash_register@open_grab. The dict name ends in open_grab so you naturally try TaskPlayAnim(ped, "mech_pickup@loot@cash_register@open_grab", "open_grab", ...). Silent failure — dict loads but anim never plays.
The trap
The trailing token of an anim dict path is a CATEGORY, not an anim name. The actual anim names inside are completely different.
Confirmed contents (cross-checked against spooner's data/rdr3/animations.lua):
["mech_pickup@loot@cash_register@open_grab"] = {
"enter_picklockoxxo_ooxo", "enter_picklockoxxo_oxoo", "enter_picklockoxxo_pick",
"enter_picklockoxxo_reg", "enter_w_gunoxxo_oxoo", "enter_w_gunoxxo_reg",
"enter_openoxxo", "enter_w_gunoxxo", "enter_openoxxo_ooxo",
"enter_openoxxo_reg", "enter_w_gunoxxo_ooxo", "enter_picklockoxxo",
"enter_openoxxo_oxoo",
}
["mech_pickup@loot@cash_register@open"] = {
"enter_picklock_short", "enter_picklock_short_pick", "enter_picklock_short_reg",
"enter_picklock_step_in", "enter_w_gun_short", "enter_short", "smash_short",
... (52 entries)
}
Suffix decoder (recurring across mech_pickup dicts)
_reg— animates the REGISTER prop (not the player). Use withPLAY_ENTITY_ANIMon the register entity._pick— the lockpick prop._oxoo/_ooxo/_oxxo— coin/till variations._player_zero,_charlessmith,_billwilliamson, etc. — the player anim (sync scene-style, references the cutscene character but plays on any ped)._face— facial anim.
How to verify quickly
Don't trust the dict name. Either:
grep_docs({ pattern: '"mech_pickup@loot@cash_register@open_grab"' })against the discoveries anim list, then read the table contents.- Check
[VORP]/[essentials]/spooner/data/rdr3/animations.luain any RedM repo — same data, faster local grep.
Worked example
For "lockpick a register so the drawer opens": dict mech_pickup@loot@cash_register@open with enter_picklock_short on the player AND enter_picklock_short_reg on the register entity (PLAY_ENTITY_ANIM, stayInAnim=true). Both anims are synced, drawer pops out and remains open.
Tags: none
Category: uncategorized
Created: 2026-05-01T13:43:21.274Z