Skip to content

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 ​

  1. Copy the inner cb-lawarchives directory into your resources folder.
  2. Import install/cb-lawarchives.sql.
  3. Configure departments, job grades, permissions, access modes, sentencing, and penal code in shared/config.lua.
  4. When item access is enabled, add archive_book from the install item file to RSGShared.Items.
  5. Start resources in this order:
ini
ensure rsg-core
ensure rsg-inventory
ensure cb-libs
ensure ox_lib
ensure oxmysql
ensure cb-lawarchives

Archive 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:

lua
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.

lua
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.

lua
{
    code = 'P-101',
    label = 'Disturbing the Peace',
    fine = 5,
    jail = 0,
}

Weapons, permits, and bounties ​

  • Config.Weapons.serialPrefix controls generated registry serials.
  • Config.Weapons.statuses defines selectable firearm states.
  • Config.Weapons.permitTypes defines issuable licences.
  • Config.Bounties.maximumReward caps newly issued rewards.
  • Config.Bounties.moneyType controls 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.