CES HeliCam

#CES HeliCam

CES HeliCam is a police helicopter camera for FiveM. The operator flies a helicopter, opens the camera, locks a vehicle, runs a tracking light, and the script narrates the target to ground units in chat. Ground officers can mark targets and ask for the light with /lightme.

It is standalone: no framework, no database, no inventory. It needs OneSync.

#What it can do

  • Gimbal camera with smooth zoom (FOV 80 to 4), steady aim when zoomed, light airframe shake.
  • Three vision modes: normal, night vision, thermal.
  • Target lock on vehicles with aim assist, and an info card (make, plate, colour, speed, heading, distance, street).
  • Tracking light in three sizes that other players can see.
  • Auto callouts to on-duty units: eyes on, updates every 7 seconds, stopped, moving again, lost visual.
  • Target marks: a blip and search radius on unit maps for 120 seconds.
  • /lightme: a ground officer asks the nearest camera to light them. The operator presses Y or N.
  • Pilot arrow showing the bearing and distance to the locked target.
  • /helicamtune: admin tool to fit the camera and light position per helicopter model, saved for everyone.

#What it can not do

  • It does not stream the camera picture to other players. Others see the beam and the callouts.
  • It has no built-in CAD or radio. A Config.Callout.Hook is provided so you can forward callouts to yours.
  • Thermal colour presets (white hot, black hot, amber, green) only appear on server builds that have both SeethroughSetColorNear and SeethroughSetColorFar. On other builds thermal uses GTA's default look and the preset key is hidden.
  • Person tracking and evidence snapshots are not in v1.0.

#Install

  1. Put the CES_HeliCam folder in your resources folder.
  2. Make sure OneSync is on.
  3. Add to server.cfg:
ensure CES_HeliCam

add_ace group.police cheli.use allow
add_ace group.police cheli.unit allow
add_ace group.admin  cheli.admin allow
  1. Add your players to those groups (for example add_principal identifier.license:xxxx group.police).
  2. Restart the server, get in a police helicopter and press E or type /helicam.

To test with no permissions set, set Config.EnableAceChecks = false in config.lua. The tuner always needs cheli.admin.

#Permissions

ACE Who Gives
cheli.use Camera operators Open the camera. Also counts as cheli.unit.
cheli.unit Ground units Receive callouts, see marks, send /lightme.
cheli.admin Admins /helicamtune.

Use Config.CustomPermissionCheck(src, kind) to hook a framework job check. Return true or false, or nil to fall back to ACE.

#Using the camera

You must be in a listed helicopter (pilot or passenger) at least 3 m above the ground.

Key Action
E or /helicam Open / close the camera (rebind in Settings > Key Bindings > FiveM)
Mouse Move the camera
Mouse wheel Zoom
Right mouse Vision: normal, night, thermal
Space Lock / release the vehicle under the crosshair
Q Target info: full, compact, off
M Light: small, medium, large, off
G Mark target for ground units (press again to clear)
B Auto callouts on / off
Y / N Accept / decline a /lightme request
Z Thermal colour preset (only on builds that support it)

#Callouts

With a target locked, units with cheli.unit get a chat line and a GTA notification, for example:

AIR-1: Eyes on a Karin Sultan, heading east on Vinewood Blvd, 45 mph.

Updates repeat every 7 seconds. Extra lines are posted when the target stops, moves again, or is lost. The server limits each operator to one callout every 2.5 seconds. Turn callouts off with B.

Change the unit name with Config.Callout.UnitName, add the plate with IncludePlate, and forward lines to your own radio with Config.Callout.Hook.

#Target marks

Press G with a locked target or light on the ground. Units see a blip and a search radius for 120 seconds. The server checks that the mark is within range of the camera before accepting it.

#Light requests

A ground officer types /lightme. The nearest active camera within 1500 m gets a prompt for 12 seconds. On Y the camera and beam stay on the officer for 25 seconds. Cooldown is 20 seconds per player.

#Pilot arrow

When the operator locks a target, the pilot sees an arrow and a distance on screen so they can fly to it. Off with Config.Pilot.Enabled = false.

#Offset tuner

Not every helicopter has the camera in the same spot. As an admin, open the camera and type /helicamtune.

Key Action
Arrow keys, Page Up / Page Down Move the offset
Enter Switch between camera and light
Numpad Enter Save
Shift / Ctrl Fine / coarse steps

Saved offsets go to offsets.json and apply to every player on that model.

#Configuration

Everything is in config.lua (not locked by escrow).

Setting What it does
Config.Command, Config.Keybind Open command and default key
Config.Units mph or kph
Config.Helicopters Spawn names allowed. Add-on helicopters are fine.
Config.Models Per-model camera and light offsets (ships with Polmav and Annihilator)
Config.Camera Height limit, FOV range, zoom, sensitivity, smoothing, shake
Config.Vision Default mode and thermal presets
Config.Light Colour, three stages, sync range
Config.Callout Interval, stop detection, plate, chat, notify, hook
Config.Mark Duration, cooldown, blip style
Config.Request /lightme command, range, timings
Config.Controls Every key (GTA control ids)
Config.Strings All text, for translation

#For developers

Client events: ces_helicam:opened, closed, locked, released, calloutPosted, marked.
Server exports: exports.CES_HeliCam:GetOperators(), IsOperator(src), GetMark(src).

#Troubleshooting

Nothing happens when I press E. Check you are in a helicopter listed in Config.Helicopters, at least 3 m up, and that you have cheli.use. Check the key is not rebound.

"You are not authorised." The ACE lines are missing or the player is not in the group. Test with Config.EnableAceChecks = false.

The camera or light comes from the wrong place. Use /helicamtune for that model.

Other players do not see the beam. They must be within 700 m and OneSync must be on.

Thermal has no colour options. Your server build lacks the colour natives. Thermal still works in GTA's default look.

No callouts. Callouts need a locked target and units with cheli.unit. Check B has not turned them off.

Script error after update. Replace the whole resource folder, keep your config.lua values, and restart.

No ratings yet