Configure Evidence System
Control evidence access, forensic timings, stations, inventory mappings, and optional integrations.
On this page
Jobs, grades, and stations
The main settings are in shared/config.lua; evidence-type item mapping is in shared/types.lua. These configuration files are editable. Match job keys to the identifiers your Qbox server actually uses.
Config.PoliceJobs = { police = 0, bcso = 0, fib = 0 }
Config.LockerJobs = { police = 0, bcso = 0, fib = 0, doc = 0 }
Config.LockerManageGrade = 2
Config.LockerArchiveGrade = 4
Config.StationAccess = { distance = 4.0 }- PoliceJobs maps scene-work jobs to their minimum grade. LockerJobs separately controls locker access.
- LockerManageGrade controls room actions such as creating, renaming, and linking lockers. LockerArchiveGrade is the threshold for archiving a locker that still contains evidence.
- Config.Stations.rooms defines locker-panel locations; Config.Stations.labs defines forensics benches. Each entry has an id, label, coords, and radius; room entries can specify job restrictions.
- Station actions require the appropriate on-duty role, routing bucket 0, and proximity. The server's reach combines the station radius with StationAccess.distance.
Place stations in interiors that are actually loaded and accessible. The package includes station coordinates, not an MLO or access/teleport system. Restart after editing station definitions.
Trace lifetime, discovery, and analysis
- Config.World.expire uses seconds: casing and impact default to 1800; blood and print default to 3600.
- Config.World.hotSeconds defaults to 120. During this time civilians cannot collect or clean fresh evidence.
- Config.Render selects flashlight and interaction controls. The defaults are E to collect, Y to clean, and a 3-metre interaction reach.
- Config.Sweep controls UV range, highlighting, and how long revealed traces remain available.
- Config.Analysis.duration sets processing times by sample type in seconds. Its serial-recovery chance fields are percentages, not guaranteed matches.
- Config.Sampling controls consent time, action duration, and sampling distance. Sampling/collection duration fields use milliseconds; consentSeconds uses seconds.
-- Fields inside Config.GSR
duration = 60 * 60,
recent = 60 * 15,
waterSeconds = 15,GSR can remain positive for an hour after the last shot. The cloth action or the configured period of server-observed swimming can clear it. Keep the swimming task adapter authoritative; standing near water does not establish that the wash completed.
Items, ammunition, and lockers
Config.Items maps tool names to inventory item identifiers. Keep those names aligned with the installed item definitions and their BigB_evidence.* client exports. Config.Calibers and Config.AmmoClass map your inventory's ammunition identifiers to readable ballistic labels; review them when using a different weapon or inventory pack.
Config.Locker = {
prefix = 'xev_locker_',
slots = 100,
weight = 200000,
}The default locker capacity is 100 slots and 200,000 inventory weight units (200 kg with the standard gram convention). Keep the prefix fixed after first use. Changing it is a data migration, not a cosmetic rename.
Leave Config.Legacy.import disabled on new servers. The optional importer targets retired tk_evidence tables; it is not an XSC Evidence converter. Follow the bundled upgrade guide and rehearse on a backup before opting in.
Choose one medical adapter
Config.Integrations = {
medical = 'standalone',
medicalResource = false,
tablet = false,
police = false,
camera = false,
cameraEvent = 'ps-camera:useCamera',
}- standalone listens for positive firearm/blade damage to the local player through FiveM's entityDamaged event. It requires no separate medical producer.
- bigb uses the compatible BigB_medical damage integration. Enable it only when that producer is installed.
- custom disables the built-in damage producers. Your local client medical script reports a real wound through the ReportWound export.
-- Set Config.Integrations.medical to 'custom' first.
-- In your local medical handler, after a real wound is confirmed:
exports.BigB_evidence:ReportWound(weaponHash)The export belongs in a client medical handler with a known weaponHash. The editable adapter is client/integrations.lua. Select one producer to avoid duplicate blood reports; medicalResource is a separate setting for optional medical restraint/death-scene checks.
Optional MDT, police, camera, and logging
- tablet can enable a compatible BigB_tablet export contract. Evidence System includes its own locker and bench panels, but not the full MDT or its permissions.
- police can enable the custom qbx_police death-scene integration only when its required IsInOwnDeathScene/deathSceneBlock contract and medical peer are present. An ordinary resource with the same name is not sufficient.
- camera can enable a separately configured ps-camera provider. The evidence_camera item and an empty photo definition alone do not capture, upload, or print images.
- Optional audit mirroring is configured server-side in server/logging.lua. Database custody works without it; keep any webhook in server-only configuration.
Leave absent integrations set to false. For custom server-side locker, record, or analysis integrations, use the return values and permission requirements in the bundled docs/API.md. Do not expose a general network event that forwards arbitrary requests to trusted server exports.