Skip to main content

BenzyPrioAOP

BenzyPrioAOP

A lightweight, standalone FiveM HUD for roleplay servers. It shows the current AOP (Area of Patrol), any number of fully customizable Prios (Priorities), and a server-wide Peacetime toggle on screen, and lets every player drag and resize the HUD to fit their own monitor. Staff actions are gated behind a flexible permission system (framework roles, raw identifiers, ACE, or Discord — via BenzyBridge), and everything important is logged to Discord.

Requires BenzyBridge. BenzyPrioAOP includes the bridge in-process (shared_script '@BenzyBridge/init.lua') and declares dependency 'BenzyBridge'. The bridge auto-detects your stack, so this one resource runs the same across ESX / QBCore / QBox / standalone — you don't configure a framework or notify system here.

Made by Samuel Benzy of Benzy Development.


Features

  • AOP (Area of Patrol) — a server-wide patrol area set by staff with /aop, shown on the HUD, announced with a large on-screen banner, and logged to Discord.
  • Prios (Priorities) — define as many prios as you like in the config (e.g. City Prio, County Prio, Highway Prio). Each gets its own HUD element and a full lifecycle: Available → Active → Cooldown → Available.
    • Start, join, leave, end, and force-cooldown commands.
    • Only one active session per prio at a time.
    • Configurable join capacity and cooldown length.
    • Auto-ends into cooldown when the last person leaves.
    • Every action is logged to Discord with a color per action type.
  • Peacetime — a staff toggle (/peacetime) that disables all weapons and makes every player invincible (no damage, no deaths) server-wide, with red/green banners, a HUD indicator, and a Discord log.
  • Customizable HUD/customizehud lets each player drag and resize every element. Layouts are saved locally and survive reconnects and server restarts. A reset button recovers elements that were moved off-screen.
  • Chat suggestions — every command shows up in the / autocomplete with a description and the expected argument.
  • Standalone-first — no framework (ESX/QBCore), inventory, or database required. It uses BenzyBridge for permissions, which itself works fully standalone.

How it works

  • The server is the single source of truth for the AOP value and every prio's state. When something changes, the server pushes the new state to all clients, posts to Discord, and shows the on-screen banner.
  • The client renders the HUD with NUI (HTML/CSS/JS) and handles the /customizehud editor.
  • Each player's HUD layout is saved locally on their own machine, so it persists across reconnects and restarts and is not affected by clearing the server cache (see Notes).
  • Cooldown timers count down live on the HUD.

Installation

  1. Install BenzyBridge — BenzyPrioAOP uses it for permissions, and declares it as a dependency.
  2. Place the BenzyPrioAOP folder in your server's resources directory.
  3. Add both to your server.cfg, with the bridge before BenzyPrioAOP:
    ensure BenzyBridge
    ensure BenzyPrioAOP
    BenzyPrioAOP is standalone-first and needs nothing but the bridge. If you do run any of the optional systems the bridge can detect, keep the overall start order: SQL connector → framework → BenzyBridge → provider resources (e.g. a notify provider) → BenzyPrioAOP, so the bridge resolves them before this resource boots.
  4. Set up permissions for the staff commands (see Permissions).
  5. Open config.lua and add your Discord webhook URL(s) and any prios you want.
  6. Restart the server (or ensure/restart BenzyPrioAOP).

Configuration

Everything is configured in config.lua, and every option has a comment above it explaining what it does. The highlights:

Features

OptionWhat it does
Config.EnableAOPTurn the AOP feature on/off. When off, the AOP HUD element is hidden and /aop is disabled.
Config.EnablePriosTurn the prio feature on/off. When off, all prio HUD elements are hidden and the prio commands are disabled.
Config.EnablePeacetimeTurn peacetime on/off. When off, the peacetime HUD element is hidden and /peacetime is disabled.

AOP

OptionWhat it does
Config.DefaultAOPThe AOP shown when the server starts or the resource restarts (e.g. 'Statewide').

Prios

OptionWhat it does
Config.PriosThe list of prios — add, remove, or rename as many as you like. Each name becomes its own HUD element and is what players type in the prio commands (case‑insensitive), e.g. /startprio City Prio.
Config.CooldownMinutesHow many minutes a prio stays on cooldown after it ends.
Config.MaxJoinMost players allowed in a single prio, including the one who started it (so 5 = starter + 4 joiners).

Webhooks

Config.Webhooks holds one Discord webhook URL per log: AOP (yellow embeds), Prio (green/red/orange/purple/blue embeds), and Peacetime (red = enabled, green = ended). Leave a field empty to disable that log; you can paste the same URL into more than one to send those logs to a single channel.

Debug

OptionWhat it does
Config.DebugPrints detailed diagnostics to the server + each client's F8 console. Very noisy — leave false on a live server; turn it on only to troubleshoot.

Commands

CommandArgumentWho can use itWhat it does
/aop[location]benzy.aopSets the Area of Patrol (supports multi-word names).
/startprio[prio name]EveryoneStarts a prio (only if it is Available).
/joinprio[prio name]EveryoneJoins an active prio (if there is room).
/leaveprio[prio name]EveryoneLeaves a prio. If you were the last one, it auto-ends into cooldown.
/endprio[prio name]The starter, or benzy.prioEnds the prio and starts its cooldown.
/cooldown[prio name]benzy.prioForces a prio straight into cooldown.
/peacetimebenzy.peacetimeToggles server-wide peacetime on/off (see Peacetime).
/customizehudEveryoneOpens the drag/resize HUD editor.

