Administration

ShadowAdmin

A complete administration menu for player, vehicle and staff management.

Version
1.0.1
Resource
SF-Admin
Version 1.0.1 Resource SF-Admin Frameworks ESX ยท QBCore ยท Standalone Bundled languages 5 Store page View

Overview#

SF-Admin gives your staff a single in-game interface to moderate the server. It covers player moderation, vehicle tools, a custom role system with granular permissions, a player report queue and detailed Discord logging. Every action is written to the database and can be sent to a dedicated Discord channel, so nothing a staff member does is invisible.

Player management

Kick, ban, warn, jail, heal, revive, teleport, spectate and inspect the inventory of any connected player.

Vehicle tools

Repair, clean, recolour, change the plate, refuel, flip and delete the vehicle you are looking at.

Granular role system

Create your own staff roles and tick exactly which of the 28 permissions each one gets.

Report queue

Players open reports, staff claim them, teleport to the reporter and close them once handled.

Per-category Discord logs

Seven separate webhooks: sanctions, connections, players, vehicles, roles, reports and admin actions.

Staff toolkit

Noclip, godmode, invisibility, staff outfits and player blips, all behind their own permission.

Five languages

Ships with English, French, Spanish, German and Italian translation files.

Framework detection

Detects ESX or QBCore automatically, and runs standalone when neither is present.

Dependencies#

ResourceRequiredWhy
oxmysqlYesStores roles, sanctions, reports and the action history.
MySQL / MariaDBYesDatabase backing oxmysql.
SF-UIDOptionalWhen present, permanent player IDs are shown next to each player.
SF-BanOptionalWhen present, bans issued from the menu are handled by SF-Ban.

Installation#

  1. Drop the SF-Admin folder into your server resources directory.
  2. Add the ensure lines below to your server.cfg, keeping oxmysql before SF-Admin.
  3. Open config.lua and set your Discord webhooks, jail position and default language.
  4. Grant the superadmin ACE group to yourself so you can create the first roles in game.
  5. Restart the server. The tables are created automatically on first start.
server.cfg
ensure oxmysql
ensure SF-Admin

# Give yourself full access (replace with your own identifier)
add_principal identifier.license:YOUR_LICENSE group.superadmin

Configuration#

KeyDefaultWhat it does
Config.OpenKey'F10'Key that opens the admin menu.
Config.Framework'auto'Force esx or qbcore, or leave on auto-detection.
Config.DefaultLanguage'en'Language used when a player has no preference.
Config.SuperAdminโ€”Identifiers that always get every permission, regardless of roles.
Config.Permissionsโ€”The list of the 28 permission nodes assignable to a role.
Config.Logsโ€”One Discord webhook URL per log category.
Config.Jailโ€”Coordinates of the jail and default sentence length.
Config.Vehicleโ€”Vehicle tool options: fuel resource, available colours, plate format.
Config.Reportsโ€”Report queue behaviour: cooldown, maximum open reports, notifications.
Config.StaffOutfitsโ€”Outfits staff can switch to while on duty.
Config.TrollCommandsโ€”Enables or disables the fun/troll actions on players.
Config.Integrationsโ€”Toggles the SF-UID and SF-Ban bridges.
Config.AutoRefreshโ€”How often the connected player list refreshes while the menu is open.

Permissions#

ACE nodeGroupAllows
open_menuAdminOpen the admin menu.
admin_fullAdminFull admin access: cleanup, time, weather and announcements.
staff_toolsAdminNoclip, godmode, invisibility, staff outfit and blips.
player_kickPlayersKick a player.
player_banPlayersBan a player.
player_warnPlayersWarn a player.
player_healPlayersHeal a player.
player_revivePlayersRevive a player.
player_teleportPlayersTeleport yourself or another player.
player_spectatePlayersSpectate a player.
player_inventoryPlayersInspect and edit a player inventory.
player_trollPlayersUse the fun and troll actions on a player.
player_jailPlayersSend a player to jail.
vehicle_repairVehiclesRepair a vehicle.
vehicle_cleanVehiclesClean a vehicle.
vehicle_colorVehiclesChange the colour of a vehicle.
vehicle_plateVehiclesChange the plate of a vehicle.
vehicle_refuelVehiclesRefuel a vehicle.
vehicle_flipVehiclesFlip a vehicle back on its wheels.
vehicle_deleteVehiclesDelete a vehicle.
reports_viewReportsView the report queue.
reports_takeReportsClaim a report.
reports_closeReportsClose a report.
reports_teleportReportsTeleport to the player who opened the report.
give_rolesRolesAssign a role to a player.
create_rolesRolesCreate a new role.
edit_rolesRolesEdit an existing role.
delete_rolesRolesDelete a role.

Exports#

SignatureSideReturns
exports['SF-Admin']:GetPerformanceMetrics()serverReturns the resource performance counters.
ShadowLogs.AdminAction(source, action, details)serverWrites an admin action to the log and the matching Discord webhook.
ShadowLogs.PlayerConnect(source)serverLogs a player connection.
ShadowLogs.PlayerDisconnect(source, reason)serverLogs a player disconnection with its reason.
ShadowLogs.Report(source, target, message)serverLogs a report to the reports webhook.
ShadowLogs.RoleAction(source, role, action)serverLogs a role creation, edit, deletion or assignment.
ShadowLogs.VehicleAction(source, plate, action)serverLogs a vehicle tool action.
ShadowLogs.TrollAction(source, target, action)serverLogs a fun or troll action used on a player.
ShadowIntegrations.IsIdUniqueAvailable()serverReturns true when SF-UID is running and the bridge is enabled.
ShadowIntegrations.GetPermanentId(source)serverReads the permanent ID of a player through SF-UID.
ShadowIntegrations.GetPermanentIdAsync(source)serverAsynchronous version of GetPermanentId.
ShadowIntegrations.GetPlayerInfo(source)serverReturns the aggregated information about a player.
ShadowIntegrations.IsShadowBanAvailable()serverReturns true when SF-Ban is running and the bridge is enabled.
ShadowIntegrations.BanPlayer(source, target, reason, duration)serverIssues a ban through SF-Ban instead of the built-in system.

Good to know#

Permissions are checked on the server for every action, so a player cannot trigger a staff action by calling the event from the client.
Each log category has its own webhook: you can send sanctions to a private staff channel and connections to a public one.