> For the complete documentation index, see [llms.txt](https://docs.bhdscripts.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.bhdscripts.com/scripts/bhd-bossmenu/configuration.md).

# Configuration

{% code title="Config.lua" %}

```lua
Config = {
    Unemployed = {
        jobName = "unemployed",
        grade = 0,
    },
    Zones = {
        {
            pos = vec3(192.1572, -854.8563, 31.2871),
            size = vec3(2.0, 2.0, 2.0),
            rotation = 0.0,
            job = {['police'] = 0},
            debug = false,
            lockerPositions = {
                {
                    pos = vec3(197.3270, -856.9032, 31.1414),
                    size = vec3(2.0, 2.0, 2.0),
                    rotation = 0.0,
                    job = {['police'] = 0},
                },
                {
                    pos = vec3(192.1572, -854.8563, 31.2871),
                    size = vec3(2.0, 2.0, 2.0),
                    rotation = 0.0,
                    job = {['police'] = 0},
                },
            },
        },
    },
}
```

{% endcode %}

The `config.lua` file defines all customizable options for the BHD Bossmenu, allowing you to adjust job restrictions, zones, billing systems, and more. Below is a detailed breakdown of each section to help you configure the script effectively.

***

<details>

<summary><strong>Unemployed Job</strong></summary>

The `Unemployed` section defines the default job and grade level for unemployed players. This ensures that players without assigned jobs are properly accounted for.

```lua
Unemployed = {
    jobName = "unemployed", -- Default job for unemployed players.
    grade = 0,             -- Default grade for unemployed players.
}
```

</details>

<details>

<summary><strong>Zones Configuration</strong></summary>

The `Zones` array defines specific areas in the game world where the boss menu can be accessed. Each zone may also contain **locker positions** where players can interact with lockers for their job.

***

#### **Parameters**

Each zone includes the following parameters:

* **`pos`**: Coordinates of the zone's center (X, Y, Z).
* **`size`**: The dimensions of the zone (width, height, depth).
* **`rotation`**: The orientation of the zone.
* **`job`**: A table defining which jobs can access the zone and their minimum grade level.
* **`debug`**: A boolean to enable or disable debug visuals for the zone.
* **`lockerPositions`**: An array of lockers within the zone, where each locker can have its own parameters:
  * **`pos`**: Coordinates of the locker (X, Y, Z).
  * **`size`**: The dimensions of the locker interaction area.
  * **`rotation`**: Orientation of the locker.
  * **`job`**: Jobs allowed to access the locker.

***

#### **Example Configuration**

```lua
Zones = {
    {
        pos = vec3(192.1572, -854.8563, 31.2871), -- Center of the Zone
        size = vec3(2.0, 2.0, 2.0),              -- Zone dimensions
        rotation = 0.0,                          -- Zone rotation
        job = {['police'] = 0},                  -- Restricted to 'police' job, grade 0
        debug = false,                           -- Debug visuals off
        lockerPositions = {
            {
                pos = vec3(197.3270, -856.9032, 31.1414), -- Locker 1 position
                size = vec3(2.0, 2.0, 2.0),              -- Locker 1 dimensions
                rotation = 0.0,                          -- Locker 1 rotation
                job = {['police'] = 0},                  -- Accessible only by 'police' job
            },
            {
                pos = vec3(192.1572, -854.8563, 31.2871), -- Locker 2 position
                size = vec3(2.0, 2.0, 2.0),              -- Locker 2 dimensions
                rotation = 0.0,                          -- Locker 2 rotation
                job = {['police'] = 0},                  -- Accessible only by 'police' job
            },
        },
    },
}
```

***

#### **Explanation of Parameters**

1. **`pos`** (Zone/Locker):
   * Defines the center position of the zone or locker using 3D coordinates (X, Y, Z).
2. **`size`** (Zone/Locker):
   * Specifies the dimensions (width, height, depth) for interaction within the zone or locker.
3. **`rotation`**:
   * Adjusts the orientation of the zone or locker.
4. **`job`**:
   * A table of jobs and their minimum grade levels that are allowed to access the zone or locker.
   * Example:

     ```lua
     job = {['police'] = 0} -- Police job, grade 0
     ```
5. **`debug`** (Zone only):
   * If set to `true`, displays a visible marker for the zone, useful for testing.
6. **`lockerPositions`**:
   * An array of lockers, each with its own position, size, and job restrictions.

***

#### **Notes**

* Each zone must have a unique **`pos`** value to avoid overlap issues.
* Lockers provide additional interaction areas within the zone and can have job-specific restrictions.
* Set **`debug`** to `true` during testing to visualize zones and ensure they are correctly placed.

</details>
