# Config

## Basic Configs

### Client config

This config is inside `config/cl_config.lua`.

```lua
CL_CONFIG = {}
CL_CONFIG.EnableInfoContainer = true -- Enable an small info container at the bottom of the screen

-- Priority 'low', 'medium' or 'high'
-- Car robbery, shop robbery and bank robbery can be found inside client/api/alert_handlers.lua
CL_CONFIG.AlertCommands = {
    {
        command = '911',
        job = { 'police' },
        code = '10-13',
        default_priority = 'medium',
        enabled = true,
        anonymous = false,
    },
    {
        command = 'anon911',
        job = { 'police' },
        code = '10-13',
        default_priority = 'medium',
        enabled = true,
        anonymous = true,
    },
    {
        command = 'sos',
        code = 'P2',
        job = { 'police', 'ambulance' },
        default_priority = 'high',
        enabled = true,
        anonymous = false
    },
}

CL_CONFIG.UtilityCommands = {
    ['toggle_switchboard'] = {
        command = 'dispatch',
        enabled = true,
    },
    ['open_nui_map'] = {
        command = 'panel',
        enabled = true,
    },
    ['switchboard_config'] = {
        command = 'config_switch',
        enabled = true,
    }
}

CL_CONFIG.EnableRadioOnPanel = true -- Enable the radio while using the panel
CL_CONFIG.HideIfNoAlerts = false    -- Hide the dispatch if there are not alerts
CL_CONFIG.AlertSound = true         -- Enables sound in alerts
CL_CONFIG.MoveOnConfigSwitch = true -- Move when opening the fast access tab in the dispatch
CL_CONFIG.SetAlsoUnit = true        -- Set the unit when setting the radio from the fast access tab in the dispatch
CL_CONFIG.ShootingAlerts = true     -- Enable shooting alerts
CL_CONFIG.CarRobberyPicture = true  -- Enable car robbery picture (if you have screenshot-basic resource)

-- This webhook is not a problem for hackers, as it is an irrelevant webhook used to uploading pictures.
-- You can use this webhook or use your own webhook (if you use your own, create an special channel for it and mute it)
CL_CONFIG.CarRobberyPictureWebhook =
'https://discord.com/api/webhooks/1161002393136275537/76CZgfvDCcTu0hcdF8eU-nrjiDDI5At2h8JsImL5Ldjhqq-V0EtZa7YJT9LRjHserMpm'



CL_CONFIG.AudioConfirmations = {
    ['own_frequency_changed'] = {
        enabled = true,
        url = ''
    },
    ['someone_joined_frequency'] = {
        enabled = true,
        url = ''
    },
    ['someone_left_frequency'] = {
        enabled = true,
        url = ''
    },
}

-- Custom suggestions
TriggerEvent('chat:addSuggestion', '/911', 'Call emergency services', {
    { name = 'report', help = 'Type your emergency report' }
})

TriggerEvent('chat:addSuggestion', '/anon911', 'Call emergency services anonymously', {
    { name = 'report', help = 'Type your emergency report' }
})

TriggerEvent('chat:addSuggestion', '/sos', 'Call emergency services', {
    { name = 'report', help = 'Type your emergency report' }
})

TriggerEvent('chat:addSuggestion', '/vehrob', 'Report a vehicle robbery', {})

TriggerEvent('chat:addSuggestion', '/panel', 'Open the dispatch panel', {})

TriggerEvent('chat:addSuggestion', '/config_switch', 'Open the dispatch configuration panel', {})

TriggerEvent('chat:addSuggestion', '/dispatch', 'Toggle the dispatch switchboard', {})

KEYS = {
    ['ESC'] = 322,
    ['F1'] = 288,
    ['F2'] = 289,
    ['F3'] = 170,
    ['F5'] = 166,
    ['F6'] = 167,
    ['F7'] = 168,
    ['F8'] = 169,
    ['F9'] = 56,
    ['F10'] = 57,
    ['~'] = 243,
    ['1'] = 157,
    ['2'] = 158,
    ['3'] = 160,
    ['4'] = 164,
    ['5'] = 165,
    ['6'] = 159,
    ['7'] = 161,
    ['8'] = 162,
    ['9'] = 163,
    ['-'] = 84,
    ['='] = 83,
    ['BACKSPACE'] = 177,
    ['TAB'] = 37,
    ['Q'] = 44,
    ['W'] = 32,
    ['E'] = 38,
    ['R'] = 45,
    ['T'] = 245,
    ['Y'] = 246,
    ['U'] = 303,
    ['P'] = 199,
    ['['] = 39,
    [']'] = 40,
    ['ENTER'] = 18,
    ['CAPS'] = 137,
    ['A'] = 34,
    ['S'] = 8,
    ['D'] = 9,
    ['F'] = 23,
    ['G'] = 47,
    ['H'] = 74,
    ['K'] = 311,
    ['L'] = 182,
    ['LEFTSHIFT'] = 21,
    ['Z'] = 20,
    ['X'] = 73,
    ['C'] = 26,
    ['V'] = 0,
    ['B'] = 29,
    ['N'] = 249,
    ['M'] = 244,
    [','] = 82,
    ['.'] = 81,
    ['LEFTCTRL'] = 36,
    ['LEFTALT'] = 19,
    ['SPACE'] = 22,
    ['RIGHTCTRL'] = 70,
    ['HOME'] = 213,
    ['PAGEUP'] = 10,
    ['PAGEDOWN'] = 11,
    ['DELETE'] = 178,
    ['LEFT'] = 174,
    ['RIGHT'] = 175,
    ['TOP'] = 27,
    ['DOWN'] = 173,
    ['NENTER'] = 201,
    ['N4'] = 108,
    ['N5'] = 60,
    ['N6'] = 107,
    ['N+'] = 96,
    ['N-'] = 97,
    ['N7'] = 117,
    ['N8'] = 61,
    ['N9'] = 118,
}

CL_CONFIG.Controls = { -- With the controls of the previous list, you can include a control for each action. (Global radio can also be changed with a keymap)
    next_alert = 'RIGHT',
    prev_alert = 'LEFT',
    accept_alert = 'DOWN',
    global_radio = 'Z', -- Or specific emit radio
    switch_config = 'F10'
}

CL_CONFIG.Colors = { -- Modify the painting colors, you should include the RGB color spaced by commas and with the name of each color.
    { { 100, 5, 20 },  'RED' },
    { { 0, 57, 255 },  'BLUE' },
    { { 255, 143, 0 }, 'ORANGE' },
    { { 255, 251, 0 }, 'YELLOW' },
    { { 199, 0, 255 }, 'PINK' }
}
```

