Skip to content

Installation Guide

1. Codesign Bridge

This script requires cd_bridge to be installed and running before it can function


cd_bridge is plug-and-play and requires no setup. It automatically handles:

  • Framework integration
  • Database setup
  • Script compatibility
  • Error Handling

Once started, it will detect and connect to all supported scripts automatically.

See the [Full Bridge Setup Guide]

2. Download Script

Download the Script from the FiveM Portal Website

  1. Download cd_dispatch3d
  2. Unzip the downloaded file
  3. In your server's resources directory, create a folder named [codesign] if it does not already exist
  4. Place cd_dispatch3d (and all other Codesign scripts) inside the [codesign] folder

Example resources folder with a [codesign] directory

3. Database Setup (SQL)

No manual SQL setup required.

The script automatically inserts all required database tables.

lua
Config.AutoInsertSQL = true

Make sure this is enabled in cd_dispatch3d/configs/config.lua.

4. Configure Script

Review the config.lua Settings

Open cd_dispatch3d/configs/config.lua and check the available settings.

  • Update the options that are needed for your server.
  • Read the comments next to each option, as they explain what each setting does.

5. Configure Key Binds

Configure Before Starting the Resource

Before Starting the Resource

  • Before launching this resource on your main or live server, we strongly recommend configuring your key binds first.
  • This resource uses FiveM's Key Mapping system.

Where Can I Configure My Key Binds?

  • You can configure all key binds directly in cd_dispatch3d/configs/config.lua.

Why Is This Important?

  • Once a player joins your server with this resource running, you can no longer force key bind changes through the config file.
  • Players must adjust their key binds manually through the in-game pause menu settings.
  • Any changes you make will still apply to new players who join afterward.
  • This system is more optimized and gives players the flexibility to customize their key binds for both keyboard and controller use.
  • You can also review the Default key Binds binds provided with this resource.

Keybind settings located in the pause menu

6. Replace Old Dispatch Alerts

Notice


Not all dispatch alerts need to be replaced.

cd_dispatch3d now supports the following without any changes:

  • cd_dispatch (classic)
  • ps-dispatch
  • lb-tablet
  • redutzu-mdt
  • Default ESX police alerts
  • Default QBCore police alerts

Only replace alerts if you are using a custom or unsupported police alert system.

Find the old alert

  • Red Old dispatch alert
  • Green Old alert replaced with cd_dispatch3d

Not every resource will look the same, but the implementation concept remains identical.

Having trouble finding the old alert?

Trigger the Alert Where the Action Starts!

Dispatch alerts should be triggered where the event begins, for example:

  • When the robbery starts
  • When a crime is committed

Bad Practice
Triggering alerts inside an event that already broadcasts to all police:

  • Causes duplicate notifications
  • Creates duplicate blips
  • Results in dispatch spam

Good Practice
Trigger the alert:

  • At the source of the action
  • Before any police broadcast or blip creation
  • Let cd_dispatch3d handle visibility and syncing

Once you've found the old dispatch alert to replace, continue with Step 7.

7. Add New Dispatch Alerts

Compatible Integrations by Codesign

On our Resource Integration page, you can find a full list of pre-integrated and compatible scripts that work seamlessly with cd_dispatch3d and MDT integrations.

View the full list of compatible scripts

lua
local data = exports['cd_dispatch3d']:GetPlayerInfo()
TriggerServerEvent('cd_dispatch:AddNotification', {
    job_table = { 'police', 'sheriff' },
    coords    = data.coords,
    title     = '10-15 - Store Robbery',
    message   = 'A ' ..data.sex.. ' robbing a store at ' ..data.street,
    flash     = false,
    sound     = 1,
    blip = {
        sprite  = 431,
        scale   = 1.2,
        colour  = 3,
        flashes = false,
        text    = '911 - Store Robbery',
        time    = 5,
        radius  = 0,
    }
})
lua
TriggerEvent('cd_dispatch:AddNotification', {
    job_table = { 'police', 'sheriff' },
    coords = vector3(0, 0, 0),
    title = '10-15 - Store Robbery',
    message = 'A person robbing a store',
    flash = 0,
    sound = 1,
    blip = {
        sprite = 431,
        scale = 1.2,
        colour = 3,
        flashes = false,
        text = '911 - Store Robbery',
        time = 5,
        radius = 0,
    }
})

Player Info Export Reference

The following export is used in the example above:

This data structure can be customized in: integrations/client/client_exports.lua

lua
local data = exports['cd_dispatch3d']:GetPlayerInfo()
data.ped       -- Player ped ID (e.g., 123456789)
data.coords    -- Player coordinates (vector3)
data.street_1  -- Street name (e.g., "Palomino Ave")
data.street_2  -- Area name (e.g., "Legion Square")
data.street    -- Full location (e.g., "Palomino Ave, Legion Square")
data.sex       -- Ped sex (e.g., "Male")

Dispatch Alert Variable Reference

Variable NameRequiredExampleDescription
job_tabletrueList of jobs that will receive the dispatch alert.
coordstruevec3(0.0, 0.0, 0.0)World coordinates where the alert occurred.
titletrue'10-19 Robbery'Title displayed in the dispatch UI, usually 10 codes.
messagetrue'Robbery in progress'Main description shown to responders.
flashfalsetrueWhether the alert flashes on the UI. (true/false)
soundfalse1Dispatch alert sound.Editable in BlipSound() (client/other/functions.lua).1 = single alert, 2 = double alert, 3 = panic alert.
blipfalseMap blip configuration (see below).
blip.spritefalse431GTA blip sprite ID - More here.
blip.scalefalse1.2Blip size on the map: 0.1-2.0.
blip.colourfalse3Blip color ID - More here at bottom.
blip.flashesfalsetrueWhether the blip flashes. (true/false)
blip.timefalse5Time until blip fades and deletes (minutes)
blip.radiusfalse0Randomize coords; use a radius blip.0 disables it, 50-100 recommended.

Hello!