Skip to content

Usage

/tunit for drivers, /tunitedit and the 3D gizmo for admins, tunit_diag for support, and sharing a layout.

CommandWhoWhat it does
/tunitAny driverSets the values in Config.userSources
/tunitedittlib.adminAdds, positions, styles, deletes and shares elements
tunit_diagConsole or adminWhat is loaded, and where each layout came from

/tunit — the driver menu

One field per entry in Config.userSources, on the Text tab. Fields this car displays come first; a source it has no element for is still offered, marked Not shown on this vehicle.

The sidebar also carries Element Editor — the same thing /tunitedit opens, for an admin — and Feedback, which sends one message to TIMMYG Studios rather than to this server's staff.

RuleBehaviour
SeatDriver only, re-checked on the server
Length24 characters, enforced in the field
CharactersUppercased, then filtered to letters, digits and - . _ / #
Nothing left after filteringRejected with a message
Empty valueClears the text. There is no Clear all button
TimingImmediate
LifetimeSurvives a reconnect, not a restart

/tunitedit — the layout editor

Needs the tlib.admin ACE and a vehicle to be in. You edit that vehicle's model, so it applies to every vehicle of that model, and it saves to data.json. One screen: element list left, settings right, the gizmo live on the car between them.

Clicking a row edits that element and aims the gizmo. Add element places one at Config.newElement, in front of the car; the header counts against MAX_PER_MODEL, and at the ceiling the button becomes a note.

It is a draft until you save

Every change previews on your own car only. Save & exit writes it; Cancel (Esc) discards it, asking first if the Unsaved layout changes pill is showing.

Delete does not confirm — Ctrl Z and Cancel both undo it. Only Reset every character confirms.

⚠️ Leaving the vehicle closes the editor and loses an unsaved draft.

Content and style

FieldRange
ShowsLiteral text, or a source name. A source wins, and the literal is kept
Literal textUp to 24 characters
FontAny key in Config.fonts, by its label
Colour#rrggbb from an in-page picker; shorthand and rgb() are rejected
Width2–200 cm, slider
Height1–100 cm, slider

Per-character positioning

Off by default. On, each character is placed separately and costs one plane per letter against the maxPropsOnScreen ceiling (API reference).

ControlEffect
Per-character positioningOff leaves chars on disk, so turning it back on restores prior nudges
The character stripOne chip per character of the literal text field; a dot marks a hand-placed one
Nudge X / Nudge Y±100 cm, in the element's own plane
Rotation0–360°, about the character's own centre
Reset this character / Reset every characterZero one nudge, or clear the array

You cannot grab a single letter on the car: the gizmo drags the element as a whole, so position letters against the strip. A nudge does not follow a character when the resolved text changes length.

The 3D gizmo

Always live, on whatever the list has selected.

ControlEffect
Drag the handleMoves or rotates. Releasing is one undo step, not a save
W / RMove / rotate handle, as in the top bar
XLocal / world axes
., the crosshair buttonPoints the camera at the selection
Middle mouse / Shift + middle / ScrollOrbit / pan / zoom
Click the textSelects that element

Shortcuts are key positions, so they work on a non-QWERTY layout. Tab walks each row and its Delete button; Enter or Space selects; Del removes.

tunit_diag

Server console, or an admin in chat. It prints the version, demo mode, whether config.lua validated, the registered and driver-set sources, and a console-only per-model layout breakdown — sample output.

Community configs

One server can publish a layout and another can take it, over tLib's community-configs primitive.

  • Share this layout, from the Community row, while in the vehicle. Keyed by the model hash, labelled with the spawn name. One publish every 5 s.
  • Browse shared layouts lists up to 20 layouts for your model, admin-gated on the server.

An imported layout is checked the same way config.lua is: the count is capped, sizes clamped, unknown fields dropped. A font this server lacks is kept in the record, so the layout renders correctly once you add that typeface.

Still stuck? Support can answer it directly.

Was this page helpful?