The Outlaw Alert DLC (qs-outlawalert-dlc) makes the city report crimes on its own. When a player fires a gun, shoots from a car, steals a vehicle or starts a fight, the people around them — and the cameras watching — may call the police. A downed player can send a distress signal to police and EMS with one key.
It is a separate resource that feeds Dispatch and MDT: every alert is an ordinary dispatch call, with code, message, blip and photo.
Installing the DLC#
Download it from Granted Assets on the CFX Portal, place qs-outlawalert-dlc next to qs-dispatch, and start it after it:
ensure oxmysql
ensure ox_lib
ensure es_extended # or qb-core
ensure qs-dispatch
ensure qs-outlawalert-dlcIt needs no SQL. The framework is detected on start — ESX, QBCore, or none — so it must start after the framework too.
The Alerts#
Alert | Triggered when | Sent to |
|---|---|---|
Shootings in Zone | A player fires a firearm on foot. Silenced weapons and blacklisted weapons never trigger it. |
|
Drive-by | A player fires from a car or motorbike. The call includes the model, colour and plate. |
|
Auto Theft | A player pulls a driver out of a car, or gets into a car whose alarm is going off. Includes model, plate, colour and doors. |
|
Melee Weapon | A player hurts someone in a fist or melee fight. |
|
Officer Down / Citizen Down | A dead or downed player presses G. Police get an Officer Down call; everyone else sends Citizen Down. |
|
The player committing the crime gets a notification such as You are shooting near the camera, and — if enabled — a camera-flash effect, so they know they have been seen. Players whose job is in Config.PoliceJobs never trigger crime alerts.
Witnesses and Cameras#
Not every crime is reported. Each time one happens, the DLC rolls a chance:
Witnesses. It counts the living pedestrians within 80 metres. With none, nobody calls; the more there are, the likelier a call.
Night. Between 21:00 and 04:00 in game, crimes are less likely to be reported.
Cameras. If the witnesses do not call but a CCTV prop from
Config.CameraModelsis nearby — or a police car or helicopter — the crime is reported anyway.
So a shootout in a crowded square or under a camera almost always brings the police, while a quiet back road at night often goes unnoticed. To test alerts without depending on luck, set Config.DebugChance = true and every crime is reported.
Configuration#
Everything is in qs-outlawalert-dlc/config/config.lua.
Config.PoliceJobs = { 'police', 'sheriff', 'traffic', 'patrol' } -- receive crime alerts, and are never reported
Config.DeathAlertsJobs = { 'police', 'ambulance' } -- receive the downed alerts
Config.Enable = {
Shooting = true,
Autotheft = true,
Melee = true,
PlayerDowned = true, -- the Citizen Down alert with G
}
-- A photo on the call, and a flash on the offender's screen
Config.ShotingsWillBeHaveImage = true
Config.OnDetectShootingsCameraFlash = true
Config.AutotheftWillBeHaveImage = true
Config.OnDetectAutotheftCameraFlash = true
Config.MeleeWillBeHaveImage = true
Config.OnDetectMeleeCameraFlash = true
Config.DebugChance = false -- true: every crime is reported
Config.Debug = false -- true: police are reported too, and zones and cameras are drawnZones with no alerts#
Shooting ranges, gun stores, arenas: inside these spheres no shooting or fight is reported.
Config.ShootingZone = {
ZonesWithNoCall = {
[1] = { label = 'Zone 1', coords = vector3(365.8156, 134.4366, 103.0974), width = 30 },
[2] = { label = 'Zone 2', coords = vector3(1706.6511, 1497.8977, 84.1166), width = 40 },
-- [3] = { label = 'Ammu-Nation range', coords = vector3(13.0, -1097.0, 29.8), width = 25 },
}
}Weapons that never trigger an alert#
Config.WeaponBlacklist lists throwables and tools that should not count as gunfire: grenades, BZ gas, molotovs, sticky bombs, proximity mines, snowballs, pipe bombs, balls, smoke grenades, flares, the petrol can, the fire extinguisher, the hazard can, the Up-n-Atomizer carbine and the stun gun. Add any weapon name to the list to silence it.
Cooldowns#
After an alert is sent, the same kind of alert waits before it can fire again, so a long shootout does not flood the dispatch. If a roll fails, it waits a little before trying again. Both waits are set for each alert in the CreateThread block at the end of the config — Success after a call and Fail after a failed roll. Shootings have the longest wait by default.
The calls themselves#
Each alert is built by a function in the config — Config.ShootingData, Config.ShootingDriveByData, Config.VehicleTheftData, Config.MeleeData, Config.PoliceDownAlertData and Config.CitizenDownAlertData. They return an ordinary dispatch call, so you can change the code, message, blip or recipients with the fields described in Create Dispatch Call.
The Distress Signal#
While dead or downed, a player presses G — Send distress signal to Police/EMS — to send their position to every job in Config.DeathAlertsJobs. It is never sent automatically: the downed player decides. Each player can rebind it in Settings → Key Bindings → FiveM.
The death state is read from esx:onPlayerDeath on ESX and hospital:client:SetDeathStatus on QBCore. With a different death or ambulance script, trigger those events from it, or edit client/death.lua, which is open for editing.



