Configuration
Every config.lua option with its default and what it changes. Icons, sounds, locales and QBCore aliases.
You can open it, read it and edit it. It is commented line by line. Only the business logic is encrypted; the configuration is yours.
Notifications
| Option | Default | What it changes |
|---|---|---|
Config.Position |
'top-center' |
Where they appear on screen |
Config.MaxVisible |
4 |
How many at once. The rest queue up and show a +N |
Config.Duration |
4500 |
Base milliseconds |
Config.ReadingTime |
true |
Extends the duration based on how much there is to read |
Config.Style |
'cristal' |
Card shape: cristal · solido · minima · barra |
Config.Accent |
'#E8B466' |
Colour of the ring and of neutral notifications |
Config.Opacity |
1.0 |
Card opacity, from 0.5 to 1 |
Config.CountdownRing |
true |
The ORBE O drawing itself as a countdown |
Config.ProgressBar |
false |
A linear bar instead of the ring |
Config.Eyebrow |
false |
Automatic header with the type |
Config.PauseOnHover |
true |
Stops the timer on mouse over |
Everything in this table can be changed from inside the game with /notify,
without editing the file or restarting. See
In-game panel.
Positions
Config.Position = 'top-center'top-center · top-right · top-left · bottom-center · bottom-right · bottom-left
top-center covers nothing on most servers. If you move them down, watch the
minimap and the voice bar; if you move them right, watch the status HUD.
Duration
Config.Duration = 4500
Config.ReadingTime = trueWith ReadingTime on, 45 ms per word is added on top of the base. A
two-word notice does not last as long as a thirty-word one, which is what you
want.
An explicit duration in the call overrides both.
TextUI
| Option | Default | What it changes |
|---|---|---|
Config.TextUI.Position |
'right' |
Where it appears |
Config.TextUI.HighlightKeys |
true |
Draws whatever is in brackets as a key |
Config.TextUI.PressFeedback |
220 |
Milliseconds the key stays pressed |
Positions: left · right · top · bottom
Sound
| Option | Default | What it changes |
|---|---|---|
Config.Sound.Enabled |
false |
Native GTA sounds on appear |
Config.Sound.Set |
'HUD_FRONTEND_DEFAULT_SOUNDSET' |
The sound set |
It ships off on purpose: on a busy server, a notification sound every few
seconds gets old in ten minutes. You can force it per call with sound = true
for the ones that actually matter.
Icons
27 inline SVG icons. No emojis: they inherit the type colour and stay sharp at any size.
/obnotify iconosAll 27 show up with their name below, which is how you pass them.
QBCore aliases
QBCore mixes Font Awesome and Material Icons classes in the same field. If a resource asks for an icon we do not recognise, the generic one for its type shows up instead.
Config.IconAliases = {
['fas fa-wrench'] = 'wrench',
['attach_money'] = 'money',
['local_police'] = 'shield'
}How to find which ones you are missing
Run the test:
/obnotify qbSeven notices come out with the icons QBCore uses most. The ones falling back to the generic type icon are the ones that need an alias.
For one that is not on the list, check the console: ob_notify logs the exact
name it received and could not translate.
Adding a new icon
Icons are <symbol> elements inside web/index.html, which ships outside
escrow.
Copy one, change its id and its paths:
<symbol id="i-my-icon" viewBox="0 0 24 24">
<path d="M12 2 L22 20 H2 Z"/>
</symbol>The id without the i- prefix is the name you pass: icon = 'my-icon'.
Lucide-style strokes, no fill: they inherit the colour on their own.
Locales
In locales/*.json, also outside escrow. Spanish and English out of the box.
{
"queue_more": "+%s more"
}Adding a language means creating the file and pointing at it:
Config.Locale = 'en'The /notify panel
| Option | Default | What it changes |
|---|---|---|
Config.Panel.Enabled |
true |
false and the command stops existing |
Config.Panel.Command |
'notify' |
The command that opens it |
Config.Panel.Ace |
'ob_notify.admin' |
The permission that shows the Server tab |
Config.Panel.Storage |
'auto' |
auto · db · archivo |
Config.Panel.Admins |
{} |
Admins by hand, if the ACE doesn't work out |
Config.Panel.PlayerEditable |
— | What each player may touch |
Explained in full, with screenshots, in In-game panel.
If something forces you into client/ or web/
That is a design failure on our side, not yours. Open a ticket and we will move
it into config.lua: the idea is that nothing configurable lives outside it.