Skip to content

Installation

Prerequisites, load order, admin ACE, your first lit vehicle, and the shipped file layout.

Prerequisites

RequirementDetail
FiveMOneSync enabled (Infinity or Legacy). State syncs through entity state bags
tLib1.0 or newer, free — download
Lua5.4, already declared in the manifest
Node22, already declared in the manifest
pma-voiceOptional. Only the PA mic needs it

Install

Extract the resource

Drop the folder into resources/, named exactly tELS — no spaces, no -main suffix.

Start tLib before tELS

server.cfg

ini
ensure tLib
ensure tELS

Grant the admin ACE

ini
add_ace group.admin tlib.admin allow

Grants /telsedit, Set as Server Defaults in /tels, and the editor button.

Start the server

tELS creates data.json at the resource root on first run.

Confirmed when /tels opens in game and the console shows no tLib version warning.

Your first lit vehicle

Five minutes, on a stock vehicle. You need the tlib.admin ACE and a vehicle with siren1…sirenN bones — police4 has them.

Spawn police4 and get in

Any seat.

Run /telsedit

The editor opens on the Lights tab with an empty LED list.

Click Create from siren bones

tELS drops a starter LED on each siren bone, grouped and sided. They appear in the sidebar and on the lightbar.

Add a pattern

Patterns tab → Add Pattern. Set 10 FPS, add Red and Blue to the palette, paint alternating columns.

Press Enter to save

The config writes to data.json and the editor closes.

Drive it

KeyDoes
QLights on and off
RSiren burst while held
9 / 0Step through patterns

It works if Q lights the vehicle for you and for a player standing next to it. Lit for you only means state is not replicating — check OneSync in Troubleshooting. Q doing nothing means the vehicle has no LEDs saved; every keybind needs at least one.

From here, the Editor covers placing LEDs by hand, building rules and configuring sirens.

Version compatibility

tELSRequires tLibNotes
1.0.x1.0 or newerEnforced at load by tlib_min_version in the manifest

On a version warning, update tLib — not tELS.

File layout

tELS
fxmanifest.lua
shared
utils.lua
model_fingerprint.lua
sh_config_baseline.lua
sh_config_check.lua
audio_banks.lua
siren_profiles.lua
led_math.lua
config
render_config.lua
pa_config.lua
server
sv_version.lua
sv_configs.lua
sv_relay.lua
dist
client
cl_env.lua
cl_textures.lua
cl_renderer.lua
cl_model_leds.lua
cl_model_fingerprint.lua
cl_siren.lua
cl_state_sync.lua
cl_triggers.lua
cl_lights.lua
cl_arges.lua
cl_pa.lua
cl_hud.lua
cl_marketplace.lua
cl_input.lua
cl_deck.lua
cl_editor.lua
flare.png
led.png
ui
layouts
audio
stream
stream_enhanced
PathPurpose
shared/UUIDs, model fingerprints, audio banks, siren profiles, LED geometry, and the two scripts that validate config/
config/render_config.luaLED cap and bloom bounds. Outside escrow — editable
config/pa_config.luaPA presets. Inside escrow
server/dist/Bundled server logic
server/sv_configs.luaDiscovery, ref-edit relays, server defaults
server/sv_relay.luaState bag ownership and remote state sync
client/cl_lights.luaPattern playback and stage state
client/cl_triggers.luaTrigger condition evaluation
client/cl_siren.luaSiren tone playback
client/cl_model_leds.luaModel-defined LED marker discovery
client/cl_arges.luaArges spotlight props
client/cl_pa.luaPA mic (pma-voice)
client/cl_env.luaStartup environment line and tels_diag
client/cl_hud.luaHUD overlay and the /tels dialog
client/cl_marketplace.luaMarketplace tab
client/cl_input.luaKeybinds, commands, park-kill thread
client/cl_deck.luaStream Deck key feed and button dispatch
client/cl_editor.luaNUI editor bridge
client/ui/Built NUI assets
layouts/HUD layouts, auto-discovered
audio/Custom siren sounds (awc + dat54)
stream/Arges props, Legacy (gen8). Carries the .ytyp the manifest names
stream_enhanced/The same props, Enhanced (gen9). The engine picks per asset, per client

data.json is written on first boot, not shipped. A copy missing anything else is an incomplete download.

Still stuck? Support can answer it directly.

Was this page helpful?