Admin Menu: config files
These files stay readable in every build (escrow too), so you can change them. Shown as shipped in version 1.0.3.
config.lua
lua
Config = {}
-- Debug prints in the server and client console (dependency checks, callbacks).
Config.Debug = false
-- 'auto' detects qbx_core > qb-core > es_extended > standalone.
-- Force one with 'qbx', 'qb', 'esx' or 'standalone'.
Config.Framework = 'auto'
-- Language file in locales/ (en ships; copy it to add your own).
Config.Locale = 'en'
-- Shown on kick and ban screens. Empty = QBCore's QBConfig.Server.Discord.
Config.DiscordLink = ''
-- ── Opening the menu ──────────────────────────────────────────────────────────
Config.OpenMenuCommand = 'adminmenu'
Config.OpenMenuAliases = { 'admin' } -- extra chat commands that open it
Config.OpenMenuKey = 'F10' -- players can rebind in Settings > Key Bindings
Config.OpenMenuKeyDescription = 'Open Admin Menu'
-- Match lumo-ui's HUD preset: Circle gives the menu its white Circle theme.
-- Needs lumo-ui; without it the menu always uses the lime theme.
Config.FollowHudPreset = false
-- Chat commands. Rename any of them, or set false to leave one out (ESX already
-- has /noclip and /coords, for example; a later resource replaces an earlier
-- command of the same name).
Config.Commands = {
report = 'report', -- everyone: /report <message>
reportReply = 'reportr', -- /reportr <id> <message>
reportToggle = 'reporttoggle', -- stop / start receiving reports
staffChat = 'staffchat',
announce = 'announce',
warn = 'warn', -- /warn <id> <reason>
warnings = 'warnings', -- /warnings <id>
delWarn = 'delwarn', -- /delwarn <warning number>
kickAll = 'kickall',
noclip = 'noclip',
coords = 'coords',
blips = 'blips',
names = 'names',
adminCar = 'admincar',
maxMods = 'maxmods',
setModel = 'setmodel',
setSpeed = 'setspeed',
setAmmo = 'setammo',
restoreAppearance = 'restoreappearance',
fixAll = 'fixall',
reviveAll = 'reviveall',
deleteGun = 'deletegun',
vector2 = 'vector2',
vector3 = 'vector3',
vector4 = 'vector4',
heading = 'heading',
}
-- ── Staff ranks ───────────────────────────────────────────────────────────────
-- Highest first. A player has a rank when ANY of these is true:
-- * the ACE `lumoadmin.<rank>` is allowed (add_ace group.admin lumoadmin.admin allow)
-- * one of `aces` is allowed (QBCore 'admin', Qbox 'group.admin', ...)
-- * their ESX group maps to it in Config.ESXGroups
-- * it was saved from the menu's Permission Manager
-- Anyone allowed the plain `command` ACE counts as the top rank.
Config.Ranks = {
{ name = 'god', label = 'God', aces = { 'god', 'group.god' } },
{ name = 'admin', label = 'Admin', aces = { 'admin', 'group.admin' } },
{ name = 'staff', label = 'Staff', aces = { 'staff', 'mod', 'group.mod' } },
}
-- ESX group -> rank above.
Config.ESXGroups = {
superadmin = 'god',
admin = 'admin',
mod = 'staff',
moderator = 'staff',
}
-- Lowest rank that may open the menu.
Config.OpenMenuRank = 'staff'
-- Lowest rank for each action. Ranks inherit downwards (god can do admin things).
Config.ActionPermissions = {
kill = 'admin',
revive = 'staff',
freeze = 'staff',
spectate = 'staff',
['goto'] = 'staff',
bring = 'staff',
intovehicle = 'staff',
inventory = 'admin',
clothing = 'staff',
heal = 'staff',
armor = 'staff',
kick = 'staff',
ban = 'staff',
warn = 'staff',
privatemessage = 'staff',
giveitem = 'admin',
giveweapon = 'admin',
clearinv = 'admin',
setjob = 'admin',
setmoney = 'admin',
bankfreeze = 'admin',
jail = 'admin',
communityservice = 'admin',
fun = 'admin',
noclip = 'admin',
announce = 'admin',
weather = 'admin',
spawnvehicle = 'admin',
admincar = 'god',
kickall = 'god',
server_restart = 'staff',
resource_restart = 'admin',
config_editor = 'god',
manage_perms = 'god',
objects = 'admin',
reports = 'staff', -- see and answer report tickets
teleport = 'staff', -- teleport a player to a place or another player
mute = 'staff', -- voice mute (pma-voice / mumble)
clear_chat = 'staff',
logs = 'admin', -- read the audit log
unban = 'admin',
setgang = 'admin',
givevehicle = 'admin', -- put a vehicle into a player's garage
vehicle_cleanup = 'admin', -- delete every empty vehicle after a countdown
restart_warning = 'god', -- restart countdown announcements
}
-- Teleport list on the Self page and in the player teleport picker.
Config.TeleportLocations = {
{ label = 'Legion Square', coords = vector4(195.17, -933.77, 30.69, 144.5) },
{ label = 'Mission Row PD', coords = vector4(428.23, -984.28, 29.76, 3.5) },
{ label = 'Pillbox Hospital', coords = vector4(298.67, -584.48, 43.26, 70.0) },
{ label = 'LS Airport', coords = vector4(-1037.51, -2737.62, 20.17, 330.0) },
{ label = 'Sandy Shores', coords = vector4(1853.45, 3686.21, 34.27, 210.0) },
{ label = 'Paleto Bay', coords = vector4(-448.17, 6013.27, 31.72, 315.0) },
{ label = 'Mount Chiliad', coords = vector4(501.77, 5604.53, 797.91, 175.0) },
{ label = 'Maze Bank Tower', coords = vector4(-75.02, -818.22, 326.18, 0.0) },
}
-- Report tickets (/report). Kept in memory; the newest `keep` survive.
Config.Reports = {
keep = 100,
}
-- Restart countdown: announcements at these minutes left. With quitAtZero the
-- server shuts down at 0 (txAdmin then restarts it); otherwise it only warns.
Config.RestartWarning = {
announceAt = { 30, 15, 10, 5, 3, 1 },
quitAtZero = false,
}
-- Vehicle cleanup: seconds of warning before empty vehicles are deleted.
Config.VehicleCleanup = {
warnSeconds = 30,
}
-- Save staff ranks to the database from the menu (Players > Permissions).
Config.PermissionManager = {
enabled = true,
requiredRank = 'god',
identifierType = 'license', -- which identifier a saved rank follows
}
-- ── Logs ──────────────────────────────────────────────────────────────────────
-- Discord webhooks are read from server.cfg so they never sit in a file you
-- might share:
-- set lumo_admin_webhook_high "https://discord.com/api/webhooks/..." # bans, ranks, money, items
-- set lumo_admin_webhook "https://discord.com/api/webhooks/..." # kicks, teleports, announcements
-- With neither set, logs go to qb-log when it runs, otherwise the console.
Config.Logs = {
username = 'Admin Log',
footer = 'Lumo Admin',
console = true,
database = true, -- keep every entry in lumo_admin_logs (Logs page)
}
-- ── Bans & warnings ───────────────────────────────────────────────────────────
Config.Bans = {
-- Check lumo_admin_bans when players connect. Leave on unless another
-- resource already enforces these bans.
enforce = true,
-- Also write bans into the framework's own table (QBCore/Qbox `bans`) so
-- its tools see them too.
mirrorFrameworkTable = true,
-- Ban anyone who fires an admin event without the rank for it.
banOnExploit = true,
-- Tell the whole server in chat when someone is banned.
announce = true,
}
Config.BanLengths = {
{ label = '1 Hour', value = 3600 },
{ label = '6 Hours', value = 21600 },
{ label = '12 Hours', value = 43200 },
{ label = '1 Day', value = 86400 },
{ label = '3 Days', value = 259200 },
{ label = '1 Week', value = 604800 },
{ label = '1 Month', value = 2678400 },
{ label = '3 Months', value = 8035200 },
{ label = '6 Months', value = 16070400 },
{ label = '1 Year', value = 32140800 },
{ label = 'Permanent', value = 0 },
}
-- ── Announcements & fun actions ───────────────────────────────────────────────
Config.Announcements = {
maxLength = 280,
displayMs = 9000,
cooldownMs = 1200,
senderName = '', -- empty = sv_projectName
showSender = false,
}
Config.FunActions = {
cooldownMs = 900,
syncRadius = 120.0,
}
-- ── Config editor ─────────────────────────────────────────────────────────────
-- Lets the listed identifiers read and overwrite config.lua files of running
-- resources from the menu. Powerful: off by default, identifiers only.
Config.ConfigEditor = {
enabled = false,
access = {
-- 'license:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
},
}
-- ── Integrations ──────────────────────────────────────────────────────────────
-- 'auto' picks the first running resource it knows; 'none' switches a feature
-- off; or name one resource. Any entry can be a table with your own functions
-- instead, e.g. revive = { provider = 'custom', server = function(target) ... end }.
Config.Integrations = {
-- lumo-inventory, ox_inventory, qb-inventory, qs-inventory, ESX built-in
inventory = 'auto',
-- give-item checks the name exists in the framework's item list first
validateItems = true,
-- qbx_medical, qb-ambulancejob, esx_ambulancejob, wasabi_ambulance, else a native revive
revive = 'auto',
-- sn_appearance, lumo-clothing, illenium-appearance, fivem-appearance, qb-clothing, esx_skin
clothing = 'auto',
-- qb-weathersync, Renewed-Weathersync, cd_easytime, vSync, else a native broadcast
weather = 'auto',
-- qbx_vehiclekeys, qb-vehiclekeys, wasabi_carlock, qs-vehiclekeys
vehicleKeys = 'auto',
-- ox_fuel, cdn-fuel, LegacyFuel, ps-fuel, qb-fuel, lj-fuel, else the native fuel level
fuel = 'auto',
-- qb-prison / qbx_prison (jail time in months); 'none' hides jail tools
jail = 'auto',
-- object_gizmo (free, GPLv3, install it yourself) for the Object Mapper
gizmo = 'auto',
-- Server-specific extras. Each only shows when its resource runs.
communityService = { enabled = false, resource = 'doj-extras' },
bankFreeze = { enabled = false, resource = 'qb-banking' },
dealers = { enabled = false, resource = 'qb-drugs' },
raceAccess = { enabled = false, resource = 'qb-lapraces' },
lumoCoins = { enabled = false, resource = 'lumo-phone' },
}