Installation
How to install and configure tELS for your FiveM server.
Prerequisites
- FiveM server with OneSync enabled (Infinity or Legacy)
- tLib resource (minimum version
0.1) — tELS depends on it for discovery, persistence, admin ACE, dialogs, layouts, and the move-mode HUD editor - Lua 5.4 (the manifest already declares
lua54 'yes')
Not a drop-in ELS replacement
tELS does not load existing ELS or non-ELS vehicle packs. Vehicles are configured from scratch using the in-game editor, or by bundling a tels.json inside the vehicle resource.
Install
Extract the resource
Drop the tELS folder into your server's resources directory. If you group resources (e.g., [tScripts]), place it alongside them.
Start tLib before tELS
Order matters — tELS resolves tLib exports at load time.
ensure tLib
ensure tELSGrant admin access
The editor and server-wide defaults require tLib's admin ACE. Add it to any group that should be able to edit vehicles:
add_ace group.admin tlib.admin allowAdmins can:
- Open
/telsedit - Save server-wide display defaults (emissive, bloom, env quality, HUD layout) from
/tels - Open the editor button in
/tels
Start the server
On first run tELS creates data.json at the resource root to store vehicle configs. No further setup is required.
Quick start: light up your first vehicle
Goal: get an emergency vehicle flashing red and blue in under two minutes. Deeper configuration is covered in the Editor guide.
Spawn the vehicle
Spawn any emergency vehicle (e.g., police4) and get in.
Open the editor
Run /telsedit. The 3D editor opens with an empty LED list — the vehicle has no config yet.
Auto-create LEDs from the lightbar
In the LEDs tab sidebar, click Create from siren bones. tELS scans the vehicle's siren1…sirenN bones and adds a starter LED at each one, already grouped and sided. No manual placement needed to get started.
Add a basic pattern
Switch to the Patterns tab, click Add Pattern, set it to about 10 FPS, add a Red and a Blue color to the palette, then paint a few alternating columns across the grid. The pattern previews live on the vehicle as you paint.
Save and exit
Press Enter (or click Save). The config writes to data.json and broadcasts to every connected client.
Press Q
Back in the vehicle, press Q — lights on. Press R to burst the siren. Press 9 / 0 to cycle through any additional patterns.
From here, see:
- Editor guide — full LED / pattern / trigger / siren workflow
- Usage guide — every keybind, client setting, and mode
- Configuration — the
data.jsonschema and cross-vehicle references
File layout
| Path | Purpose |
|---|---|
fxmanifest.lua | Resource manifest |
data.json | Per-vehicle configs (auto-generated) |
shared/ | Shared helpers (UUIDs, resolvers, LED defaults, audio banks, geometry) |
server/sv_configs.lua | Discovery + ref-edit relays + server defaults |
server/sv_relay.lua | State bag ownership + remote state sync |
client/cl_lights.lua | Pattern playback, triggers, stages, sirens |
client/cl_hud.lua | HUD overlay + /tels dialog |
client/cl_input.lua | Keybinds, commands, park-kill thread |
client/cl_editor.lua | NUI editor bridge |
client/cl_renderer.lua | Unified LED render pipeline |
client/ui/ | Built NUI assets (do not edit) |
client/web/ | NUI source (SolidJS + Three.js) |
layouts/ | HUD layouts (auto-discovered) |
audio/ | Custom siren sounds (awc + dat54) |
stream/ | Arges spotlight ytyp |
data/server_defaults.json | Saved admin defaults (auto-generated) |
Do not edit `client/ui/`
These are built NUI assets. Source for the editor and HUD lives in client/web/. Build with bun run build from the resource root.
