Combat Moves Troubleshooting
Start here
/unstuckReleases the menu's input grab, stops a slide and a gun trick, clears leftover tasks and hides the trick list. It works whether Config.Debug is on or off, so it is safe to give to players.
It does not end a dive. The command never calls StopDive(), so a player stranded prone, crawling, on their back or sitting is not freed by it — the dive loops re-issue the pose a frame after the tasks are cleared. For those states use the menu's Dive, Crawl & Gun → Fix → Stand up now row, or the StopDive() export.
Nothing happens when I press the dive key
You need a movement direction held at the same time. G on its own is deliberately inert — the direction chooses which of the five dive animations plays, and the requirement is what stops the key firing by accident.
One movement key is enough. G + W dives forward, G + A or G + D dives to that side, and G + S on its own dives backwards. dive() takes the first of the four movement controls that is down, in the order up, down, left, right, so holding S with A or D gives the same backward dive as S alone. Which of the two backward clips plays is a coin flip, and the left one is only picked with a pistol, revolver, rifle, two-handed weapon or sawn-off in hand.
If a direction is held and nothing happens, check in this order:
| Stamina | a dive needs at least 10 stamina and costs 9. The test is < minStaminaToDive, so exactly 10 still dives. An empty core refuses |
| Cooldown | 800 ms between dives |
| Another move running | diving stands down while a slide, roll or spin is in progress |
Config.Dive.enabled | or a SetDiveEnabled(false) from your own script |
enableDiveWhenOnlyAiming | if you turned it on, free aim has to be active — the gate is IS_PLAYER_FREE_AIMING, not the aim control |
On a server using assisted aim, enableDiveWhenOnlyAiming stops diving outright. IS_PLAYER_FREE_AIMING stays false under assisted aim even with the aim button held, and the dive does not fall back to checking the aim control the way the slide does, so holding aim will not bring diving back.
cs_dive gives a live read-out of state, weapon class and submersion.
Nothing happens when I press slide
You need to be running, not walking. The slide needs real ground speed — 2.5 m/s by default (Config.MinSpeed).
Then, in order:
| Hold, do not tap | 250 ms by default (Config.HoldDuration) |
| Cooldown | 750 ms between slides |
| In water | blocked by default (Config.AllowInWater) |
| Binoculars or a kit item | blocked by default (Config.BlockWithBinoculars) |
| A wall within 1.6 m ahead | the obstacle probe refuses |
A roll or a gun trick already running is not a reason. canSlide tests only its own sliding flag and never consults IsRolling or IsSpinning, so a slide can start in the middle of either. The exclusion is one-directional — a roll refuses while you are sliding, and a gun trick refuses while you are sliding or rolling.
My shots do not come out during a slide
Hold aim. Firing is intentionally blocked unless you are aiming — that is Config.BlockAttackUnlessAiming, which ships true to match the original. Set it to false to allow firing without aiming at all.
If you are aiming and still cannot fire, it is worth knowing why this is a known hard spot:
Three natives lie about firing on this build
IS_PED_WEAPON_READY_TO_SHOOT returns false while stood still, aiming, with the trigger down and the gun firing. IS_PED_SHOOTING has never been observed returning true. And IS_PLAYER_FREE_AIMING returns false under assisted aim even with the aim button held.
The last one is why the original mod appeared to block firing for the whole slide on servers using assisted aim — it only checked that native. This port gates on the aim control as well.
Use ammo deltas to tell whether a shot came out: cs_watch shows the ammo column, and if it drops, the gun fired.
If it still will not fire, cs_noanim is the control experiment: slide with no animation task at all. If the weapon fires in that mode but not otherwise, the animation task is what blocks firing. Then check you have not added reset flag 27 (PRF_BlockWeaponFire) to Config.SlideResetFlags.
The menu will not open
Try
/combatmoves. If that works, the key is the problem — eitherPGUPis bound to something else, orConfig.MenuKeywas changed.If neither works, the menu may have been switched off:
Config.Menu.enabled = false. The command prints a notice once when that is the case.Check the resource started at all, in the server console.
The menu looks like plain unstyled text
A file the panel needs is not being served. Two causes:
| The folder did not copy fully | check nui/ and nui/ASSETS/ are both there |
A file is missing from files{} | RedM will not serve anything not listed in fxmanifest.lua |
The globs for nui/ASSETS/*.png, *.ttf and *.mp3 exist for exactly that reason. If you added artwork, add it to the manifest.
The menu opens but the mouse does nothing
Config.MenuMouse is false. It is the cursor half of SetNuiFocus(true, hasCursor) — with it off there is no cursor at all, so the hover and click handlers exist but can never fire. The keyboard bindings still work.
Combat Moves → Menu → Mouse cursor toggles it live, and applies straight away rather than on the next open.
I am stuck prone / cannot move / the camera is stuck
/unstuck will not do it. It never calls StopDive(), and the crawl, on-back and sitting loops re-issue their animation and camera a frame after it clears your tasks. Use the menu's Dive, Crawl & Gun → Fix → Stand up now row, or the StopDive() export — those set the dive module's stopRequested and get you up from any state.
/unstuck is still the right call for a menu that will not close, a stranded trick-list title or a slide that did not finish.
If it happens repeatedly, suspect a conflict rather than a bug — see below.
A move half-plays and snaps back
Almost always another resource, not this one. Three usual suspects:
ClearPedTasks on the local player every frame | interrupts a move mid-animation |
| Something taking over the camera | fights the slide and dive cameras |
| Control groups disabled every frame | swallows the inputs |
cs_watch shows live control and ped state and usually identifies the culprit in a few seconds. To hand the camera back:
Config.CustomCamera = false
Config.Dive.enableProneCamera = false
Config.Dive.enableDiveCamera = falseSlides keep getting cut short
Check Config.AbortOn. If you turned incapacitated on, turn it back off:
Config.AbortOn.incapacitated = false -- the shipped defaultIS_PED_INCAPACITATED was observed returning true mid-slide on a player at full health with full cores on this build, so it cannot be trusted to mean what its name says.
The gun tricks do nothing
You need a sidearm drawn. By default only pistols and revolvers can be spun (Config.GunTricks.requirePistol). Set it to false to let anything be spun.
Also: it is a double-tap within 400 ms, not a single press.
Double-tapping N keys my microphone
N is INPUT_PUSH_TO_TALK in RedM. It is the original mod's key, and RedM happens to put push-to-talk there.
Config.GunTricks.key = 'TAB'TAB is INPUT_TOGGLE_HOLSTER and is the usual swap.
The trick names do not show on screen
The on-screen list ships switched off. Turn it on in Gun Tricks → Settings → Show trick list, which sets hudMode to 'nui'.
If you turned it on and still see nothing, the renderer is the problem rather than the setting. Try cs_hud draw — the UIDEBUG renderer is plain but it always draws. 'prompt' mode will show very little, because RDR2 hides a prompt whose control is disabled and the trick controls are suppressed while spinning.
A half-working renderer can leave its title stuck on screen; /unstuck sets hudMode back to 'none'.
A key will not bind
K, T and Y cannot be bound to anything in RedM
There is no key hash for them. This is a platform limitation, not a bug here, and no resource can work around it. Use another key, or switch the slide to Config.InputMode = 'keymap' and let players pick.
The usable set is in Controls.
The roll snags at the end
Config.Roll.exitPhase decides when control comes back. Phase 2's last stretch is the character pushing back up and settling, and the heading stays pinned for all of it — so the roll looks finished while you still have no control.
Check whether the menu moved it
The panel's Combat Roll → Control back at slider has a range of 0.50–1.00, but config.lua ships 0.005. If anyone nudged that row, the value jumped to at least 0.50 and the snag came back — and the panel cannot get back to the shipped value. Restart the resource to reload config.lua, then hide the row:
Config.Menu.options['roll.control-back-at'] = falseRun cs_menuids roll to confirm the id on your build.
Time slows down for me but other players say it looked normal
That is bullet time, and it is a client-side effect by nature — it changes time scale for the whole client. It ships off for exactly this reason.
Turn it off under Slide → Combat → Bullet time when aiming, or ask the server owner to block it:
setr combat_slide_allow_timescale "false"Every slide prints a report to my console
Config.Debug is true, which is how the resource ships.
Config.Debug = falseThat stops the printing. It does not remove the cs_* commands or /unstuck — those are registered either way. See Debug commands.
My character grunts are missing on a dive
They are deliberately dropped, and cannot be restored from Lua.
Every ambient-speech native in RDR3 takes an Any* pointing at a struct whose first field is itself a pointer to the speech name. There is no way to place the address of one Lua string inside the bytes of another, so the struct cannot be built. Passing the fields flat throws a native exception and takes the frame down.
Settings I changed in the menu are gone after a restart
That is by design. Menu changes apply immediately and last until the resource restarts — they are never written to config.lua and never sent to anyone else.
To make a value permanent, set it in config.lua.
Still stuck
Collect this before asking for help:
Your server console output from when the resource started.
Your client console (
F8) output, withConfig.Debug = trueso the state reports are included.Which feature, and the exact keys you pressed.
The output of
cs_watchorcs_diveif it is a move that will not play, orcs_diveanimif it is an animation that looks wrong.
Then open a ticket on Discord.