Features
- Players: search, nearby and staff filters, a profile per player with playtime, first join, identifiers, history and staff notes. Go to, bring, spectate (with a live info panel), heal, revive, armor, feed, freeze, kill, screenshot, open or clear their inventory, open their clothing menu. Right-click anyone for quick actions.
- Punishments: private messages, warnings (a popup they have to click away), kicks, bans with preset lengths and one-click reasons, offline bans (recently left players or any identifier), community service. Staff can never punish staff of the same or a higher rank.
- Ban screen: banned players see a clean card with the reason, who banned them, when it ends, the ban ID and an appeal button.
- Reports: players type
/report, staff get a sound and a banner, claim it, talk to the player in the report and close it. Go to / bring / spectate the player straight from the report. - Community service (built in, can be turned off): players are sent to the prison yard in a prison outfit and dig holes at marked spots until their tasks are done, with a tasks-left panel. Leaving the area sends them back with extra tasks. It carries on after reconnects and restarts.
- Item picker: every item on the server with its picture and a search box. Pick one, set the amount, give.
- Economy (with a framework): give money to any account, set jobs and grades from a list, give vehicles straight to a player's garage.
- Self: noclip, god mode, invisible, IDs above heads, super jump, fast run, teleport to waypoint. In noclip and
invisible nobody sees you, but you see yourself as a see-through hologram (
Config.SelfHologram). - Ranks page (owners): ranks, who gets them and every rank's permissions, set in game.
- Vehicles: spawn (with one-click presets), repair, flip, refuel, max tune, change plates, delete one or all vehicles in a radius.
- Server: announcements, restart countdown, weather and time, revive or heal everyone, vehicle cleanup, clear area, players / staff online, uptime, characters and money in the economy.
- Staff chat: in the menu or
/sc, with banners for staff who don't have the menu open. - Dev tools: coords laser (aim at anything, copy a vector3 or vector4), copy your position or heading, teleport to coordinates or saved locations.
- Logs: every staff action in the Logs page, the database and (optional) Discord, per category.
- Ranks from ace permissions, framework admin groups and/or Discord roles. Fully translatable, colors in the config, seamless updates.
Requirements
| orynt_bridge | Required (free, from Orynt Development): finds your framework, inventory and more. Nothing else is |
| oxmysql | Optional: saves everything in your MySQL database (HeidiSQL etc.) instead of the server's own storage |
| ESX / QBCore / Qbox | Optional: character names, jobs, money, items, inventories, garages |
| An inventory (ox, qs, codem, tgiann, origen, core, qb, ps, lj) | Optional: give items, view and clear inventories, item pictures |
| screenshot-basic | Optional: player screenshots |
| Badger_Discord_API or a bot token | Optional: ranks from Discord roles |
Files
orynt_adminmenu/
├── config.lua Ranks, menu contents, reports, community service, look
├── locales/en.lua Every text (copy it to translate)
├── server/
│ ├── sv_config.lua Discord webhooks (server only)
│ ├── bridge.lua ESX / QBCore / Qbox / inventories / garages (open, adapt it to custom setups)
│ ├── discord.lua Discord roles (open)
│ ├── db.lua Storage: MySQL or the server's KVP
│ ├── main.lua Ranks, bans, players, actions
│ ├── reports.lua Reports
│ └── comserv.lua Community service
├── client/
│ ├── bridge.lua Clothing menus, fuel scripts, vehicle properties (open)
│ ├── main.lua The menu, toggles, spectate, vehicles
│ └── comserv.lua Community service (the player's side)
└── html/ The menu
Installation
- Put
orynt_adminmenuin your resources folder and addensure orynt_bridgeand thenensure orynt_adminmenutoserver.cfg(after your framework, oxmysql and inventory if you use them). - Give your staff a rank (see below). The quickest way, in
server.cfg:add_ace group.admin orynt_adminmenu.owner allow add_principal identifier.license:YOUR_LICENSE group.admin - Set
Config.BanScreento your server's name and appeal link. - Restart the server and press F10.
No SQL to import: with oxmysql the tables are created on start.
Ranks and permissions
Ranks are set in game on the Ranks page (owners only, permission ranks): add, rename and delete ranks, set
their level, who gets them and tick their permissions, then Save ranks. Online staff get the new permissions
straight away. Until someone saves there, Config.Ranks in config.lua is used; Use config.lua goes back to the file.
You can't save ranks that would take the Ranks page away from yourself. Locked out anyway? Type
orynt_adminmenu:resetranks in the server console to go back to config.lua.
A player gets a rank when any of its ace, groups or role match:
- ace:
add_ace group.mod orynt_adminmenu.moderator allowinserver.cfg(works everywhere) - groups: the framework's admin groups (ESX: the player's group, QBCore / Qbox: permissions like
adminorgod) - role: a Discord role id. Put your bot token in
server.cfg(set orynt_adminmenu_bot_token "TOKEN") and your server id inConfig.Discord.guildId, or just run Badger_Discord_API
level decides who outranks who: staff can't kick, ban, warn, freeze, kill, screenshot or give coms to staff of the
same or a higher level. With "Higher ranks also get every lower rank's permissions" (Config.InheritLowerRanks) every
rank also gets the permissions of the ranks below it.
After changing someone's rank, /adminrefresh checks it again without a restart.
Every permission:
| Permission | |
|---|---|
menu |
Open the menu (Players and Server pages) |
noclip, godmode, invisible, names, superjump, fastrun |
The Self toggles |
tpm, tpcoords, coords |
Teleport to waypoint / to coordinates, the dev tools |
heal, revive, needs, reviveall |
Heal / revive players, armor and food, everyone at once |
goto, bring, spectate |
Teleport to, bring, spectate |
freeze, kill, message, clothing |
Freeze, kill, private messages, clothing menu |
identifiers, history, notes |
See identifiers, history (warnings, kicks, bans, coms), staff notes |
screenshot, viewinventory, clearinventory |
Screenshots, open / clear inventories |
warn, kick, ban, offlineban, unban |
Punishments and the Bans page |
comserv, comservrelease |
Give community service / release early |
reports |
The Reports page |
staffchat, logs, announce, restart, weather |
Staff chat, Logs page, announcements, restart countdown, weather and time |
cleararea, cleanup |
Clear the area, vehicle cleanup |
spawnvehicle, fixvehicle, deletevehicle, tunevehicle, plate |
The Vehicles page |
giveitem, givemoney, givevehicle, setjob |
Items, money, garage vehicles, jobs (with a framework) |
ranks |
The Ranks page: change the ranks and their permissions (give it to owners only) |
'*' gives everything. Permissions for things the server can't do (money without a framework, coms when it's off) are
never given, so their buttons don't show.
Storage (MySQL or no database)
With oxmysql running, everything is saved in your database: orynt_adminmenu_bans, _records (warnings, kicks, bans,
coms), _notes, _logs, _players (playtime and first join), _reports, _comserv and _settings (the ranks
saved on the Ranks page). Open them in HeidiSQL or any
MySQL tool. Without a database (Config.Database = 'auto' and no oxmysql, or 'kvp') the same data is kept in the
server's own storage.
- Coming from CarrotAdmin? Its bans, history, notes, logs and playtime are copied into the new tables on the first start.
- Added oxmysql later? What was saved without it is moved into the database on the first start with it.
Reports
Players type /report (Config.Reports.command) or /report <what happened>. A window opens where they write the
report and then talk with staff. Staff with the reports permission hear a sound and see a banner; the Reports page
lists open, their own (Mine) and closed reports. Claim one so others know you're on it, reply, go to / bring /
spectate the player, and close it with a note for the log. Open reports stay open through restarts and follow the
player when they reconnect. Config.Reports.cooldown stops spam.
Community service
Config.Comserv: the area (area + radius, by default the yard of Bolingbroke Penitentiary), the spots where holes
are dug (spots), how long one takes, the digging animation and shovel (dig), the prison outfit (outfit, male and
female), where players are let go (release, outside the prison gate) and the penalty for leaving. Staff give coms
from a player's profile (Manage > Coms) with a number of tasks; the player is sent to the area in a prison outfit and
digs a hole at the marked spot, then the next one. Their own clothes come back when they're done (also after a
reconnect). The server checks they
are at the spot and that each task took the time it should. The Coms page lists everyone serving, with +5 / -5 and
release.
Use your own coms resource instead? Set Config.Comserv.enabled = false: the Coms page, the Coms tab and the
permissions disappear.
Configuration (config.lua)
The file explains every option. In short:
| Section | |
|---|---|
| 1. Opening the menu | Key, command, rank refresh |
| 2. Ranks and permissions | Config.Ranks, inherit, Discord roles |
| 3. Framework, inventory, database | Detection, storage, item pictures, money accounts, garage, clothing |
| 4. Bans | Ban screen, ban lengths, preset reasons, new-player tag |
| 5. Reports | On / off, command, cooldown, sound |
| 6. Community service | On / off, area, spots, penalty, release point |
| 7. Menu contents | Vehicle presets, teleport locations, noclip speeds, staff chat command, auto announcements, restart warnings, weather |
| 8. Look | Colors, fonts, corners |
Discord logs (server/sv_config.lua)
One webhook per category: general, punishments, economy, screenshots (with the picture), staffchat, notes,
reports. Empty categories go to general (staff chat and reports only to their own). SvConfig.ConsoleLogs = true
prints every action in the server console too.
Commands and keys
F10 / /admin |
Open the menu (rebind in Settings > Key Bindings > FiveM) |
/adminrefresh |
Check your rank again |
/sc <message> |
Staff chat |
/report |
Make a report (everyone) |
adminnoclip, adminlaser |
Key bindings for noclip and the coords laser without the menu (unbound by default) |
Exports and Discord commands
exports.orynt_adminmenu:HasPermission(source, 'ban') -- true / false
exports.orynt_adminmenu:GetStaff(source) -- { label, level, perms } or nil
exports.orynt_adminmenu:GetConnectBanState(source) -- 'checking' / 'banned' / 'clear' (for queue scripts)
exports.orynt_adminmenu:Sentence(source, tasks, reason, adminName) -- community service
exports.orynt_adminmenu:AddTasks(source, amount, adminName)
exports.orynt_adminmenu:Release(source, adminName)
exports.orynt_adminmenu:GetAllServing()
exports.orynt_adminmenu:IsServing(source)
A Discord bot resource can forward slash commands (players, ban, unban, bans, kick, warn, history,
announce, comserv, comservadd, comservrelease) with the server event
TriggerEvent('orynt_adminmenu:discordRequest', requestId, { command, options, member = { name, roles }, replyEvent }).
Only ranks at Config.DiscordMinLevel or higher (by Discord role) may use them.
Translating
Copy locales/en.lua to e.g. locales/de.lua, change Locales.en to Locales.de, translate the text and set
Config.Locale = 'de'. The ui part is the menu itself. Anything you leave out stays English.
Updating
Replace the resource folder with the new version and start it (refresh, then ensure orynt_adminmenu, or restart
the server). Nothing to copy over:
- Your settings come back by themselves. Every start,
config.lua,server/sv_config.luaand your own translation are copied to the server (its KVP, outside the resource folder). When the new version starts with the files from the download, yours are put back and the resource restarts once to load them. - New options your config doesn't have yet use their defaults, and the console lists them once.
- Bans, history, notes, reports, coms and logs are in the database (or the server's storage): they stay.
- Changed
server/bridge.lua,client/bridge.luaorserver/discord.lua? The new version's file is used, and yours is saved next to it as<file>.before-updateso you can move your changes over. The console says so. - Keep the resource's name (
orynt_adminmenu): the saved settings belong to it.
To let it restart itself after putting your settings back, add add_ace resource.orynt_adminmenu command.ensure allow
to server.cfg. To go back to the default settings on purpose: orynt_adminmenu:resetsettings in the server console,
put the files from the download back and restart.
- 1.0.0: first release.
Troubleshooting
| Problem | Fix |
|---|---|
| F10 does nothing | You have no rank: check the ace / group / role, then /adminrefresh. The console prints "has rank ..." for staff |
| Money / Job / Vehicle tabs missing | No framework was found (they need ESX, QBCore or Qbox). The console start-up line shows what was found |
| Item list empty | No inventory with an item list: an inventory orynt_bridge supports, or a framework |
| Screenshots say no resource | Install screenshot-basic |
| "Database error" in the console | oxmysql can't reach your database: check its connection string. The menu keeps working on the server's storage if oxmysql isn't running at all |
| Discord ranks don't work | Check the bot token / guildId, or that Badger_Discord_API runs; then /adminrefresh |
Escrow and license
When escrowed, config.lua, server/sv_config.lua, locales/, server/bridge.lua, client/bridge.lua and
server/discord.lua stay readable so you can configure, translate and adapt it. See LICENSE.md for the terms of use.
In short: use it on your own servers; don't resell, share or leak it; keep the Orynt Development branding.
© Orynt Development
