Framework Support
sh-courthouse supports both VORP and RSG frameworks. Set the framework in your server-sideconfig.lua before starting the resource:
config.lua
Role-Based Access
sh-courthouse uses a role model rather than a single grade threshold. Each role grants a specific set of courthouse powers. You map your server’s job names to roles inConfig.Access:
config.lua
| Role | Courthouse powers |
|---|---|
| Judge | Approve/deny warrants, decide fine disputes, rule on jail appeals, manage hearings, submit trial rulings |
| Clerk | Schedule and manage hearings, issue summons, maintain case/trial docket entries |
| Lawyer | File and track fine disputes, jail appeals, and case submissions |
| Prosecutor | Same as lawyer for prosecution-side case preparation |
| Defender | Same as lawyer for defense-side appeals and case work |
| Bailiff | Staff-level courthouse access for courtroom operations |
AllowCitizenActions = true can open /courthouse to view their own cases and file appeals without needing a law role. They can always access the Fine Desk NPC regardless of this setting.
Features
Fine Management
Fine Management
Officers record fines against characters from the courthouse NUI or integrated MDT. The Fine Desk NPC provides a dedicated in-world interaction point where citizens visit to view their outstanding fines and make payment. Fine payment events are logged to the
FinePayments Discord webhook.Fine Disputes
Fine Disputes
Citizens and lawyers can file a dispute against an issued fine. Judges review dispute filings and issue decisions from the courthouse NUI. Dispute events are logged to the
FineDisputes webhook.Warrants
Warrants
Law enforcement submits warrant requests through the courthouse NUI. Judges review the warrant queue and approve or deny each request. Warrant events are logged to the
Warrants webhook.Jail Appeals
Jail Appeals
Jailed characters or their legal counsel can file a jail appeal. Judges review appeals and issue rulings that can modify or dismiss the sentence. Appeal events log to the
JailAppeals webhook.Hearings & Summons
Hearings & Summons
Clerks schedule hearings and issue summons to involved parties. Hearing status changes and summons deliveries are logged to the
Hearings webhook. When sh-telegram is enabled, summons can be delivered as in-character telegrams.Trials
Trials
Full trial workflows are supported: docket management, participant registration, phase tracking, and judicial rulings. Trial events are logged to the
Trials webhook.Fine Desk NPC
Configure the Fine Desk NPC — the in-world interaction point for citizen fine payments — inconfig.lua:
config.lua
If you run sh-policemdt alongside sh-courthouse and have sh-courthouse managing fine payments, set
Config.PayFinesNPC = false in sh-policemdt to avoid duplicate Fine Desk NPCs.sh-telegram Integration
WhenConfig.SHTelegram = true, court documents such as hearing summons are delivered as in-character telegrams via sh-telegram rather than as on-screen notifications. Requires sh-telegram to be installed and running:
config.lua
Courthouse Command
The courthouse NUI is opened with the/courthouse command (configurable via Config.NUI.OpenCommand). Citizens use it to view their own records. Law roles use it to access the full courthouse interface for their assigned role.
config.lua
Discord Webhook Logging
sh-courthouse supports per-event-type Discord webhooks for granular channel routing:config.lua
Installation
Import the SQL files
Run the SQL files from the resource against your database to create the sentencing records, fine, warrant, hearing, and trial tables.
Configure access roles
Edit
Config.Access.Vorp (or .Rsg) to map your server’s job names to the courthouse roles that match your community’s law structure.Place the Fine Desk NPC
Edit
Config.PayFineNPC.Locations to position the Fine Desk NPC at the appropriate building on your map.Enable webhooks
Set
Config.Webhooks.Enabled = true and paste your Discord webhook URLs into the relevant channel fields.