> ## 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 Project X ATM Robbery resource

## config/config.lua

### Main Settings

<ParamField path="Debug" type="boolean" default="false">
  Shows polyzones created inside the game.
</ParamField>

<ParamField path="ExploitZones" type="boolean" default="true">
  Enables exploit check box zones. Disable if this causes polyzone issues.
</ParamField>

<ParamField path="TestingMode" type="boolean" default="false">
  Disables all minigames for flow testing.
</ParamField>

<ParamField path="Interaction" type="string" default="'ox_target'">
  Interaction system. Must match the bridge setting: `ox_target`, `qb-target`, or `interact`.
</ParamField>

<ParamField path="DisableParticles" type="boolean" default="false">
  Disables particle effects during robberies.
</ParamField>

<ParamField path="DisableExplosions" type="boolean" default="true">
  Disables the C4 explosion when blowing up ATMs. Keep `true` if your anticheat blocks explosion events.
</ParamField>

<ParamField path="DisableRemovingWeapons" type="boolean" default="false">
  Disables weapon removal during the robbery. Only enable this if you use a weapon wheel resource.
</ParamField>

<ParamField path="PoliceJobs" type="table" default="{&#x22;police&#x22;}">
  Jobs that count as police for approach cop checks and dispatch alerts.

  ```lua theme={null}
  PoliceJobs = {"police", "fbi"}
  ```
</ParamField>

<ParamField path="Resource" type="number" default="750">
  Client wait interval for rope handling. Higher values lower resmon (rope loads slower); lower values increase responsiveness (higher resmon).
</ParamField>

<ParamField path="AtmWeightWhenBeingDragged" type="number" default="170.0">
  Physics weight of the ATM while being dragged by a vehicle. Lower values weigh the car down less.
</ParamField>

<ParamField path="CooldownPlace" type="string" default="'initiation'">
  When cooldown starts: `'initiation'` (starting the robbery) or `'rope'` (attaching the rope to the car).
</ParamField>

<ParamField path="RemoveItems" type="boolean" default="true">
  Removes step items after each step. Set to `false` to keep items for crafting, pawn shops, etc.
</ParamField>

<ParamField path="RopeCancelButton" type="string" default="'X'">
  Default key for `/removerope` (RegisterKeyMapping). See the [Commands](/resources/atm-robbery/commands) page.
</ParamField>

<ParamField path="ButtonToStopBeatingApproach" type="number" default="38">
  Control ID to stop the beating approach. `38` is `[E]` by default.
</ParamField>

<ParamField path="DestroyATMStatus" type="boolean" default="true">
  Shows the destroy ATM interaction on placed consoles.
</ParamField>

<ParamField path="NotificationDuration" type="number" default="5000">
  Duration in milliseconds for success and error notifications.
</ParamField>

<ParamField path="SkillSystem" type="boolean" default="false">
  Requires players to meet per-approach `RequiredLevel` via the bridge XP system before starting that approach.
</ParamField>

<ParamField path="ResetATMConsolesAfterCooldown" type="boolean" default="false">
  Resets ATM consoles after cooldown (rope and explosive approaches).
</ParamField>

***

### Cooldowns

<ParamField path="Cooldowns.GlobalCooldown" type="boolean" default="false">
  Enables a global cooldown shared across approaches. When active, per-approach cooldowns are disabled.
</ParamField>

<ParamField path="Cooldowns.Cooldown" type="number" default="10">
  Global cooldown duration in minutes.
</ParamField>

<ParamField path="Cooldowns.IndividualCooldown" type="boolean" default="true">
  Enables per-player cooldowns.
</ParamField>

<ParamField path="Cooldowns.IndividualCooldownTime" type="number" default="10">
  Per-player cooldown duration in minutes.
</ParamField>

***

### Dispatch

<ParamField path="Dispatch" type="table">
  Dispatch alert settings used by the bridge.

  ```lua theme={null}
  Dispatch = {
      Title = 'ATM Robbery',
      Message = 'ATM being robbed',
      Code = '10-35',
      Time = 3,
      Blip = {
          Text = '911 - ATM Robbery',
          Color = 1,
          Sprite = 272,
          Scale = 1.0,
      },
  }
  ```
</ParamField>

***

### Bonus Items

<ParamField path="Bonus.Status" type="boolean" default="false">
  Enables or disables bonus item drops at the end of a robbery.
</ParamField>

<ParamField path="Bonus.BonusChance" type="number" default="15">
  Percentage chance that any bonus item is given at all.
</ParamField>

<ParamField path="Bonus.ItemCount" type="number" default="1">
  Number of items that can be given from the bonus items table.
</ParamField>

<ParamField path="Bonus.Items" type="table">
  Table of possible bonus items. Each entry has a `Name`, `Chance` (%), and `Amount` range. Total chance across items should add up to 100%.

  ```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}},
  }
  ```
</ParamField>

***

### Evidence & Stress

<ParamField path="Evidence.Status" type="boolean" default="true">
  Enables fingerprint evidence drops at the crime scene.
</ParamField>

<ParamField path="Evidence.Chance" type="number" default="50">
  Percentage chance that fingerprint evidence is left behind.
</ParamField>

<ParamField path="Stress.Status" type="boolean" default="true">
  Enables stress on minigame failure.
</ParamField>

<ParamField path="Stress.Chance" type="number" default="90">
  Percentage chance that stress is applied on a minigame fail.
</ParamField>

<ParamField path="Stress.Amount" type="table" default="{min = 1, max = 3}">
  Minimum and maximum stress applied per failure.
</ParamField>

***

### Approaches

