Vehicle Sirens Editor
Edit carcols.meta siren settings with a live preview and a 32 step pattern grid, export carcols.meta, and find free or clashing siren ids on your server.
The Vehicle Sirens Editor builds and tunes emergency lighting for GTA V vehicles. You edit every siren light’s colour, direction, rotation, flash and 32 step pattern with a live preview on the real vehicle layout, set the timing, and export a carcols.meta. The Siren ID check tab reads all your carcols and carvariations files and shows which siren ids are taken, free or clashing.
What it is for
Siren settings are hard to write by hand: each one has 20 lights, each light has two 32 bit patterns stored as big decimal numbers, and you cannot see the result without restarting and driving into the dark. The editor shows the pattern as a grid you paint with the mouse and plays it on the vehicle, so you can build a wig wag or a rotator bar in minutes.
The id checker solves the other common problem on emergency vehicle servers: two packs that use the same siren id, so one set of cars shows the wrong lights.
How siren settings work
A siren setting is one <Item> in the <Sirens> block of a carcols.meta. It has an id, timing for the whole set (sequencerBpm, timeMultiplier), how the cast light behaves (falloff and cone angles), head and tail light patterns, and a list of exactly 20 lights. Light 1 is drawn at the model’s siren1 bone, light 20 at siren20. A light with no matching bone on the model is skipped, so the same setting looks different on different cars.
The vehicle picks its setting in carvariations.meta with <sirenSettings value="ID" />. That number must match the id in carcols.meta. 0 means no sirens.
Every light has a 32 bit sequencer: one bit per beat at sequencerBpm, 1 is on and 0 is off. The file stores it as an unsigned decimal. Step 1 in the grid is the leftmost (highest) bit. 4294967295 is always on, 2863311530 is 1010…, 1431655765 is 0101…. At 300 BPM a full 32 step pattern takes 6.4 seconds. Flashing lights use the flashiness sequencer, rotators (rotate true) the rotation one.
Quick start
- Pick a game setting on the left (search by id, name or vehicle model), or click New setting, or Import carcols.meta.
- To build your own lights from a game setting, click Copy to new id. It copies the setting to the next free id from 100 up.
- Press Play in the Preview panel and paint steps in the Patterns grid.
- Click a lamp in the preview (or a light name in the grid) and edit it in the Light panel.
- Set the timing and cone values in the Setting panel.
- Open the carcols.meta tab under the editor and copy or download it. Use the carvariations tab to see where the id goes, and the fxmanifest tab for the resource manifest.
Your work is saved in this browser. Links like ?id=16 open a game setting, ?tab=ids opens the id checker, and ?view=rear starts the preview in the rear view.
The setting list
The list has two groups:
- Yours: settings you edited, copied, created or imported, with a badge (edited, new, import) and where they came from (“copy of 1”, “from carcols.meta”).
- Game: the 21 game settings (ids 0 to 20, build 3889) from the base game and DLCs, with the vehicles that use each one. Id 0 is a placeholder that nothing uses.
Each row shows a strip of the first eight light colours.
Editing a game setting vs copying it
You can edit a game setting in place. It then shows as edited and exports with its game id, which replaces that id for every vehicle that uses it (for example id 1 is police/sheriff). The id box is locked for game settings. For your own car, use Copy to new id instead.
Reset (N) puts the setting back to what it was loaded as (the game values, the import, or the state when you copied it). Remove drops your own settings from the list.
Header and warnings
The id and name fields sit at the top. Ids above 255 or below 1 turn the box red. Amber warnings appear when:
lightInnerConeAngleis not smaller thanlightOuterConeAngle.- The setting has more or fewer than 20 lights.
sequencerBpmis 0 or below.- The id is 0, or above 255.
Preview
The preview draws the lights on a vehicle layout, seen from the Top or the Rear.
| Control | What it does |
|---|---|
| Model select | Auto uses a vehicle that uses this setting (or police), Generic layout uses a neutral layout, or pick any of the listed models. |
| Play / Pause | Plays the pattern at the setting’s BPM. Starts paused if your system asks for reduced motion. |
| Step | Advances one sequencer step. |
| Restart | Back to step 1. |
| 0.25x, 0.5x, 1x | Playback speed. |
Click a lamp in the preview to select that light. If the model has no bone for some of the lights, a note under the preview tells you how many are not drawn (the game skips them too).
The timing, which lights are lit on which step, multiples, colours and lamp positions follow the setting. Glow size, beam length, brightness and rotator speed are approximations, so always check the result in game.
Patterns
The Patterns panel shows one row of 32 steps per light. Click a cell to toggle it, or click and drag to paint. The current playback step is highlighted.
| Mode | What the grid edits |
|---|---|
| In use | The rotation pattern for rotators, the flash pattern for the rest. |
| Flash | Every light’s flashiness sequencer. |
| Rotation | Every light’s rotation sequencer. |
Below it, Head and tail lights has four rows (left and right head, left and right tail) for flashing the car’s real lights, with a useRealLights switch. Guides advise at most 4 flashes in a row.
Light
Pick a light with the numbered buttons or the siren1 to siren20 dropdown. The header says whether it is a rotator, flasher or not lit, and whether it casts a spot light, a round light or only a corona.
Colour to all gives every light this colour. Settings to all copies every field except the colour and the patterns to the other lights.
Switches
| Switch | What it does |
|---|---|
rotate |
Spins the light (rotator). Uses the rotation pattern. |
flash |
Flashes the light. Uses the flash pattern. |
light |
Casts real light on the world, not only a corona. |
spotLight |
Cone shaped light instead of a round glow. Rotators need it to look like they spin. |
scale |
Corona grows with scaleFactor while lit. |
castShadows |
The cast light makes shadows. Costs performance; game files keep it off. |
Colour
Use the colour picker, type 0xAARRGGBB in the text box, or click a preset: Red FFFF0300, Blue FF0019FF, Amber FFFFAA00, White FFFFFFFF, Green FF00FF0D, Magenta FFFF00FB. Game lights use alpha FF; the tool tells you when yours is lower.
Numbers
| Field | What it does | Range |
|---|---|---|
intensity |
Brightness of the light cast on the world. | 0 to 10 |
scaleFactor |
Corona size while flashing when scale is on. |
0 to 255 |
lightGroup |
Lamp group. Game files use 0 to 3. | 0 to 255 |
flashiness and rotation
Each has its own block, and the one in use is highlighted:
| Field | What it does |
|---|---|
sequencer |
The 32 step pattern. Pick from Presets… (Always on, Off, Alternate A/B, Pairs A/B, Quads A/B, Half A/B, Triple flash A/B), shift it one step left or right, invert it, or type it as decimal, 0x hex, -1 or a 32 character bit string. |
| Direction dial | Click a dot to point the light front, back, left, right or diagonal. The top of the dial is the front of the car. |
delta |
Facing in radians: 0 front, 1.5708 left, 3.1416 back, -1.5708 right. |
start |
Start angle, added to delta. |
speed |
Spin speed for rotators. |
multiples |
Flashes inside one lit beat. |
direction |
Flips the spin direction. |
syncToBpm |
Ties the timing to sequencerBpm. |
The light also shows its own warnings, for example rotate and flash both on, neither on, an empty pattern, or a rotator without spotLight.
corona
intensity (0 hides the corona), size (0 hides it too), pull (pulls the corona towards the camera so it shows through the lamp glass) and faceCamera.
Setting
| Field | What it does | Default for a new setting |
|---|---|---|
sequencerBpm |
Beats per minute. Game lightbars use 150 to 300. | 300 |
timeMultiplier |
Scales the BPM. 2 plays the pattern twice as fast. | 1 |
lightFalloffMax |
How far the cast light reaches, metres. | 10 |
lightFalloffExponent |
How hard the light fades towards the max distance. | 10 |
lightInnerConeAngle |
Full brightness part of each spot cone, degrees. | 2.29061 |
lightOuterConeAngle |
Edge of each spot cone, degrees. | 70 |
lightOffset |
Offset of the cast light from the lamp. Game lightbars use 0. | 0 |
textureName |
Corona texture. Leave it at VehicleLight_sirenlight. |
VehicleLight_sirenlight |
The four head and tail light sequencers also have their pattern tools here, each with a ...Multiples value. If a setting has fewer than 20 lights, Fill up to 20 lights adds blank, unlit ones.
A New setting starts with 20 lights: red on odd lights, blue on even ones, flashing in turns.
Importing
Click Import carcols.meta, paste a whole carcols.meta, its <Sirens> block or one siren <Item>, and press Parse, or use Open files to load several files at once. Kits and lights in the file are ignored. Signed sequencers like -1 are read too. Missing or odd fields are filled with defaults and listed under field warnings. The message also tells you when an imported id is also a game id. Importing the same file again replaces its settings instead of adding copies.
Output
The tabs under the editor:
| Tab | What you get |
|---|---|
| carcols.meta | A carcols.meta with every setting in your export: edited game settings, copies, new and imported ones. |
| carvariations | Where to put each id in your vehicle’s carvariations.meta. |
| fxmanifest | A ready fxmanifest.lua. |
| Settings | Every exported setting with its changed fields, a Copy Item button (one setting to paste into an existing Sirens block) and a button to drop it from the export. |
carcols.meta
<?xml version="1.0" encoding="UTF-8"?>
<CVehicleModelInfoVarGlobal>
<Sirens>
<Item>
<id value="100" />
<name>my_sirens</name>
<timeMultiplier value="1.000000" />
<lightFalloffMax value="10.000000" />
<lightFalloffExponent value="10.000000" />
<lightInnerConeAngle value="2.290610" />
<lightOuterConeAngle value="70.000000" />
<lightOffset value="0.000000" />
<textureName>VehicleLight_sirenlight</textureName>
<sequencerBpm value="300" />
<leftHeadLight>
<sequencer value="0" />
</leftHeadLight>
<!-- rightHeadLight, leftTailLight, rightTailLight -->
<leftHeadLightMultiples value="1" />
<rightHeadLightMultiples value="1" />
<leftTailLightMultiples value="1" />
<rightTailLightMultiples value="1" />
<useRealLights value="true" />
<sirens>
<Item> <!-- siren1 -->
<rotation>
<delta value="0.000000" />
<start value="0.000000" />
<speed value="3.000000" />
<sequencer value="4294967295" />
<multiples value="1" />
<direction value="false" />
<syncToBpm value="true" />
</rotation>
<flashiness>
<delta value="0.000000" />
<start value="0.000000" />
<speed value="1.000000" />
<sequencer value="2863311530" />
<multiples value="1" />
<direction value="true" />
<syncToBpm value="true" />
</flashiness>
<corona>
<intensity value="50.000000" />
<size value="1.100000" />
<pull value="0.200000" />
<faceCamera value="false" />
</corona>
<color value="0xFFFF0300" />
<intensity value="0.500000" />
<lightGroup value="0" />
<rotate value="false" />
<scale value="true" />
<scaleFactor value="2" />
<flash value="true" />
<light value="true" />
<spotLight value="true" />
<castShadows value="false" />
</Item>
<!-- siren2 to siren20 -->
</sirens>
</Item>
</Sirens>
</CVehicleModelInfoVarGlobal>A carcols.meta that only has a <Sirens> block is fine. If your vehicle resource already ships a carcols.meta, paste the setting’s <Item> (use Copy Item on the Settings tab) into its Sirens block instead of adding a second file with the same id.
carvariations.meta
<Item>
<modelName>yourcar</modelName>
<!-- colors, kits, plateProbabilities... stay as they are -->
<sirenSettings value="100" />
</Item>For a copy of a game setting, the tab fills in a vehicle that used the original id. Edited game settings need no carvariations change, their vehicles already point at that id.
fxmanifest.lua
fx_version 'cerulean'
game 'gta5'
files {
'data/carcols.meta',
'data/carvariations.meta',
}
data_file 'CARCOLS_FILE' 'data/carcols.meta'
data_file 'VEHICLE_VARIATION_FILE' 'data/carvariations.meta'Save the files in a data folder next to this manifest and ensure the resource. Leave out the carvariations lines if the vehicle resource already loads its own.
Siren ID check
The Siren ID check tab reads files and tells you which ids are in use.
- Drop
carcols.metaandcarvariations.metafiles on the Files box (several at once, from every siren resource on your server), or paste the text of a file and click Add. - Leave Include the game’s ids on to see clashes with game settings. Turn on Include my editor settings to check what you built in the editor.
- Read the results.
| Result | What it shows |
|---|---|
| Id map 0 to 255 | A 16 by 16 grid: game ids, yours, warnings and clashes. Hover a cell for details. |
| Problems / Ids in your files / Free ids (1 to 254) | Counts. |
| Next free ids | Ids you can copy, from 100 up, then the gap above the game’s ids. Plus the list of free ranges. |
| Vehicles with more than one id | A model pointed at different ids by different carvariations files. The last one loaded wins. |
| Ids table | Each id, where it is defined, which models use it, and its status. |
| Status | Meaning |
|---|---|
| Clash | Defined more than once. Only one definition wins. |
| Replaces game | Same id as a game setting. Every game vehicle on that id gets your lights. |
| Not defined | A carvariations entry points at an id no loaded carcols (or the game) defines. |
| Unused | Defined, but no loaded carvariations points at it. |
| Over 255 | Only works with the SirenSetting Limit Adjuster on every client. |
| OK | Defined once, no clash. |
Files over 20 MB are skipped. Nothing is uploaded.
The 255 id limit
- The id is a single byte in both carcols and carvariations, so ids go up to 255. 0 means no sirens and the Limit Adjuster reserves 255, so 1 to 254 is the safe range.
- The game uses ids 1 to 20 at build 3889, and Rockstar adds more with DLCs, so start your own ids higher. The tool suggests ids from 100 up.
- FiveM does not raise the limit (citizenfx/fivem#2612 is still open). The client side SirenSetting Limit Adjuster allows higher ids, but every player has to install it.
Warning
Two resources with the same siren id do not crash anything, which is why the problem goes unnoticed. Run every carcols.meta on your server through the Siren ID check before adding a new pack.
Common mistakes
- Id in carcols does not match carvariations. Put the same number in
idandsirenSettings. - Editing a game setting when you meant to make your own. That changes every vehicle on that id. Use Copy to new id.
- Rotate and flash both on. The game handles one mode per light. Pick one.
- Rotator without
spotLight. It becomes a round glow and the spin cannot be seen. - Fewer than 20 lights. Use Fill up to 20 lights so the
<sirens>list is complete. - A second carcols.meta with the same id inside a pack that already has one. Merge the Item into the existing Sirens block.
Limitations
The preview is a guide, not the game renderer: glow, beam length, brightness and rotator speed are approximate. The tool only reads and writes the <Sirens> part of carcols.meta; kits and lights are ignored on import and not written. Everything runs in your browser.
