Client side

Client side exports

Remember that the system will work without using this type of exports, this guide is exclusively for people who want to create their own scripts using our dispatch alert system or simply to have information about the internal use of the resource.

In isolated cases you may need to use one of these events for your basic server resources, but usually it will all work automatically.

1. Getting Player Data

To obtain the player's information you must use the following export.

local playerData = exports['qs-dispatch']:GetPlayerInfo()

Export exports['qs-dispatch']:GetPlayerInfo() returns an object with the following player information:

VariableDescripción

ped

Player character identifier. (GAME PED ID)

coords

Player's coordinates on the map.

street_1

Name of the street near the player (first street).

street_2

Name of the street near the player (second street).

sex

Gender of the player's character.

vehicle

Identifier of the vehicle the player is in (if in one).

vehicle_label

Vehicle label/description.

vehicle_colour

Color of the vehicle.

vehicle_plate

Vehicle registration number.

speed

Vehicle speed in kilometers per hour (if in one).

The return object has a format similar to:

{
    ped = <pedId>,
    coords = vector3,
    street_1 = "String",
    street_2 = "String",
    sex = "String",
    vehicle = "Vehicle",
    vehicle_label = vehicle_label or 'VehLabel Unknown',
    vehicle_colour = vehicle_colour or 'VehColor Unknown',
    vehicle_plate = vehicle_plate or 'VehPlate Unknown',
    speed = speed or 0
}

2. Getting Player Screenshot

To get the screanshot of the local player (client) you must use the following export.

exports['qs-dispatch']:getSSURL(function(image)
-- other code using image variable
end)

this export returns a text string in case of getting the image as for example:cdn.discordapp.net/image.png This can also return nil in case you have not been able to take the screenshot

3. Creating Dispatch Call

The event qs-dispatch:server:CreateDispatchCall is used to create a dispatch call in a dispatch management system. You must pass an object as an argument to the event with the following data:

  • job (array): A list of jobs related to the dispatch call. You can include values such as 'police', 'sheriff', 'traffic', 'patrol' and any others you wish to receive the dispatch call.

  • callLocation (vector3): The coordinates of the location of the dispatch call. You must provide the coordinates in the form of a vector3 object.

  • callCode (table): An object containing a call code and an associated code fragment. For example, you can have a call code 'Hight Speed' with a code fragment 'Vehicle'.

  • message (string): A message describing the dispatch call. It may include relevant information such as vehicle model, license plate, color and speed.

  • flashes (boolean): A Boolean value indicating whether the dispatch call icon should flash.

  • image (string o nil): An image attached to the dispatch call. This can be an image URL or nil if there is no image attached.

  • blip (table): An object describing the blip associated with the dispatch call. It may contain properties such as the blip's sprite, scale, color, whether it blinks, the associated text, and the blip's duration time in milliseconds.

Be sure to provide the proper data in the correct format when calling this event to create a dispatch call correctly. Example code:

TriggerServerEvent('qs-dispatch:server:CreateDispatchCall', {
    job = { 'police', 'sheriff', 'traffic', 'patrol' },
    callLocation = vector3(0,0,0),
    callCode = { code = '<CALL CODE>', snippet = '<CALL SNIPPED EX: 10-10>' },
    message = "Call Message",
    flashes = false, -- you can set to true if you need call flashing sirens...
    image = "URL", -- Url for image to attach to the call 
    --you can use the getSSURL export to get this url
    blip = {
        sprite = 488, --blip sprite
        scale = 1.5, -- blip scale
        colour = 1, -- blio colour
        flashes = true, -- blip flashes
        text = 'Hight Speed', -- blip text
        time = (20 * 1000), --blip fadeout time (1 * 60000) = 1 minute
    },
    otherData = {
-- optional if you dont need this you can remove it and remember remove the `,` after blip end and this block
       {
           text = 'Red Obscure', -- text of the other data item (can add more than one)
           icon = 'fas fa-user-secret', -- icon font awesome https://fontawesome.com/icons/
       }
     }
})

4. Creating Dispatch Call With Player Data

In this example we will use the above example Creating Dispatch Call y Get Player Data

local playerData = exports['qs-dispatch']:GetPlayerInfo()

