Analytics runs only if you accept. No names, codes or payment details are sent, and shopping works the same either way. Details: privacy and cookies.

  • Necessary Keeps your cart and this choice in your browser so the store works. We ask again after 12 months.
    Always on
  • Analytics (PostHog) Counts pages, clicks and store actions with your device type and rough location, and may record your visit with typed text hidden. Its cookie lasts 365 days. Data is stored in the EU.
    Off
  • Videos Product videos load from YouTube (Google) only when you press Play. YouTube may store data on your device. If you reject, Play opens the video on youtube.com in a new tab instead.
    When you press Play

With analytics on, the site keeps this visit's campaign source in this tab until you close it.

Change your choice any time with Cookie settings at the bottom of the page.

Switch FiveM dispatch without rewriting alerts

Our Dispatch System answers most ps-dispatch, qs-dispatch and cd_dispatch alert calls on ESX, QBCore and Qbox. Swap the old dispatch for tk_dispatch, and most robbery, drug and job scripts send their alerts to its map with no edits. “List the alerts your scripts send” names the calls it does not answer; each needs one addCall line instead.

Before you start

  • Dispatch System (tk_dispatch), and the framework you run: ESX, QBCore or Qbox.
  • A copy of server.cfg and of the old dispatch folder, so you can switch back.
  • A text editor that searches every file in a folder.

tk_dispatch declares provide 'ps-dispatch', provide 'qs-dispatch' and provide 'cd_dispatch' in its fxmanifest.lua. Cfx.re’s manifest reference says provide “marks the current resource as a replacement for the specified resource” (resource manifest, read 19 October 2026). tk_dispatch also answers the old export names itself. A script that calls exports['ps-dispatch'] reaches tk_dispatch, but only for the export names tk_dispatch defines.

List the alerts your scripts send

  1. In your resources folder, search all .lua files for ps-dispatch, qs-dispatch and cd_dispatch. You get every line that sends an alert to the old dispatch.
  2. Compare each line with the lists for your old dispatch. Mark every call under “Not answered”.

ps-dispatch

  • Answered by tk_dispatch: the client exports CustomAlert, VehicleTheft, Shooting, Hunting, VehicleShooting, SpeedingVehicle, Fight, PrisonBreak, StoreRobbery, FleecaBankRobbery, PaletoBankRobbery, PacificBankRobbery, VangelicoRobbery, HouseRobbery, YachtHeist, DrugSale, SuspiciousActivity, CarJacking, InjuriedPerson, DeceasedPerson, OfficerDown, OfficerBackup, OfficerInDistress, EmsDown and Explosion, and the server event ps-dispatch:server:notify.
  • Not answered: the client exports ArtGalleryRobbery, BobcatSecurityHeist, CarBoosting, DrugBoatRobbery, HumaneRobbery, PlateBackup, SignRobbery, TrainRobbery, UndergroundRobbery, UnionRobbery and VanRobbery, and the server exports SendTargetedAlert and GetDispatchCalls.

qs-dispatch

  • Answered by tk_dispatch: the client export GetPlayerInfo and the server event qs-dispatch:server:CreateDispatchCall.
  • Not answered: ready-made alert exports such as exports['qs-dispatch']:StoreRobbery(); the client export getSSURL, which Quasar’s photo example wraps around the call; the server exports GetPlayerInfo and GetSSURL.

cd_dispatch

  • Answered by tk_dispatch: the client export GetPlayerInfo, and TriggerServerEvent('cd_dispatch:AddNotification', ...) sent from a client script.
  • Not answered: TriggerClientEvent('cd_dispatch:AddNotification', ...) sent from a server script, and the exports GetPlayerNotifications, GetPlayersDispatchData and GetConfig.

The three old dispatch scripts

The three scripts, as their own docs read on 19 October 2026:

