Configuration
Every option in tChirp's config.lua with its type and default: access, which ELS the siren is read from, chirp timing, per-model sound assignments, and the keys renamed in 1.1.0.
Everything is in config.lua. Edit the file, restart the resource. tChirp runs with zero edits.
Access
Who may park-kill a car onto the chirp list. The default is everyone.
| Option | Type | Default | What it does |
|---|---|---|---|
Config.access.mode | string | list | "everyone" | everyone, ace, job, item, custom, or a list of them |
Config.access.ace | string | "tchirp.use" | For mode = "ace" |
Config.access.job | table | { police = 0, sheriff = 0, statepolice = 0 } | name = minimum grade; 0 accepts any |
Config.access.item | string | "police_radio" | For mode = "item" |
Config.access.count | number | 1 | How many of that item |
Config.access.custom | function | nil | Takes a player id, returns true to allow |
A list passes if either entry does. Six frameworks and nine inventories resolve out of the box.
Siren provider
tChirp asks one question: was the siren on? The default, auto, covers every case below, including two ELS resources on one server.
| Option | Type | Default | What it does |
|---|---|---|---|
Config.sirenSystem | auto | tels | lvc | lvc_fleet | els_fivem | jls | als | native | "auto" | Which system is asked whether the siren was on |
Config.sirenResources | table | { tels = 'tELS', jls = 'Jace3483_JLS' } | Folder names of the two export-based providers |
| System | Read from | Name needed? | Notes |
|---|---|---|---|
| tELS | exports[name]:IsSirenActive(vehicle) | Yes — tels | |
| JLS | exports[name]:IsSirenActive(vehicle) | Yes — jls | |
| Luxart Vehicle Control | lvc:UpdateThirdParty event | No | On when the tone is above zero |
| LVC Fleet | the same event as LVC | No | |
| ELS-FiveM | els:setSirenState_c event | No | |
| Advanced Lighting System | the four ALS:*SirenClient events | No | Either siren counts as on |
| Plain GTA siren | IsVehicleSirenOn(vehicle) | No | The fallback when nothing else claims the car |
Rename tELS or JLS and you must say so in Config.sirenResources, or it silently stops answering.
The cascade order
With auto, the first provider that recognises the vehicle answers:
tels → lvc / lvc_fleet → els_fivem → jls → als → nativeAsking about a vehicle you are not in
LVC, ALS and ELS-FiveM only answer for the vehicle you are in. Asking IsSirenActive about any other car both gets a useless answer and suppresses your own park kill, so do not poll nearby traffic.
My ELS is not one of these
Nothing claims your vehicles, so every park falls through to the native check.
| Symptom | What happened |
|---|---|
| Nothing ever chirps | Your ELS sets no siren flag; the check reads false |
| Every park chirps, siren off | Your ELS never clears the flag; the check reads true forever |
For the second, pinning Config.sirenSystem to the closest match is a workaround, not a fix. Report your ELS and it can be supported directly, as ALS is.
Chirp timing
| Option | Type | Default | What it does |
|---|---|---|---|
Config.chirpMinIntervalMs | number ≥ 1 | 4000 | Shortest gap between chirps, ms |
Config.chirpMaxIntervalMs | number ≥ 1 | 6000 | Longest gap between chirps, ms |
Config.chirpMinDurationMs | number ≥ 1 | 75 | Shortest chirp, ms |
Config.chirpMaxDurationMs | number ≥ 1 | 125 | Longest chirp, ms |
Config.debug | boolean | false | DEBUG log level on client and server |
Ranges are inclusive and drawn fresh per chirp. Min equal to max gives a fixed value; min above max is refused at startup; there is no upper bound. Config.debug prints a line per park kill, sync, chirp and refusal — leave it off on a live server.
Vehicle assignments
| Option | Type | Default | What it does |
|---|---|---|---|
Config.chirpAssignments | table | eight base-game police models | Spawn name → the sound that model chirps |
Config.chirpAssignments = {
['police'] = { sound = 'VEHICLES_HORNS_POLICE_WARNING', ref = 0 },
['police2'] = { sound = 'SIREN_PRIORITY', ref = 'DLC_WMSIRENS_SOUNDSET' },
}sound goes to PlaySoundFromEntity; ref is a soundset name or 0 for these:
sound, with ref = 0 | What it is |
|---|---|
VEHICLES_HORNS_POLICE_WARNING | Short attention chirp. The default |
VEHICLES_HORNS_SIREN_1 | Wail |
VEHICLES_HORNS_SIREN_2 | Yelp |
VEHICLES_HORNS_AMBULANCE_WARNING | Powercall |
A malformed entry — no sound, or a bare number where the table belongs — is reported at startup by model name, not skipped.
Tommy's Chirp
Still stuck? Support can answer it directly.
Was this page helpful?
TIMMYG Studios