Oxide Dispatch

Multi-framework dispatch and responder alert system for FiveM servers.

Oxide Dispatch is the alert broadcast and responder lifecycle backbone for FiveM servers. It distributes job-targeted alerts to police, EMS, fire, and custom responder groups, tracks who's responding, persists every transition to MySQL, and exposes a public olink.dispatch.* API so downstream MDTs can build on top of it — oxide-police is the recommended consumer. It supports QBCore, QBx (Qbox), and ESX Legacy through o-link with no source changes per framework.

Key Features

  • Real-Time Job-Targeted Broadcast — Alerts fan out to on-duty responders by responder group (police, ems, fire) or raw job names, with server-authoritative coordinates and per-source rate limiting
  • Non-Focused Stacked NUI Popup — Up to 3 alerts visible at once, mini-map preview, GTA sound, auto-dismiss after 20s by default — never blocks player input
  • Persistent MySQL Audit Trail — Every alert and every responder transition is written to dispatch_alerts / dispatch_responders; the resource rehydrates active alerts on restart
  • Auto-Expiry Sweeper — Unresolved alerts move to expired after a configurable TTL (15 min default) — closed/expired alerts remain in MySQL for reporting and the heatmap
  • Dispatch Hub — Full-screen NUI overview for any responder group with live alerts, map view, heatmap overlay, and quick respond/clear/close actions. Master-switched via Config.DispatchHub.RadialEnabled
  • AI Radio Dispatcher (optional) — One AI dispatcher per department channel (LSPD, BCSO, SASP, EMS, fire). Officers PTT and the AI files alerts through the same pipeline. Realtime (~500ms) or chained (~2s, cheaper) provider modes
  • Civilian 911 / 311 — Radial menu, /911, and /311 chat commands with category routing, anonymity, two-way responder replies, and reply persistence
  • Panic / Responder Backup — F4 keybind, /panic, and radial item with per-group routing, off-duty bypass, auto-waypoint, and 60s per-responder cooldown
  • Automatic Crime Detection — Shooting (10-71), drive-by (10-72), melee (10-34), explosion (10-77), death (10-52), and vehicle theft (10-30) with weapon, zone, and job blacklists
  • Per-Group Responder Statuses + Callsigns — Police, EMS, and Fire each have their own status lists; persistent callsigns surface on alerts, replies, and status broadcasts
  • Legacy QB/ESX Compatibility Shims — Forwards police:server:policeAlert, esx_policejob:alert, esx_outlawalert:*, and esx_phone:send into the modern pipeline so existing scripts keep working unedited

Requirements

ResourceMinimum VersionPurpose
ox_liblatestCommands, callbacks, locale, input dialogs
oxmysqllatestDatabase driver
o-linklatestFramework abstraction used by dispatch
FrameworklatestOne of qb-core, qbx_core, or es_extended

Supported Frameworks

FrameworkSupport
QBCore (qb-core)Full
QBX (qbx_core)Full
ESX Legacy (es_extended)Full

Quick Start

Place oxide-dispatch in your server's resources directory.

Start ox_lib, oxmysql, your framework, o-link, and oxide-dispatch in that order.

Run sql/install.sql to create the dispatch_alerts and dispatch_responders tables.

Review shared/config.lua and the files under shared/config/.

Follow the framework-specific setup (QBCore, QBX, or ESX) to wire compatibility shims and disable conflicting legacy resources.

See the Installation Guide for the full setup flow.

Documentation