Script Frameworks in its docs How other scripts send alerts Last update shown
ps-dispatch 3.0.0 QBCore and Qbox (QBX) Client exports, the ps-dispatch:server:notify event or the server export SendTargetedAlert Last commit 12 Aug 2026
qs-dispatch ESX and QBCore GetPlayerInfo, then the qs-dispatch:server:CreateDispatchCall event; also ready-made exports Not shown
cd_dispatch ESX and QBCore GetPlayerInfo, then the cd_dispatch:AddNotification event, from a client or a server script Not shown

qs-dispatch is sold as Dispatch & MDT. If your officers keep records in its MDT, plan where those records go before you stop it; what a FiveM MDT is lists what to check.

Swap the resources

  1. In server.cfg, delete or comment out the ensure line of the old dispatch, such as ensure ps-dispatch. If it starts through a folder category such as ensure [police], move its folder out of that category. The old dispatch no longer starts. Never run both together: they would answer the same alert events, and officers would get every call twice.
  2. In resources, put the tk_dispatch folder.
  3. In server.cfg, add ensure tk_dispatch where the old line was. To roll back, reverse steps 1 to 3.
  4. In tk_dispatch/config.lua, set Config.Framework to 'esx' or 'qb'. On Qbox use 'qb': qbx_core provides qb-core, which tk_dispatch reads.
  5. In the same file, check Config.Dispatch. tk_dispatch sends ps-dispatch police presets to the job leo, which the police group lists. It sends EMS presets to ems, which reaches the group whose key is ems; keep both. cd_dispatch and qs-dispatch alerts name jobs such as police; add every job name your alerts use to a group’s jobs list.

Replace the alerts tk_dispatch does not answer

  1. In each script you marked, replace the unanswered call with the addCall client export. title, coords and jobs are required:
exports.tk_dispatch:addCall({
    title = 'Union Depository Robbery',
    code = '10-90',
    coords = GetEntityCoords(PlayerPedId()),
    jobs = { 'police' },
})
  1. For a ps-dispatch CustomAlert meant for EMS, use addCall with jobs = { 'ambulance' } instead. tk_dispatch sends every CustomAlert to leo, whatever its jobs field says.
  2. For a cd_dispatch alert sent from a server script with TriggerClientEvent, call the server export exports.tk_dispatch:addCall there instead, with title, coords and jobs. The client form Codesign’s docs recommend, TriggerServerEvent, needs no change.

The full list of addCall fields, such as priority, blip, platePercentage and takePhoto, is in the client exports docs.

Check it works

  1. In tk_dispatch/config.lua, set Config.DebugMode = true and restart the server.
  2. Trigger one alert from each script you listed, such as starting a store robbery. The server console prints Call received: with the alert, then jobIndexes: with the group it went to. An on-duty officer of that group sees the notification.
  3. Set Config.DebugMode = false again.

If it fails

  • No such export UnionRobbery in resource ps-dispatch: the script calls an export tk_dispatch does not answer. Replace it with addCall as in “Replace the alerts tk_dispatch does not answer”.
  • Missing or incorrect data for call, refer to tk_dispatch documentation.: the alert reached tk_dispatch without title, jobs or coords. tk_dispatch takes a qs-dispatch alert’s title from blip.text, so give that alert a blip table with text.
  • attempt to index a nil value (field 'blip') in tk_dispatch/server/main_editable.lua: a cd_dispatch or qs-dispatch alert has no blip table. Add one to that alert.
  • Officers get every call twice: the old dispatch still starts. Check server.cfg and its folder categories again.
  • Call received: prints but nobody sees the alert: no group in Config.Dispatch lists the job the alert names. Add the job to a group’s jobs list.

The script in this guide

  • Dispatch System

    • In Essential

    Live call and unit map, shared drawings, 8 premade alerts and an arrow-key call manager.

    Supports ESX, QBCore, Qbox and Standalone

    Top 3 dispatch script on FiveM

    500+ servers (5Metrics, checked 11 October 2026)

    €14.99+ VAT at checkout, one-off

Server counts: 5Metrics, checked 11 October 2026. Detected servers running each script, rounded down.