Skip to content

Integrations

Point Aurora HUD at your fuel, inventory, notification, voice and phone scripts.

config/client.lua selects which of the scripts the HUD supports are running on this server. Once selected, they are read by name and reported back in /hud → Support. That part is Roll Call, and it is how you find out when one of them stops answering.

The selection sits at the top of the file:

config/client.lua
Custom.use = {
fuel = 'oxfuel', -- oxfuel | lc | legacy | qb | cdn | rcore | qs
inventory = 'ox', -- ox | qs | tgiann | jaksam | ak47 | ak47qb
notify = 'oxlib', -- oxlib | okok | brutal | wasabi | mythic | pnotify
voice = 'pma', -- pma | tokovoip | saltychat
phone = '', -- lb | gks | road | qs
}

Each line takes one label from the list beside it. An empty line falls back to the HUD’s own behaviour: an empty fuel reads the vehicle directly, an empty phone leaves the phone icon unlit.

The values above are the defaults.

Line What the HUD needs it for If left empty
fuel The fuel gauge, 0–100 Reads the vehicle’s own fuel level
inventory Reserve ammo and consumable counts Falls back to your framework’s inventory. Server-side counts are configured separately, in config/server.lua
notify Its own messages, like cruise control feedback ox_lib, which is a hard dependency anyway
voice Proximity, radio and talking state pma-voice
phone Lighting the phone icon during a call No phone icon

The catalogue below the block holds the actual resource names:

config/client.lua
lc = { name = 'lc_fuel', get = function(vehicle, resource) ... end }
-- ^ the real folder name

name must match the folder in the resources directory. It is the only place the name is written; the adapter receives it as resource.

Most fuel scripts answer the same GetFuel(vehicle) call. An entry is a name and a reader:

config/client.lua
Custom.fuel = {
-- ...
myfuel = { name = 'my_fuel_script', get = readFuelExport },
}

Then select it with fuel = 'myfuel'.

For voice and phone, an entry can use either shape, or both:

Shape Signature For scripts that
read read(state, resource) answer questions, polled while the HUD runs
init init(resource) fire events, run once at start-up

Unset fields keep coming from pma-voice.

A repeat of the same id within 2 seconds is dropped before it reaches the notification script. The id is the deduplication key: a message sent without one is always passed on.

The id is forwarded to scripts whose API accepts one: ox_lib in the props table, wasabi_notify as the last argument of :notify(). Adapters that ignore it still work.

Functions the HUD calls when its own features change, for forwarding that state on:

config/client.lua
function Custom.OnSeatbeltChanged(on)
LocalPlayer.state:set('seatbelt', on, false)
end
function Custom.OnSignalChanged(mode) -- 0 off, 1 left, 2 right, 3 hazards
end
function Custom.OnCruiseChanged(active, speedKmh)
end

For cash as an item, a points system, or any balance the client can read on its own:

config/client.lua
function Custom.GetMoney()
return { cash = LocalPlayer.state.cash, bank = LocalPlayer.state.bank }
end

A returned table takes precedence over the framework. nil, the default, keeps the HUD reading player.money / ESX accounts. An omitted field falls back to the framework.

Banking scripts answer on the server. See Banking.

Only needed when the balance lives in the banking script itself rather than in the framework’s bank account. Two are recognised:

Script Select
tgg-banking tgg
ps-banking ps

The selection goes in the server config, because that is the side these scripts answer on:

config/server.lua
Custom.use = {
bank = 'tgg', -- tgg | ps
}

The catalogue below it holds the adapters, in the same shape as the client ones:

config/server.lua
Custom.bank = {
tgg = {
name = 'tgg-banking',
get = function(src, resource)
local account = exports[resource]:GetPersonalAccountByPlayerId(src)
return account and account.balance
end,
},
}

get receives the player’s server id, the resource name and the framework identifier. Other scripts are added as further entries in the same shape, then selected by label.

Replacing a HUD feature with your own script

Section titled “Replacing a HUD feature with your own script”

Turn the matching feature off in /hud → Admin, then push its state in through the exports.

While a HUD feature is on, the HUD is the source of truth and ignores external values. The export returns false to report that.