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

# Configuration

> Full reference for all configuration options in the K4MB1 Maze Bank Robbery resource

## config/config.lua

> [!NOTE]
>
> Step zones in `Config.MazeBankSteps` and trolley placements in `Config.Trollys` are tuned for the **K4MB1 Maze Bank** interior map. Enable `debug` briefly while testing if you need to visualize zone placement — leave `debug` at `false` on production servers.

### Main Settings

**debug** `boolean` (default: false)

Shows polyzones and drawtext zones in-game. Leave `false` on live servers.

**TestingMode** `boolean` (default: false)

Disables all minigames. Useful for testing the full robbery flow without completing minigame challenges.

**ResetHeist** `number` (default: 180)

Time in minutes before the heist resets and becomes available again after a completed robbery.

**DrawtextButton** `number` (default: 38)

The key code used to trigger drawtext interactions. `38` is `[E]` by default.

**DrawTextZoneSize** `vector3` (default: vec3(0.8, 0.8, 2))

The size of the drawtext interaction zone.

**DisableLoudApproach** `boolean` (default: false)

Disables the loud approach path entirely.

**DisableSilentApproach** `boolean` (default: false)

Disables the silent approach path entirely.

**Disable2PlayerPuzzles** `boolean` (default: false)

Disables puzzles that require two players. Enable this to test the script solo.

**DisableAnimalPuzzle** `boolean` (default: false)

Disables the animal combination puzzle in the vault area. Hints are defined in `Config.Animals`.

**DisableParticles** `boolean` (default: false)

Disables all particle effects during the robbery.

**DisableExplosions** `boolean` (default: true)

Disables client-side explosions. Set to `false` only if your anticheat allows explosion events.

**DisableRemovingWeapons** `boolean` (default: false)

Disables weapon removal during the robbery. Only enable this if you use a weapon wheel resource.

**UnlockAllEntrances** `table` (default: \{})

Door indices from `Config.DoorList` to unlock when the robbery starts, giving criminals and police extra entry/exit options.

```lua theme={null}
UnlockAllEntrances = {1, 2, 3}
```

**SpawnNetworkedPropsServerSide** `boolean` (default: true)

Spawns networked props server side. Set to `false` to spawn them client side instead.

**RequireBag** `boolean` (default: true)

Requires players to have a `bag` item in order to loot the trolleys.

**MinimumPolice** `number` (default: 0)

Minimum number of police required online before the robbery can be started. Set to `0` to disable.

**PoliceJobs** `table` (default: \{"police"})

The jobs that count as police for the `MinimumPolice` check and dispatch alerts.

```lua theme={null}
PoliceJobs = {"police", "fbi"}
```

**RequiredPlayersNearby** `table`

Requires a minimum number of players nearby to start the robbery.

```lua theme={null}
RequiredPlayersNearby = {amount = 0, radius = 20.0}
```

Set `amount` to `0` to disable.

***

### Cooldowns & Limits

**Cooldown.PlayerCooldown** `number` (default: 0)

Per-player cooldown in minutes after completing a robbery. Set to `0` to disable.

**Limits.TotalRobberiesPerRestart** `number` (default: 0)

Maximum number of total robberies allowed per server restart. Set to `0` to disable.

**Limits.RobberiesPerPlayer** `number` (default: 0)

Maximum number of robberies a single player can complete per server restart. Set to `0` to disable.

***

### Strike System

**TotalTrollys** `number` (default: 6)

Maximum number of trolleys that can spawn. Actual count depends on the strike system and approach used.

**Strikes** `number` (default: 4)

Number of strikes players can accumulate before their reward is cut.

**StrikeAmount** `number` (default: 3)

(Silent approach only) Number of trolleys removed when the strike limit is reached.

**StrikeLoud** `number` (default: 4)

(Loud approach only) Number of trolleys that spawn during a loud approach.

***

### Skill System

**SkillSystem** `boolean` (default: false)

Requires players to meet a minimum level from an integrated XP/skill system before starting the heist. Must have an XP system configured in the bridge.

**MinimumLevel** `number` (default: 20)

Minimum level required to initiate the heist. Only applies when `SkillSystem` is `true`.

***

### Dispatch

**Dispatch.Title** `string` (default: "Maze Bank Robbery")

Title shown in the dispatch alert.

**Dispatch.Message** `string` (default: "Maze Bank is being robbed")

Message body shown in the dispatch alert.

**Dispatch.Code** `string` (default: "10-70")

Radio code shown in the dispatch alert.

**Dispatch.Time** `number` (default: 5)

Time in seconds the dispatch alert remains visible. Not all dispatch systems support this.

**Dispatch.Blip** `table`

Blip settings for the dispatch map marker.

```lua theme={null}
Blip = {
    Text = 'Maze Bank Robbery',
    Color = 1,
    Sprite = 41,
    Scale = 0.8
}
```

**DispatchLocation** `table`

Controls which step triggers the dispatch alert. `Loud` and `Silent` control approach-specific alerts; enable only one step flag below at a time for mid-heist alerts.

```lua theme={null}
DispatchLocation = {
    ["Loud"] = true,
    ["Silent"] = false,
    ["OfficeDoorKeypad"] = true,
    ["OfficeComputer"] = true,
    ["UtilityTemp"] = false,
}
```

***

### Password UI

**Password** `table`

