Skip to main content
The bridge ships client-side world helpers you can use in any resource: Interact for “press E” prompts on points and entities, Zones for area triggers, and Blips for the map. They are pure-Lua libraries that load into your VM, follow the theme accent, and free themselves when your resource stops. These are client-side namespaces.

Interact

Bridge.Interact puts a keycap on a world point or entity. When the player is within distance, the keycap shows; within expandDistance it expands into a navigable option list (arrow keys / scroll to move, the confirm key to select). A single-option shorthand also works.
Single-option shorthand — pass label + onSelect directly, no options list:

Anchor to a moving entity

Pass entity or netId instead of coords to track a moving object; offset shifts the anchor from its origin.

Options & fields

vector3 | integer
The anchor. Use coords for a fixed point, or entity / netId to track a moving object.
string
Text shown when the prompt is collapsed (and the default option label).
string | integer
default:"E"
The confirm key. A letter ('E', 'F', 'G', 'H', 'K', 'N', 'M', 'B', 'R', 'SPACE') or a raw control id.
number
default:"2.0"
Range at which the keycap appears.
number
Range at which the prompt expands into the option list.
vector3
Offset from the anchor entity’s origin.
table[]
The option list. Each option: label, icon, canInteract (a function returning a boolean), onSelect.
fun(): boolean
Top-level gate for the whole prompt (single-option form).
An option’s onSelect runs in your resource’s VM, so it sees your script’s state directly — there is no event bus.

Suspend & resume

Hide all of your resource’s prompts under a named reason (reference-counted, so nested suspends are safe). Useful while a menu is open.
Bridge.Interact is the bridge’s own interaction system and is always available. For entity/zone targeting that integrates with ox_target / qb-target, use Bridge.Target instead.

Zones

Bridge.Zones fires callbacks as the player crosses area boundaries. onEnter / onExit fire on boundary crossing; onInside runs per-frame while inside. Use zones for static areas (job zones, safe zones, blip triggers); for “press E” prompts use Interact above. One adaptive scan loop drives every zone, so they are cheap at idle.

Shapes

The zone handle

All opts accept onEnter, onExit, onInside, enabled, id, and data.

Blips

Bridge.Blips wraps the GTA blip natives with a tracked handle, and frees every blip your resource created when it stops.

Radius blip

Options & handle

vector3
required
Blip position.
integer
default:"1"
Blip sprite id (coord blips only).
integer
default:"0"
Blip color id.
number
default:"0.8"
string
Map name for the blip.
various
Standard blip styling; route = true draws a GPS route to the blip.
The handle is chainable: SetColor, SetSprite, SetScale, SetAlpha, SetLabel, SetRoute(on, color?), plus Exists() and Remove().
Need a glowing in-world icon instead of a map blip? Bridge.MarkerProp.Spawn({ coords, icon }) spawns a ground-snapped, theme-recolored marker prop. Bridge.Interact can spawn one automatically via its marker option.