Target, Text UI, Progress, Notify & Emotes
On this page8
Five small integrations. None of them is required — every one has a native fallback.
Target
Config.TargetSystem = 'auto'
Config.StartMode = 'menu' -- 'menu' | 'prompt' | 'target'Only used when Config.StartMode = 'target', and for the clinic NPC.
| System | Support | Auto order | Calls |
|---|---|---|---|
| sleepless_interact | Stub | 1 | its global-player add / remove |
| ox_target | Supported | 2 | addGlobalPlayer / removeGlobalPlayer, addLocalEntity |
| qb-target | Supported | 3 | AddGlobalPlayer / RemoveGlobalPlayer, AddTargetEntity |
| interact | Stub | 4 | its global player interaction |
sleepless_interact is checked before ox_target because it provides the ox_target
and qtarget names.
In 'menu' mode, F3 opens a small menu on the left with four options: Scan
person to memory, Recognize, Camera recordings and Stop looking.
Options are chosen with the UP / DOWN arrows and Enter; people with LEFT / RIGHT
and Space. The number keys do nothing in it, so they never fire your inventory
hotbar by accident.
The clinic uses Config.Implant.Interaction: 'auto' (target script if one runs,
otherwise E), 'target' or 'prompt'.
Text UI — the prompt text
Config.TextUISystem = 'native'Used for the Recognize [E] text of Config.StartMode = 'prompt' and for the
clinic prompt. The default F3 menu has no prompt text.
| System | Support | Auto order | Calls |
|---|---|---|---|
| native floating help | Supported | the default | drawn by us |
| ox_lib | Supported | auto 1 | showTextUI / hideTextUI |
| jg-textui | Supported | auto 2 | DrawText / HideText |
| esx_textui | Supported | auto 3 | ESX.TextUI / ESX.HideUI |
| qb-core DrawText | Supported | auto 4 | DrawText / HideText |
| okokTextUI | Stub | auto 5 | Open / Close |
| lation_ui | Stub | auto 6 | showText / hideText |
| cd_drawtextui | Stub | auto 7 | its events |
The arrow over the head is always ours (Config.Prompt.Arrow). Only the text
goes through this selector.
Config.Prompt.HelpSlot picks floating-help slot 0 or 1; use 1 if another
script already owns slot 0.
Progress bars
Config.ProgressSystem = 'auto'Used for surgery, printing and device setup. Never for the scan itself — the scan has its own HUD.
| System | Support | Auto order | Calls |
|---|---|---|---|
| ox_lib | Supported | 1 | progressBar |
| qb-progressbar | Supported | 2 (on qb / qbx) | QBCore.Functions.Progressbar |
| esx_progressbar | Supported | 3 (on esx) | ESX.Progressbar |
| lation_ui | Supported | 4 | progressBar |
| our own NUI bar | Supported | 5 (fallback) | our NUI |
'none' turns progress bars off entirely; the actions still take their time, they
just show nothing.
Notifications
Config.NotifySystem = 'auto'| System | Support | Auto order | Calls |
|---|---|---|---|
| ox_lib | Supported | 1 | exports.ox_lib:notify |
| Qbox / ESX / QB | Supported | 2 (your framework) | exports.qbx_core:Notify, ESX.ShowNotification, QBCore.Functions.Notify |
| GTA feed | Supported | 3 (fallback) | the native feed |
| okokNotify | Supported | explicit only | Alert |
| lation_ui | Supported | explicit only | notify |
okokNotify and lation_ui are never picked by 'auto' — name them explicitly if you
want them.
Emotes
Config.EmoteSystem = 'auto'| System | Support | Auto order | Calls |
|---|---|---|---|
| rpemotes-reborn | Supported | 1 | Execute(cmd, 'Emotes') on v2.1.2+, otherwise EmoteCommandStart |
| rpemotes | Supported | 2 | EmoteCommandStart / EmoteCancel |
| scully_emotemenu | Supported | 3 | playEmoteByCommand / cancelEmote |
| dpemotes | Stub | 4 | ExecuteCommand('e ' .. cmd) |
| native | Supported | 5 (fallback) | TaskPlayAnim, flag 49 |
The four emotes
| Emote | When | Default command | Fallback animation |
|---|---|---|---|
thinking | while memorizing someone new (not for a quick look at someone you know) | think | misscarsteal4@aliens / rehearsal_base_idle_director |
writing | witness statement | notepad | missheistdockssetup1clipboard@base / base |
sweep | magnetic scanner | (none — always the animation) | amb@world_human_security_shine_torch@male@base / base |
mirror | mirror check | adjust | missmic4 / michael_tux_fidget |
Each entry takes command (the emote name for your emote script, or false to
always use the animation), dict, clip and flag. Flag 49 = loop, upper body
only — the player can still walk.
If the emote command fails, the plain animation is played instead. Nothing ever blocks on an emote.
Weather sync
Config.WeatherSyncSystem = 'auto'| System | Support | Auto order |
|---|---|---|
| qbx_weathersync | Supported | 1 |
| qb-weathersync | Supported | 2 |
| Renewed-Weathersync | Stub | 3 |
| cd_easytime | Stub | 4 |
| vSync | Stub | 5 |
| weathersync | Stub | 6 |
Only used for one thing: pausing the weather sync while an admin runs clothing Auto-scan, so the studio lighting stays constant, and resuming it afterwards.
Screenshots
Config.ScreenshotSystem = 'auto'| System | Support | Auto order | Notes |
|---|---|---|---|
| built-in NUI game view | Supported | 1 | Needs no extra resource; checked automatically before first use. |
| screencapture | Supported | 2 | Exports only — never bundled. |
| screenshot-basic | Stub | 3 | Unmaintained; costs GPU while running. |
| none | — | — | No photos. Camera reports still print, without a picture. |
Where the picture is stored is a separate setting: Photos & Screenshots.
Custom
Every one of these takes 'custom' and has a branch in its bridge/*.lua file:
| Selector | File |
|---|---|
Config.TargetSystem | bridge/target.lua |
Config.TextUISystem | bridge/textui.lua |
Config.ProgressSystem | bridge/progress.lua |
Config.NotifySystem | bridge/notify.lua |
Config.EmoteSystem | bridge/emote.lua |
Config.WeatherSyncSystem | bridge/studio_client.lua |
Config.ScreenshotSystem | bridge/screenshot_client.lua |