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 = '...', 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 invitation
string
default:"focus"
Zones coming through the ox_target / qb-target compatibility layers: 'focus' keeps them quiet until looked at, 'ambient' gives them 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
string | 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 disable
number | 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 disable
boolean
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 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

Hint

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 option

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 key 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