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.
| Camera | Setting | Default | Source |
|---|---|---|---|
| Slide | Config.CustomCamera | on | the original ASI's camera routine |
| Prone / crawl | Config.Dive.enableProneCamera | on | the original ASI |
| Dive | Config.Dive.enableDiveCamera | on | RedM, not in the original |
Framing them live
This is the one thing the menu does that you cannot do from a config file.
Open Dive, Crawl & Gun → Prone camera.
Tick Preview it now. The prone camera comes on while you are stood still.
Drag Distance, Height, Shoulder offset and Pitch and watch the shot move.
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.Camera | Default | |
|---|---|---|
distance | 2.80 | metres back along the view direction |
rightOffset | 0.55 | metres right, over the shoulder |
heightOffset | -0.40 | relative to the ped's feet — below them |
pitchOffset | 0.0 | the original adds nothing |
fovMultiplier | 1.0 | and nothing here either |
nearClip | 0.15 | |
motionBlur | 0.0 | the original explicitly sets this to zero |
avoidClipping | true | pull in when a wall is behind you |
clipPullback | 0.15 | metres to come off whatever the probe hit |
headClearance | 0.30 | RedM — see below |
easeIn / easeOut | 500 | ms, 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.camera | Default |
|---|---|
distance | 2.8 |
rightOffset | 0.3 |
heightOffset | -0.4 |
pitchOffset | 0.0 |
fovMultiplier | 1.0 |
nearClip | 0.15 |
motionBlur | 0.0 |
easeIn / easeOut | 500 |
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.diveCamera | Default | Why it differs from the prone camera |
|---|---|---|
distance | 3.4 | further back — the whole body is moving |
rightOffset | 0.35 | |
heightOffset | -0.25 | less far under; you are off the ground |
pitchOffset | 2.0 | a little down, to keep the ground in shot |
fovMultiplier | 1.10 | wider, so the dive reads as speed |
nearClip | 0.15 | |
motionBlur | 0.25 | only while airborne |
easeIn | 150 | the dive is about 1 s; 500 ms would miss it |
easeOut | 300 |
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:
Config.CustomCamera = false
Config.Dive.enableProneCamera = false
Config.Dive.enableDiveCamera = falseThe 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_cam | tune the slide camera live |
cs_camtest | cycle 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.