> ## 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_crutchsystem.

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

## Crutch prop & use mechanics

```lua theme={null}
Config.crutchModel = `v_med_crutch01`
Config.clipSet     = 'move_lester_CaneUp'

-- Use count before the item breaks and is removed from inventory.
Config.TimeUsedBeforeDelete = 5

-- Inventory item name (ox_inventory). Set to false to disable the item-use path
-- (auto-force from EMS still works without an item if ForceGiveItem = false).
Config.CrutchItem = 'crutch'

Config.pickupAnim = {
    dict = 'pickup_object',
    name = 'pickup_low',
}
```

## Force lock

When EMS prescribes a crutch (or an ambulance job calls `ForceCrutch`), the patient is locked into the crutch for `ForceDuration` seconds. During the lock they can't unequip the crutch manually.

```lua theme={null}
Config.ForceDuration   = 10 * 60   -- seconds. Set to 0 to allow immediate manual unequip.
Config.ForceGiveItem   = false     -- also place a `crutch` item in the inventory if missing
Config.ForceItemAmount = 1
```

The patient HUD shows the remaining lock time when `Config.UI.PatientHUD = true`.

## EMS permissions

```lua theme={null}
Config.AllowedJobs = {
    ['ambulance'] = true,
    ['ems']       = true,
    ['doctor']    = true,
    ['ems_chief'] = true,
    ['medic']     = true,
    ['paramedic'] = true,
}

Config.GiveDistance   = 5.0   -- metres between EMS and target
Config.RemoveDistance = 5.0
```

The bridge only reads `playerData.job.name`, so any ambulance resource that sets a job name in this list works without further wiring.

## Hospital medic NPC

```lua theme={null}
Config.NPCModel      = 's_m_m_doctor_01'
Config.SpawnDistance = 60.0           -- player must be within this radius for the NPC to spawn

Config.Interaction = 'target'         -- 'target' or 'textui'
Config.TextUI = {
    distance = 2.0,
    label    = '[E] Remove Crutch',
    key      = 38,                    -- control id 38 = E
    icon     = 'crutch',              -- font-awesome icon (no 'fa-' prefix)
    position = 'right-center',        -- 'right-center' | 'left-center' | 'top-center' | 'bottom-center'
}

Config.ChargeMoney  = true
Config.RemovalPrice = 2500
Config.MoneyAccount = 'cash'          -- 'cash' or 'bank'

Config.Animation = {
    dict     = 'mini@repair',
    anim     = 'fixing_a_ped',
    duration = 3000,                   -- ms
}
```

Set `Config.ChargeMoney = false` to make the NPC remove crutches for free. `Config.MoneyAccount` controls which wallet is debited on every supported framework.

### Medic locations

```lua theme={null}
Config.MedicLocations = {
    {
        name   = 'Pillbox Medical Center',
        coords = vector4(296.27, -591.97, 43.27, 73.70),
        radius = 50.0,
        blip   = {
            enabled = true,
            sprite  = 61,
            color   = 2,
            scale   = 0.8,
            label   = 'Crutch Doctor',
        },
    },
}
```

Add as many entries as you want — one NPC and one blip spawn per location. The NPC despawns when the player leaves `radius` and respawns on re-entry.

## Legacy crutch resources

When the hospital NPC successfully removes a crutch, removal hooks for legacy crutch resources also fire. Lets you migrate from `wasabi_crutch`, `ak47_crutch`, or `ak47_qb_crutch` without leaving players stuck.

```lua theme={null}
Config.CrutchResources = {
    { resource = 'wasabi_crutch',  export = 'RemoveCrutch' },
    { resource = 'ak47_crutch',    event  = 'ak47_crutch:remove' },
    { resource = 'ak47_qb_crutch', event  = 'ak47_qb_crutch:remove' },
}
```

Each entry must have a `resource` plus **either**:

* `event` — `TriggerServerEvent(event, serverId)`
* `export` — `exports[resource]:Export(..., serverId)` on the client

Empty the table if you don't want this. The internal `nex_crutchsystem` crutch is always removed regardless.

## UI

```lua theme={null}
Config.UI = {
    Enabled     = true,                -- master switch; if false, falls back to ox_lib menus / progressBar / notifications
    MedicDialog = true,                -- hospital NPC interaction
    EmsMenu     = true,                -- EMS third-eye give / remove
    PatientHUD  = true,                -- forced-crutch HUD
    AdminPanel  = true,                -- /crutchadmin panel
    Theme       = 'monochrome',        -- visual theme key

    -- Patient HUD anchor.
    HUDPosition = 'right',             -- 'top' | 'right' | 'bottom' | 'left' | any corner
}
```

Each panel can be toggled independently. Turning off `MedicDialog`, for example, swaps the custom medic dialog for an `ox_lib` `progressBar` and standard notifications — useful if you've built your own HUD style.

## Notifications

```lua theme={null}
Config.Notifications = {
    success        = 'Crutch removed successfully!',
    notEnoughMoney = 'You need $%s to remove the crutch!',
    cancelled      = 'Crutch removal cancelled.',
}
```

For the rest of the strings (block messages, EMS prompts, broken / use-count messages), edit `locales/en.lua` — or copy it to a new locale file and translate.

## Commands

```lua theme={null}
Config.Commands = {
    add    = 'addcrutch',     -- /addcrutch <id> [seconds]   (group.admin)
    remove = 'removecrutch',  -- /removecrutch <id>          (group.admin)
    admin  = 'crutchadmin',   -- /crutchadmin                (opens the admin panel)
}
```

Set any value to `false` or `''` to skip registering that command entirely. See [Commands](/nex_crutchsystem/commands) for the full reference.
