Supported Frameworks
| Value | Framework |
|---|---|
nd | ND_Core (current) |
ndold | ND_Core v1 (legacy) |
nat | NAT2K15 |
standalone | No framework |
QBCore and ESX are not supported by sh-citation. If your server runs either of those frameworks, this resource is not compatible.
Dependencies
- sh-notify — default notification provider (bundled workflow; swap to
customin config if you use another system) - ND_Core — optional; uncomment the dependency line in
fxmanifest.luaif you run ND_Core
ACE Permissions
sh-citation uses a single ACE node (sh.citation) to control who can open the citation UI. Add your law enforcement and admin groups in server.cfg:
server.cfg
Configuration
All settings live inshared/config.lua. The values below reflect the defaults shipped with the resource.
shared/config.lua
Citation Form Fields
When an officer runs the configured command (default/ticket), the Vue 3 NUI form opens full-screen. The officer fills in the following fields before submitting:
| Field | Description |
|---|---|
| Player ID | In-game server ID of the suspect |
| Suspect Name | Full name of the suspect character |
| Officer Name | Issuing officer’s character name |
| Charges | Free-text description of the violation(s) |
| Fine Amount | Dollar amount to deduct from the suspect’s bank |
| Signature | Freehand signature drawn on an HTML5 canvas |
Issuing a Citation
Ensure you have permission
Confirm your character’s group has the
sh.citation ACE node. If the command produces no response, ask your server admin to check the ACE assignment.Open the citation form
Run the configured command (default
/ticket) while near the suspect. The Vue 3 NUI panel opens over the game world.Fill in the citation details
Enter the suspect’s player ID, both character names, the charges, and the fine amount. All fields are required before submission is allowed.
Draw your signature
Use your mouse to draw a freehand signature on the canvas at the bottom of the form. You can clear and redraw as many times as needed.
Discord Embed
Every submitted citation creates a Discord embed in the channel attached to your webhook. The embed includes:- Player ID and suspect name
- Issuing officer’s name
- Charges listed
- Fine amount applied
- Your configured thumbnail image
Config.EmbedOptions.Color in decimal format. The Title field appears as the embed header.
Installation
Add to server.cfg
Ensure sh-citation after its dependencies:If you use ND_Core, uncomment the ND_Core dependency line in
server.cfg
fxmanifest.lua before starting the resource.Add ACE permissions
Add the
sh.citation ACE node to every group that should issue citations:server.cfg
Configure the Discord webhook
Paste your webhook URL into
Config.EmbedOptions.WebHook and set a thumbnail URL and embed colour to match your server’s branding.Using a custom notification system
Using a custom notification system
If your server uses a notification resource other than sh-notify, set
Config.Notify = 'custom' and edit the notification wrapper in the client script to call your own export or event. The 'sh' value routes all notifications through sh-notify’s default export.