Skip to content

Combat Moves Cameras ​

Three scripted cameras ship with the resource. Two are the original mods' own, read out of their decompiles; the third is new.

CameraSettingDefaultSource
SlideConfig.CustomCameraonthe original ASI's camera routine
Prone / crawlConfig.Dive.enableProneCameraonthe original ASI
DiveConfig.Dive.enableDiveCameraonRedM, not in the original

Framing them live ​

This is the one thing the menu does that you cannot do from a config file.

  1. Open Dive, Crawl & Gun → Prone camera.

  2. Tick Preview it now. The prone camera comes on while you are stood still.

  3. Drag Distance, Height, Shoulder offset and Pitch and watch the shot move.

  4. Untick the preview when it looks right.

Dive camera works the same way and has its own values — it is a separate shot for the second you are airborne.

Each has its own reset row — Reset camera under the prone camera, Reset dive camera under the dive camera. Both go back to the values your config.lua holds. Those are copied at script load, before the menu can write over any of them, so reset always has something true to go back to.

Reset goes back to your config.lua

The defaults the reset rows restore are copies of Config.Dive.camera and Config.Dive.diveCamera taken at load, so if you edited the camera blocks in config.lua that is exactly what reset returns to. There is no pristine shipped copy anywhere in the resource — the only thing reset discards is the slider edits you made this session.

Turning the prone camera off also clears any active preview, so you cannot leave yourself in a previewed shot with no camera.

The slide camera ​

Every value was read out of the decompiled camera routine (FUN_18000fca0), not chosen by eye.

The camera orbits the ped's own coordinates dropped 0.4 m, sits 2.8 m back along the gameplay camera's view direction and 0.55 m to the right, and uses the gameplay camera's rotation and FOV verbatim — no pitch offset, no FOV multiplier.

Config.CameraDefault
distance2.80metres back along the view direction
rightOffset0.55metres right, over the shoulder
heightOffset-0.40relative to the ped's feet — below them
pitchOffset0.0the original adds nothing
fovMultiplier1.0and nothing here either
nearClip0.15
motionBlur0.0the original explicitly sets this to zero
avoidClippingtruepull in when a wall is behind you
clipPullback0.15metres to come off whatever the probe hit
headClearance0.30RedM — see below
easeIn / easeOut500ms, both directions

That is why the slide does not change your view angle

Taking pitch and FOV from the gameplay camera verbatim means the shot moves but the aim does not. A slide camera that added pitch would fight the player's aim for the whole slide.

headClearance is a RedM addition: it keeps the head at least 0.30 m from the line through the middle of the screen by lifting the camera over it. It exists because the body can lag behind the view when aim starts, which otherwise put the player's own head in the centre of the shot. Set it to 0 to turn it off.

Config.ForceThirdPerson is declared in config.lua and then never read by any Lua in the resource, so changing it does nothing. What actually pushes a first-person player out to third person is a per-frame pair of calls in the slide loop, gated on whether the slide started in first person and on Config.Apply.camera. Config.Apply.camera = false is the lever that turns it off.

Only four of these are on the panel — Combat Slide → Camera has Slide camera, Distance, Height and Shoulder offset. The rest are config.lua only.

The prone camera ​

The original's values: 2.8 m back, 0.3 m right, 0.4 m down, no pitch change.

Config.Dive.cameraDefault
distance2.8
rightOffset0.3
heightOffset-0.4
pitchOffset0.0
fovMultiplier1.0
nearClip0.15
motionBlur0.0
easeIn / easeOut500

This is a slow shot near the ground, framed for crawling rather than for the dive that gets you there.

The dive camera ​

New in this port. The original leaves the gameplay camera alone for the second you are in the air, and only gives the crawl afterwards a camera.

Why it is separate rather than one camera for both

The two shots want opposite things. A dive is fast and brief, so it reads better pulled back and widened, and its ease has to be short or the blend is still finishing when you land. The crawl that follows is a slow shot near the ground. Landing swaps the values on the same camera rather than cutting to a new one, so the change is a move, not a cut.

Config.Dive.diveCameraDefaultWhy it differs from the prone camera
distance3.4further back — the whole body is moving
rightOffset0.35
heightOffset-0.25less far under; you are off the ground
pitchOffset2.0a little down, to keep the ground in shot
fovMultiplier1.10wider, so the dive reads as speed
nearClip0.15
motionBlur0.25only while airborne
easeIn150the dive is about 1 s; 500 ms would miss it
easeOut300

Both dive cameras expose the full set on the panel: Distance, Shoulder offset, Height, Pitch, Field of view, Near clip, Motion blur, Ease in and Ease out.

Handing the camera back ​

If another resource takes over the camera, the two will fight. Turn off whichever ones you do not need:

lua
Config.CustomCamera               = false
Config.Dive.enableProneCamera     = false
Config.Dive.enableDiveCamera      = false

The moves themselves carry on working — only the shot changes, back to the normal gameplay camera. One thing those three lines do not cover: Config.CustomCamera = false stops the slide camera being created, but the forced third person is gated on Config.Apply.camera, so a player who started the slide in first person is still pushed out of it for the length of the slide. Set Config.Apply.camera = false as well if you want first person left alone.

Spotting a camera conflict

A move that half-plays and snaps back is usually a camera or a ClearPedTasks conflict rather than a problem with the animation. cs_watch shows live control and ped state and usually identifies it in a few seconds. See Troubleshooting.

Tuning from the console ​

cs_camtune the slide camera live
cs_camtestcycle through slide camera configurations

Both are on Debug commands. The dive and prone cameras are tuned from the panel's preview rows rather than from the console.

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