# Config

{% tabs %}
{% tab title="ESX" %}

```lua
Config = {}

-- ============================================= --
--                   BASIC                       --
-- ============================================= --

-- Maximum number of jobs a player can have
Config.MaxJobs = 3

-- Shortcut to open the menu (e.g., 'F6', 'F7', etc.)
Config.OpenMenuKey = 'F6'

-- Command to open the menu
Config.MenuCommand = 'jobs'

-- ============================================= --
--                  NOTIFICATIONS                --
-- ============================================= --

Config.Notifications = {
    -- Notification type: 'ox_lib', 'esx', 'custom'
    Type = 'ox_lib',
    
    -- Notification title (only for ox_lib)
    Title = 'Job Manager',
    
    -- Notification display duration in ms
    Duration = 5000
}

-- ============================================= --
--                  TRANSLATIONS                 --
-- ============================================= --

Config.Translations = {
    -- UI Texts
    ['ui_title'] = 'MY JOBS',
    ['ui_count'] = '/3',
    ['btn_switch'] = 'SWITCH',
    ['btn_remove'] = 'REMOVE',
    
    -- Notifications
    ['job_switched'] = 'Job successfully switched',
    ['job_removed'] = 'Job successfully removed',
    ['job_left'] = 'Job successfully left',
    ['job_full'] = 'You don’t have a free slot for another job',
    ['job_replaced'] = 'Your oldest removable job has been replaced with the current job.',
    ['job_not_found'] = 'You don’t have this job saved',
    ['job_not_removable'] = 'This job cannot be removed',
    ['job_not_active'] = 'This is not your active job',
    ['job_cannot_leave'] = 'You cannot leave the unemployed status',
    ['job_cannot_remove'] = 'The unemployed status cannot be removed',
    ['job_cannot_remove_active'] = 'The active job cannot be removed',
    ['player_not_found'] = 'Player not found',
    ['player_full_no_removable'] = 'Player %s has no free slot for another job and no removable job.',
    ['player_full_will_replace'] = 'Player %s has full slots, but the oldest removable job will be replaced.',
    ['job_data_not_found'] = 'Job data not found',
    ['cannot_add_job'] = 'Cannot add the current job, you have no free slot or removable job.',
    ['cannot_save_job'] = 'Your current job will not be saved, you have no free slot or removable job.',
    ['invalid_data'] = 'Invalid data',
    ['job_replaced_with_current'] = 'Your oldest removable job has been replaced with the current job.',
    ['previous_job_replaced'] = 'Your previous job has been replaced with a new job.',
    ['oldest_job_replaced'] = 'The oldest removable job has been replaced with a new job.',
    ['cannot_add_no_space'] = 'Cannot add a new job, you have no free slot and no removable job.',
    ['job_replaced_previous'] = 'Your oldest removable job has been replaced with the previous job.',
    ['previous_job_not_saved'] = 'The previous job was not saved, you have no free slot or removable job.',
    
    -- Job descriptions
    ['unemployed'] = 'Unemployed',
    ['grade_unknown'] = 'Unknown',
    
    -- Info messages
    ['keybind_description'] = '(~HUD_COLOUR_RADAR_ARMOUR~Job~w~) - Open Multijob',
    
    -- Debugs
    ['debug_job_name'] = 'Debug - jobName: %s %s',
    ['debug_current_job'] = 'Debug - currentJob: %s %s',
    ['debug_leave_attempt'] = 'Player [%s] is attempting to leave job [%s]',
    ['debug_job_deleted'] = 'Job [%s] was successfully deleted for player [%s]',
    ['debug_job_not_found'] = 'Job [%s] was not found in the database for player [%s]',
}

-- ============================================= --
--                    SOUNDS                     --
-- ============================================= --

Config.Sounds = {
    -- List of sounds with their settings
    ['menu_open'] = {
        sound = "SELECT",
        set = "HUD_FRONTEND_DEFAULT_SOUNDSET"
    },
    ['menu_close'] = {
        sound = "BACK",
        set = "HUD_FRONTEND_DEFAULT_SOUNDSET"
    },
    ['job_switched'] = {
        sound = "MEDAL_UP",
        set = "HUD_MINI_GAME_SOUNDSET"
    },
    ['job_removed'] = {
        sound = "RACE_PLACED",
        set = "HUD_AWARDS"
    },
    ['error'] = {
        sound = "ERROR",
        set = "HUD_FRONTEND_DEFAULT_SOUNDSET"
    },
    ['click'] = {
        sound = "SELECT",
        set = "HUD_FRONTEND_DEFAULT_SOUNDSET"
    }
}

-- ============================================= --
--                  DEBUG MODE                   --
-- ============================================= --

Config.Debug = false

-- ============================================= --
--              UI CUSTOMIZATION                --
-- ============================================= --

Config.UI = {
    -- Menu position (in percentages)
    Position = {
        X = 50,  -- 50% from the left
        Y = 50   -- 50% from the top
    },
    
    -- Colors (RGB format)
    Colors = {
        MainColor = {61, 74, 237}  -- Default blue color
    },
    
    -- Sizes and dimensions
    Sizes = {
        MenuWidth = 400,
        MaxListHeight = 500,
        ItemPadding = 15,
        ButtonPadding = 6,
        ButtonBorderRadius = 5
    },
    
    -- Animations
    Animations = {
        FadeInDuration = 300,
        FadeOutDuration = 500,
        NotificationDuration = 3000
    }
}
```

{% endtab %}
{% endtabs %}


---

# 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://docs.devcore.cz/resources/multijob/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.
