Create alert (client side)

Create alert, from client side.

Using provided event, you can simple trigger alert from client side. We do not recommend this method, that's why you should always send alerts from server side.

Usage

Export

---**`client`**
---@param payload ClientAlertPayload
function exports.fd_dispatch:CustomAlert(payload) end

Event

---@param data
TriggerServerEvent('fd_dispatch:events:addAlert', data)

Payload

---@class BlipPayload
---@field title? string
---@field time? number
---@field coords vector3
---@field sprite? number
---@field radius? number
---@field color number
---@field scale number
---@field flashes? boolean
---@field category? number

---@class ClientAlertPayload
---@field title string
---@field description? string
---@field groups string[]
---@field location? { coords: vector3, street: string }
---@field priority? number
---@field code? string
---@field radioChannel? number
---@field metadata AlertMetadataType[]
---@field isArchived? boolean
---@field isEmergency? boolean
---@field isAnonymous? boolean
---@field isShooting? boolean
---@field blip string | BlipPayload

Examples

Alert with vehicle data

By adding local vehicleData = require 'modules.composables.client.vehicleData' to your lua file, you can utialise useful vehicle data for your alerts.

local data = vehicleData(cache.vehicle)
if not data then return end
local metadata = {}

table.insert(metadata, {
    type = 'vehicle',
    model = data.name or locale('unknown_vehicle_model'),
    plate = data.plate or nil,
    color = data.colorHex or nil
})

local data = {
    title = locale('alerts_vehicle_theft_title'),
    description = locale('alerts_vehicle_theft_desc'),
    blip = {
        sprite = 595,
        color = 60,
        scale = 1.2,
        time = 15 * 1000
    },
    groups = { 'police' },
    priority = 2,
    code = '10-35',
    location = locationData(),
    metadata = metadata,
    isShooting = true
}

TriggerServerEvent('fd_dispatch:events:addAlert', data)

Emergency alert

local framework = require 'modules.bridge.framework'
local locationData = require 'modules.composables.client.locationData'

local metadata = {}

local name = framework.getName()
table.insert(metadata, {
    content = name,
    icon = 'fas fa-skull'
})

local data = {
    title = locale('alerts_officer_down_title'),
    description = locale('alerts_officer_down_desc'),
    blip = {
        sprite = 52,
        color = 1,
        scale = 1.2,
        time = 15 * 1000
    },
    groups = { 'ambulance', 'police' },
    priority = 1,
    code = '10-99',
    location = locationData(),
    metadata = metadata,
    isEmergency = true
}

TriggerServerEvent('fd_dispatch:events:addAlert', data)

Detailed information

titlestring
Alert title
description string
Alert description.
groupsstring[]
Groups, which will see the alert and be informed about it.
location{ coords: vector3, street: string }
Data about alert location.
prioritynumber
Alert priority
codestring
Alert code
radioChannelnumber
Dedicated alert radio channel, to which units will be able to join
metadataAlertMetadataType[]
Alert metadata, this is used to put various information into the alert.
isArchivedboolean
Defines if alert is archived or not.
isEmergencyboolean
Defines if alert is emergency or not. If it is, it will apply additional styles to it.
isAnonymousboolean
Defines if alert is anonymous or not.
isShootingboolean
Defines if alert is for shooting or not. Mostly used to suppress shots spam if it's enabled in config, and count shots fired in the area.
blipstring | BlipPayload
If you provide a string, it will try to check for predefined blips in config/alerts.lua -> predefinedBlips config. Otherwise, provide blip data.