Admin Guide

Admin and player commands, keybinds, permissions, and the /police admin in-game admin panel walkthrough.

Admin and player commands for oxide-police, plus a walkthrough of the in-game admin UI (/police admin).

Permissions

The admin panel (/police admin) and all admin commands are for your server admins — the same people you already trust to run admin tools on your server. A player counts as an admin if they are in a group that has been given the admin permission.

If you have not set up an admin group yet, add these two lines to your server.cfg (the text file that tells your server which resources to start and holds your server's settings). Replace the licence with your own — you can find it in your server console with getrawendpoint, or in txAdmin under the player's profile:

server.cfg
# 1. Put your account in the "admin" group
add_principal identifier.license:abc123 group.admin

# 2. Give the "admin" group permission to use admin tools
add_ace group.admin admin allow

Save the file and restart your server. Anyone in group.admin can now use /police admin and the admin commands.

  • This is the same admin permission used across all Oxide resources, so if your admins can already use other Oxide admin tools, they can use these too — there is nothing extra to set up.
  • There is one admin level. A player either is an admin or is not — there are no tiers or per-command permissions to manage.
  • This works the same on QBCore, ESX, and Qbox. There is nothing framework-specific to configure.

The MDT itself has its own, separate rank requirements for officers (such as the minimum rank to issue a warrant). Those are set per grade and are different from the admin permission above — see Configuration.

Letting department bosses set up their own stations

By default only server admins can open /police admin, which means the server owner personally places every station, garage and door for every department.

Setting Config.AllowBossSetup = true lets a department boss — an officer whose grade has the boss flag — open the same panel for their own department only. Nothing about admin access changes, and the setting is off by default.

A boss with this enabled can configure:

  • Stations, including all their interaction points (clock-in, armory, evidence, lockers, and so on)
  • Garages
  • Doors
  • CCTV cameras
  • Speed cameras, including which jobs they ignore
  • Detention holding and mugshot points
  • Jail policy (the stripping mode and its whitelist)

Plus everything bosses could already manage: grades, loadouts, uniforms and fleet.

A boss can never:

  • See, open or touch another department — the panel only ever loads their own
  • Create, delete, rename or disable a department
  • Fund a treasury or permanently delete a fleet vehicle
  • Reach the server-wide screens (revive point, prisoner jobs, prison shop)

The department dropdown is replaced by a fixed label showing their department, and the panel is badged Dept Setup instead of Admin so it is obvious the view is narrowed.

All of this is enforced on the server, not just hidden in the interface — a modified client cannot reach another department's data. Every change a boss makes is written to the server log with their character id, so you can see who changed what.

Commands Overview

CommandDescriptionAccess
/police adminOpens the in-game admin panelAdmin or authorized department boss
/police settingsOpens the standalone DB-backed resource settings panelAdmin only
/police hire <serverID> <deptName> [gradeRank]Hires a player into a departmentAdmin only
/police fire <serverID> [deptName]Fires a player from a department (their current one by default)Admin only
/police jail <serverID> <months> [reason]Sends a player to custody directly without going through bookingAdmin only
/police unjail <serverID>Releases an inmate from custodyAdmin only
/police addtime <serverID> <±minutes> [reason]Adds or reduces a prisoner's remaining sentenceAdmin or qualifying officer
/police setsentence <serverID> <minutes> [reason]Sets a prisoner's remaining sentenceAdmin or qualifying officer
/police speedcam createOpens the speed camera placement UIAdmin only
/police speedcam removeRemoves the nearest speed camera within rangeAdmin only
/police dutyToggles duty from anywhere, bypassing the clock-in zone (disabled by default — requires Config.RequireStationClockIn = false). Uses the first station in the officer's department for clock-inHired officer
/police mdtOpens the MDT when Config.MDT.useItem = false; otherwise use the configured tablet itemEligible officer
/police bodycamsOpens the bodycam roster viewerHired officer (any department)
/police camerasOpens the CCTV roster viewerHired officer (any department)
/cuff [serverID]Cuffs the nearest player or the given server ID (configurable: Config.OfficerTargetMenu.CuffCommand)On-duty officer
/uncuff [serverID]Uncuffs the nearest player or the given server ID (configurable: Config.OfficerTargetMenu.UncuffCommand)On-duty officer
/removeclampRemoves a wheel clamp from the nearest vehicle. Only registered once Config.FieldTools.WheelClamp.externalJobs names at least one job (configurable: WheelClamp.externalCommand)A player in one of those jobs
/police purgeevidence [caseNumber]Permanently empties a closed case's sealed evidence lockerAdmin or console

Keybinds

The keybinds below are registered through RegisterKeyMapping and can be rebound by each player via the FiveM keybinds menu (Settings → Key Bindings → FiveM).

CommandDefault keyFunction
+policeactionsF2 (Config.ActionMenuKey)Opens the police actions menu
+oxide_police_vehicle_paB (Config.Megaphone.vehicleKey)Toggles vehicle PA from a fleet vehicle with a megaphone
+policestopcarryE (Config.FieldActions.Carry.stopKey)Stops carrying the current target
+policetackleG (Config.Tackle.Key)Tackles the targeted suspect
+handsupX (Config.HandsUp.Key)Tap for standing hands-up, hold to kneel (command name is configurable via Config.HandsUp.Command)
+oxidepolicetoggledoorL (Config.Doors.ToggleKey)Toggles the nearest door's lock
+bodycamrecF6 (Config.Bodycam.recording.hotkey)Toggles a manual bodycam clip while watching another officer's feed

The vehicle-mounted speed radar uses three lib.addKeybind registrations: K (Config.Radar.KeyToggle) to toggle, J (Config.Radar.KeyLockFront) to lock the front-facing target, M (Config.Radar.KeyLockRear) to lock the rear-facing target. These appear in the FiveM key-bindings menu as oxide_police_radar_toggle / _lock_front / _lock_rear and are rebindable.

The handheld speed radar (WEAPON_RADAR) has no keybinds — aiming the weapon activates the radar overlay automatically.

Admin Commands

/police admin

Opens the administration panel. This is the primary tool for setting up everything in the database — departments, stations, grades, garages, armory loadouts, uniforms, doors, prison points, CCTV, and speed cameras. (The charge catalog is the one exception — it is edited in the MDT.)

The admin panel also includes a mugshot Preview under Detention Mugshot, which places you at the photo mark and shows the camera framing so you can line up the booth. Preview does not take or upload a photo — test the upload itself by booking a test suspect.

See the admin panel walkthrough below.

Command Details

/police speedcam create

Opens the speed camera placement UI for the calling admin.

The UI lets you:

  • Pick a model from Config.SpeedCam.Models
  • Aim and place the camera prop
  • Set the speed limit, sensor radius (default Config.SpeedCam.DefaultSensorRadius), and fine multiplier (capped by Config.SpeedCam.MaxFineMultiplier)

The camera is persisted to the database and visible to all officers. Speed unit follows Config.SpeedUnit (MPH or KMH).

/police speedcam remove

Removes the nearest speed camera within range. Useful for quick teardown without opening the admin panel.

Player Commands

/police mdt

Opens the Mobile Data Terminal. Officer must be on duty, unless Config.MDT.allowOffDuty is set to true (default false), which lets any hired officer open the MDT while off duty.

If Config.MDT.useItem is set to true, this command is disabled and the MDT is opened by using the Config.MDT.itemName inventory item (default police_tablet) instead.

/police duty

Toggles duty from anywhere without requiring the officer to stand on a clock-in zone. Restricted to hired officers. On clock-in, picks the first station in the officer's department. Useful for staff and for testing without a configured station.

This command is disabled by default because Config.RequireStationClockIn defaults to true (officers must use a station clock-in zone). Set it to false to enable /police duty and the duty toggle inside the police radial menu.

/police jail <serverID> <months> [reason]

Sends a player to custody for the given number of months without going through the booking flow. Months convert to seconds using Config.Custody.SecondsPerMonth (default 60 = 1 RP-month per real minute). Picks the admin's own department if they are hired into one, otherwise the first department with a jail-configured station. Admin only.

/police unjail <serverID>

Releases an inmate from custody. Admin only (or the server console).

/police addtime <serverID> <±minutes> [reason]

Adds to or reduces a prisoner's remaining sentence. Pass a positive number of minutes to extend the sentence or a negative number to reduce it. Works on offline prisoners. If the adjustment brings the remaining time to zero or below, the prisoner is released.

ArgumentTypeRequiredDescription
serverIDnumberYesTarget player's server ID
minutesnumberYesMinutes to add (positive) or reduce (negative); must not be 0
reasonstringNoFree-text reason recorded in the log

Examples:

/police addtime 5 30 disorderly conduct   -- adds 30 minutes to player 5's sentence
/police addtime 5 -15 good behavior        -- reduces player 5's sentence by 15 minutes

Access: admins (or the server console), or on-duty officers whose grade meets the holding station's jail minGradeUnjail (default 0 = any rank).

/police setsentence <serverID> <minutes> [reason]

Sets a prisoner's remaining sentence to an exact number of minutes. Works on offline prisoners. Setting it to 0 releases the prisoner.

ArgumentTypeRequiredDescription
serverIDnumberYesTarget player's server ID
minutesnumberYesNew remaining sentence in minutes (must be 0 or greater)
reasonstringNoFree-text reason recorded in the log

Examples:

/police setsentence 5 45    -- sets player 5's remaining sentence to 45 minutes
/police setsentence 5 0     -- releases player 5

Access: admins (or the server console), or on-duty officers whose grade meets the holding station's jail minGradeUnjail (default 0 = any rank).

/cuff [serverID] / /uncuff [serverID]

Cuffs or uncuffs the nearest player (within Config.OfficerTargetMenu.Distance, default 2.5m), or the player whose server ID is passed as an argument. The command names are taken from Config.OfficerTargetMenu.CuffCommand / UncuffCommand (defaults: cuff / uncuff). Restricted to on-duty officers.

/police bodycams

Opens the bodycam roster viewer. Restricted to hired officers (any department, on or off duty). Lists active bodycam wearers and lets the officer watch a stream. By default, filtered to officers in the same department (Config.Bodycam.sameDepartmentOnly = true).

/police cameras

Opens the CCTV roster viewer. Restricted to hired officers (any department, on or off duty). Lists all CCTV cameras the officer can access (placed cameras + permanent admin-placed cameras).

/police purgeevidence [caseNumber]

Permanently destroys everything inside a case's evidence locker and empties it. Admin or server console only.

Every case gets its own evidence locker, and those lockers otherwise stay around forever. This is the way to reclaim that space on a long-running server.

The locker has to be sealed first, which means the case must be closed and Config.Evidence.locker.sealOnCaseClose must be turned on. That is deliberate: it makes purging a two-step action rather than something a mistyped case number can trigger against an active investigation.

This cannot be undone. The items are gone, not moved. Each purge is written to the log with the case number, who ran it, and a list of exactly what was destroyed. If your inventory system doesn't support clearing a stash, the command reports that and changes nothing.

/police admin Walkthrough

The admin panel is organised into tabs. First-time setup typically follows this order:

Department creation

Open /police admin and use the New Department button (the department selector sits at the top of the panel's sidebar). The create form asks for two things:

FieldNotes
nameMust match a job in your framework (e.g. police, lspd, bcso). Case-sensitive
labelDisplay name (e.g. Los Santos Police Department)

The rest of the department's settings are edited on their own screens after creation:

  • Overview — enable / disable the department and manage the treasury
  • Jail Policy — stripping mode (none / locker / wipe) and the keep-item whitelist (see Custody)
  • Speed Cameras — the "ignored jobs" list of framework jobs exempt from camera triggers

Departments start with a Config.BankingAccountStartBalance (default $30000) treasury when Config.UseBankingAccount = true.

Grade matrix

For each department, define grades on the Grades screen (with that department selected in the sidebar).

FieldNotes
grade_rankNumeric rank (must match framework job grades)
grade_nameInternal name (e.g. cadet)
grade_labelDisplay name (e.g. Cadet)
salaryPer-tick salary paid by Config.SalaryInterval
is_bossGrants access to the boss panel (opened from in-station ox_target interaction)

Grades are created entirely through the admin panel — there is no template file to copy from.

Station setup

/police admin → Stations → Create.

FieldNotes
department_idOwning department
labelDisplay name
typemain or substation
coords_x / y / z, headingStation origin

After creating, configure the station's points across the panel's screens:

Stations → [station] → Interaction tab:

  • Clock-in zone — where officers go on / off duty
  • Armory — where officers buy loadouts (loadouts themselves are built on the Loadouts screen)
  • Personal locker — where officers put on / take off uniforms
  • Boss menu — where bosses open the management panel
  • Evidence locker — the case-based evidence access point (the case selected in-app decides which locker opens); access controlled by Config.Evidence.locker.minGrade
  • Evidence lab — the evidence processing point

Stations → [station] → Services tab:

  • Station bell — desk bell for civilians
  • Trash bin — shared bin with slots / weight
  • Firearm registration desk — civilian firearm registration point

Detention screens (per station):

  • Detention Holding — booking desk, holding cells, jail cell, and release point
  • Detention Mugshot — camera position + suspect photo mark

Garages live on the Fleet → Garages screen, where each garage can be attached to a station.

Clock-in, armory, boss menu, evidence locker, evidence lab, and personal locker each support multiple points per station — use the add / remove controls to place more than one. Existing single-point stations keep working unchanged.

Garage and vehicle setup

/police admin → Fleet → Garages, then Fleet → Vehicles.

  • Create a garage first (label, type, spawn points), optionally attached to a station.
  • Add vehicles from Config.FleetCatalog. Each addition debits the department treasury by the vehicle's cost plus any addon surcharges (Config.FleetAddons.radar = 5000, Config.FleetAddons.megaphone = 2500).
  • Toggle has_radar to enable the vehicle radar keybinds (K / J / M).
  • Set min_grade to gate spawn access.
  • Checked-out vehicles stay in the world until physically returned to a garage bay (they survive clock-out, disconnect, and restarts). When a unit is stranded in the field, use the Tow action on the Fleet screen — it lists each out unit with its plate, holder, and last-seen street so you pick exactly which one to bring back. Each tow charges the treasury Config.FleetRecoveryFee (default 750).

Charges catalog

The charge catalog is managed in the MDT (Catalog tab), not the admin panel.

  • The catalog is seeded from Config.DefaultCharges (100 entries) the first time the resource starts.
  • Edit / add / archive charges through the MDT's Catalog tab (admins only).
  • Editing shared/config/charges.lua after first run does not retroactively modify the database.

Importing a penal code from a spreadsheet

Adding a few hundred charges one at a time is painful, so the Catalog tab has an Import button that takes a CSV.

The columns are code, title, category, description, fine_amount, jail_time. Only code and title are required, and the column order does not matter — the header row is what identifies each column. category must be infraction, misdemeanor, or felony; anything else becomes misdemeanor. A worked example is shown in the import panel.

You can either pick a .csv file or paste the rows straight into the box. Either way you get a preview before anything is saved, showing which rows will be added, which will update a charge that already exists, and which are invalid (flagged and skipped). Nothing is written until you confirm.

Because a row whose code already exists updates that charge rather than duplicating it, you can keep the spreadsheet as your working copy of the penal code and re-import it whenever you make changes. Charges you previously removed come back if their code reappears in the file.

Imports are capped at Config.MDT.limits.maxImportRows (default 500) per file. If a row fails, the rest still import and the failures are listed with their line numbers.

The Export button produces the same format from your current catalog — useful for backups, or for copying a penal code from a test server to a live one. Because the game's browser cannot save files directly, the export appears as selectable text: click it, select all, and copy.

Prison job points

/police admin → Detention → Prisoner Jobs.

  • Place rock spawns (mining), trash spawn zones (cleaning), and electrical meter points.
  • Each placed point is persisted and tied to one of the three job types.

Prison shop

/police admin → Detention → Prison Shop.

  • Place the vendor location (ped spawns at this point with WORLD_HUMAN_CLIPBOARD scenario).
  • Define meal windows (for the free prison_food_tray).
  • Build the paid catalog (item, label, price, category from Config.PrisonShop.categories).

Prison revive point

/police admin → Detention → Revive Point.

  • Sets the global revive point used when an inmate dies during their sentence.
  • Stored in the police_prison_revive_point table — without a row, the prison revive cutscene cannot fire and inmates fall through to the framework medical resource.

Speed camera placement

Use /police speedcam create from in-world for placement (see above) — this is faster than placing through the admin panel.

Next Steps