Skip to content

Installing RedM Combat Moves ​

Requirements ​

Required
RedM serverYesAny build supporting fx_version 'cerulean' and lua54 'yes'
DependenciesNoNone at all
DatabaseNoNothing is stored
FrameworkNoWorks on VORP, RSG Core, RedEM:RP, QBR and standalone alike

There is no SQL to import, no build step and no server script. The resource is entirely client-side.

Install ​

  1. Unzip so the folder is named exactly rm_combat_moves, inside your resources folder.

    A category folder is fine — resources/[custom]/rm_combat_moves works. Only the resource folder's own name matters.

  2. Add one line to server.cfg:

    cfg
    ensure rm_combat_moves
  3. Restart the server and join.

  4. Press PGUP in game, or type /combatmoves. The panel should open over the game.

Check it worked ​

PGUP opens a styled black panelthe resource is running and the NUI files are being served
PGUP does nothing but /combatmoves worksthe key is taken by something else, or Config.MenuKey was changed
The panel opens as plain unstyled texta file in nui/ did not copy across — see Troubleshooting
Neither worksthe resource did not start; check the server console

Then run through the four features: hold C while running, press LALT, double-tap N with a revolver drawn, and press G while holding W.

Before you go live ​

config.lua ships in a development state. Two changes are worth making before players see it.

Turn off Config.Debug ​

lua
Config.Debug = false

It ships as true. With it on, every slide, roll, trick and dive prints a state report to that player's own F8 console. Nothing breaks, but it is noise in every player's console and it makes real errors harder to spot.

What Config.Debug does and does not do

It controls console printing only. The 28 cs_* diagnostic commands and /unstuck are registered by client/debug.lua whether it is on or off, so turning it off does not take them away — and /unstuck keeps working in production, which is what you want. See Debug commands.

Block local bullet time ​

In server.cfg:

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. Config.EnableBulletTimeDuringSlide already ships off, and the convar is what stops a player who turns it back on from getting anything out of it. The menu row still toggles — nothing in menu.lua reads the convar — but the clamp is applied when the slide runs.

It covers the slide only. The dive has its own bullet time, Config.Dive.enableBulletTimeDuringDive, which client/dive.lua reads with no convar check at all — it also ships off, but nothing on the server side stops a player turning the Dive page's Bullet time row on. The other three convars are on Server setup.

Decide on dive invincibility ​

lua
Config.Dive.enableIFramesDuringDive = true   -- ships on

This makes the player bullet, fire and melee proof for the length of a dive — roughly one second. Good for cinematic play, exploitable in serious PvP. There is more on the trade-off in Server setup.

Updating ​

Replace the folder and restart the resource.

Keep your own config.lua

Copy your values across rather than overwriting the file — releases add settings, so an old config.lua dropped over a new one can leave new keys missing. The in-game menu never writes to the file, so anything you changed there is already gone on restart.

Changing the keys ​

Every key is set in config.lua, and client/keys.lua ships readable so you can add a name that is not listed. The short version:

lua
Config.MenuKey                    = 'PGUP'
Config.SlideKey                   = 'C'
Config.Roll.key                   = 'LALT'
Config.GunTricks.key              = 'N'
Config.Dive.keyboard.diveInput    = 'G'

Three keys have no raw key hash

K, T and Y are missing from the hash table in client/keys.lua, and every key above is resolved through that table — so none of them can be set to K, T or Y by name, whatever Config.InputMode says.

The one escape hatch is the slide, and only the slide: Config.InputMode = 'keymap' binds through RegisterKeyMapping, which can reach those keys and lets players choose their own. For the menu, roll, tricks and dive keys, pick a different key.

The full picture, including which game action each default key steals and how to give it back, is on Controls.

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