Quasar Framework (qs-core) gives your FiveM roleplay server a complete administration toolkit: ACE-based permissions, persistent admin groups, an in-game admin menu on F6 (qs-admin), a full set of admin commands, noclip, a ban system and native txAdmin integration. It all works on the same player your ESX and QBCore scripts see, so an admin in Quasar Framework is an admin for es_extended and qb-core scripts too.
Permissions: how admin rights work#
Quasar Framework uses FiveM's own ACE permissions — no admin table to fill and no custom rank system to learn. Every admin command and the admin menu check a single permission on the player: command.qs.
The server.cfg shipped with the txAdmin recipe already contains everything you need:
add_principal group.admin group.user
add_ace group.admin command allow # every command, including command.qs and command.adminkeys
add_ace group.admin command.quit deny # but not quit
# qs-core manages groups at runtime (/setgroup) - keep these four lines
add_ace resource.qs-core command.add_ace allow
add_ace resource.qs-core command.remove_ace allow
add_ace resource.qs-core command.add_principal allow
add_ace resource.qs-core command.remove_principal allowcommand.qs is a child of command, so add_ace group.admin command allow grants it: everyone in group.admin is a Quasar Framework admin.
What | Permission checked |
|---|---|
qs-core admin commands ( |
|
Admin menu on F6 ( |
|
|
|
|
|
|
|
ESX and QBCore permission checks | See Permission checks for scripts below |
The server console can always run every command.
Making someone an admin#
When you deploy with the Quasar Framework recipe, txAdmin writes your admin identifiers into server.cfg as members of group.admin. Nothing to do: log in and press F6.
Add a line per admin, with their FiveM or license identifier, and restart the server:
add_principal identifier.fivem:1234567 group.admin
add_principal identifier.license:abcdef0123456789 group.adminFrom the server console, or in game as an admin, with the player's server id:
setgroup 12 adminThe group is saved in the database and applied every time the player connects, on every character. No restart needed.
Groups: /setgroup and /removegroup#
Command | Arguments | What it does |
|---|---|---|
|
| Saves the group for the player's license in the |
|
| Deletes the saved group and removes them from it right away. The player sees "Your admin group has been removed." |
Groups are stored per license, so they apply to every character of that player.
useris the default:/setgroup 12 userdemotes a player to a normal user.Feedback (
Usage: setgroup <serverId> <group>,… is now group.admin) is printed in the server console, not in chat. Players without permission get no answer at all./removegrouponly removes groups given with/setgroup. Agroup.adminline written inserver.cfgstays until you delete it from the file.
A group only grants what server.cfg grants to it. The shipped file defines group.admin only; the admin menu also offers mod and superadmin, which you can wire up yourself:
add_principal group.superadmin group.admin # superadmins get everything admins have
add_principal group.mod group.user # mods: give them the ACEs you choosePermission checks for scripts#
Scripts that call exports['qs-core']:HasPermission(source, perm) — including every QBCore script through QBCore.Functions.HasPermission — get these rules:
Check | Result |
|---|---|
Server console, or no permission asked | Allowed |
| Always allowed |
Any | Allowed if the player has the ACE |
| Also allowed for anyone in |
A list | Allowed if any entry passes |
QBCore.Functions.HasPermission, AddPermission, RemovePermission and GetPermission call the qs-core functions, and QBCore.Commands.Add(..., 'admin') checks the same rules. AddPermission only lasts until the server restarts; use /setgroup to make it stick.
xPlayer.getGroup() returns admin for anyone in group.admin (or with the command ACE), mod for group.mod, and user otherwise. ESX.RegisterCommand with a group other than user requires group.<group>, group.admin or command. xPlayer.setGroup() applies the group until the next restart; use /setgroup to save it.
Admin menu on F6 (qs-admin)#
Press F6 (or type /admin) to open the admin menu. The server checks your command.qs permission every time: without it you see "You are not allowed to use this" and nothing opens. Actions on players and the server are checked again on the server, so nobody can trigger them by faking the menu. F6 is a FiveM key mapping each admin can rebind in Settings → Key Bindings → FiveM.
The menu has three tabs: Players, Self and Server.
Players tab#
The left side lists every player with a loaded character: server id, character name (or FiveM name), job and ping, sorted by id. Type in the search box to filter it and press the refresh button to reload it. Select a player to see their name, id, job, cash and bank, and every action below.
Action | Fields | What it does |
|---|---|---|
Goto | — | Teleports you to the player, facing the same way. The menu closes. |
Bring | — | Teleports the player to you. |
Spectate | — | Moves you next to the player, makes you invisible, invincible and frozen, and puts you in spectator mode on them. Backspace or Esc stops; it also stops if the player leaves. You stay where spectating started. The menu closes. |
Freeze / Unfreeze | — | Locks or releases the player in place. They see "You have been frozen" / "You have been unfrozen". |
Heal | — | Full health and 100 armour, and clears blood. |
Revive | — | Gets a downed player back up. |
Kill | — | Puts the player in the downed state. |
Kick | Reason | Drops the player with the message "Kicked:" followed by the reason, or "Kicked by an admin" without one. |
Ban | Reason, minutes | Bans and drops the player. 0 minutes = permanent. See Bans below. |
Set Job | Job name, grade | Sets the player's job and grade. |
Set Group | Group list | Runs |
Money | Account, amount | Add or Remove money on |
Give Item | Item name, count | Gives the item through the inventory (count 1 if empty). |
Give Weapon |
| Gives a native GTA weapon with that ammo (250 if empty). It is not an inventory item and is not saved; to give a weapon the player keeps, use Give Item with its item name, such as |
Self tab#
Action | What it does |
|---|---|
Noclip | Closes the menu and toggles noclip. See Noclip below. |
Godmode | Toggles invincibility for yourself (ON / OFF). |
Invisible | Toggles your character's visibility (ON / OFF). |
TP to Waypoint | Closes the menu and teleports you to your map waypoint, with your vehicle if you are driving. |
Fix Vehicle | Fully repairs the vehicle you are in. |
Delete Vehicle | Deletes the vehicle you are in, or the closest one within 6 m. |
Clear Area | Removes vehicles and objects within 30 m of you. |
Spawn Vehicle | Spawns the model you type, after clearing the vehicles in the way, puts you in the driver seat and gives you the keys. See Vehicles. |
Godmode, invisibility and spectate are switched off if qs-admin is restarted.
Server tab#
Action | What it does |
|---|---|
Announcement | Shows your message as a banner on every player's screen for 8 seconds. |
Weather | One button per preset in |
Time | Sets the clock to the hour and minute you type (12:00 if empty). |
Online | Number of players with a loaded character. |
Weather and time are sent to everyone online at that moment; players who join later keep the normal cycle.
Admin menu logs#
Every menu action except Goto and Spectate is printed in the server console:
[qs-admin] John Doe (3) -> ban on PlayerName (12) CheatingSet Config.Webhook to a Discord webhook URL to also post each line to a channel.
Admin menu configuration#
File: [addons]/qs-admin/config.lua
Option | Default | What it does |
|---|---|---|
|
| ACE needed to open the menu and run its actions. |
|
| Default key of the |
|
| Discord webhook for action logs ( |
|
| Groups offered by Set Group. |
| 12 presets | Buttons in the Weather section. |
Admin commands#
All of these need the command.qs permission (or the server console). A player without it gets "No permission." Arguments in <> are required, in [] optional; <id> is the player's server id, shown in the F6 player list and in txAdmin. The commands appear as chat suggestions once a character is loaded.
Command | Arguments | What it does |
|---|---|---|
|
| Sets a player's job; grade defaults to 0. |
|
| Adds money to |
|
| Removes money from an account. |
|
| Gives an item; count defaults to 1. |
|
| Revives a player, or yourself. |
|
| Sets a player's (or your) health to 0, which puts them in the downed state. |
|
| Freezes or unfreezes a player (toggle). |
| — | Toggles god mode on yourself. |
|
| Sends a notification to every player for 8 seconds. |
|
| Spawns a vehicle, puts you in it and gives you the keys. |
| — | Deletes the vehicle you are in, or the closest one within 5 m. |
| — | Shows your position as |
|
| Teleports you to coordinates. |
|
| Teleports you to a player. |
|
| Teleports a player to you. |
| — | Teleports you (and your vehicle) to your map waypoint, finding the ground. |
| — | Toggles noclip. |
|
| Drops a player (default reason "Kicked by an admin."). |
|
| Bans a player; |
|
| Lifts every ban on a |
|
| Saves and applies a permission group. |
|
| Removes the saved group. |
Other admin commands from Quasar Framework resources:
Command | Resource | Permission | What it does |
|---|---|---|---|
|
|
| Opens the admin menu. |
|
|
| Gives the keys of the vehicle you are in to you or a player. |
|
|
| Opens the clothing editor on yourself. |
Command logs#
Set Discord webhooks in qs-core/shared/config.lua to log admin activity:
Option | Logs |
|---|---|
|
|
|
|
The admin menu logs separately, through its own Config.Webhook.
Noclip#
Toggle it with /noclip or F6 → Self → Noclip. You become invisible, lose collision and cannot be hurt; NPCs and police ignore you. If you are driving, the vehicle flies with you. A bar at the bottom of the screen shows the current speed and the controls.
Key | Action |
|---|---|
W / S / A / D | Move forward, back, left, right (forward follows where you look). |
Q / E | Up / down. |
Mouse | Look around. |
Mouse wheel | Speed up / down (0.5 to 20). |
Mouse wheel click | Reset speed to 1. |
Left Shift / Left Alt / Left Ctrl (hold) | 2× / 4× / 0.25× speed. |
When you turn noclip off you are dropped onto the ground below you and stay invincible until you land.
Bans#
Bans are stored in the bans table and tied to the player's license: identifier (their Rockstar license), so changing name or character does not get around them.
Banning a player#
/ban 12 0 Cheating # permanent
/ban 12 1440 Toxic in OOC # 24 hoursAlways write the minutes before the reason. Anything that is not a number in that position counts as 0 (permanent), and the reason then starts at the next word.
F6 → Players, select the player, fill Reason and Minutes (0 = permanent) and press Ban.
The player is dropped immediately with the message "Banned:" followed by the reason. With /ban, the reason defaults to "No reason".
Temporary and permanent bans#
Minutes | Ban | Expires column |
|---|---|---|
| Permanent |
|
Any positive number | Temporary | Now + minutes |
When the expiry time passes, the player can connect again — nothing to clean up.
What a banned player sees#
On every connection attempt (while Config.EnableBans = true), qs-core looks for any ban on the player's license that is still active — a permanent ban always wins over a temporary one. If one is found, the connection is refused and the player sees the reason and when the ban ends:
You are banned.
Reason: Toxic in OOC
Expires: 2026-11-01 18:30
You are banned.
Reason: Cheating
Expires: neverThe bans table#
Column | Content |
|---|---|
| Ban number. |
|
|
| FiveM name at the time of the ban. |
| Reason. |
| Admin's character name (menu), the admin's server id ( |
| End of the ban, |
| When the ban was made. |
Unbanning a player#
Find the license
List the latest bans in your database:
sql SELECT id, license, name, reason, expires FROM bans ORDER BY id DESC LIMIT 20;Run /unban
From the server console or in game, with the full identifier including
license::bash unban license:abcdef0123456789Every ban row for that license is deleted and the player can join straight away.
To ban someone who is offline, insert the row yourself; it is enforced on their next connection:
INSERT INTO bans (license, name, reason, banned_by, expires)
VALUES ('license:abcdef0123456789', 'PlayerName', 'Ban evasion', 'Console', NULL);Ban settings#
Option | Default | What it does |
|---|---|---|
|
| Checks bans when players connect. With |
IsPlayerBanned / AddBan / RemoveBan / ExploitBan (server exports)
local banned, reason = exports['qs-core']:IsPlayerBanned(source) -- or a 'license:...' string
exports['qs-core']:AddBan(targetSource, 60, 'Exploiting', 'MyScript') -- minutes, reason, banned_by
exports['qs-core']:RemoveBan('license:abcdef0123456789')
exports['qs-core']:ExploitBan(targetSource, 'money exploit') -- permanent, banned_by = Anti CheatAddBan and ExploitBan drop the player and log to Config.Webhooks.admin. QBCore scripts reach the same functions through QBCore.Functions.IsPlayerBanned and the qb-core ExploitBan export.
txAdmin integration#
Quasar Framework is built to be installed and run from txAdmin, and the two work together:
txAdmin | With Quasar Framework |
|---|---|
Admins | The recipe adds your txAdmin admin identifiers to |
Heal (one player) | Also revives: a downed player gets back up. |
Heal all | Revives every player with a loaded character. |
Kick, warn, ban | Work as usual. txAdmin bans are stored by txAdmin, separately from the |
In-game menu | Keeps working alongside the F6 menu. Vehicles spawned from txAdmin's menu come without keys: use |
Theme and colour tools#
The colour tools are not admin features. Every player can recolour their own interface with /colors (turn it off with Config.AllowColorChange = false in qs-core/shared/config.lua), and /introreset clears a player's saved palette so the first-join colour picker shows again. The server-wide default palette is Config.Theme. See Configuration.
Troubleshooting#
F6 says "You are not allowed to use this"
You are not in group.admin (or a group with command.qs). Check that your identifier is in server.cfg with add_principal identifier.<id> group.admin and that add_ace group.admin command allow is there, or have the console run setgroup <your id> admin.
/setgroup does nothing
Look at the server console: the feedback is printed there, not in chat. If FiveM refuses add_principal, the four add_ace resource.qs-core command.… lines are missing from server.cfg.
A banned player can still join
Config.EnableBans is false, the ban has expired, or a newer, already-expired ban exists for the same license. Check the bans table for that license.
I set the weather to rain and it went back to clouds
Config.DisableRain is true in qs-core/shared/config.lua. Set it to false.
A vehicle spawned with txAdmin will not start
It has no keys. Sit in it and run /adminkeys, or spawn it with /car.
Scripting admin tools? Every command, export and event is listed in Commands and Exports. For other problems, see Common Errors.



