FiveM bike bugs: green tyres, black gauges and more

Green tyres, black gauges, smoke from one pipe, blinding headlights or pink tail lamps on FiveM bikes: what causes each and how we fixed it.

The bike loads and drives fine, but the tyres look green in daylight, the gauges are black circles, only one pipe smokes, the headlight blinds everyone or the tail lamps glow pink at night. Each of these comes from one small mistake in a texture, a meta file or a bone. We hit all of them building our own bikes.

Bike not spawning, missing textures or crashing is a different problem; start with troubleshooting for that.

Green tyres

The tyre texture looked neutral grey in the source file and had a green tint in game, mostly in daylight. Two separate causes.

Compressed dark textures

DXT1 / DXT5 (BC1 / BC3) store colour as 5-6-5 bits. Green gets the extra bit, so near-black greys decode slightly green. A tyre is almost all near-black, so the whole tread picks it up.

  • Save tyre diffuse textures, and other mostly black ones like rubber and dark trim, uncompressed as A8R8G8B8. 512 px is enough for a tyre.
  • Don't convert them back to DXT later to save space. The size difference is small, the colour shift isn't.
  • To confirm: decode the final DDS and sample a few pixels. G higher than R and B on a grey means compression.

Tyre vertex colours

The vehicle_tire shader reads vertex colours. Painting them pure white can shift the tyre green as well. Copy the values from a vanilla tyre. And keep vehicle_tire on the wheel only; on brake drums or fork parts it renders oddly.

Black gauges

Working dials need all three of these:

  1. <dashboardType> in vehicles.meta, e.g. VDT_ZTYPE, VDT_RACE or VDT_BANSHEE.
  2. A dials bone with the dial overlay geometry bound to it.
  3. The overlay material using the matching render target, script_rt_dials_<type>.

If the dial faces themselves are black, check the texture format first. texconv writes _SRGB formats with a DX10 header, and some .ytd tools don't understand those DXGI formats and store an invalid format instead. In game that's just black. The same thing once killed our tail lamps.

Check the ytd. Open it in CodeWalker and look at every texture's format. Anything unknown or empty: rebuild it from a DDS with a legacy header or plain UNORM. Keep dial faces uncompressed too, small numbers smear under DXT.

Smoke from one pipe

Smoke spawns at bones named exhaust, exhaust_2 and so on. On a twin-pipe bike that smokes on one side:

  • Only one bone. Add exhaust_2 at the second tip, pointing out of the pipe.
  • A tuning part hides it. An exhaust mod that lists the exhaust bones in <turnOffBones> stops smoke there, because hidden bones emit nothing. Put the stock pipes on their own misc_* bones, hide those instead, and give each exhaust mod its own exhaust bones.
  • Double exhaust flag. strModelFlags in handling.meta has a double exhaust flag (0x2000) that mirrors smoke to the other side. Useful for symmetric pipes, usually unnecessary with real bones on both tips.

Headlight glare

Fine in the garage, a huge white flare on the road: usually the light settings the bike inherits, not the model. The default set has a big headlight corona.

  1. Add your own <Lights> entry in carcols.meta, copied from a vanilla set, with smaller headLightCorona size and intensity.
  2. Use an id nothing else on the server uses. It's stored as an 8-bit value, so pick one above the vanilla range and keep a list.
  3. Point the bike at it with <lightSettings value="..."/> in carvariations.meta.

Also check the emissive headlight faces are on headlight_l / headlight_r with the right light id in the vertex colour alpha, otherwise the lamp is always on or never on.

Pink tail lamps

Too much emission for the colour. Bright red texture, tinted material and a high emissive multiplier: red clips, the other channels follow, and it reads pink or orange.

  • Keep the lens material colour white and put the red in the texture.
  • Keep the emissive multiplier moderate. Vanilla lamps sit around 3 to 3.5; we use about 2 on large lenses or ones close to the camera.
  • Check at night. Daylight hides it.

Parts vanishing at distance

A fairing, mirror or light that pops out as you ride away means the LODs don't match. The high and very high meshes in .yft and _hi.yft need the same parts and materials. Add a part to one only and it disappears on the LOD switch; a material mismatch between them can crash the client. When editing in Blender, copy the very high mesh into the high slot before export.

We check all of this before a bike like the Western Gladius goes out. If one of our bikes shows any of it, the FAQ has how to reach us.

More articles

Still stuck?Open a ticket on Discord with your resource name, framework and a screenshot of the server console.
Get help