LED Names & Model LEDs
Name LEDs by physical place so one pattern works across a fleet, and author a discoverable LED layout into the vehicle model itself.
An LED's name drives HUD display and pattern targeting. Follow this standard and a pattern written for one car works on the next. Set names per LED in the Editor.
Format
[ZONE][FACE?][SIDE?][NUM]
| Part | Description |
|---|---|
ZONE | 2–4 letter zone code, from the tables below |
FACE | Optional F (forward) or R (rear), only where the zone has multiple faces |
SIDE | Optional L or R, only for physically separate side-facing units |
NUM | Sequential, starting at 1 |
- All uppercase, no spaces, no symbols.
- Forward and rearward lights use sequential numbers only, no L/R suffix —
RD1,RD2,LBF1,LBF2. - Side-facing lights take an L/R suffix —
MRL,MRR,SRL1,SRL2. OmitNUMwhen there is one per side:LBAL, notLBAL1. - Names describe physical location only. Takedown, traffic advisor and alley lights are pattern behaviours, not names.
- Numbers count left to right from outside the vehicle — see Numbering direction.
- Numbering starts at
1. Start at0only to extend past the core — see Numbering beyond the core range.
Numbering direction
The observer stands outside looking in, so their left is not the vehicle's left every time.
| Face | Names | #1 sits on the vehicle's |
|---|---|---|
| Front-facing | LBF#, FG#, FB#, DS#, FV# | right |
| Rear-facing | LBR#, RD#, RV# | left |
| Right-side facing | SRR#, DOR# | rear |
| Left-side facing | SRL#, DOL# | front |
Numbering beyond the core range
#1–#6 is the cross-vehicle core that patterns and the HUD target reliably. A face with
more LEDs extends outward instead of renumbering: a rear lightbar with 8 LEDs uses
LBR0–LBR7, keeping LBR1–LBR6 portable. A pattern silently skips a name the vehicle
does not define.
Zone reference
Roof
| Code | Description | Example |
|---|---|---|
LBF# | Lightbar, front face | LBF1, LBF2 |
LBR# | Lightbar, rear face | LBR1, LBR2 |
LBAL / LBAR | Lightbar alley left / right, side-facing | LBAL |
MBF# / MBR# | Mini bar, front / rear face | MBF1, MBR1 |
MBAL / MBAR | Mini bar alley left / right | MBAL |
BK# | Beacon / rotator | BK1 |
Front exterior
| Code | Description | Example |
|---|---|---|
FG# | Front grille | FG1, FG2 |
FB# | Front bumper / push bar, forward-facing | FB1, FB2 |
FBL / FBR | Front bumper side end caps, side-facing | FBL, FBR |
HD# | Hood lights | HD1, HD2 |
Front interior (projects forward through the windshield)
| Code | Description | Example |
|---|---|---|
DS# | Dash lights, low mount | DS1, DS2 |
FV# | Front visor lights, high mount | FV1, FV2 |
Side
| Code | Description | Example |
|---|---|---|
MRL / MRR | Mirror lights | MRL, MRR |
SRL# / SRR# | Side runner lights | SRL1, SRR1 |
DOL# / DOR# | Door lights | DOL1, DOR1 |
PIL / PIR | Pillar light sticks, B/C-pillar | PIL, PIR |
Rear interior (projects rearward through the rear glass)
| Code | Description | Example |
|---|---|---|
RD# | Rear deck, low mount | RD1, RD2 |
RV# | Rear visor, high mount | RV1, RV2 |
Rear exterior
| Code | Description | Example |
|---|---|---|
RB# | Rear bumper face | RB1, RB2 |
RR# | Rear runner, body/rocker perimeter | RR1, RR2 |
RSP# | Rear step pad lights | RSP1, RSP2 |
LPL / LPR | License plate lights | LPL, LPR |
Specialty
| Code | Description | Example |
|---|---|---|
SPL / SPR | Spotlight, A-pillar or roof edge | SPL, SPR |
SC# | Scene / work lights | SC1, SC2 |
CAB# | Cabin / interior dome lights | CAB1 |
HUD default LEDs
When no layout declares which LED names to show, the HUD resolves the first group below with at least one matching LED on the vehicle.
| Priority | Names checked | Typical source |
|---|---|---|
| 1st | RD1 – RD6 | Rear deck lights |
| 2nd | RV1 – RV6 | Rear visor lights |
| 3rd | LBR1 – LBR6 | Lightbar rear face |
Only LEDs that exist are shown — RD1, RD2, RD3 gives three indicators, not six. With
none of these names present, the HUD shows all LEDs. A custom layout overrides this with its
own data-hud-led bindings.
Out of scope
Factory light circuits — headlight and tail light flashers — are native vehicle lights,
not placed LEDs. Do not invent names like HLF or TLF.
Model-defined LEDs
For vehicle modellers. Author named bones into your model and tELS reads the LED layout off
the skeleton — no tels.json, no placement work for whoever installs the vehicle. A v1
embedded layout is discovered whenever the vehicle has no saved leds section.
- You get geometry, not behaviour. Ship a
patterns-only
tels.jsonto light out of the box. - You export the bones by hand. Nothing is read from lightbar meshes, GTA siren lights, modelling empties or custom properties, and there is no modelling plugin.
Authoring contract: v1
Include a bone named tels_v1 to opt in; its placement is unused.
| Bone | Meaning |
|---|---|
tels_led_001 | Centre of the LED rectangle. Its rotation defines the LED's frame |
tels_led_001_r | Right-edge midpoint, in the centre bone's positive local X |
tels_led_001_u | Top-edge midpoint, in the centre bone's positive local Z |
- Number each LED 001 through 064. Gaps are fine; never renumber during a revision
- 64 is
TELS_MAX_LEDSinconfig/render_config.lua. A server owner may raise it, but author against 64 - The centre bone's +X points right, +Z points up, +Y points out of the lens. The edge markers cannot correct a wrong rotation
| Rule | Detail |
|---|---|
| Parenting | _r and _u are children of the centre bone, with no independent animation. Parent the centre to whatever the LED follows — chassis, door, bonnet |
| Placement | Put the centre on the intended emitting surface. tELS adds no lens offset |
| Dimensions | Metres. For a 0.10 m × 0.04 m rectangle, _r is at local (0.05, 0, 0) and _u at (0, 0, 0.02). sw and sh are half-extents, so that yields sw: 0.05, sh: 0.02 |
| Bounds | Both half-extents between 0.005 m and 2 m. Off-axis error within the greater of 0.5 mm or 1% of the larger half-extent |
| LODs | Keep every marker bone present and consistent across streamed variants and LODs |
| Animation | The centre bone may move at runtime — that is how door and bonnet LEDs work — but animated LED dimensions are not supported |
What gets skipped
A failed set is skipped and named in the client console (F8); the rest still loads.
| Cause |
|---|
An incomplete set — a centre bone with no _r, or no _u |
| Non-finite coordinates, reversed axes, or a degenerate size |
| An edge marker not aligned on the axis it belongs to |
A marker numbered above the server's TELS_MAX_LEDS |
A vehicle that streams in without its skeleton ready is retried at most once every five seconds, so a transient failure is not permanent. The editor forces a fresh scan.
Stable pattern identities
An embedded LED's ID and initial name are both its centre bone name, such as
tels_led_001, and its initial group is Model LEDs.
- Renaming or removing a marker breaks references to its old identity
- A new marker takes an unused number
A patterns-only tels.json references them without repeating placement:
{
"example_vehicle": {
"patterns": [
{
"name": "Example flash",
"fps": 4,
"colors": [{ "r": 255, "g": 0, "b": 0, "a": 1 }],
"frames": [
{ "duration": 1, "cells": { "tels_led_001": 1 } },
{ "duration": 1, "cells": {} }
]
}
]
}
}Declare it in the vehicle resource, using your model's real spawn name in place of
example_vehicle:
tels_config 'tels.json'Do not include leds: [] in a patterns-only config — an explicit empty array
deliberately disables the embedded layout.
Saved layout precedence
| Config | Result |
|---|---|
No leds field | Use the model layout, if present |
Explicit leds array, including [] | Use that array exclusively. Never merged with model geometry |
| No valid model layout | The existing manual placement workflow |
An ordinary editor save stores a full explicit layout overriding the model geometry. Your model file is never written to.
- The box icon — Import missing model-defined LEDs in the Lights tab appends only markers whose ID or centre-bone attachment is absent, keeping existing edits and patterns and respecting the LED cap. It persists only when you save
- To restore one marker, delete that LED and import it again
- Updating the model does not clear a saved override. The only way back to automatic
placement is to back up the config and remove its
ledssection
Extras, modkits and appearance
Version 1 embeds placement, orientation and size only. Extra and modkit visibility, livery restriction, texture and group are not inferred — set those in the editor and save an explicit layout.
Legacy and Enhanced
The same markers work on both generations.
tELS
Still stuck? Support can answer it directly.
Was this page helpful?
TIMMYG Studios