Supported Frameworks
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:
Press ESC at any time to close the form without submitting. No fine is applied and no Discord log is created unless the officer clicks the submit button.
Issuing a Citation
1
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.2
Open the citation form
Run the configured command (default
/ticket) while near the suspect. The Vue 3 NUI panel opens over the game world.3
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.
4
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.
5
Submit the citation
Click Submit. The script deducts the fine from the suspect’s bank account and sends the Discord embed to your configured webhook.
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
1
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.2
Set your framework
Open
shared/config.lua and set Config.Framework:3
Add ACE permissions
Add the
sh.citation ACE node to every group that should issue citations:server.cfg
4
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.5
Restart and test
Restart the resource, log in as a player in the
police group, run /ticket, and submit a test citation. Confirm the Discord embed arrives and the fine is deducted.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.