Home / Scripts / Interactions
LIVE — THIS IS THE ACTUAL UI, NOT A VIDEO
TRY IT Press a button. Everything you see runs the shipped UI.
0ROWS ON SCREEN
0SOURCES
0OVER THE CAP
0KEYS PARSED
THE PART NOBODY ELSE HAS

Drawing a prompt is easy.
Owning the one that is already there is not.

Every server already draws prompts from three or four places at once: ox_lib text UI in one script, a target system in another, somebody's own DrawText3D in a third. They do not know about each other, so the player sees three different styles in one minute.

01

One line, and it returns a boolean

The inserted line ends in then return end. That return value is the whole design: true means we drew it and the original stops, false means we did not and the original draws exactly as it always did. A prompt is rendered once — by us or by them, never both.

02

Half-installed is a state we report

ox_lib needs two lines: show and hide. One without the other leaves a prompt stuck on screen, which looks exactly like our bug. The server reads the file and says “HALF installed, 1 of 2 lines found” instead of letting you find out from a player.

03

An update cannot break you quietly

When ox_lib updates and overwrites the file, the lines go with it. Every vendor has this problem. The difference is the console tells you on the next boot, and it tells never installed apart from was active before, missing now.

04

Ownership per resource

A row is keyed by the resource that registered it, automatically. Two scripts cannot overwrite each other, and when one stops, its rows go with it — without that script having to remember to clean up.

05

Target systems: what we do not claim

We can draw a target's option list in this panel. We cannot yet own the click — that happens inside the target's own UI. So those interceptions ship off, and the aiming reticle is never touched either way. The native mode, which owns selection too, is what turns them on.

06

Nothing runs when nothing happens

No Wait(0) anywhere. The only thread that ever exists is a distance watcher, alive solely while a coords-bound prompt is on screen, waking four times a second.

HOW THIS IS NORMALLY DONE

Against a typical prompt replacement

Not a feature count. These are the four things that decide whether it is still working six months from now.

The usual wayInteractions
Getting your style in Replace the whole function with theirs Wrap the one call, original untouched
After a framework update Silently reverts — you find out from a player Console says so on the next boot
Half-applied patch Prompt sticks on screen, blamed on the script Reported by name as half installed
Two scripts, one panel Last one wins, the other disappears Each resource owns its own row
WHAT LANDS IN YOUR RESOURCES FOLDER

Open where it counts. Locked where it matters.

dispersia_interactions
select a file 
open — yours to edit escrow protected ships as built
No dependency folders. No shared library to install first, no version of a bridge to keep in sync. If it starts, it works.
Everything meaningful is in game. The config file holds server rules — reach, keys, vehicle parts. Size, position and list length are set by each player from a panel in game, not a file.
Open where it matters. The config file and the whole NUI folder — HTML, stylesheet, script — ship readable. One look across every Dispersia script, and nothing hidden about how it is drawn.
Reversible. Remove the block and every original prompt comes back exactly as it was. Stopping the resource alone is enough to fall through.

The install guide is live.
The download is not — yet.

Everything on this page runs the shipped UI. When the build lands on the store, the button above turns on and nothing else about it changes.

READ THE GUIDE GET PINGED ON RELEASE