Interface documentation
The complete interface for your server: HUD, car HUD, chat and settings panel in one resource, and it ships with rolo_notify (notifications, "[E]" bubbles and progress bars). Every player sets it up their own way in /hud, and everything follows their rolo_notify colours.
- Version 1.1.1
- Requirements: FXServer build 35245+, OneSync (the manifest declares
/onesync),ox_libandoxmysql. - Frameworks: QBCore · Qbox Legacy · standalone ·
'custom'(see Integrations / Custom) - Languages: es · en
- No lock-in: rolo_notify (shipped with it) and every other ROLO SCRIPT resource are optional. Without rolo_notify the notifications go through ox_lib or the base game, and the "Notifications" tab of the settings panel only offers rolo_notify's own settings when it runs. With rolo_mechanic the car HUD also shows mileage and nitro; without it those parts simply don't appear.
- No tickets needed: everything you may want to adapt is in open files (see Escrow: what is open).
What's new in 1.1.1: money validation for paid ads (no NaN, infinity or <= 0 amounts); with the HUD hidden (/togglehud) the chat can still be opened with T; new key Config.ToggleHudKey (F10) to hide / show the HUD; Config.Notify ('auto', 'rolo_notify', 'ox_lib', 'custom'); Config.Voice ('auto' or 'custom') for your own voice script; 'custom' framework from the open bridge files. New keys to merge in your config.lua: Config.Notify, Config.Voice, Config.ToggleHudKey.
Features
HUD
- 5 styles: hexagon, circle, square, bars, minimal. Row or column, scale 60-160%.
- Edit mode: drag every piece (status, info bar, speedometer, weapon, chat) anywhere on the screen.
- Components: health, armour, hunger, thirst, voice (talking, radio, range with pma-voice), stress, oxygen, stamina. Each one on / off.
- Hide when full: icons appear only when they matter. Low values pulse.
- Info bar: server ID, job + grade, cash, bank (they pulse when they change), time, players online. 4 styles: pills, bar, minimal, column.
- Minimap with a neon border in the theme colour. Show the minimap: always / only in a vehicle / never (on foot the map and its border hide). The GTA health bars under the map are hidden.
- The minimap never gets stuck in GTA's big mode: it redraws once you are really in the game (after the loading screen and the multicharacter) and a watchdog puts it back to small (
Config.KeepMinimapSmall). - Neon frames: a light runs around the minimap, speedometer, info bar and chat frames. Modes: static, light, double, rainbow, pulse. Speed and which frames are chosen per player.
- Colours: main colour (or the player's rolo_notify theme) and one colour per icon.
Car HUD
- 5 styles: digital (big speed, gear, RPM segments), analog (neon gauge with an RPM ring), minimal, sport and bars. KM/H or MPH.
- Fuel (ox_fuel, lc_fuel, LegacyFuel, cdn-fuel, ps-fuel, okok, Renewed…), engine damage, lights, cruise.
- Seatbelt: B. Without it you fly out in hard crashes. Blinking warning while driving.
- Cruise control: Y.
- With rolo_mechanic: the car's mileage and the nitro bottle.
Weapon HUD (only with a weapon in the hands)
- Weapon name and an icon by type (pistol, SMG, rifle, shotgun, sniper, heavy, melee, throwable).
- Bullets in the clip / in reserve with a clip bar. Turns red and pulses when the clip is low (25 %), and shows RELOADING while reloading.
- Grenades / throwables show how many are left; melee weapons show only the name.
- 2 styles: card and minimal. Name, reserve and icon on / off. Movable in edit mode.
- The weapon name comes from ox_inventory or QBCore's shared weapons. Add-on weapons: add them to
WEAPON_NAMESinbridge/client.lua. - GTA's own weapon icon + ammo stay hidden (
Config.HideGtaHud2 and 20). Remove them from that list if you prefer GTA's.
Chat (replaces FiveM's chat, and keeps every other script working)
- Tabs: all, OOC, job radio, staff, with unread counters.
- /me /do with 3D bubbles over the head (nearby players only), /ooc, /looc, /anuncio (paid ad), /staff, /radiochat (your job).
- Badges: STAFF, VIP (ace or Tebex with
interface_vip) and per job (LSPD, EMS, MEC…). - 4 looks: modern, clean, bubbles, classic. Size, opacity and fade time per player.
- @mentions light up with a sound. Command suggestions with autocomplete (Tab),
^1colour codes. - History with ↑ / ↓: your last 50 commands and messages, kept on your PC (they survive reconnects and restarts), without repeats. What you were typing comes back with ↓.
- Word filter, slow mode,
/mutechat, Discord logs. - Same events as FiveM's chat:
chat:addMessage,chatMessage,chat:addSuggestion(s),chat:removeSuggestion,chat:addTemplate,chat:clear.
Settings panel (/hud or F7)
- Tabs: HUD, status, info, vehicle, weapon, minimap, chat, colours and notifications. The notifications tab opens rolo_notify's own settings: position, size, sounds, colours of the notifications, [E] and progress bars. It works with older rolo_notify versions too (it falls back to its settings command,
Config.NotifySettingsCommand). - Live preview; saved per player.
Extras
/togglehudhides everything,/cinegives cinematic black bars.- Stress (off by default): speeding and shooting raise it (jobs can be exempt), it goes down by itself, and blur / shake appear when high. Items reduce it with
TriggerServerEvent('rolo_interface:server:relieveStress', amount). - Spanish and English. QBCore, Qbox, ESX, standalone or
'custom'. Light: data only goes to the page when it changes.
Installation
- Put
rolo_interfaceandrolo_notifyin your resources. - In
server.cfg, removeensure chat, and remove your old HUD (qb-hud, Quasar Interface…) and seatbelt script if you use ours. Then:ensure ox_lib ensure oxmysql ensure rolo_notify ensure rolo_interface - Optional aces:
add_ace group.admin rolo_interface.staff allow # staff chat, badge, /mutechat add_ace group.vip rolo_interface.vip allow # VIP badge - Tebex VIP badge:
interface_vip {sid} 30(days) in the package commands.
Configuration (config.lua)
| Option | What it does |
|---|---|
Config.Framework, Notify, Fuel, Voice, Locale |
'auto' detects them; 'custom' = your own in the open bridge/ files (see Integrations / Custom). Notify: 'auto' / 'rolo_notify' / 'ox_lib' / 'qbcore' / 'esx' / 'okok' / 'custom' |
Config.SettingsCommand, SettingsKey, ToggleHudCommand, ToggleHudKey, CinematicCommand |
Commands and keys (ToggleHudKey = '' = command only) |
Config.Defaults |
What every player starts with: style, components, infoStyle, info, car (style), weapon (style = 'card' / 'minimal', name, reserve, icon), minimap (mode = 'always' / 'vehicle' / 'never'), chat (style), neon (mode, speed, frames), colours, positions |
Config.NotifySettingsCommand |
rolo_notify's settings command (fallback for the Notifications tab) |
Config.HideGtaHud, HideGtaHealthBars |
GTA HUD pieces hidden |
Config.MinimapBorder, KeepMinimapSmall |
Fine tuning of the neon border over the map; keep the radar small |
Config.Seatbelt, Cruise |
Keys, eject speed, damage, warning, Seatbelt.excludedClasses (vehicle classes without a belt) |
Config.LowThresholds |
fuel (15 %) and ammoPercent (25 %): when the fuel bar / ammo counter turn red |
Config.Stress |
Off by default: sources, relief, effects |
Config.Chat |
Key, plain text mode, channels, commands, ad price, badges, filter, slow mode |
config_server.lua |
Discord logs (chat, staff), server only |
Exports
-- client
exports.rolo_interface:IsSeatbeltOn()
exports.rolo_interface:SetHudVisible(bool)
exports.rolo_interface:isOpen() -- chat open
-- server
exports.rolo_interface:addMessage(target, message) -- same as the chat resource
exports.rolo_interface:SetStress(src, value)
exports.rolo_interface:GetStress(src)
The seatbelt state is also in LocalPlayer.state.seatbelt.
Integrations / Custom
Everything you may want to adapt is in open files (config.lua, locales/, bridge/): you never need the escrowed code.
Exports (the first block is already in Exports above):
-- client
exports.rolo_interface:IsSeatbeltOn() -- true while the seatbelt is on
exports.rolo_interface:SetHudVisible(false) -- hide everything (true = show); e.g. during your own cutscene
exports.rolo_interface:isOpen() -- chat open
-- server (the same API as FiveM's chat resource, so other scripts keep working)
exports.rolo_interface:addMessage(target, { args = { 'Name', 'text' }, color = { 255, 255, 255 } }) -- target = id or -1
exports.rolo_interface:addSuggestion(target, 'command', 'help text', { { name = 'id', help = 'player id' } })
exports.rolo_interface:SetStress(src, value) -- 0-100
exports.rolo_interface:GetStress(src)
registerMessageHook and registerMode exist only so scripts written for the default chat don't fail; they do nothing.
Events and state:
- Seatbelt:
LocalPlayer.state.seatbelt(replicated). UseBridge.OnSeatbelt(on)inbridge/client.luato run your own code when it changes. WithConfig.Seatbelt.enabled = false(another seatbelt script) the HUD readsstate.seatbeltorstate.harness, seeBridge.ExternalSeatbelt(). - Chat events kept from FiveM:
chat:addMessage,chatMessage,chat:addSuggestion(s),chat:removeSuggestion,chat:addTemplate,chat:clear. - Stress from your own item / action code (server side, recommended):
exports.rolo_interface:SetStress(src, exports.rolo_interface:GetStress(src) - 20). From a client script:TriggerServerEvent('rolo_interface:server:relieveStress', amount)(limited to 100 per call) androlo_interface:server:gainStress(limited to 5 per call and rate limited). Stress is stored byBridge.GetStress/Bridge.SetStressinbridge/server.lua. - Tebex VIP: console command
interface_vip <id|license> <days>.
Where to plug in your own system ('custom')
| System | config.lua |
Open file and function |
|---|---|---|
| Framework: character name / job, staff check, money for ads | Config.Framework = 'custom' |
bridge/server.lua: Bridge.Char(src) (return { name, job, onDuty }), Bridge.IsStaff(src), Bridge.RemoveMoney(src, account, amount) (return true when the money was taken). Client, bridge/client.lua: Bridge.Data() (return { loaded, hunger, thirst, stress, cash, bank, job, jobName, grade }) and Bridge.OnLoaded(cb) |
| Notifications | Config.Notify = 'custom' |
Bridge.Notify(message, kind, duration) in bridge/client.lua |
| Voice icon (talking, radio, range) | Config.Voice = 'custom' |
Bridge.Voice() in bridge/client.lua: return { talking, radio, range } (range 1-3) |
| Fuel | Config.Fuel = 'custom' |
Bridge.GetFuel(vehicle) in bridge/client.lua (return 0-100) |
| Weapon names (add-on weapons) | WEAPON_NAMES and Bridge.WeaponLabel in bridge/client.lua |
|
| Seatbelt from another script | Config.Seatbelt.enabled = false |
Bridge.ExternalSeatbelt() in bridge/client.lua |
| Stress storage | Bridge.GetStress / Bridge.SetStress in bridge/server.lua |
|
| Discord logs | config_server.lua |
Bridge.Log(category, title, description) in bridge/server.lua |
| Chat channels, commands, badges, filter, ad price, job radio jobs | Config.Chat in config.lua |
|
| Texts | locales/*.lua |
Examples:
-- bridge/client.lua (Config.Voice = 'custom')
function Bridge.Voice()
return { talking = exports['my_voice']:IsTalking(), radio = exports['my_voice']:OnRadio(), range = exports['my_voice']:GetRange() }
end
-- bridge/client.lua (Config.Framework = 'custom')
function Bridge.Data()
local d = MyFramework.GetPlayerData()
return { loaded = d ~= nil, hunger = d.hunger, thirst = d.thirst, stress = d.stress, cash = d.cash, bank = d.bank, job = d.jobLabel, jobName = d.job, grade = d.gradeLabel }
end
Escrow: what is open
These files stay open (editable) when the resource is escrowed, exactly as escrow_ignore in fxmanifest.lua says:
config.luaandconfig_server.lua(Discord webhooks, server only);locales/*.lua: every text;bridge/*.lua:bridge/client.lua(needs, money + job, fuel, voice, seatbelt hooks, weapon names, notifications) andbridge/server.lua(character name, staff, money for ads, stress storage, Discord logs).
The rest of the Lua code (client/, server/, shared/) is encrypted. Everything a buyer may need to adapt has a 'custom' hook in the open files above.
Compatibility
- Frameworks: QBCore, Qbox, ESX Legacy, standalone,
'custom'. - Fuel: ox_fuel, lc_fuel, LegacyFuel, cdn-fuel, ps-fuel, okokGasStation, Renewed-Fuel, native,
'custom'(Config.Fuel). - Voice: pma-voice state bags (talking, radio, range) or the game's own talking flag,
'custom'(Config.Voice). - Notifications: rolo_notify, ox_lib, the base game,
'custom'(Config.Notify). - Weapon names: ox_inventory, QBCore shared weapons, ESX, or the built-in list (
WEAPON_NAMES). - Optional ROLO SCRIPT resources: rolo_notify (colours + notifications), rolo_mechanic (mileage, nitro), rolo_multicharacter (the HUD waits for it); never required.
ROLO SCRIPT · Support and updates on our Discord.
Secrets: config_server.lua
Discord webhooks and API keys go in config_server.lua, not in config.lua. config.lua is sent to every player's game (FiveM shares it), so anything in it can be read by a cheater; config_server.lua is loaded only by the server. Paste your webhooks there and leave config.lua without secrets.
Write to us in the Discord support channel with the script, your framework and the console error.