TriggerServerEvent('qs-dispatch:server:CreateDispatchCall', {
    job = { 'police', 'sheriff', 'traffic', 'patrol' },
    callLocation = playerData.coords,
    callCode = { code = 'Hight Speed', snippet = 'Vehicle' },
    message = " street_1: ".. playerData.street_1.. " street_2: ".. playerData.street_2.. " sex: ".. playerData.sex.. " vehicle_label: ".. playerData.vehicle_label.. " vehicle_colour: ".. playerData.vehicle_colour.. " vehicle_plate: ".. playerData.vehicle_plate.. " speed: ".. playerData.speed.. "",
    flashes = false,
    image = image or nil,
    blip = {
        sprite = 488,
        scale = 1.5,
        colour = 1,
        flashes = true,
        text = 'Hight Speed',
        time = (20 * 1000),     --20 secs
    }
})

5. Creating Dispatch Call With Player Data and Image

In this example we will use the above example Creating Dispatch Call, Get Player Data y Get Player Screanshot

local playerData = exports['qs-dispatch']:GetPlayerInfo()

if (not playerData) then
    ErrorPrint("Error getting player data")
    return
end

exports['qs-dispatch']:getSSURL(function(image)
    TriggerServerEvent('qs-dispatch:server:CreateDispatchCall', {
        job = { 'police', 'sheriff', 'traffic', 'patrol' },
        callLocation = playerData.coords,
        callCode = { code = 'Hight Speed', snippet = 'Vehicle' },
        message = " street_1: ".. playerData.street_1.. " street_2: ".. playerData.street_2.. " sex: ".. playerData.sex.. " vehicle_label: ".. playerData.vehicle_label.. " vehicle_colour: ".. playerData.vehicle_colour.. " vehicle_plate: ".. playerData.vehicle_plate.. " speed: ".. playerData.speed.. "",
        flashes = false,
        image = image or nil,
        blip = {
            sprite = 488,
            scale = 1.5,
            colour = 1,
            flashes = true,
            text = 'Hight Speed',
            time = (20 * 1000),     --20 secs
        }
    })
end)

6. Example of the use of a command on the Client

If you paste this into a client.lua file and run the test command in your game chat it will send a dispatch alert to all the jobs configured in that call 'police', 'sheriff', 'traffic' and 'patrol' which will be sent with the information of whoever runs the command.

RegisterCommand('testclient', function(source, args, rawCommand)
    local playerData = exports['qs-dispatch']:GetPlayerInfo()

if (not playerData) then
    ErrorPrint("Error getting player data")
    return
end

exports['qs-dispatch']:GetSSURL(function(image)
        TriggerServerEvent('qs-dispatch:server:CreateDispatchCall', {
            job = { 'police', 'sheriff', 'traffic', 'patrol' },
            callLocation = playerData.coords,
            callCode = { code = 'Hight Speed', snippet = 'Vehicle' },
            message = " street_1: ".. playerData.street_1.. " street_2: ".. playerData.street_2.. " sex: ".. playerData.sex.. " vehicle_label: ".. playerData.vehicle_label.. " vehicle_colour: ".. playerData.vehicle_colour.. " vehicle_plate: ".. playerData.vehicle_plate.. " speed: ".. playerData.speed.. "",
            flashes = false,
            image = image or nil,
            blip = {
                sprite = 488,
                scale = 1.5,
                colour = 1,
                flashes = true,
                text = 'Hight Speed',
                time = (20 * 1000),     --20 secs
            }
        })
    end)
end, false)

7. Creating a History Entrie for vehicle

In this section you will learn how to create a vehicle report from your customer code. Taking into account what you have learned in the previous parts such as Getting Player Data y Getting Player Screanshot You can use this event

Parameters

The server callback takes three parameters:

  1. Callback Function: A function that is executed when a response is received from the server. The resp argument indicates whether the operation was successful or not.

  2. Data Object: An object containing the vehicle data to be stored in the registry. You must provide the following data:

    • type (string): Type of violation or event. Do not modify the value.

    • plate (string): Vehicle license plate.

    • zone (string): Text of the area or name of the official related to the event.

    • data (table): A list of vehicle data to be stored in the registry. Each item in the list is an object with the following properties:

      • key (string): Title or label of the data.

      • value (string): Data content or value.

Example

An example of server callback usage is shown below:

