Catalog / Utilities / jex_interactions

jex_interactions

v1.0.0 Standalone

Every "press E" prompt on your server, in one style and customisable down to the detail.

[in-game screenshot · 1600 × 900]

video

One resource for every interaction prompt on your server, controlled from a single place. Key, label, hint, colour, shape and placement are tuned in detail from config.lua: leave it as it ships or refine it until it looks made for your server, and the change applies across every script using it at once.

It includes Orbit Follow, the mode that takes the prompt out of the corner and places it beside the character: it follows the player smoothly, flips side when it runs out of room and always stays on screen. If you prefer something classic, there are five fixed placements as well.

Several resources can show their own prompts at the same time: they stack by priority, each resource gets its own id namespace and, if it stops, its prompts are removed automatically. It is standalone —no framework, no ox_lib, no dependencies— and in normal use it stays at 0.00 ms.

  • Orbit Follow: the prompt follows the character without leaving the screen
  • Six placements: four corners, bottom centre and Orbit Follow
  • Multiple prompts at once, ordered by priority
  • ok, warn and bad states to show whether the action is available
  • Permanent prompts or ones that expire on their own
  • Custom key, main label and secondary hint
  • Round or square shape, optional outer frame and colours your way
  • 6 exports and 2 events, with automatic per-resource cleanup
  • Standalone, Lua 5.4 and Asset Escrow ready with an editable config.lua
  • NUI ships compiled: no Node.js and nothing to build
  • 0.00 ms in normal use

Installation

  1. Copy the jex_interactions folder into your resources folder.
  2. Add ensure jex_interactions to your server.cfg, above every script that will use its API.
  3. Open config.lua and set the defaults: placement, colours, shape, key, how many prompts show at once and the maximum duration.
  4. From your own scripts, call exports['jex_interactions']:show{} with the id, key and text for each interaction.
  5. Use update to change a prompt live and hide or hideAll to take it down.
  6. Check usage with resmon 1: with no prompt visible it must read 0.00 ms.

Main exports

server.lua

-- Un aviso sencillo: "Pulsa E para abrir el garaje"
exports['jex_interactions']:show({
  id       = 'garage',
  key      = 'E',
  label    = 'Abrir garaje',
  hint     = 'Selecciona uno de tus vehiculos',
  priority = 10,
})

-- Actualiza solo lo que cambia, sin reiniciar la animacion
exports['jex_interactions']:update('garage', {
  state = 'bad',
  label = 'Garaje no disponible',
})

-- Oculta uno concreto, o todos los de tu recurso
exports['jex_interactions']:hide('garage')
exports['jex_interactions']:hideAll()

All 6 exports and 2 events are documented with their parameters and return values in the documentation.

Changelog

ChangelogVersionUpdated
jex_interactions1.0.02026-09-05

The full history, version by version, lives in the documentation.

Read the changelog

Requirements

  • Frameworks: Standalone
  • Dependencies: None

Tested on the recommended FiveM build as of the last update.

Measured performance

scenariocpumemory
No prompt visible 0.00 ms 0.31 MB
One prompt on screen 0.01 ms 0.34 MB
Ten Orbit Follow prompts at once 0.02 ms 0.40 MB
Peak usage 0.03 ms 0.42 MB

Measured on [hardware] with FiveM build [build] · [sample data]