Installation
Install RW Interact in place of your old target resource, and give your admins access.
Download it from your CFX portal
Extract the rw_interact folder into your server's resources directory. The interface ships already built — there's nothing to compile.
Install the dependencies
| Library | ox_lib |
| Framework | Optional. qbx_core, qb-core, ESX or ox_core are picked automatically for job, gang and citizen checks |
| Inventory | Optional. ox_inventory answers item checks whenever it's running |
The server needs OneSync and artifact 7290 or newer. There's no database: settings are kept by the server itself.
Replace your old target resource
RW Interact provides ox_target, qb-target, qtarget and bt-target, so anything that depends on them starts against RW Interact instead. Take the old one out of server.cfg and start RW Interact after ox_lib:
ensure ox_lib
# ensure ox_target <- remove
ensure rw_interactIf the old resource is still running, RW Interact leaves its exports alone and prints a warning in the console. Only one of them can answer to exports.ox_target.
Give your admins access
/interactAdmin and /interactdemo are for admins. On start, RW Interact grants command.interactAdmin to every principal in Config.Admin.groups in config/config.lua — group.admin by default. Granting an ace needs this line in server.cfg:
add_ace resource.rw_interact command.add_ace allowIf you'd rather not let the resource add aces, grant the command yourself:
add_ace group.admin command.interactAdmin allowThe rw_interact.admin ace (Config.Admin.ace) also counts as admin, for groups you want to have it without the command ace. Every save from the panel is checked on the server again.
Start the server
On start the console prints the version, the framework it picked and how many settings are saved. If a newer version is out, it says so there too.
Go in game, run /interactdemo and look around: six stations appear in front of you, each with its own menu, plus options on every car and ped. Run it again to clear them.
Using it
| Input | In the world | In a menu |
|---|---|---|
| E | Opens the menu on what you're looking at | Closes it |
| Mouse wheel, arrow keys | Moves the focus | |
| Left click, Enter | Selects. Hold options fill a ring while held | |
| Right click, Backspace | Back out of a submenu | |
| Esc | Closes |
Players rebind E under Settings → Key Bindings → FiveM → Interact.
Configuration
Everything about how it looks and behaves is set in game with /interactAdmin and kept by the server. The config file only holds what the panel can't change:
| File | Option | What it does |
|---|---|---|
config/config.lua | Config.Admin.command | The admin command's name. Default interactAdmin. |
config/config.lua | Config.Admin.groups | Principals granted the admin command on start. Default { 'group.admin' }. |
config/config.lua | Config.Admin.ace | An extra ace that counts as admin. Default rw_interact.admin. |
config/config.lua | Config.Commands.settings | The players' settings command. Default interactsettings, false removes it. |
config/config.lua | Config.Commands.demo | The admin demo command. Default interactdemo, false removes it. |
config/config.lua | Config.Bridge.framework | 'auto', 'qbx', 'qb', 'esx', 'ox' or 'standalone'. auto picks the highest-priority framework that's running. |
config/config.lua | Config.Locale | Which file in locales/ to use. Default en. |
The values /interactAdmin starts from are in shared/defaults.lua.
The resource is escrowed. The files you can edit are config/*.lua, shared/defaults.lua, client/defaults.lua, client/bridge/framework/*.lua and locales/*.json — everything else is encrypted.
Languages
Every player-facing string — reasons like Requires item: %s, the door options, the empty menu — is in locales/. Copy en.json, translate it and set Config.Locale to its name. The locale files stay readable under escrow.
Other frameworks
Job, gang, citizen and item checks go through the adapters in client/bridge/framework/, which stay readable under escrow. Each one answers a handful of questions: the player's job and grade, their gang and grade, their character id, and whether they have an item. Edit the closest one for your framework, or use standalone — job, gang and citizen checks then never pass, and item checks still work through ox_inventory.
Updating
Replace the rw_interact folder and put your config/config.lua back. Everything set in /interactAdmin, and every player's own choices, carries over: they are saved with a version number and upgraded automatically when an update changes them.