carcols.meta
Overview
carcols.meta
is an xml file that contains lighting configurations for vehicles. It defines headlights, tail lights, and emergency lights.
We will focus on how to configure emergency lights using sirens as well as how to set up modkits. If you're looking for details about every value in the file, check out the the GTAMods Wiki. (opens in a new tab)
Siren Walkthrough
Below are the more significant values in carcols.meta
that are used to configure emergency lights.
Delta/Rotation
Siren deltas determine the rotation of the emissive mesh, and the environment lighting.
<delta value="2.35619449">
There are 8 commonly used delta values.
Direction | Side | Dummy Angle | Siren Delta |
---|---|---|---|
Front | Front | 0 | 0.00000000 |
Right | Passenger | 90 | -1.57079633 |
Back | Rear | 180 | 3.14159265 |
Left | Driver | -90 | 1.57079633 |
Front Right | Passenger | 45 | -0.78539816 |
Back Right | Passenger | 135 | -2.35619449 |
Back Left | Driver | -135 | 2.35619449 |
Front Left | Driver | -45 | 0.78539816 |
Be sure to set the delta value in both the rotation section and the flashiness section as shown below.
...
<Item> <!--siren1-->
<rotation>
<delta value="1.57079633" />
<start value="0.00000000" />
<speed value="3.00000000" />
<sequencer value="572662306" />
<multiples value="1" />
<direction value="false" />
<syncToBpm value="true" />
</rotation>
<flashiness>
<delta value="1.57079633" />
<start value="0.00000000" />
<speed value="3.00000000" />
<sequencer value="572662306" />
<multiples value="1" />
<direction value="false" />
<syncToBpm value="true" />
</flashiness>
...
Sequencers
Sequencers are decimal values that represent 32-bit binary strings. Sequencers are converted to binary at runtime and used to determine the pattern that sirens flash in.
Each digit of the 32 digit binary value represents a "tick" of the BPM value. On each tick, the siren is either turned on when the value is 1 or off when the value is 0. This is the format that we edit sequencers in, but the game reads them as decimal values.
Binary sequence example:
11110000111100001111000011110000
Decimal value for the above sequence:
4042322160
The decimal value is what we will use in carcols.meta
. Be sure to set the sequencer value in both the rotation section and the flashiness section as shown below.
<Item> <!--siren1-->
<rotation>
<delta value="1.57079633" />
<start value="0.00000000" />
<speed value="3.00000000" />
<sequencer value="4042322160" />
<multiples value="1" />
<direction value="false" />
<syncToBpm value="true" />
</rotation>
<flashiness>
<delta value="1.57079633" />
<start value="0.00000000" />
<speed value="3.00000000" />
<sequencer value="4042322160" />
<multiples value="1" />
<direction value="false" />
<syncToBpm value="true" />
</flashiness>
...
To convert binary values to decimal values you can use any online tool such as Rapid Tables (opens in a new tab).
There are multiple ways you could go about creating sequencer binary values and patterns.
The first method is by just manually creating a binary value in any text editor (otherwise known as torture).
The more efficient method is by using Siren Tool which will allow you to visually generate sequencer values, and converts them for you,
or generates an entire carcols.meta
file for you.
Check out the page below to get started with Siren Tool.
Coronas
Coronas are the orbs of light that appear on the vehicle when the siren is on. You can control the size, intensity of the coronas.
...
<corona>
<intensity value="0.00000001"/>
<size value="0.00000000"/>
<pull value="0.15000000"/>
<faceCamera value="false"/>
</corona>
...
Most people choose to entirely hide the coronas by using values similar to the ones above.
Colors
<color value="0xFFFF0000">
Most Used Colors
Color Name | Hex | ARGB |
---|---|---|
Red | 0xFFFF0000 | |
Blue | 0xFF0000FF | |
White | 0xFFFFFFFF | |
Amber | 0xFFFFD700 | |
Yellow | 0xFFFFFF00 | |
Green | ||
Purple |
Standard Colors
Color Name | Hex | ARGB |
---|---|---|
BlackGraphite | 0xFF0F0F0F | 255, 15, 15, 15 |
ChocolateBrown | 0xFF3F2D18 | 255, 63, 45, 24 |
MetallicPurple | 0xFF320642 | 255, 50, 6, 66 |
HotPink | 0xFFB01259 | 255, 176, 18, 89 |
FormulaRed | 0xFF6B0000 | 255, 107, 0, 0 |
MetallicBlue | 0xFF001B57 | 255, 0, 27, 87 |
UltraBlue | 0xFF2070D8 | 255, 32, 112, 216 |
RacingGreen | 0xFF00441B | 255, 0, 68, 27 |
LimeGreen | 0xFF418503 | 255, 65, 133, 3 |
RaceYellow | 0xFFD9A600 | 255, 217, 166, 0 |
ClassicOrange | 0xFFBD4800 | 255, 189, 72, 0 |
MetallicGold | 0xFFAD7B47 | 255, 173, 123, 71 |
ClassicWhite | 0xFFF0F0F0 | 255, 240, 240, 240 |
Data gathered by Zero parsed by, HairyMineFart, and Organized by Dawnstar
Non-standard colors were excluded, but could give different results than the one above. If you want to try other values you can find the full list of colors here (opens in a new tab)
Scale Factor
Scale factor determines by what factor/multiple the emissive meshes parented to the Siren will scale up.
If the mesh was scaled down to 0.01 in ZModeler, it needs to be scaled up by 100 in carcols to work properly in-game. You can technically use any value if you want to do the math, but below are some of the most commonly used values.
Mesh Scale | Scale Factor |
---|---|
0.01 | 100 |
0.001 | 1000 |
It is recommended to use a value smaller than 0.1 to hide the emissive mesh more effectively while scaled down.
Speed Value
This section needs contributors! Edit this page (opens in a new tab) or learn other ways to contribute!
Light Groups
This section needs contributors! Edit this page (opens in a new tab) or learn other ways to contribute!
Environment Lighting
Whenever the Siren is on it shines light in the world. You can control the intensity, angle, and color of the light.
The four main values are lightFalloffMax
, lightFalloffExponent
, lightInnerConeAngle
and lightOuterConeAngle
.
View this diagram below to get an idea of how they each effect the light source.
lightFalloffMax
Controls the maximum distance that the light can reach. Works like a "power" value if everything else is setup properly. A good range for this value is between 40 and 100.
<lightFalloffMax value="80.00000000" />
lightFalloffExponent
Controls how quickly the light fades out as it reaches the lightFalloffMax
distance. This value should be around 65% of the lightFalloffMax
value
for the best results.
<lightFalloffExponent value="52.00000000" />
This value must always be lower than lightFalloffMax
!!!!!
lightInnerConeAngle
Controls where the light starts to fade out horizontally. Inside this angle, the light will remain at 100% strength (horizontally/inside to outside). This value should be between 2 and 10 for best results.
<lightInnerConeAngle value="2.30000000" />
lightOuterConeAngle
Controls the width of the light cone. This value should be between 30 and 90 for best results depending on your use case. A lower value will create a more focused light like a spotlight, and a higher value will create a wider light like a floodlight.
<lightOuterConeAngle value="70.00000000" />
Rotator Lights
For information on rotators click through to the content originally hosted here (opens in a new tab) by Smanbg (opens in a new tab), Cj24 (opens in a new tab) and PNWParksFan (opens in a new tab). A small snippet is shown below.
In comparison to your traditional strobe or LED lightbar with flashing lights, rotating lights require quite a different approach when using them, in particular, the sirens have to be covered, rather than scaled down. This guide is going to walk through the two common methods for rotator lightbars.
First and foremost, the rotating modules have to be attached to the emissives, as that is what forms the siren - a rotating module and the emissive itself, and lastly - reset the local axis. After that is done, set your lightbar up as you would any lightbar, this also applies to any modules that are not rotatable.
The next step on the list is covering the emissives. The rotator lightbar is a constant-spinning bar that relies on the rotation section of your siren in the carcols, which is also why it cannot be scaled and why the emissives should be covered when the lights are not on.
Rotator Speed
It is possible to decrease the speed of rotators without decreasing the BPM and instead using the speed value and adjusted sequencers. In the rotation settings, syncToBpm must be turned off to be able to use the speed value. The exact speed value required depends on your BPM and the sequencer.
To slow down the lights, slower sequencers must be used, the more 1s are in the sequencer, the higher the speed. 1s must always be separated by an equal number of 0s. This results in the following sequencers and speed values:
The speed value must be set proportionally to the BPM and the sequencer. To calculate the required speed value, use the following formula:
Good Rotary BPM is 120 BPM with Flash set to False
Other Values
id
Value must match siren ID value in Carvariations.meta (opens in a new tab) for the same vehicle.
Should be between 1000-40000 for most consistent results. Some numbers don't work inexplicably.
<id value="2121"/>
timeMultiplier
Multiplies the BPM by the value specified.
<timeMultiplier value="1.00000000"/>
Time x BPM (Ex. 1.0 x 600 = 600 BPM)
textureName
Don't Change this! Specifies corona texture.
<textureName>VehicleLight\_sirenlight</textureName>
sequencerBpm
<sequencerBpm value="600"/>
Headlights and Taillights
When working with headlight and taillight sequencers you have to account for a delay for the fade in and out of the lights.
The default/standard sequencers that will give you the typical back and forth wig-wag effect are:
10000000100000001000000010000000
and 00001000000010000000100000001000
If you have other good sequencers please contribute them!
Headlights Example
<leftHeadLight>
<sequencer value="0"/>
</leftHeadLight>
<rightHeadLight>
<sequencer value="0"/>
</rightHeadLight> --This section controls headlight and Tailight Flashes,
<leftTailLight> -- In Binary make sure itflashes NO MORE than 4 times in a row!
<sequencer value="0"/>
</leftTailLight> --Ex. 10101010000000001010101000000000
<rightTailLight> --00000000101010100000000010101010
<sequencer value="0"/>
</rightTailLight>
<leftHeadLightMultiples value="1"/> --How many times the Corona to flash within the BPM
<rightHeadLightMultiples value="1"/> --For example BPM is 600 if you change the Multiple to 5
<leftTailLightMultiples value="1"/> --It would be 600*5 = 3000 Corona Flashes
<rightTailLightMultiples value="1"/> --(TOO EXCESSIVE!!)
<useRealLights value="true"/> --If you want the Flashes to actually use the Headlights
Modkits
Overview
carcols.meta
controls the modkits items that are on the vehicle. This includes aftermarket parts such as exhausts, trims, steering wheels etc.
There are many different options avaliable to control what the modkits do.
How to Setup Modkits
To keep the file formatted in a way that aligns with GTA, the modkit items should be put at the very beginning of the carcols file. Add a modkit item to the carcols file by using the following code:
<?xml version="1.0" encoding="UTF-8"?>
<CVehicleModelInfoVarGlobal>
<Kits>
<Item>
</Item>
</Kits>
...
Now give your modkit a name, id, and kitType. The name will be how you reference the modkit later.
Your modkit name should be followed by _modkit
The ID value is a unique number to identify the modkit similar to the siren ID value. This makes sure the modkits are unique to the vehicle.
There is limited information available about the kitType, leaving it as MKT_SPECIAL
will work.
<?xml version="1.0" encoding="UTF-8"?>
<CVehicleModelInfoVarGlobal>
<Kits>
<Item>
<kitName>myVehicle_modkit</kitName>
<id value="47543" />
<kitType>MKT_SPECIAL</kitType>
</Item>
</Kits>
...
Adding Modkit Items
Modkit parts need to be exported from ZModeler and placed in the stream
folder.
Visible mods will go in the visibleMods
tag like below.
<?xml version="1.0" encoding="UTF-8"?>
<CVehicleModelInfoVarGlobal>
<Kits>
<Item>
<kitName>myVehicle_modkit</kitName>
<id value="47543" />
<kitType>MKT_SPECIAL</kitType>
<visibleMods>
<!-- items -->
</visibleMods>
</Item>
</Kits>
...
Each of our items will go inside those tags.
Here's an example item:
<Item>
<modelName>ITEM_NAME</modelName>
<modShopLabel>ITEM_SHOP_LABEL</modShopLabel>
<linkedModels />
<turnOffBones>
<Item>misc_*</Item>
</turnOffBones>
<type>VMT_*</type>
<bone>chassis</bone>
<collisionBone>chassis</collisionBone>
<cameraPos>VMCP_DEFAULT</cameraPos>
<audioApply value="1.000000" />
<weight value="20" />
<turnOffExtra value="false" />
<disableBonnetCamera value="false" />
<allowBonnetSlide value="true" />
</Item>
Below are the different options you can use for the modkit items.
Tag Name | What is is? | Accepted value type | Options |
---|---|---|---|
modelName | This is the name of the file in the stream folder. | Name | N/a |
modShopLabel | This is the name that will show up in the customization screens. This is not really used in FiveM / GTA unless its being customized within a Los Santos Customs | Name | N/a |
linkedModels | This links two modkits together allowing you to turn two or more things on when you turn on option on. | Items | Items |
turnOffBones | This allows you to turn off bones within the car. For example, turning off a mirror when replacing the option. This has to be a misc item. | Item | Items |
type | This defines the type of the modkit. | Name | Find a list of types here (opens in a new tab) |
bone | This defines what bone the modkit is linked to. Chassis is standard if you are just adding something on. | String | Find a list of bones here (opens in a new tab) |
collisionBone | This defines what collision the modkit item will use. Once again, the chassis is normally standard but you can add different collisions. | Name | Fin a lit of collisions here (opens in a new tab) |
cameraPos | This allows you to change how the camera works with the modkit enables. This isn't normally changed from VMCP_DEFAULT though. | Name | N/a |
audioApply | This options isn't used very often alongside that there isn't a lot of information about it. It's best to leave the value at 1. | Name | N/a |
weight | The weight is what is applied to the vehicle once the modkit item is on. For example, if you add a massive wing onto your car you can add a bit more weight to slow the vehicle down. This option directly affects the handling. | String | N/a |
turnOffExtra | There isn't a lot of information on this but I'd assume it links with the vehicles.meta turnOffExtra. | Boolean | true / false |
disableBonnetCamera | This option turns off the bonnet camera off when the modkit item in enabled in game. | Boolean | true / false |
allowBonnetSlide | This will stop players from sliding over the bonnet when the modkit item is enabled. | Boolean | true / false |
Debugging modkits
If in the event your modkits do not work, here are some tips on how to fix it:
- Ensure your modkit ID is unique to the individual vehicle. The values can be from 0-1023 but some may overlap with other vehicles. Just keep changing the ID until your options show up for you. You do not need to restart the server to update this.
- Ensure that the kiteName is in carvariations.meta
- Ensure that the .yft modkit items are in the stream folder.
- Ensure that the modelName is the same as the name of the .yft modkit in the stream folder.