> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nexdev.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuration

> Everything lives in config.lua. Edit, then restart nex_bossmenu.

Everything lives in `config.lua`. Edit, then `restart nex_bossmenu`.

## Framework

```lua theme={null}
Config.Framework = 'auto'   -- 'auto' | 'qbx' | 'qb' | 'esx'
```

`auto` picks the first framework whose resource is started, preferring `qbx_core` → `qb-core` → `es_extended`. Pin a specific one if you run more than one core simultaneously, or want to skip the auto-detect overhead.

## Society backend

```lua theme={null}
Config.SocietyBackend = 'auto'
-- 'auto' | 'qb-management' | 'qb-banking' | 'esx_addonaccount'
```

`auto` resolves to `esx_addonaccount` on ESX, and prefers Renewed-Banking / qb-management on QB / Qbox (falls back to qb-banking).

## Boss gating

```lua theme={null}
Config.BossGradeNames = { boss = true }
```

A player is treated as a boss for a society if:

* the framework reports `job.isboss == true` *(QB / Qbox)*, **or**
* their grade `name` is in this table *(any framework)*

Add more names (`owner`, `ceo`, `manager`, etc.) if your jobs use them.

## Admin access

```lua theme={null}
Config.Admin = {
    acePermissions = {
        'bossmenu.admin',
        'group.admin',
        'group.superadmin',
        'command.bossmenu_admin',
    },
    esxGroups = { admin = true, superadmin = true },
    qbGroups  = { admin = true, god = true, superadmin = true },
}
```

Admin status is granted if **any** of these match. `group.admin` / `group.superadmin` are the built-in txAdmin / Cfx ACE groups, so most servers get admin access for free without touching `permissions.cfg`. See [Commands → Permissions](/nex_bossmenu/commands#permissions) for the full breakdown.

## Marker & blip

```lua theme={null}
Config.InteractDistance = 1.6     -- distance at which the [E] prompt shows (textui mode)
Config.DrawDistance     = 15.0    -- distance at which the marker starts drawing

Config.Marker = {
    type         = 2,                                                -- chevron-down arrow
    outlineSize  = vector3(0.42, 0.42, 0.42),
    outlineColor = { r = 0, g = 0, b = 0, a = 255 },
    fillSize     = vector3(0.30, 0.30, 0.30),
    fillColor    = { r = 255, g = 255, b = 255, a = 255 },
    zOffset      = 0.0,
    rotate       = true,
    bobUpAndDown = true,
}

Config.Blip = {
    enabled    = true,
    sprite     = 408,
    color      = 5,
    scale      = 0.8,
    shortRange = true,
}
```

Two `DrawMarker` passes per frame — a larger black silhouette behind a smaller white fill — gives the floating two-tone outlined arrow look. Tweak sizes / colours / `zOffset` to taste.

The blip is **only shown to bosses of the matching job**, so the map stays clean for everyone else.

## Interaction (text UI vs target)

```lua theme={null}
Config.Interaction = {
    mode = 'textui',                -- 'textui' | 'target'

    textui = {
        key      = 'E',
        keyCode  = 38,              -- INPUT_PICKUP
        label    = '[E] Open Boss Menu',
        position = 'right-center',
    },

    target = {
        icon     = 'fas fa-briefcase',
        label    = 'Open Boss Menu',
        distance = 2.0,
        radius   = 1.0,
    },
}
```

If `target` is requested but **neither** `ox_target` nor `qb-target` is started, the client soft-falls back to `textui`. Marker draw is unaffected by the mode — only the interaction prompt changes.

## Hire / transaction gates

```lua theme={null}
Config.HireDistance   = 5.0       -- max metres between boss and candidate at hire time
Config.MaxTransaction = 250000    -- cap on a single withdraw / deposit
Config.PlayerAccount  = 'cash'    -- 'cash' or 'bank' for withdraw/deposit on the player side
```

`HireDistance` is re-checked at the moment the boss clicks Hire, not just when the menu opens. Self-fire and self-promote are blocked server-side regardless of UI state.

## Menu tabs

```lua theme={null}
Config.MenuOptions = {
    balance   = true,
    withdraw  = true,
    deposit   = true,
    employees = true,
    hire      = true,
}
```

Turn off any tab you don't want bosses to see. The server-side handlers also no-op for disabled options, so spoofing the NUI can't bring back a disabled action.

## Admin placement

```lua theme={null}
Config.AdminCommand = 'bossmenu_admin'

Config.JobBlacklist = {
    unemployed = true,
    offstate   = true,
}
```

`JobBlacklist` filters which jobs appear in the admin placement dropdown. Add anything you don't want to accidentally place a marker for.

## Polling

```lua theme={null}
Config.JobPollMs = 2000
```

How often the client re-asks the server for the player's job. Lower it (e.g. `1000`) for faster marker / blip refresh after a job change; raise it to save callback traffic on busy servers.

## UI

```lua theme={null}
Config.UI = {
    Enabled = true,
    Sounds  = true,   -- open/close/confirm/error/success
}
```

If `Enabled = false`, the boss menu falls back to `ox_lib` menus and notifications. Useful if you've built your own HUD style and want everything in `ox_lib` for consistency.
