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:
# 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 allowSave the file and restart your server. Anyone in group.admin can now use /police admin and the admin commands.
- This is the same
adminpermission 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
| Command | Description | Access |
|---|---|---|
/police admin | Opens the in-game admin panel | Admin or authorized department boss |
/police settings | Opens the standalone DB-backed resource settings panel | Admin only |
/police hire <serverID> <deptName> [gradeRank] | Hires a player into a department | Admin 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 booking | Admin only |
/police unjail <serverID> | Releases an inmate from custody | Admin only |
/police addtime <serverID> <±minutes> [reason] | Adds or reduces a prisoner's remaining sentence | Admin or qualifying officer |
/police setsentence <serverID> <minutes> [reason] | Sets a prisoner's remaining sentence | Admin or qualifying officer |
/police speedcam create | Opens the speed camera placement UI | Admin only |
/police speedcam remove | Removes the nearest speed camera within range | Admin only |
/police duty | Toggles 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-in | Hired officer |
/police mdt | Opens the MDT when Config.MDT.useItem = false; otherwise use the configured tablet item | Eligible officer |
/police bodycams | Opens the bodycam roster viewer | Hired officer (any department) |
/police cameras | Opens the CCTV roster viewer | Hired 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 |
/removeclamp | Removes 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 locker | Admin 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).
| Command | Default key | Function |
|---|---|---|
+policeactions | F2 (Config.ActionMenuKey) | Opens the police actions menu |
+oxide_police_vehicle_pa | B (Config.Megaphone.vehicleKey) | Toggles vehicle PA from a fleet vehicle with a megaphone |
+policestopcarry | E (Config.FieldActions.Carry.stopKey) | Stops carrying the current target |
+policetackle | G (Config.Tackle.Key) | Tackles the targeted suspect |
+handsup | X (Config.HandsUp.Key) | Tap for standing hands-up, hold to kneel (command name is configurable via Config.HandsUp.Command) |
+oxidepolicetoggledoor | L (Config.Doors.ToggleKey) | Toggles the nearest door's lock |
+bodycamrec | F6 (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 byConfig.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.
| Argument | Type | Required | Description |
|---|---|---|---|
serverID | number | Yes | Target player's server ID |
minutes | number | Yes | Minutes to add (positive) or reduce (negative); must not be 0 |
reason | string | No | Free-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 minutesAccess: 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.
| Argument | Type | Required | Description |
|---|---|---|---|
serverID | number | Yes | Target player's server ID |
minutes | number | Yes | New remaining sentence in minutes (must be 0 or greater) |
reason | string | No | Free-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 5Access: 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:
| Field | Notes |
|---|---|
name | Must match a job in your framework (e.g. police, lspd, bcso). Case-sensitive |
label | Display 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).
| Field | Notes |
|---|---|
grade_rank | Numeric rank (must match framework job grades) |
grade_name | Internal name (e.g. cadet) |
grade_label | Display name (e.g. Cadet) |
salary | Per-tick salary paid by Config.SalaryInterval |
is_boss | Grants 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.
| Field | Notes |
|---|---|
department_id | Owning department |
label | Display name |
type | main or substation |
coords_x / y / z, heading | Station 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'scostplus any addon surcharges (Config.FleetAddons.radar = 5000,Config.FleetAddons.megaphone = 2500). - Toggle
has_radarto enable the vehicle radar keybinds (K/J/M). - Set
min_gradeto 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(default750).
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.luaafter 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_CLIPBOARDscenario). - 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_pointtable — 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.