Each entry in `Config.Approaches` can be enabled or disabled with `Status`. Toggle approaches independently to suit your server economy.

| Approach        | Required items                              | Notes                                                             |
| --------------- | ------------------------------------------- | ----------------------------------------------------------------- |
| `Rope`          | `laserdrill`, `nylonrope`, `screwdriverset` | Drill holes → rope to vehicle → pull console → place & break down |
| `Drill`         | `laserdrill`                                | Direct drill loot on the ATM                                      |
| `C4`            | `weapon_stickybomb`                         | Plant sticky bomb and loot exploded console                       |
| `Thermite`      | `thermite`                                  | Burn through the ATM                                              |
| `Hacking`       | `x_device`                                  | Device hack for smaller payout                                    |
| `GasTank`       | `x_gastank`, `lighter`                      | Ignite a gas tank on the ATM                                      |
| `Beating`       | Weapons in `Config.Weapons`                 | Melee smash; lowest payout                                        |
| `Impersonation` | `x_fakecredit`                              | Fake credit card swipe                                            |

All approaches share the same config structure. Fields common to most approaches:

* `Status`, `RequiredItem` / `RequiredItem2` / `RequiredItem3`
* `ItemsBreak`, `Cooldown`, `ProgressBarDuration`
* `RobberyTimeFrame`, `CopsRequired`, `RequiredLevel`, `Exp`
* `Jackpot` (`Status`, `Chance`, `Multiplier`)
* `Dispatch` / `Reward` (`ItemForCash`, `CashName`, `CashItem`, `CashAmount`, `ItemInfo`)

The Rope approach also has pull timing (`MinimumDurationToRemoveAtmFromWall`, `SpeedFactor`), pickup timer, tracker, and extra dispatch flags.

<AccordionGroup>
  <Accordion title="Example: Drill approach structure">
    ```lua theme={null}
    ["Drill"] = {
        ["Status"] = true,
        ["RequiredItem"] = "laserdrill",
        ["ItemsBreak"] = { ["Drill"] = 100 },
        ["Cooldown"] = 5,
        ["ProgressBarDuration"] = 25,
        ['RobberyTimeFrame'] = {min = 20, max = 5},
        ['CopsRequired'] = 0,
        ['RequiredLevel'] = 10,
        ['Exp'] = 1,
        ['Jackpot'] = {
            ['Status'] = true,
            ['Chance'] = 10,
            ['Multiplier'] = 2,
        },
        ['Dispatch'] = {
            ['Status'] = true,
            ['Chance'] = 100,
        },
        ["Reward"] = {
            ['ItemForCash'] = false,
            ['CashName'] = 'cash',
            ['CashItem'] = "markedbills",
            ['CashAmount'] = {min = 1000, max = 2000},
            ['ItemInfo'] = false,
        }
    },
    ```
  </Accordion>
</AccordionGroup>

***

### Props

```lua theme={null}
Config.Props = {
    ["Default"] = {"prop_atm_02", "prop_atm_03", "prop_fleeca_atm"},
    ["CustomConsoles"] = {"projectx_atm_02", "projectx_atm_03", "projectx_fleeca_atm"},
    ["CustomFrames"] = {"projectx_atm_02_frame", "projectx_atm_03_frame", "projectx_fleeca_atm_frame"},
    ["ExplodedConsoles"] = {"projectx_atm_02_exploded", "projectx_atm_03_exploded", "projectx_fleeca_atm_exploded"},
}
```

Default GTA ATM models are targeted for approaches. Custom console/frame/exploded models come from `projectx-atmprops`.

***

### Placeable ATM Settings

`Config.Settings` controls placing pulled ATM consoles:

```lua theme={null}
Config.Settings = {
    ['PlacementMinDistance'] = 2.5,
    ['Atms'] = {
        ['Atmred'] = { ['Prop'] = 'projectx_atm_03', ['ItemName'] = 'atmred' },
        ['Atmblue'] = { ['Prop'] = 'projectx_atm_02', ['ItemName'] = 'atmblue' },
        ['Atmgreen'] = { ['Prop'] = 'projectx_fleeca_atm', ['ItemName'] = 'atmgreen' },
    }
}
```

***

### Breakdown Steps

After placing a pulled console, players break it down in three steps (`Config.Steps`):

| Step         | Tool        | Reward                                        |
| ------------ | ----------- | --------------------------------------------- |
| `FirstStep`  | `blowtorch` | `atmpanel`                                    |
| `SecondStep` | `atmpanel`  | `atmcables`                                   |
| `ThirdStep`  | `atmcables` | `atmmotherboard` (also required to take cash) |

***

### Vehicle Classes (Rope)

`Config.Vehicles` is a **blacklist** of vehicle classes for the rope pull. Commented-out classes are **whitelisted**.

By default, SUVs (2), Off-road (9), Industrials (10), Utility (11), Vans (12), Military (19), and Commercial (20) are allowed.

***

### Beating Weapons

`Config.Weapons` lists melee weapons allowed to start the beating approach (nightstick, hammer, bat, crowbar, golf club, hatchet, machete, wrench, battle axe).

***

### Logs

Configured in `config/logs.lua`.

<ParamField path="Enable" type="boolean" default="false">
  Enables or disables the logging system.
</ParamField>

<ParamField path="APIKey" type="string" default="&#x22;&#x22;">
  Your Discord webhook URL, or your Fivemerr/Fivemanage API key.
</ParamField>

<ParamField path="FivemanageDataset" type="string" default="&#x22;default&#x22;">
  The Fivemanage dataset to log activity to.
</ParamField>