### Server config

This config is inside `config/sv_config.lua`.

```lua
SV_CONFIG = {}

-- nil = automatic detection, number = force to use this API instead.
-- 0 = oxmysql
-- 1 = ghmattimysql
-- 2 = mysql-async
SV_CONFIG.MysqlType = nil     -- We recommend letting this as nil

SV_CONFIG.SaveStatsTime = 5   -- In minutes
SV_CONFIG.TimeToDelete = 15   -- Time in minutes to perform a server side alert cleanup
SV_CONFIG.DrawLimit = 5       -- Draw limit x job
SV_CONFIG.DaysToSaveStats = 7 -- How much days will keep the dispatch tracked the stats

SV_CONFIG.Logs = {
    enabled = false,
    webhook =
    'https://discord.com/api/webhooks/986766156671107102/NKgvyp_t3b86wSIDCOdu1UhkJloEAzKCy6RvAZV_uGos8R061C0qY1b',
    actions = {
        alert = 'The user sent the following alert: **__%s__**',
        unit_changed = 'The user changed their unit to **__%s__**',
        unit_user_changed = 'The user changed the unit of id **__%s__** to **__%s__**',
        subscribe_alert = 'The user subscribed to the following alert: **__%s__**',
        unsubscribe_alert = 'The user unsubscribed from the following alert: **__%s__**',
        add_paint = 'The user added a paint',
        remove_paint = 'The user removed a paint',
    }
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://documentation.rcore.cz/paid-resources/rcore_dispatch/config.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
