Skip to content

Combat Moves FAQ ​

Before you buy ​

Do I need a framework? ​

No. The resource touches no framework. VORP, RSG Core, RedEM:RP, QBR and fully standalone servers all work with no configuration, because there is no server script and nothing to point at a framework.

What do I actually need? ​

Nothing. No dependencies, no database, no SQL to import, no build step. One folder and one ensure line.

Does it need a database? ​

No. Nothing is stored. Changes a player makes in the menu last until the resource restarts and are never written anywhere.

Is there a server script? ​

No. The resource is entirely client-side. The only server script an earlier version had relayed ragdolls and drags between clients for two features that no longer exist.

Will it work on a server with no outbound internet? ​

Yes. The menu front end is three plain files plus local artwork — no frameworks, no CDN requests and no webfont requests. The two Rockstar typefaces ship with the resource.

What is actually in it? ​

Four separate RDR2 single-player ASI mods, ported and put behind one panel: Combat Slide, Combat Roll, Gun Tricks, and Dive, Crawl & Gun. Plus stealth mode, which comes with the fourth.

Is the source included? ​

The resource is escrowed by default, so the feature files are encrypted in a standard build. config.lua and client/keys.lua ship readable, which covers retuning every value and adding key names. A source edition is available with every file unencrypted.

Gameplay ​

Why does the dive do nothing? ​

It needs 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 stops the key firing by accident.

This is the most common question about the resource by a wide margin.

Why can I not slide? ​

You have to be running. The slide needs 2.5 m/s of real ground speed by default. Walking into it does nothing.

Why will my gun not fire mid-slide? ​

Hold aim. Firing is blocked unless you are aiming, which is what stops a slide being used to swing wildly. It is a setting — Config.BlockAttackUnlessAiming — and it ships on to match the original.

How many gun tricks are there? ​

Six, all available. The original mod's menu only let you equip four at a time, because the game has four dedicated inputs and it bound them to those. Without that constraint there is no reason to cap it.

Can I shoot while prone? ​

Yes — that is the "& Gun" part. INPUT_ATTACK and INPUT_AIM are never disabled during the dive or the crawl. You can also press jump while crawling to roll onto your back and shoot upward.

Do the moves work on female character models? ​

Yes. The slide's female animation variants are left nil because the default dictionaries read fine on female models.

Does it replicate to other players? ​

The animations do, through RedM's normal ped animation replication — other players see the moves. Nothing else is networked; there are no events the resource sends.

Running it on a server ​

Which key should I change first? ​

Config.GunTricks.key. It defaults to N, which is INPUT_PUSH_TO_TALK in RedM — so double-tapping it to start spinning also keys the player's microphone on any server with voice chat. TAB is the usual swap.

Is it balanced for PvP? ​

Not out of the box. Config.Dive.enableIFramesDuringDive ships on, which makes the player bullet, fire and melee proof for the length of a dive — about a second. Good for cinematic play, exploitable in serious PvP:

lua
Config.Dive.enableIFramesDuringDive = false

The dive already costs 9 stamina and needs at least 10 to start, which is the only other brake on it. Raising the cooldowns is the other lever.

Can players cheat with this? ​

They can set any value in their own copy of config.lua, as with every client-side resource. What that does and does not reach:

  • Only their own character. The moves are animation tasks on their own ped, and there is no event another client acts on.
  • Not the four convars. allow_timescale, allow_deadeye, allow_infinite and max_duration are read from the server at the start of every slide, so a setr change applies on the player's next slide without a restart.
  • Everything else is advisory — cooldowns, stamina costs, dive invincibility.

If your server is competitive PvP, assume a determined player can remove the advisory limits for themselves.

What are the convars for? ​

They are the only limits a player cannot get past. The one that matters most:

cfg
setr combat_slide_allow_timescale "false"

Bullet time changes time scale for the whole client, so the player using it sees the world slowed while everyone else sees them moving normally.

That convar covers the slide's bullet time only. The dive has its own, Config.Dive.enableBulletTimeDuringDive — off in config.lua, but a player can switch it on from the Bullet time row on the dive page and no convar stands in the way. Hide or disable that row as well if the time scale is what you are closing off. Full list on Server setup.

Can I stop players changing settings? ​

Yes, at four levels — the whole menu, a page, a section, or a single row. Use cs_menuids to find the ids rather than deriving them by hand. See The menu.

Hiding something only removes it from the panel; the feature keeps running on whatever config.lua says.

Can I turn off features I do not want? ​

Yes:

lua
Config.Roll.enabled      = false
Config.GunTricks.enabled = false
Config.Dive.enabled      = false

Or remove a feature's file from client_scripts to stop it loading at all. The menu does not notice — the tab list is static, and only Config.Menu.pages hides a page — so set Config.Menu.pages.dive = false (or the matching slide, roll or tricks key) at the same time. The Tricks and Dive tabs call the feature's exports while building their rows, so they fail the moment a player opens them; the Slide and Roll tabs open fine and only fail when a row is used.

Keep client/natives.lua, client/keys.lua, client/input.lua and client/menu.lua whatever you remove. client/input.lua is the only place CS.Input is defined, and the slide calls it every frame.

The feature files also depend on each other

