Commands documentation
In-game command list for your players, with their own keys. Free script by ROLO SCRIPT.
- Version 1.0.1
- Requirements: FXServer build 35245+,
ox_libandoxmysql. OneSync is not needed. - Frameworks: QBCore · Qbox Legacy · standalone ·
'custom'(see Integrations / Custom) - Languages: es · en
- No lock-in: rolo_notify and every other ROLO SCRIPT resource are optional. Their commands only show when they run (
Config.HideStoppedResources). - No tickets needed: everything you may want to adapt is in open files (see Escrow: what is open).
What's new in 1.0.1: the default list now includes the newer ROLO SCRIPT resources, with their own groups: /domicilio (rolo_masterjob), /empresas and /companiesadmin (rolo_companies), /servicios (rolo_services); 'custom' option for the framework, job and text UI from the open bridge files. No config keys to merge ('custom' is a new value of Config.Framework).
Manage from the tablet (staff): add, edit, remove and restore commands without touching any file. Changes are saved in the database and reach every player at once. From the server lists the commands that really exist on your server (server and client side) and are not in the list yet, to add them with one click. The defaults of
commands.luacan be edited or removed and always restored.My job: only the commands of the job the player has right now (mechanic, EMS, police, reporter…). It updates by itself when the job or duty changes.
General: what everyone can use, grouped by script.
Keys: every key-bound action with the key the player really has (what they set in FiveM's key bindings). A key the player changed is highlighted.
Staff: only for admins (framework groups or the ace
rolo_commands.admin).Commands of scripts that are not started are hidden, so the list only shows what exists on your server.
Use runs commands that need nothing else; Copy puts
/commandin the clipboard for the ones that need arguments.Search box, dark / light theme, refresh button, Spanish and English. QBCore, Qbox and standalone.
Installation
- Put
rolo_commandsin your resources andensure rolo_commands(after your framework,oxmysqlandox_lib). The tablerolo_commandsis created by itself. - Open it with
/comandos(or/ayuda). Players can bind a key in Settings → Key Bindings → FiveM (Config.Keysets a default; it starts empty because F1 is used by many phones and radial menus). - Add your own commands from the tablet (Manage, staff only), or in
commands.lua.
Dependencies: ox_lib, oxmysql.
commands.lua
One line per command:
{ cmd = 'taller', who = 'job', jobs = { 'mechanic', 'bennys' }, resource = 'rolo_mechanic',
desc = { es = 'Tablet del taller.', en = 'Workshop tablet.' } },
{ cmd = '+rolo_seatbelt', who = 'all', resource = 'rolo_interface', key = 'B', keymap = '+rolo_seatbelt', run = false,
desc = { es = 'Cinturón de seguridad.', en = 'Seatbelt.' } },
| Field | Meaning |
|---|---|
cmd |
Command name without / (a key-bound action uses its key-mapping name). |
args |
Hint of what goes after it (e.g. '[id]'). |
who |
'all', 'job' (with jobs = { ... }) or 'staff'. |
resource |
The script it belongs to: hidden while it isn't started. |
key / keymap |
Default key text / the key-mapping command, to show the player's real key. |
run |
false = no Use button. |
desc |
{ es = '...', en = '...' } |
CommandGroups at the top names the headings (resource → title). It comes filled with the ROLO SCRIPT commands and the usual QBCore, voice and popular scripts.
Config
| Option | What it does |
|---|---|
Config.Framework, Notify, TextUI |
'auto' detects them (rolo_notify first); 'custom' = your own in the open bridge/ files. |
Config.Command, Aliases, Key |
How the list opens. |
Config.AdminGroups |
Who sees the Staff tab (plus ace rolo_commands.admin). |
Config.HideStoppedResources |
Hide commands of scripts that aren't running. |
Config.ShowRealKeys |
Show each player's own key. |
Config.UseButton |
The Use button. |
Config.TabletCase, TabletView |
Look of the tablet; 'screen' opens at once. |
Integrations / Custom
Everything you may want to adapt is in open files (config.lua, commands.lua, locales/, bridge/): you never need the escrowed code. The list of commands is commands.lua plus what your staff edits in the tablet (saved in the rolo_commands table), so adding a command for your own script never needs a code change.
Export: exports.rolo_commands:Open() (client) opens the list, for example from your own menu or phone app.
Where to plug in your own system ('custom')
| System | config.lua |
Open file and function |
|---|---|---|
| Framework: admin check for the Staff tab | Config.Framework = 'custom' |
Bridge.IsAdmin(src) in bridge/server.lua (also Config.AdminGroups and the ace rolo_commands.admin) |
| Framework: the player's job (My job tab) | Config.Framework = 'custom' |
Bridge.MyJob() in bridge/client.lua (return { name, label, grade, onDuty }), Bridge.OnJobChange(cb) (call cb() when the job or duty changes), Bridge.PlayerInfo() (return { name, citizenid, job }) |
| Notifications and "[E]" texts | Config.Notify / TextUI = 'custom' |
Bridge.Notify, Bridge.ShowText / Bridge.HideText in bridge/client.lua |
| Which commands exist, who sees them, groups, keys | commands.lua (Commands, CommandGroups) and the tablet Manage tab |
|
| Texts | locales/*.lua |
Example:
-- bridge/client.lua (Config.Framework = 'custom')
function Bridge.MyJob()
local j = MyFramework.GetJob()
return j and { name = j.name, label = j.label, grade = j.gradeLabel, onDuty = j.onDuty } or nil
end
Escrow: what is open
These files stay open (editable) when the resource is escrowed, exactly as escrow_ignore in fxmanifest.lua says:
config.lua;commands.lua: the default command list;locales/*.lua: every text;bridge/*.lua:bridge/client.lua(job, player info, notifications, texts) andbridge/server.lua(admin check).
The rest of the Lua code (client/, server/, shared/) is encrypted. This resource has no webhooks, no items and no inventory, so there is no config_server.lua, compat/ or items/. Everything a buyer may need to adapt has a 'custom' hook in the open files above.
Write to us in the Discord support channel with the script, your framework and the console error.
