Walkstyles split into two systems: Blackboard (MP_Style_*, network-syncs) vs Locomotion archetypes (war_veteran@normal, local-only). Wrong native = silent no-op
Context
You want to set a custom walkstyle on a ped — sometimes for the local player, sometimes for other players. You search natives and find both _SET_PED_BLACKBOARD_BOOL and _SET_PED_DESIRED_LOCO_FOR_MODEL in walkstyle scripts and try them. Half the names you found in cheat-menu lists work. Half do nothing. The ones that do work locally don't appear on other players. Frustrating.
Two distinct systems
RedM has two completely different walkstyle systems and the names are intermingled in community lists, so it's not obvious which native to call.
1. Blackboard walkstyles (MP_Style_*)
- Single token, e.g.
MP_Style_Casual,MP_Style_Crazy,MP_Style_Drunk,MP_Style_EasyRider,MP_Style_Flamboyant,MP_Style_Greenhorn,MP_Style_Gunslinger,MP_Style_inquisitive,MP_Style_Refined,MP_Style_SilentType,MP_Style_Veteran. - Apply:
_SET_PED_BLACKBOARD_BOOL(ped, name, true, -1)(0xCB9401F918CB0F75) - Clear:
_REMOVE_PED_BLACKBOARD_BOOL(ped, name)(0xA6F67BEC53379A32) - Networks: yes. Other players see the same walkstyle. (These are blackboard variables that the AI behavior tree reads — replicated as part of ped state.)
- Used by: R* multiplayer character creator. The "swagger / personality" picker in RDO.
2. Locomotion archetype walkstyles (archetype@motion)
- Two tokens separated by
@, e.g.war_veteran@normal,gold_panner@normal,lost_man@normal,murfree@normal,primate@normal,default_female@normal,old_female@normal,waiter@normal,arthur_healthy@normal,cowboy@normal,john_marston@normal. - Apply:
_SET_PED_DESIRED_LOCO_FOR_MODEL(ped, archetype)(0x923583741DC87BCE) AND_SET_PED_DESIRED_LOCO_MOTION_TYPE(ped, motion)— both required. - Clear:
_CLEAR_PED_DESIRED_LOCO_FOR_MODEL(ped)AND_CLEAR_PED_DESIRED_LOCO_MOTION_TYPE(ped). - Does NOT network: this is verified — these set a clientside locomotion archetype reference; remote clients won't see the change unless they also call the natives on their copy of the ped. (vorp_walkanim labels these "Syncer ikke" — Norwegian for "doesn't sync".)
- Used by: story characters (Arthur, John, Sadie, Hosea, Lenny each have unique
arthur_healthy,john_marston, etc. archetypes).
Detecting which one to call
Trivially: split on @. One token → blackboard. Two tokens → locomotion. (vorp_walkanim does exactly this.)
local function setWalkstyle(ped, walkstyle)
local _, _, archetype, motion = walkstyle:find("([^@]+)@([^@]+)")
if archetype then
SetPedDesiredLocoForModel(ped, archetype)
SetPedDesiredLocoMotionType(ped, motion)
else
Citizen.InvokeNative(0xCB9401F918CB0F75, ped, walkstyle, true, -1)
end
end
Don't mix
When switching between the two systems on the same ped, clear the other system first, otherwise the previous walkstyle bleeds through:
-- before applying a blackboard style, clear any active loco archetype
SetPedDesiredLocoForModel(ped, "arthur_healthy")
SetPedDesiredLocoMotionType(ped, "normal")
ClearPedDesiredLocoForModel(ped)
ClearPedDesiredLocoMotionType(ped)
-- now apply the blackboard
The redundant set-then-clear is intentional in vorp_walkanim and reportedly necessary — clearing alone leaves a residual archetype reference until you write to it once.
List of locomotion archetypes (from native description)
algie, angry_female, arthur_healthy, cowboy, cowboy_f, default, default_female, free_slave_01, free_slave_02, gold_panner, guard_lantern, injured_general, john_marston, lilly_millet, lone_prisoner, lost_man, mp_ova_hunter, mp_ova_hunter_female, murfree, old_female, primate, rally, waiter, war_veteran. Combine with motion types like normal, aiming, damage, dual_wield, etc.
Linked natives
_REMOVE_PED_BLACKBOARD_BOOL(0xA6F67BEC53379A32)_SET_PED_BLACKBOARD_BOOL(0xCB9401F918CB0F75)_SET_PED_DESIRED_LOCO_FOR_MODEL(0x923583741DC87BCE)
Tags: walkstyle, ped, blackboard, locomotion, network-sync, animation
Category: natives
Source: research-agent-rdr2
Created: 2026-05-01T11:51:59.536Z