Skip to content

Administrator Guide

This guide covers administrative tasks for configuring and managing ars_police on your FiveM server. It is intended for server owners and staff who need to set up police stations, configure features, and manage the resource.


  1. Framework and Inventory Setup
  2. Job Configuration
  3. Location Setup
  4. Armory Configuration
  5. Vehicle Garage Configuration
  6. Jail System Configuration
  7. Evidence System
  8. Security Cameras
  9. Module Tuning
  10. Troubleshooting

In config.lua, set your server’s framework:

Config.Framework = 'esx' -- or 'qb'

The script auto-detects qb-core and es_extended if they are running.

Set your inventory system to match your server:

Config.Inventory = 'ox' -- Options: 'ox', 'qb', 'qs', 'mf', 'cheeza', 'custom'

Update the inventory images path:

Config.InventoryImages = 'nui://ox_inventory/web/images/'

Configure which billing system to use for fines:

Config.BillingSystemType = 'esx' -- 'esx', 'qb', 'okok', or 'custom'

Add all law enforcement job names used on your server:

Config.PoliceJobNames = {
'police',
'sheriff'
}

Features like weapon licenses can be restricted by minimum grade:

Config.WeaponLicenseSettings = {
enabled = true,
license_name = 'weapon',
minGrade = 0, -- Minimum grade to grant/revoke licenses
menuPosition = 'bottom-right'
}

Police station locations are configured in the locations/ folder. Each file defines a complete station.

File Station Key Location
mrpd.lua LSPD Mission Row PD
pbpd.lua PBPD Paleto Bay PD
sspd.lua SSPD Sandy Shores PD
rhpd.lua RHPD Rockford Hills PD
ranchopd.lua RPD Rancho PD

Each location contains these sections:

Config.Locations['station_key'] = {
blip = {
enabled = true,
name = 'Station Name',
coords = vector3(x, y, z),
sprite = 60,
color = 29,
scale = 1.0,
},
ClockInAndOut = { enabled = true, ... },
BossMenu = { enabled = true, ... },
Armoury = { enabled = true, ... },
Stash = { enabled = true, ... },
ClotheRoom = { enabled = true, ... },
Vehicles = { enabled = true, ... },
Elevators = { ... },
}
  1. Create a new file in locations/ (e.g., custom_pd.lua)
  2. Copy the structure from an existing location file
  3. Update coordinates, blip settings, and feature toggles
  4. The location loads automatically on resource start

Configure weapon loadouts per grade in each location file:

Armoury = {
enabled = true,
coords = vector3(480.32, -996.67, 30.69 - 0.9),
heading = 86.95,
ped = 's_f_y_cop_01',
label = '[E] - Access Armoury',
restrictedToJob = 'police',
weapons = {
[0] = {
['WEAPON_PISTOL'] = { label = 'Pistol', multiple = false, price = 75 },
['WEAPON_NIGHTSTICK'] = { label = 'Night Stick', multiple = false, price = 50 },
['pistol_ammo'] = { label = '9mm Ammo', multiple = true, price = 10 },
['heavyarmor'] = { label = 'Bulletproof Vest', multiple = true, price = 100 },
['handcuffs'] = { label = 'Handcuffs', multiple = true, price = 50 },
},
[2] = {
['WEAPON_SMG'] = { label = 'Submachine Gun', multiple = false, price = 1100 },
['WEAPON_CARBINERIFLE'] = { label = 'Carbine Rifle', multiple = false, price = 2100 },
},
}
}
  • multiple = true allows purchasing multiple of the same item
  • price sets the cost (set to nil or omit for free items)
  • Grade keys ([0], [1], etc.) define what each rank can access
  • Higher grades fall back to the highest defined grade if their level is not listed

Vehicle garages support land and air categories with extras and livery selection:

Vehicles = {
enabled = true,
restrictedToJob = 'police',
zone = {
coords = vector4(441.478, -985.212, 25.7, 358.806),
range = 5.5,
label = '[E] - Access Garage',
return_label = '[E] - Return Vehicle'
},
extrasMenu = {
enabled = true,
coords = vector3(436.502, -975.838, 25.7),
range = 3.0,
},
spawn = {
land = {
vector4(436.409, -986.188, 25.093, 90.273),
vector4(436.487, -988.881, 25.093, 89.725),
},
air = {
vector4(449.138, -981.303, 43.691, 270.841),
}
},
options = {
[0] = {
['police'] = {
label = 'Police Cruiser',
category = 'land',
livery = 0,
extras = { ["1"] = true, ["2"] = true },
},
},
}
}

ars_police supports multiple jail systems:

