Skip to main content
All configuration lives in config.lua at the root of lation_interact. The defaults work well for most servers - change what you want and restart the resource.
Stages, ExpandMode and Reveal are defaults - any individual registration can override them (stages = { ... }, expand = '...', reveal = '...').

Version Check

boolean
default:"true"
Print a notice in the server console at startup when a newer release is available

Stages

Distance thresholds (in meters) for the reveal stages: the point of light (grain), the label (name), and live options (reach).
reach also sizes zones bridged from ox_target / qb-target: their stack goes live within reach of the zone’s surface (never farther than the registration’s own distance). Native zones reach from inside their volume - see Zones.
number
default:"8.0"
Distance at which the grain - the point of light - appears
number
default:"4.5"
Distance at which the label grows out of the grain
number
default:"2.4"
Distance at which options unfold and input becomes live
number
default:"0.4"
Back out this far past a threshold before a stage lets go, so standing right on a boundary never flickers

ExpandMode

string
default:"smart"
How the stack opens once you’re in reach
  • 'smart' - single options unfold on their own; multi-option stacks wait for the confirm key
  • 'auto' - always unfolds on its own
  • 'manual' - always waits for the confirm key

Reveal

What renders before an anchor is focused:
string
default:"ambient"
Default for placed points: 'ambient' shows a grain of light from Stages.grain away - someone placed it, and the grain is the invitation
string
default:"focus"
Default for entity anchors: 'focus' renders nothing until you look at it, so a street full of cars stays quiet
string
default:"focus"
Everything coming through the ox_target / qb-target compatibility layers: 'focus' keeps it quiet until looked at, 'ambient' gives it all grains

Keys

string
default:"E"
The universal confirm key: activates the highlighted option when the option has no keybind of its own, and opens 'manual' stacks. Any keyboard key name works - see Options
number | false
default:"19"
The interact control, held like a classic target’s key. 19 is Left Alt (D-pad down on a controller). Holding it keeps the camera yours; with a stack on screen, a left click frees the cursor for hover and click and a right click hands the camera back. It also reveals passive interactions. Set to false to disable

Passive Mode

Interactions stay hidden - no grain, no label, no input - until the interact control is held, like a classic target. While it’s held everything follows Reveal as usual; let go and passive interactions vanish.
boolean
default:"false"
Passive for the whole server
string[]
default:"{}"
Passive for everything these resources register, and nothing else - { 'qb-drugs', 'my-events' }. Works for escrowed scripts, since nothing in them changes: both compatibility layers apply it by the registering resource
A single registration can opt in or out with passive = true|false on any add* call - see Options.

AccentIcons

boolean
default:"false"
Header icons are light by default. Set true to tint them with the theme accent - they follow theme changes live. Individual registrations can always set their own iconColor

IncludeOwnVehicle

boolean
default:"false"
Show options on the vehicle you’re sitting in. Off by default - they would be focusable the whole time you drive. Enable it if a script expects its vehicle options to work from the driver’s seat (glovebox-style scripts)

VehicleDoors

boolean | 'passive'
default:"true"
Built-in vehicle doors: toggle each door, the hood and the trunk from outside the vehicle - one chip per door, on the door itself, hidden while the door is locked, damaged, or you’re sitting in a vehicle. Labels live in locales/*.json under vehicle
  • true - shown like everything else
  • 'passive' - hidden until the interact control is held, whatever the rest of the server does
  • false - off, if your scripts bring their own door handling

InVehicle

What stays live while the player sits in a vehicle. A registration’s own inVehicle = true|false overrides either default, and an option flagged allowInVehicle = true (honored on bridged ox_target / qb-target options too) keeps its anchor live.
boolean
default:"false"
Anchors on other vehicles, peds, players and objects - off, since none of them can be reached from a seat. The vehicle you’re in follows IncludeOwnVehicle
boolean
default:"true"
Points and zones - on, since garages, drive-thrus and car washes are used from the driver’s seat

Suppress

When any of these is true the whole layer sleeps - no grains, no focus, no input - and wakes when the state clears.
boolean
default:"true"
Sleep while the player is dead or in last stand
boolean
default:"true"
Sleep while the player is handcuffed
boolean
default:"true"
Sleep while the pause menu is open
boolean
default:"true"
Sleep while another resource holds NUI focus (inventory, phone, …)
boolean
default:"true"
Sleep while a progress bar runs - ox_lib’s or qb progressbar’s, read through their exports with no dependency - so a key tapped on a chip can’t re-fire the action it just started
How dead/cuffed are detected lives in bridge/client.lua, where it can be adapted per server. Scripts can also hold the layer down with their own tag: exports.lation_interact:suppress('mytag') / exports.lation_interact:release('mytag').

Grain

The grain - the point of light marking ambient anchors. Tinted with the lation_ui theme accent when one is applied.
number
default:"0.02"
Sprite size
number
default:"180"
Sprite opacity (0-255)
boolean
default:"true"
Give the grain a gentle breathing animation