CB Law Archives
A department-based law MDT for RSG Core. It combines citizen files, reports, sentencing, evidence, weapons, permits, bounties, investigations, groups, officer records, legal papers, and audit history in one archive.
Current resource version: 2.2.5
Framework: RSG Core
Dependencies: rsg-core, rsg-inventory, cb-libs, ox_lib, oxmysql
Installation
- Copy the inner
cb-lawarchivesdirectory into your resources folder. - Import
install/cb-lawarchives.sql. - Configure departments, job grades, permissions, access modes, sentencing, and penal code in
shared/config.lua. - When item access is enabled, add
archive_bookfrom the install item file toRSGShared.Items. - Start resources in this order:
ensure rsg-core
ensure rsg-inventory
ensure cb-libs
ensure ox_lib
ensure oxmysql
ensure cb-lawarchivesArchive modules
- Citizen registration, identification, tags, notes, and wanted status
- Searchable incident reports with drafts, collaborators, evidence, and locking
- Configurable penal code, charges, fines, and jail sentences
- Evidence intake, transfer, and disposal
- Firearm serial registration, ownership transfers, status changes, and permits
- Public and departmental bounty records
- Linked, sealed, merged, and exportable investigations
- Criminal/interest groups and member records
- Officer roster, training roles, and disciplinary strikes
- Warrants, summons, permits, release orders, and other official papers
- Permission-checked audit activity with optional Discord logging
Access modes
Enable one or more methods in Config.Access:
Config.Access = {
target = true,
prompt = false,
item = false,
command = false,
itemName = 'archive_book',
commandName = 'lawarchives',
}Target and prompt access require proximity to a department location. Item and command access resolve the nearest permitted department. Access is still validated on the server.
Departments and jobs
Each Config.Departments entry has a display label, record prefix, optional blip, accepted jobs with minimum grades, and one or more archive coordinates.
valentine = {
label = "Valentine Sheriff's Office",
prefix = 'VAL',
jobs = { vallaw = 0 },
locations = { vector3(-278.42, 805.29, 119.38) },
}Add departments freely, but keep every table key and prefix unique.
Permissions
Every entry in Config.Permissions is a minimum job grade. Set an action to false to disable it entirely. Permissions cover archive access plus individual citizen, report, evidence, sentence, weapon, bounty, investigation, group, officer, paper, and audit actions.
Permission checks run server-side; hiding a UI button is not the security boundary.
Sentencing
Config.Sentencing controls whether sentencing is available, which money account pays fines, proximity required between officer and suspect, maximum fine/jail values, and the prison resource name. The suspect must be online, match the selected citizen file, and be within captureDistance.
Penal code
Edit Config.PenalCode to match your roleplay rules. Each category contains charges with a unique code, label, default fine, and jail time.
{
code = 'P-101',
label = 'Disturbing the Peace',
fine = 5,
jail = 0,
}Weapons, permits, and bounties
Config.Weapons.serialPrefixcontrols generated registry serials.Config.Weapons.statusesdefines selectable firearm states.Config.Weapons.permitTypesdefines issuable licences.Config.Bounties.maximumRewardcaps newly issued rewards.Config.Bounties.moneyTypecontrols the account used to pay a bounty.- The public bounty board command defaults to
/bounties.
Audit webhooks
Set Config.Audit.enabled = true, then configure only the category webhooks you need. Keep webhook URLs private and never publish them in documentation or client files.
Troubleshooting
No department is available
Check the player's job name and grade against Config.Departments[...].jobs, verify duty requirements, and ensure the archive coordinates are correct.
A button is visible but an action is denied
The server rechecks Config.Permissions. Confirm the player's numeric RSG job grade meets the action's configured minimum.
Sentencing fails
Confirm the suspect is online, near the officer, attached to the correct citizen file, and within the configured fine/jail caps. Verify the configured prison resource is running.
Records are empty after restart
Confirm the SQL import completed, oxmysql starts before the archive, and both resources point at the same database.

