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 = '...', and reveal = '...' on points and zones).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.These are distances, not triggers. Widening them reveals an interaction from farther away; the player still has to be looking at it.
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 a point or zone is focused. Entities - vehicles, peds and objects - always reveal on focus: they’re found by looking, so a street full of cars stays quiet until you look at one.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 invitationstring
default:"focus"
Zones coming through the ox_target / qb-target compatibility layers:
'focus' keeps them quiet until looked at, 'ambient' gives them all grainsKeys
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 Optionsstring | false
default:"LMENU"
The interact key, held like a classic target’s key.
LMENU is Left Alt. 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. This is the default only: it’s registered as a FiveM key binding, so every player can rebind it under Settings > Key Bindings > FiveM. Set to false to disablenumber | false
default:"19"
The same key on a controller, as a control id -
19 is D-pad down. Read only while a controller is the active device, so it never shadows a rebound keyboard key. Set to false to disableboolean
default:"true"
Focus: a soft vignette frames the screen while the interact key is held - the sign you’re looking, without a crosshair and without giving anything away. It pulses once when something reveals, and stays out of the way while another UI has the screen
Passive Mode
Interactions stay hidden - no grain, no label, no input - until the interact key is held, like a classic target. While it’s held everything followsReveal 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 resourceA 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 iconColorHint
boolean
default:"true"
The line under an open list naming the confirm key and the click. Set
false to hide it once your players know the controls. It only ever appears on lists of more than one optionIncludeOwnVehicle
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 vehicletrue- shown like everything else'passive'- hidden until the interact key is held, whatever the rest of the server doesfalse- off, if your scripts bring their own door handling
InVehicle
What stays live while the player sits in a vehicle. A registration’s owninVehicle = 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
IncludeOwnVehicleboolean
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
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
