The Complete Police Job for QBox
Everything your police department needs, in one resource. A full, native QBox (qbx_core) police job covering duty, evidence & forensics, bodycam with an MDT photo gallery, full suspect handling (including seizing a suspect's entire inventory into an evidence bag), jail, vehicle impound, ANPR, security cameras, a helicopter gun-cam, crime-scene tools and MDT dispatch — all built directly on ox_lib, ox_inventory and ox_target with no framework bridges.
Reworked from the open-source qbx_policejob for sale: English-primary localisation, editable third-party integration files, persistent evidence/impound records and no external logging baked in.
Preview: Emergency Suite — Police, MDT, Bodycam & Full EMS in One System | FinalStory - YouTube
Documentation: POLICE | FinalStory Docs
Duty, stations & loadouts
ox_target or text-prompt zones) — routed through your MDT duty system.policelocker), shared armory and evidence stashes, plus trash bins (auto-emptied on resource start).10-21 dispatch to on-duty officers (with cooldown).Fleet garage & grade-based vehicles
onx_pol* cars, SUVs, bikes, highspeed pursuit and undercover units — each with rank-based liveries, extras and mods (Officer / Detective / Sergeant / Command tiers).Evidence collection (bagged, with readable metadata)
Officers must aim a flashlight while on duty to reveal evidence on the ground, then pick it up into an empty evidence bag:
ox_target into an evidence bag./clearblood, /clearcasings, and /takedna to take a DNA reference sample from a person.Forensic test kits
Bodycam + MDT photo gallery
screenshot-basic + Fivemanage, saved to the MDT.erp_bodycam_stream companion.Suspect handling
handcuffs and generates a unique cuff ID stored on that suspect, then hands the officer a cuffkeys item labelled with the suspect's name and locked to that exact ID. Each prisoner has their own key — an officer who cuffs several people carries several distinct keys and must use the matching one to release each prisoner (a non-matching key is refused). Because the key is a normal inventory item it can be handed to another officer, stored, lost or stolen — drop the key and the suspect stays cuffed until someone with the right key (or an angle grinder) frees them.evidence_bag container and every item in the suspect's inventory (with full metadata) is moved into that single bag; a return callback empties the bag back to the owner. The headline evidence-handling feature.moneybag item (redeemable later).Jail, impound & licences
qbx_prison / xt-prison) with a native event fallback, writing a criminal record and jail time to the suspect./impound (full seizure), /depot <price> (releasable for a fee), and a radial "call tow" flow with a reason field and full-seize checkbox.Patrol & scene tools
/flagplate, /unflagplate, /plateinfo; flagged plates trigger camera alerts to on-duty police.pd_tape item's durability (recovered on pickup).Dispatch & alerts
/911p anonymous emergency calls pushed to your MDT dispatch (with cooldown and street detection).CreateDispatch hook (defaults to erp_mdt).Items & ox_inventory
Ships with a full set of inventory items (handcuffs, cuff keys, restraints, an angle grinder, forensic kits, evidence bags incl. a container, money bag, scene props) plus police stashes. Full item list, stashes, SQL and setup are in the included README.
Commands
/grantlicense · /revokelicense · /cuff · /sc (soft cuff) · /escort · /clearcasings · /clearblood · /takedna · /jail · /unjail · /seizecash · /cam · /flagplate · /unflagplate · /plateinfo · /depot · /impound · /paylawyer · /anklet · /ankletlocation · /911p
Exports
Client: IsHandcuffed, IsBodyCamActive, IsCameraActive, GetSecurityCameras · Server: GetActiveBodyCams
Requirements
Required: qbx_core · ox_lib · ox_inventory · ox_target · oxmysql
Companion / optional providers (guarded — features no-op or fall back if absent, and all are swappable in the open hook files): erp_mdt (dispatch + duty toggle + impound/photo tables), erp_vehiclekeys (fleet keys), erp_bodycam_stream (live bodycam), screenshot-basic + Fivemanage (bodycam photos), erp_banking (society accounts & fines), qbx_prison / xt-prison (jail), qbx_garages (fleet garage). Cosmetic hooks for police phone alerts, clothing outfits and interact-sounds are also guarded.
Database
No SQL of its own. Persistence uses the core player_vehicles table and the erp_mdt tables mdt_impound_records and mdt_photos — install erp_mdt (and its SQL) so impound records and bodycam photos persist.
Localisation
Fully translatable via ox_lib locales — English (primary) and Czech ship in the box. Add a language with a single locales/<lang>.json file and setr ox:locale "en".
Logging & performance
No external logging baked in — a debug console toggle plus an editable Log() hook lets you forward evidence/fine/impound events to your own system. Idle threads sleep; evidence discovery only runs while a flashlight is aimed on duty; a built-in update notifier checks for new versions on start.
Escrow & editable files
The core logic is escrow-protected, but the following ship fully open and editable: config/*.lua (all gameplay configuration, locations, loadouts, fleet profiles, radars, placeables), shared/init.lua (Debug helper), server/editable.lua (Log, banking BankAdd/BankRemove/BankInvoice, CreateDispatch, JailPlayer/UnjailPlayer, bodycam API key), locales/*.json and README.md.
Built for QBox. © FinalStory.