Production-ready FiveM admin menu built for QBCore with modular ESX compatibility, featuring a Svelte-based NUI, granular role permissions, and Discord logging.
- Player Moderation: No-clip, Spectate, God Mode, Kick, Ban, Freeze, Revive, Heal.
- Inventory & Economy: Give Items, Give Money, Outfits/Clothing access, Inventory viewer.
- World & Vehicle Tools: Synced object spawning, dynamic stash creation, give vehicle/keys, fix vehicles, change plates.
- Communication Hub: Report system (player tickets) + admin-only chat.
- Role Management: Role-based panels with priority overrides (God/Admin/Moderator).
- Integrations: Wasabi Ambulance, GKS Phone, CD Garage.
- Logging: Discord webhook logs for all actions.
- Place the resource in your server’s
resourcesfolder, e.g.:resources/[admin]/ultimate_admin_menu - Ensure the resource in
server.cfg:ensure ultimate_admin_menu - Configure
config.lua(see below).
Set which framework is active:
Config.Framework = 'qb' -- qb | esxSet your webhook and branding:
Config.Discord = {
Webhook = 'https://discord.com/api/webhooks/CHANGE_ME',
Username = 'Ultimate Admin Menu',
Avatar = 'https://i.imgur.com/3z6X6P3.png'
}Toggle support for common scripts:
Config.Integrations = {
WasabiAmbulance = true,
GKSPhone = true,
CDGarage = true
}Roles are defined with priority; higher priority inherits lower-level capabilities. Panels are whitelisted per role and can be locked with overrides.
Config.Roles = {
god = { label = 'God', priority = 100 },
admin = { label = 'Admin', priority = 50 },
moderator = { label = 'Moderator', priority = 25 }
}
Config.RolePanels = {
god = { 'dashboard', 'player_list', 'noclip', 'ban', 'give_vehicle' },
admin = { 'dashboard', 'player_list', 'kick', 'give_money' },
moderator = { 'dashboard', 'player_list', 'kick' }
}
Config.PermissionOverrides = {
noclip = 'admin',
god_mode = 'god'
}Tip: Add any custom panel IDs in
Config.PanelMetato label and categorize them in the UI.
- F10: Opens the menu (
uamenu). - /report: Sends a player report to admins.
- /adminchat: Sends an admin-only chat message.
Commands are defined in Config.ReportSystem.Command and Config.AdminChat.Command.
- Client opens menu with
uamenu. - Server builds the allowed panel list based on role and sends payload to NUI.
- NUI renders categories + quick actions and posts actions to the server.
- Server validates permissions, performs action, and logs to Discord.
The UI is driven by Config.PanelMeta and Config.RolePanels. This allows you to create 60+ panels without changing the UI layout—just add IDs to roles and metadata to label them.
Actions such as kick, ban, revive, heal, and vehicle tools are validated server-side before running and logged to Discord with staff/target context.
Add a new panel:
- Add the panel ID to
Config.PanelMetawith a label and category. - Add the panel ID to the appropriate role in
Config.RolePanels. - Add handling in
server.luainsidehandleAction:elseif data.panel == 'my_custom_action' then -- server logic here end
- Add client event handling if needed (e.g., vehicle or UI behavior).
- The client script only runs a light control-disabler loop while the menu is open.
- Svelte NUI is optimized for fast rendering and supports large panel lists.
- Server logic is centralized in
handleActionto reduce event overhead.
- Menu doesn’t open: Ensure
ensure ultimate_admin_menuis inserver.cfg. - No Discord logs: Check
Config.Discord.Webhook. - Vehicle tools fail: Ensure CD Garage and vehicle key resources are running if enabled.
- Revive/Heal not working: Confirm Wasabi Ambulance/QBCore hospital events are available.
ultimate_admin_menu/
├─ fxmanifest.lua
├─ config.lua
├─ client.lua
├─ server.lua
└─ web/
├─ index.html
└─ src/
├─ main.js
└─ App.svelte