Prio names are case-insensitive and support spaces, so /startprio city prio works for a prio named City Prio.

Prio states (shown on the HUD)

  • Available — nobody has started it; it can be started.
  • Active (x/max) — someone has started it; shows how many players are in it.
  • Cooldown — Xm — recently ended; shows the minutes remaining before it frees up.

Permissions

Access to the staff commands is decided by BenzyBridge's unified access system, configured in config.lua under Config.Access. Each role (aop, prio, peacetime) has four independent methods that are OR'd together — a player passes if any enabled one matches:

  • Framework — a job/group name from your active framework (ESX / QBCore / QBox). Skipped on a standalone server.
  • Identifiers — a raw license: / fivem: / steam: / discord: identifier.
  • AcePerms — a true/false toggle for the built-in ACE string for that role.
  • Discord — a Discord role ID (needs the Badger_Discord_API resource).

Out of the box only AcePerms is on, so it behaves exactly like classic ACE-only permissions. Add the following to your server.cfg to grant them (replace the license with the person/group you want to allow):

# Allow a group to use the staff commands
add_ace group.admin benzy.aop allow # Can use /aop
add_ace group.admin benzy.prio allow # Can force-cooldown and force-end others' prios
add_ace group.admin benzy.peacetime allow # Can toggle /peacetime

# Put a player into that group (find their license in txAdmin or server console)
add_principal identifier.license:YOUR_LICENSE_HERE group.admin
  • aop — required to use /aop.
  • prio — staff permission. Lets a player force a cooldown (/cooldown) and end a prio they did not start (/endprio).
  • peacetime — required to use /peacetime.

To use framework roles, identifiers, or Discord instead of (or alongside) ACE, enable those methods in Config.Access. Players without permission who try a restricted command get an error and nothing happens.


Customizing the HUD

  1. Type /customizehud. Your cursor appears and the HUD elements become editable.
  2. Drag any element to move it. Drag the white corner grip to resize it (the text scales with the box).
  3. Press ESC to save and close. Your layout is stored on your machine.
  4. Use the Reset HUD Layout button to snap everything back to the default positions — handy if you moved an element off-screen on a larger monitor.

Layouts are saved locally on each player's own machine, so they survive reconnecting, server restarts, and clearing the server cache.


Peacetime

/peacetime (permission benzy.peacetime) toggles a server-wide peacetime mode on or off. While peacetime is on, for every connected player:

  • All weapons are disabled — no shooting, no melee/stabbing, no throwing, and the weapon wheel is blocked.
  • No damage and no deaths — players cannot take any damage at all (bullets, melee, explosions, fire, being run over, etc.) and cannot die.

Turning it on shows a large red "Peacetime Enabled" banner to everyone; turning it off shows a green "Peacetime Ended" banner. Each toggle also sends a Discord log saying who did it, and the HUD's Peacetime element turns red while it is active.

Peacetime is enforced on every client, so it applies the moment it is toggled — and to anyone who joins while it is on.


Discord webhooks

  1. In your Discord server: Channel Settings → Integrations → Webhooks → New Webhook.
  2. Copy the webhook URL.
  3. Paste it into Config.Webhooks.AOP, Config.Webhooks.Prio, and/or Config.Webhooks.Peacetime in config.lua.

Embed colors by action: AOP change = yellow, prio start = green, prio end = red, cooldown = orange, join = purple, leave = blue, peacetime enabled = red, peacetime ended = green. Every embed footer shows the date/time and the script name. Leave a webhook field blank to disable that log.


Notes

  • Layout is saved per player on their own machine. Each player's HUD layout is stored locally on each player’s machine, so it persists across reconnects and restarts and is unaffected by clearing the server cache. The trade-off: it is per-machine, so a player who switches computers or clears their own FiveM cache starts from the default layout there.
  • AOP, prio, and peacetime state reset on resource/server restart. This is intentional — a restart is treated as a clean slate. The AOP returns to Config.DefaultAOP, all prios return to Available, and peacetime turns off.

Troubleshooting

  • Turn on debug logging first — set Config.Debug = true, restart the resource, and watch the server console + each client's F8 console. You'll get diagnostics for state loads, saved-layout loads (or first-time creation), command success/failure, cooldown changes, and Discord webhook delivery.
  • A command says I don't have permission — check your ACE setup and that your license is in the allowed group (benzy.aop / benzy.prio).
  • No Discord messages — make sure the webhook URL is pasted correctly in config.lua and that the channel/webhook still exists.
  • The HUD didn't move back after /customizehud — press ESC to save, or use the Reset HUD Layout button.
  • Notifications don't appear — messages route through BenzyBridge's notify provider. Make sure BenzyBridge is started and its notify provider is configured.

Support

Need help? Visit support.benzy.lol.


Credits

Made by Samuel Benzy of Benzy Development.

Website: https://benzy.lol