roll.lua calls IsSliding(); guntricks.lua calls IsSliding() and IsRolling(); dive.lua calls all three. None of those calls is guarded, so removing slide.lua breaks rolling, spinning and diving as well. Only dive.lua can be dropped without taking a sibling with it.

What does it cost in performance? ​

Effectively nothing when nobody is using it. There is no server tick and no database query. Each feature polls its input every frame. The roll, gun-trick and dive loops drop to a 250 ms poll once that feature is switched off; the slide's loop has no such back-off and keeps running every frame either way. The dive loop is the busiest of the four, re-reading the held weapon, the active bind set and nearby NPC senses on every idle frame. The heavy work — animation, camera, velocity and reset flags — only happens while a move is in progress, which is a second or two at a time.

Should I turn Config.Debug off? ​

Yes. It ships true and prints a report to every player's own console after every move.

Note what it does not do: the 28 cs_* commands and /unstuck are registered whether it is on or off, so turning it off does not take them away. That is deliberate — it means /unstuck works in production.

Keys and compatibility ​

Why can I not bind K, T or Y? ​

RedM has no raw key hash for those three. Nothing can bind them, here or in any other resource. It is a platform limitation.

Can players pick their own keys? ​

For the slide, yes:

lua
Config.InputMode  = 'keymap'
Config.DefaultKey = 'C'

It then appears in the player's own Settings → Key Bindings → FiveM list. The roll, tricks and dive keys are set server-side only. The four dive inputs accept INPUT_* control names, so those can follow whatever the player has the action bound to; Config.Roll.key and Config.GunTricks.key cannot. They are looked up in client/keys.lua, which holds raw key names only, so an INPUT_* name there prints an unknown-key error and the binding falls back to LALT or TAB.

Does it support controllers? ​

Yes, for the dive feature, which has its own binding set. The resource reads IS_USING_KEYBOARD_AND_MOUSE every frame and swaps sets, so a player moving between a pad and a keyboard mid-session gets the right one each time. The slide, roll and trick keys have no separate controller set. The slide can be put on a game control with Config.InputMode = 'control' plus Config.SlideInput, which does follow the pad binding; the roll and trick keys have no control-name path at all.

Will it conflict with my other resources? ​

Three things to watch:

  • Anything calling ClearPedTasks on the local player every frame will interrupt a move mid-animation
  • Anything taking over the camera will fight the slide and dive cameras
  • Anything disabling control groups every frame may swallow the inputs

All three are diagnosable with cs_watch. See Troubleshooting.

Can I call it from my own scripts? ​

Yes — 39 client exports and four net events it listens on. Safe zones, jail states and blocking moves during your own animations are all a few lines. See Developer API.

Oddities worth knowing ​

Why are the dive grunts missing? ​

They cannot be restored from Lua. Every ambient-speech native in RDR3 takes a pointer to a struct whose first field is itself a pointer to the speech name, and there is no way to place the address of one Lua string inside the bytes of another. Calling one with flat arguments throws a native exception and takes the frame down, so it is dropped rather than risked.

Why are the per-trick keys not bound? ​

All six of the original's trick keys — G H J B L F — are real game controls. Suppressing them while spinning stopped their prompt rows drawing, because RDR2 hides a prompt whose control is disabled. They cost something and earned nothing. Tap N for the next trick, or pick one in the menu.

Config.GunTricks.slots is left as an empty table rather than removed, so putting them back is a config change.

Why does the combat roll have a key when the original did not? ​

The original watched GET_PED_IS_DOING_COMBAT_ROLL and replaced the animation the game was already about to play — and only for John. On a server where the game never triggers its own roll, and characters are arbitrary models, that does nothing at all. Config.Roll.trigger offers 'native' if you want the original behaviour.

Why does the backward dive behave like the others here? ​

The original's .ini shipped DivingBackwardTransitionToSittingPosition=1, which drops you into a seated firing stance and leaves you there until you crouch — so the backward dive behaved unlike the other three directions. Both transition switches ship off here, which makes S + G land and get up like a forward, left or right dive. Turn backwardTransitionToSitting back on for the original's behaviour.

What is the "Flaco dive"? ​

An alternative left-direction dive using a cutscene clip — jump_to_side_famousgunslinger. Off by default. It has its own flag word and bone filter because it is a different animation entirely.

Why is the crawl move set interesting? ​

mech_crawl@base is a complete, polished move set that shipped with RDR2 and is never used by the game. All 23 clips are wired up here — idle, walk, run, four idle turns, the walk and run turn variants, four directional walk starts, the backward crawl and the two on-back clips.

How was this ported? ​

The four mods were decompiled rather than reimplemented from their readmes. Dive, Crawl & Gun shipped with a full Ghidra export, so every animation, flag, bone filter, blend time and timing constant in it was read out of the decompile's 69 TASK_PLAY_ANIM call sites and is used verbatim.

The one value that could not be recovered with confidence is the combat roll's flag word — Ghidra lost the caller's stack setup — so it ships as 0, a plain full-body task, and cs_rollflags exists to tune it live.

Support ​

Open a ticket on Discord. Bring your server console output, your client console (F8) output with Config.Debug on, and which keys you pressed. If it is an animation problem, cs_diveanim or cs_anim output saves a round trip.

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