Skip to content

Tommy's Lights Sync

Patrol cars that flash together, on whatever non-ELS lighting you already run

Docs
FiveMFreestandalone
Three patrol units with their light bars in step

Three patrol units with their light bars in step

1 / 2

Free

Free and open source — MIT licensed, full source in the download, nothing escrowed.

Powered by Tebex. Instant delivery to your Cfx.re account. Refund policy.

FiveM usage

No data

No usage figures for this product yet.

Description

GTA runs every emergency vehicle's light pattern off a timer that starts when its siren comes on. Two cars that lit up a second apart flash a second apart for as long as they are lit, and nothing in the game ever pulls them together. It is the detail that makes a line of patrol cars look like a line of separate patrol cars.

tSync restarts those timers together.

net events — the sync sends nothing
0
settings, none of them required
4
dependency — tLib, and it's free
1
licensed, full source in the download
MIT

No server, and no network traffic

This is the part that makes tSync small.

The reset is per-observer: toggling a vehicle's siren flag restarts GTA's light timer for that vehicle on the client that does it, including vehicles that client does not own. So the fix is applied to what you are looking at, and there is no ownership to negotiate — no case where a car cannot be synced because somebody else is driving it.

And the clock is already shared. Every client has GetNetworkTimeAccurate(), which the engine keeps synchronised. tSync does not choose its own moment to re-phase; it waits for the next multiple of the configured interval on that clock. Every client reaches that instant together without being told to.

So there are no net events, no server component to the sync, and no dependence on latency. A player on a 300 ms connection re-phases at the same instant as one on 20 ms, because neither is waiting for a message.

The obvious alternative — reset, then broadcast the reset to nearby clients — is what Ultimate Lighting Controller does. It is the natural design if you have not noticed the clock is already shared, and once you have, the round trip buys nothing except a dependency on ping.

What it will not do

  • It will not switch lights on, off, or change a pattern. It only re-times what is already running.
  • It is not a lighting controller. No UI, no keybinds, no patterns.
  • It cannot sync a script that renders its own LEDs. If you run tLS, tSync stays out of its way by default.

Configuration

Four settings, none of them required. Interval, radius, which vehicle classes, and whether to defer to another lighting script. Everything is in config.lua, commented in full, and validated at boot — a mistyped key is a line naming the key and the fix, not a setting that silently did nothing.

Requirements

RequirementDetail
tLibv1.0+, free — download
FrameworkNone. There is no framework code in tSync, and none is needed
DatabaseNone
OneSyncNot required
Lua5.4, handled by the manifest