Config.JailSettings = {
enabled = true,
jailSystem = 'default',
input = true,
maxJailTime = 50,
}
System Config Value
Built-in (default) 'default'
rcore-prison 'rcore'
tk_jail 'tk_jail'
hd_jail 'hd_jail'
myPrison 'myPrison'
qalle-jail 'qalle-jail'
Plouffe Jail 'plouffe'
mxJail 'mx'
Custom 'custom'

Prison locations are defined in Config.Prisons within config.lua. Each prison entry includes:

  • coords - Prison center location
  • radius - Release radius
  • blip - Map blip settings
  • hospital - Revive location for in-prison deaths
  • release - Release point coordinates
  • breakout - Tunnel entrance/exit coordinates for breakout mechanic
  • activities - Prison work activities (workout, cleaning, kitchen)
  • cells - Individual cell locations
  • stores - Prison commissary and contraband shops
  • lootables - Collectible items with regeneration timers

The README includes pre-configured examples for both unclejust MLO and QB default jail MLO.


Config.EnableEvidence = true

Evidence Settings (modules/evidence/config.lua)

Section titled “Evidence Settings (modules/evidence/config.lua)”
Config.Evidence = {
PickupDistance = 3.0,
ClearDistance = 12.0,
CreateRateLimitMs = 300,
BulletCasingsDropChance = 100,
EnableProjectiles = true,
EnableGloves = true,
EnableFingerprintInMenu = true,
EnableDnaInMenu = true,
}
Type Description
Bullet Casings Dropped when weapons are fired
Projectiles Found where bullets impact surfaces
Blood Left by injured players
Fingerprints Collected from surfaces via UV light
DNA Taken from players directly
GSR Gunshot residue tested via /gsr command

Configure trash bins and evidence stashes in modules/evidence/config.lua:

Config.Evidence.Trash = {
[1] = vector3(446.843, -996.874, 30.69),
}
Config.Evidence.EvidenceStash = {
[1] = vector3(450.167, -997.609, 30.69),
}

Enable and configure the camera system:

Config.EnableSecurityCamera = true

Camera definitions are in modules/camera/config.lua. The script includes 34 pre-configured cameras covering banks, stores, and landmarks.

Config.SecurityCameras.location = {
[1] = vector3(442.28, -998.86, 34.97), -- Camera access point
}
Config.SecurityCameras.cameras = {
[35] = {
label = 'My Camera',
coords = vector3(x, y, z),
rotation = { x = -35.0, y = 0.0, z = 0.0 },
canRotate = false,
isOnline = true,
},
}

Modules are configured in modules/*/config.lua files. The enable/disable toggle is in the root config.lua.

Key settings in modules/cuff/config.lua:

  • timer - Auto-uncuff duration
  • cuffItem.item - Item required to cuff
  • handcuffKey - Item required to uncuff
  • lockpicking - Lockpick settings and break chance
  • zipties - Ziptie item and cutting tool
Config.ShieldSettings = {
enabledItem = true,
item = 'shield',
disableSprint = true
}
Config.SpikeStripSettings = {
enabledItem = true,
item = 'spikestrip',
maxLength = 4,
deployTimePerSegment = 1000,
pickupTime = 1500
}
Config.TackleSettings = {
enabled = true,
policeOnly = true,
hotkey = 'E'
}
Config.ServiceBlips = {
['police'] = 38,
['ambulance'] = 5,
['sheriff'] = 85,
}

Define outfits per job and grade in modules/lockers/config.lua. Each outfit specifies male and female drawable/texture components.

Config.ServiceExtensionOnEscape = 5 -- Extra minutes on escape attempt
Config.MaxCommunityServiceTime = 60 -- Maximum assignable minutes
Config.ServiceLocation = vector3(...) -- Teleport location
Config.CommunityServiceOutfits = { enabled = false }

  • Verify player has a police job assigned in your framework
  • Check Config.PoliceJobNames includes your job name
  • Ensure ox_lib is started and version 3.0+
  • Check console for errors
  • Verify all inventory items are added correctly
  • Ensure Config.Inventory matches your system
  • Check Config.EnableEvidence = true
  • Verify spawn points are not blocked by objects
  • Ensure vehicle models are installed on the server
  • Check player has the required job grade for the prop
  • Verify groups restrictions in Config.AvailableProps
  • Verify oxmysql is running
  • Ensure the ars_police table exists
  • Check column names match your database

Enable for troubleshooting:

Config.DebugMode = true

Setting Default
Framework 'esx'
Inventory 'ox'
Targeting true
Evidence true
Security Camera true
Community Service true
Jail System 'default'
Duty Requirement false
Spike Strips true
Shield true
Props Timeout 10 minutes

  1. Check the server console for error messages
  2. Verify all dependencies are installed and started
  3. Ensure framework matches your server setup
  4. Confirm job names match your database
  5. Review the changelog for breaking changes

Note: This guide is written by a third party. If you find any incorrect or outdated information, please contact us on Discord so we can update it for you.