TriggerServerCallback("qs-dispatch:server:setVehicleDataRecord", function(resp)
    if resp then
        print("BOLO SUCCESS")
    else
        print("BOLO ERROR")
    end
end, {
    type = "infraction",
    plate = "ABC123",
    zone = "Centro de la ciudad",
    data = {
        { key = "Modelo", value = "Sedan" },
        { key = "Placa", value = "ABC123" },
        { key = "Color", value = "Rojo" },
        { key = "Velocidad", value = "60 km/h" },
        { key = "Zona",  value = "Centro de la ciudad" },
        { key = "Límite", value = "50 km/h" },
        { key = "Multa",  value = "100$" },
        { key = "Imagen", value = "https://example.com/image.jpg" }
    }
})

8. Creating History Entrie for Player

This History will be automatically added to the player's job database, for example if Callabck is run on a player who is a police officer, only the police officers will be able to see this.

Parameters

The server callback takes three parameters:

  1. Callback Function: A function that is executed when a response is received from the server. The resp argument indicates whether the operation was successful or not.

  2. Data Object: An object containing the history data to be inserted. You must provide the following data:

    • identifier (string): Data Player identifier.

    • datatype (string): Type of violation or event. Do not modify the value.

    • dataobj (table): An object containing detailed information about the history data. You must provide the following properties:

      • message (string): Message associated with the history data.

      • by (string): Who entered the history data.

      • title (string): Title of the history data.

      • data (table): A list of data to be stored in the registry. Each item in the list is an object with the following properties:

        • key (string): Title or label of the data.

        • value (string): Data content or value.

Example

An example of server callback usage is shown below:

TriggerServerCallback("qs-dispatch:server:insertHistoryData", function(resp)
    if resp then
        print("BOLO SUCCESS")
    else
        print("BOLO ERROR")
    end
end, {
    identifier = "12345",
    datatype = "infraction",
    dataobj = {
        message = "Historial de incidente",
        by = "John#1234",
        title = "Incidente de tráfico",
        data = {
            { key = "Descripción", value = "Accidente de tráfico en la intersección" },
            { key = "Fecha", value = "2023-07-13" },
            { key = "Hora", value = "15:30" },
            { key = "Lugar", value = "Calle principal" }
        }
    }
})

Remember to provide the correct data in the right format when using this server callback. Be sure to adapt it to your programming logic and data structure.

9. Job duty system

Dispatch asset brings an export to do a duryoff and dutyon, to give permissions for the use of dispatch and mdt. In case the duty is false then you will not have access to dispatch and mdt.

-- We control whether or not the worker can use dispatch and mdt with true/false
exports['qs-dispatch']:ToggleDuty(Boolean)
-- Return true if is on duty or false if is off duty
exports['qs-dispatch']:GetIsOnDuty()

10. Default Exports

    exports['qs-dispatch']:VehicleShooting()
    exports['qs-dispatch']:Shooting()
    exports['qs-dispatch']:OfficerDown()
    exports['qs-dispatch']:SpeedingVehicle()
    exports['qs-dispatch']:Fight()
    exports['qs-dispatch']:InjuriedPerson()
    exports['qs-dispatch']:DeceasedPerson()
    exports['qs-dispatch']:StoreRobbery()
    exports['qs-dispatch']:FleecaBankRobbery()
    exports['qs-dispatch']:PaletoBankRobbery()
    exports['qs-dispatch']:PacificBankRobbery()
    exports['qs-dispatch']:PrisonBreak()
    exports['qs-dispatch']:VangelicoRobbery()
    exports['qs-dispatch']:HouseRobbery()
    exports['qs-dispatch']:DrugSale()
    exports['qs-dispatch']:ArtGalleryRobbery()
    exports['qs-dispatch']:HumaneRobery()
    exports['qs-dispatch']:TrainRobbery()
    exports['qs-dispatch']:VanRobbery()
    exports['qs-dispatch']:UndergroundRobbery()
    exports['qs-dispatch']:DrugBoatRobbery()
    exports['qs-dispatch']:UnionRobbery()
    exports['qs-dispatch']:YachtHeist()
    exports['qs-dispatch']:CarBoosting()
    exports['qs-dispatch']:CarJacking()
    exports['qs-dispatch']:VehicleTheft()
    exports['qs-dispatch']:SuspiciousActivity()
    exports['qs-dispatch']:SignRobbery()
    exports['qs-dispatch']:IllegalRacing()
    exports['qs-dispatch']:Kidnapping()
    exports['qs-dispatch']:CyberAttack()
    exports['qs-dispatch']:IllegalFishing()
    exports['qs-dispatch']:ArmsDeal()

Last updated