The chat, the roleplay commands, the HUD and the notifications are what players look at every second they spend on your FiveM server. Quasar Framework (qs-core) ships all four, styled with the same colour palette as the rest of the framework, and they work the same whether your other scripts are written for ESX, ESX Legacy or QBCore: an ESX chat:addMessage or a QBCore QBCore:Notify lands in the same chat and the same notifications.
Resource | Folder | What it does |
|---|---|---|
|
| The chat box: messages, commands, suggestions. Replaces FiveM's default |
|
| Roleplay commands: |
|
| Player HUD: ID, job, money, health, armour, hunger, thirst, speedometer, fuel and seatbelt. |
|
| Notifications used by every resource. |
Chat (qs-corechat)#
Using the chat#
Press T to open the chat. The key is a FiveM key mapping ("Open chat"), so each player can change it in Settings → Key Bindings → FiveM.
Type and press Enter to send, Esc to close. A message can be up to 256 characters.
Text that starts with
/runs a command — any client or server command, from any resource.While you type a command, the chat lists up to 8 matching commands in alphabetical order. Tab completes the highlighted one and ↑ / ↓ move through the list. After the command name and a space, the chat shows that command's help and highlights the parameter you are typing.
With no suggestions on screen, ↑ / ↓ browse the last 60 messages you sent.
Each line has a timestamp, and every player's name gets its own colour.
With the chat closed, new messages appear for 5 seconds and then fade out. The chat keeps the last 100 lines.
A normal message (without /) is sent to everyone on the server, signed with your character's first and last name. For messages only the people around you see, use the roleplay commands below (/me, /do, /b).
The chat cannot be opened while the pause menu is open, and it is hidden during the character selection and the colour picker.
Message styles#
Every line in the chat has a type, and each type has its own look:
Type | Looks like | Sent by |
|---|---|---|
| Player name in colour, then the message | Normal chat messages |
| Muted grey italic text with a dot instead of a name | Server and script messages without an author |
| Purple italic |
|
| Light blue italic |
|
| Grey-blue |
|
| Grey |
|
| Yellow italic |
|
Commands and suggestions#
Any command works in the chat. Suggestions, however, only appear for commands that a resource announces with chat:addSuggestion — they are not generated automatically. qs-core announces its own commands when your character loads, and qs-rp and qs-ambulance announce theirs. For your own commands, add one line:
TriggerClientEvent('chat:addSuggestion', -1, '/heist', 'Start the bank heist', {
{ name = 'bank', help = 'Bank name' },
})Server configuration#
qs-corechat replaces FiveM's built-in chat. Keep this line in server.cfg (the txAdmin recipe already adds it) so the built-in chat resource does not start alongside it:
set resources_useSystemChat falseThere is no config file. The language follows setr qs:locale "<code>" in server.cfg.
Compatibility with ESX, QBCore and standalone chat scripts#
Scripts that write to the chat with the standard FiveM chat events keep working:
Event | Supported | What is used |
|---|---|---|
| Yes | With |
| Yes |
|
| Yes | A list of |
| Yes |
|
| No | Ignored. |
Server event | No | Not fired: scripts that listen to |
-- server: a line signed "System" for one player (works from ESX and QBCore scripts too)
TriggerClientEvent('chat:addMessage', source, { args = { 'System', 'Welcome to the city!' } })
-- server: a styled line straight to qs-corechat, for everyone
TriggerClientEvent('qs-corechat:client:message', -1, { text = 'Server restart in 5 minutes', type = 'system' })qs-corechat:client:message takes { author, text, type }: type is one of the styles above; without it the line is player when it has an author and system when it does not.
Roleplay commands (qs-rp)#
qs-rp adds the classic FiveM roleplay chat commands. Every line is signed with the character's first and last name, and "nearby" means every player within the radius of your character — you included.
Command | Syntax | Who sees it | Example output |
|---|---|---|---|
|
| Players within 20 m |
|
|
| Players within 20 m |
|
|
| Players within 20 m |
|
|
| Players within 20 m (local out of character) |
|
|
| Everyone on the server |
|
|
| The target and you | Target: |
|
| Players within 20 m | Floating text above your head for 8 seconds, not in the chat. A new |
/me and /try use the me style, /do the do style, and so on (see Message styles above).
Message | When |
|---|---|
You must write something | The command was sent without text. |
You cannot message yourself |
|
That player is not online |
|
The commands are suggested in the chat with their parameters. The texts (* %s %s, (OOC) %s: %s...) live in qs-rp/locales/<language>.lua, so you can change their wording per language.
Roleplay settings (qs-rp/config.lua)#
Option | Default | What it does |
|---|---|---|
|
| Radius in metres of |
|
| Radius in metres of |
|
| Milliseconds the |
|
| Maximum characters per message; longer text is cut. |
|
| Listed in the file, but |
HUD (qs-corehud)#
What the HUD shows#
Element | What it shows |
|---|---|
ID | Your server ID — what other players type in |
ONLINE | Players online / server slots ( |
Job | Your job label ("Civilian" without one). Updates as soon as the job changes. |
Cash and Bank | Your balances, updated live on every payment, paycheck or transfer. |
Hunger and Thirst | Bars from 0 to 100. They flash when they drop to 20 or less. |
Health | Bar from 0 to 100. Flashes at 20 or less. |
Armour | Bar from 0 to 100. |
Speedometer (driver only) | Speed in km/h or mph, gear ( |
Fuel (driver only) | Fuel icon that turns into a warning at 20 % or less. |
Seatbelt (driver only) | Seatbelt icon on the speedometer, toggled with B. |
The speedometer only appears for the driver; passengers see the normal HUD.
The HUD also hides the GTA elements it replaces: the health and armour bars under the minimap, the money counter and — with Config.HideGameText — the vehicle name, area name, vehicle class and street name pop-ups.
Seatbelt#
As the driver, press B to fasten or remove the seatbelt: you see "Seatbelt fastened" or "Seatbelt removed" and the icon on the speedometer changes. It is a roleplay indicator, and it is reset when you leave the driver seat. The key is a FiveM key mapping ("Toggle seatbelt"), so players can change it in their key bindings. Turn it off with Config.Vehicle.seatbelt = false.
When the HUD hides#
Situation | HUD |
|---|---|
Pause menu open | Hidden, back when the menu closes. |
Downed | Hidden, back when you are revived or respawn. |
Character selection | Hidden until your character spawns. |
Clothing editor, colour picker ( | Hidden while open. |
Menus of the framework (bank, garage, dealership, jobs, police, EMS, drugs) | Hidden while the menu is open. |
Not the driver | Speedometer, fuel and seatbelt hidden. |
HUD settings (qs-corehud/config.lua)#
Option | Default | What it does |
|---|---|---|
|
| Milliseconds between status checks. The HUD only updates when a value changed. |
|
| Reads sprint stamina (breath under water). The default HUD layout does not draw a stamina bar. |
|
| Reads whether you are talking, for a voice indicator. The default HUD layout does not draw a voice indicator. |
|
| Hides the GTA vehicle name, area name, vehicle class and street name pop-ups. |
|
|
|
|
| Milliseconds between speedometer updates while driving. |
|
| Enables the seatbelt toggle and its key. |
|
| Default seatbelt key. |
|
| Fuel script to read the fuel level from. |
|
| Export of that script that returns a vehicle's fuel. |
Fuel and voice integration#
Integration | How it works |
|---|---|
Fuel scripts | The HUD calls |
| The HUD listens to |
Config.Vehicle = {
unit = 'mph',
interval = 90,
seatbelt = true,
beltKey = 'B',
fuelResource = 'cdn-fuel',
fuelExport = 'GetFuel',
}Building your own menu? Hide the HUD while it is open with
TriggerEvent('qs-corehud:display', false)and bring it back withTriggerEvent('qs-corehud:display', true). More in Commands and Exports.
Notifications#
Every resource of Quasar Framework shows its messages through the same notifications from qs-core, in the player's colour palette.
Type | Default title | Typical use |
|---|---|---|
| Success | Something worked: purchase, save, paycheck. |
| Error | Something failed: no permission, not enough money. |
| Information | Neutral information. Used when no type is given. |
| Notice | Announcements, such as the admin |
A notification stays on screen for 4 seconds unless you pass another duration (in milliseconds). The title is optional; without it the default title of the type is used.
-- server: to one player
TriggerClientEvent('qs:client:notify', source, 'Your car has been delivered.', 'success', 5000)
-- client
exports['qs-core']:Notify('You need a lockpick.', 'error')ESX and QBCore scripts need no change: their notification calls end up in the same notifications.
Script call | Shown as |
|---|---|
|
|
|
|
|
|
How every ESX and QBCore function is mapped is explained in ESX & QBCore Compatibility.