Labels and ox\_lib input dialog text for computer password prompts (`Header`, `Content`, `Input` with `Title`, `Label`, `Description`, `Icon`).

***

### Props

**Props** `table`

Prop models spawned during the heist for keypads, bombs, and smoke grenades.

```lua theme={null}
Props = {
    ["Keypad"] = "ch_prop_fingerprint_scanner_error_01b",
    ["Bomb"] = "prop_bomb_01_s",
    ["LargeBomb"] = "ch_prop_ch_ld_bomb_01a",
    ["SmokeGrenade"] = "prop_gas_grenade",
}
```

***

### Step Durations

Progress bar and interaction durations (milliseconds) for each step. Keys follow step names — for example `GeneratorDuration`, `SmokeDuration`, `OfficeDoorKeypadDuration`, `DrillDuration`, and so on. Default is `6000` unless changed in `config/config.lua`.

**NotificationDuration** `number` (default: 2500)

Duration in milliseconds for bridge notifications.

***

### Bonus Items

**Bonus.Status** `boolean` (default: false)

Enables or disables bonus item drops at the end of the heist.

**Bonus.BonusChance** `number` (default: 15)

Percentage chance that any bonus item is given at all.

**Bonus.ItemCount** `number` (default: 1)

Number of items that can be given from the bonus items table.

**Bonus.Items** `table`

Table of possible bonus items. Each entry has a `Name`, `Chance` (%), and `Amount` range.

```lua theme={null}
Items = {
    {Name = "x_device", Chance = 30, Amount = {min = 1, max = 1}},
    {Name = "x_phone", Chance = 50, Amount = {min = 1, max = 1}},
    {Name = "x_stethoscope", Chance = 20, Amount = {min = 1, max = 1}},
}
```

***

### Evidence & Stress

**Evidence.Status** `boolean` (default: true)

Enables fingerprint evidence drops at the crime scene.

**Evidence.Chance** `number` (default: 50)

Percentage chance that fingerprint evidence is left behind.

**Stress.Status** `boolean` (default: true)

Enables the stress system. Stress is only applied when a minigame is failed.

**Stress.Chance** `number` (default: 90)

Percentage chance that stress is applied on a minigame fail.

**Stress.Amount** `table` (default: \{min = 1, max = 3})

The minimum and maximum amount of stress applied per failure.

***

### Items & Break Chance

Item names used throughout the heist are mapped in `Config.Items`. Break chances on use are set in `Config.ItemsBreak`.

```lua theme={null}
Config.Items = {
    ["Stethoscope"] = "x_stethoscope",
    ["Device"] = "x_device",
    ["Phone"] = "x_phone",
    ["Smoke"] = "weapon_smokegrenade",
    ["LargeC4"] = "weapon_stickybomb",
    ["Drill"] = "laserdrill",
    ["Pliers"] = "pliers",
    ["Bag"] = "bag",
    ["Key"] = "mazebankkey",
    ["Keycard"] = "mazebankcard",
    ["Keycard2"] = "mazebankcard2",
}
```

***

### Rewards

Trolley rewards (`Config.Rewardcash`, `Config.Rewardgold`, `Config.Rewarddiamond`) and lockbox drilling (`Config.DrillReward`) follow the same format as other Project X bank heists.

**ObtainPerPickup** `boolean` (default: true)

If `true`, items are given per individual stack pickup from the trolley. If `false`, the reward is given at the end of the full trolley animation.

**Cash** `boolean` (default: true)

Set to `true` to give money directly. Set to `false` to give a cash item instead.

**Item** `string` (default: 'markedbills')

The item name used when `Cash` is `false`.

**StackAmount** `table` (default: \{min = 115, max = 265})

The minimum and maximum cash or item amount per pickup or per trolley completion (varies by reward table).

**ItemInfo** `boolean | table` (default: false)

Optional item metadata for marked bills or similar items with random values in their info table.

**Drill Reward** (`Config.DrillReward`) controls payout from vault lockbox drilling (`Item`, `CashName`, `CashItem`, `CashAmount`, `ItemInfo`).

***

### Steps, Trolleys & Doors

* **`Config.MazeBankSteps`** — Interaction zones, labels, and icons for every robbery step. Turn on `debug` while adjusting placements.
* **`Config.Trollys`** — Trolley types (`cash`, `gold`, `diamond`) and interaction settings. Do not copy coords from other heist variants without retuning for the K4MB1 map.
* **`Config.DoorList`** — Door objects and lock states synced with the heist flow.

***

### Security & Alarm

**SecurityGuards** `table`

List of armed guard peds spawned during the heist. Each entry supports `Model`, `Coords`, `Weapon`, and `Ammo`.

**SecurityOptions** `table`

Global combat settings applied to all security guard peds (`MaxHealth`, `Health`, `Armour`, `Accuracy`, etc.).

**Sounds.AlarmLocation** `vector3`

World position where the alarm sound plays.

**Sounds.AlarmDuration** `number` (default: 15)

How long the alarm lasts, in minutes.

***

### Logs

Configured in `config/logs.lua`.

**Enable** `boolean` (default: false)

Enables or disables the logging system.

**APIKey** `string` (default: "")

Your Discord webhook URL, or your Fivemerr/Fivemanage API key.

**FivemanageDataset** `string` (default: "default")

The Fivemanage dataset to log activity to. Leave as `"default"` unless you have a specific dataset configured.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.