Skip to main content
SH Development scripts use FiveM’s built-in ACE (Access Control Entries) system to restrict sensitive features — such as admin menus, vehicle spawners, and citation tools — to authorized players only. ACE gives you fine-grained control directly from server.cfg, with no external permission plugin required. Understanding how to add and assign these entries is essential for any server running SH Development resources.

How ACE Permissions Work

ACE permissions operate on two concepts: principals (players or groups) and objects (permission nodes). You grant a principal access to an object with an allow rule, and you can revoke it with a deny rule. FiveM evaluates these rules at runtime whenever a script calls IsPlayerAceAllowed.

Granting Permissions to a Group

The most common pattern is to allow an entire staff group to use a feature. Add add_ace lines to your server.cfg:
server.cfg
add_ace group.admin sh.citation allow
add_ace group.police sh.citation allow

add_ace group.admin vehiclespawner.open allow
add_ace group.admin vehiclespawner.all allow
Each line follows the format: add_ace <principal> <object> <allow|deny>.

Assigning Players to Groups

To place a player into a group, add an add_principal line using one of their identifiers:
server.cfg
add_principal identifier.steam:110000112345678 group.admin
You can use any FiveM identifier type — steam, license, discord, or fivem — as long as it uniquely identifies the player.

Permission Nodes by Script

The table below lists the ACE nodes used by each SH Development script that implements permission checks.
ScriptACE NodeWhat it gates
sh-citationsh.citationOpens the citation and traffic ticket UI
sh-vehiclespawnervehiclespawner.openOpens the vehicle spawner menu
sh-vehiclespawnervehiclespawner.allGrants access to every vehicle category
sh-vehiclespawnervehiclespawner.<category>Grants access to a single named category
sh-golfgolf(configurable)Allows use of the /golf command
sh-reportsadmin(configurable)Delivers in-game alerts when a new report is submitted
The node name listed in config.lua is the one the script actually checks. Some scripts let you rename the ACE node via a config option — always verify the node name in config.lua before adding it to server.cfg.

Disabling Permission Checks

If you want a feature to be available to all players without any ACE gating, you can turn off the check in config.lua. The exact key name varies by script:
config.lua
Config.EnablePermissions = false  -- sh-vehiclespawner and others
-- or
Config.AcePerm = false            -- sh-citation
Disabling permission checks is not recommended for production servers. It makes restricted features available to every connected player, including public users. Only disable checks during local testing or on private whitelisted servers where all players are trusted.

Tips for Managing Permissions

You can grant the same node to multiple groups by adding one add_ace line per group:
server.cfg
add_ace group.admin sh.citation allow
add_ace group.moderator sh.citation allow
add_ace group.police sh.citation allow