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

# Installation

> Step by step instructions to install the Project X ATM Robbery resource

## Installation Steps

<Steps>
  <Step title="Install required dependencies">
    <Warning>
      Verify all dependencies below are started **before** this script in your `server.cfg`.
    </Warning>

    <CardGroup cols={2}>
      <Card title="ox_lib" icon="book" href="https://github.com/CommunityOx/ox_lib/releases/latest">
        Download ox\_lib
      </Card>

      <Card title="projectx-bridge" icon="bridge" href="/resources/bridge/installation">
        Required Project X Bridge
      </Card>

      <Card title="projectx-atmprops" icon="cube">
        Required custom ATM props (included in the package zip)
      </Card>

      <Card title="bl_ui" icon="gamepad" href="https://github.com/Byte-Labs-Studio/bl_ui/releases/latest/download/bl_ui.zip">
        Required minigame resource
      </Card>
    </CardGroup>
  </Step>

  <Step title="Install minigames">
    Install `bl_ui` into your standalone or dependencies folder.

    <Card title="bl_ui" icon="gamepad" href="https://github.com/Byte-Labs-Studio/bl_ui/releases/latest/download/bl_ui.zip">
      Download and place in your standalone or minigames folder
    </Card>

    <Warning>
      Make sure minigames are **not** in the same folder as the robbery script.
    </Warning>
  </Step>

  <Step title="Extract and place the resource">
    Extract the script from the zip file and place it into your scripts folder.

    <Warning>
      Do **not** split the folders from the zip unless you know what you are doing. Keep `projectx-atmrobbery` and `projectx-atmprops` together — the props resource is a hard dependency.
    </Warning>
  </Step>

  <Step title="Add items to your inventory">
    Add the required items and their images to your inventory resource. See the [items section](#items-required) below for the full list.

    <Info>
      Item images done by [Artwork Inventory](https://discord.gg/Z2awpnXKdw) - Use code **ProjectX** for 10% off!
    </Info>
  </Step>

  <Step title="Configure the resource">
    Open `config/config.lua` and adjust the settings to match your server. Set `Config.Interaction` to match your bridge interaction (`ox_target`, `qb-target`, or `interact`). Framework, inventory, and dispatch are handled by the bridge when set to `'auto'`.
  </Step>

  <Step title="Add to server.cfg">
    Start order matters. Ensure dependencies in this order:

    ```cfg theme={null}
    ensure ox_lib
    ensure projectx-bridge
    ensure bl_ui
    ensure projectx-atmprops
    ensure projectx-atmrobbery
    ```
  </Step>
</Steps>

## Optional: Renewed-Carryitems

If you want players to visually carry placeable ATM consoles (`atmred`, `atmblue`, `atmgreen`), you can optionally install [Renewed-Carryitems](https://github.com/Renewed-Scripts/Renewed-Carryitems) and add those three items to its config. This is **not required** for the robbery to function.

## Items Required

### Items Required from Shop/Black Market

* `nylonrope`
* `blowtorch`
* `laserdrill`
* `x_fakecredit`
* `x_gastank`
* `x_device`
* `thermite`
* `screwdriverset`
* `lighter`

<Info>
  The C4 approach uses `weapon_stickybomb` (a weapon, not a custom item).
</Info>

### Items Obtained Within the Robbery

Placeable ATM consoles and breakdown parts are obtained during the rope approach:

* `atmred`
* `atmblue`
* `atmgreen`
* `atmpanel`
* `atmcables`
* `atmmotherboard`

### Item Configuration

<Tabs>
  <Tab title="ox_inventory">
    ```lua theme={null}
    ['nylonrope'] = {
        label = 'Nylon Rope',
        description = 'The strongest rope material..',
        weight = 125,
        close = true,
        stack = true,
        client = {
            image = "nylonrope.png",
            event = 'projectx-atmrobbery:client:UseRope',
        }
    },

    ['atmred'] = {
        label = 'Red ATM',
        description = 'A console of an automated teller.',
        weight = 350,
        close = true,
        stack = false,
        client = {
            image = "atmred.png",
            event = 'projectx-atmrobbery:client:UseAtm-Red',
        }
    },

    ['atmblue'] = {
        label = 'Blue ATM',
        description = 'A console of an automated teller.',
        weight = 350,
        close = true,
        stack = false,
        client = {
            image = "atmblue.png",
            event = 'projectx-atmrobbery:client:UseAtm-Blue',
        }
    },

    ['atmgreen'] = {
        label = 'Green ATM',
        description = 'A console of an automated teller.',
        weight = 350,
        close = true,
        stack = false,
        client = {
            image = "atmgreen.png",
            event = 'projectx-atmrobbery:client:UseAtm-Green',
        }
    },

    ['atmpanel'] = {
        label = 'ATM Panel',
        description = 'A back panel from an automated teller.',
        weight = 125,
        close = true,
        stack = false,
        client = {
            image = "atmpanel.png",
        }
    },

    ['atmcables'] = {
        label = 'ATM Cables',
        description = 'Cables from an automated teller.',
        weight = 125,
        close = true,
        stack = false,
        client = {
            image = "atmcables.png",
        }
    },

    ['atmmotherboard'] = {
        label = 'ATM Motherboard',
        description = 'A motherboard from an automated teller.',
        weight = 125,
        close = true,
        stack = false,
        client = {
            image = "atmmotherboard.png",
        }
    },

    ['blowtorch'] = {
        label = 'Blow Torch',
        description = 'Ooo hot...',
        weight = 125,
        close = true,
        stack = false,
        client = {
            image = "blowtorch.png",
        }
    },

    ['laserdrill'] = {
        label = 'Laser Drill',
        description = 'I wonder what this does...',
        weight = 125,
        close = true,
        stack = false,
        client = {
            image = "laserdrill.png",
        }
    },

    ['screwdriverset'] = {
        label = 'Screwdriverset',
        description = 'A Screw driver set',
        weight = 50,
        close = true,
        stack = false,
        client = {
            image = "screwdriverset.png",
        }
    },

    ["x_gastank"] = {
        label = "X Gas Tank",
        weight = 200,
        stack = true,
        close = false,
        description = "????",
        client = {
            image = "x_gastank.png",
        }
    },

    ["x_fakecredit"] = {
        label = "X Credit Card",
        weight = 200,
        stack = true,
        close = false,
        description = "????",
        client = {
            image = "x_fakecredit.png",
        }
    },

    ["x_device"] = {
        label = "X Device",
        weight = 50,
        stack = false,
        close = false,
        description = "?????????",
        client = {
            image = "x_device.png",
        }
    },

    ["thermite"] = {
        label = "Thermite",
        weight = 1000,
        stack = true,
        close = true,
        description = "Sometimes you'd wish for everything to burn",
        client = {
            image = "thermite.png",
        }
    },

    ["lighter"] = {
        label = "Lighter",
        weight = 0,
        stack = true,
        close = true,
        description = "On new years eve a nice fire to stand next to",
        client = {
            image = "lighter.png",
        }
    },
    ```
  </Tab>

  <Tab title="qb-inventory">
    ```lua theme={null}
    ['nylonrope'] = {['name'] = 'nylonrope', ['label'] = 'Nylon Rope', ['weight'] = 500, ['type'] = 'item', ['image'] = 'nylonrope.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'The strongest rope material..'},
    ['atmred'] = {['name'] = 'atmred', ['label'] = 'Red Atm', ['weight'] = 25000, ['type'] = 'item', ['image'] = 'atmred.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'A console of an ATM'},
    ['atmblue'] = {['name'] = 'atmblue', ['label'] = 'Blue Atm', ['weight'] = 25000, ['type'] = 'item', ['image'] = 'atmblue.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'A console of an ATM'},
    ['atmgreen'] = {['name'] = 'atmgreen', ['label'] = 'Green Atm', ['weight'] = 25000, ['type'] = 'item', ['image'] = 'atmgreen.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'A console of an ATM'},
    ['atmpanel'] = {['name'] = 'atmpanel', ['label'] = 'Atm Panel', ['weight'] = 5000, ['type'] = 'item', ['image'] = 'atmpanel.png', ['unique'] = true, ['useable'] = false, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'A back panel for an ATM'},
    ['atmcables'] = {['name'] = 'atmcables', ['label'] = 'Atm Cables', ['weight'] = 2000, ['type'] = 'item', ['image'] = 'atmcables.png', ['unique'] = true, ['useable'] = false, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Cables..'},
    ['atmmotherboard'] = {['name'] = 'atmmotherboard', ['label'] = 'Atm Motherboard', ['weight'] = 2000, ['type'] = 'item', ['image'] = 'atmmotherboard.png', ['unique'] = true, ['useable'] = false, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'A motherboard for an ATM'},
    ['blowtorch'] = {['name'] = 'blowtorch', ['label'] = 'Blow Torch', ['weight'] = 1000, ['type'] = 'item', ['image'] = 'blowtorch.png', ['unique'] = true, ['useable'] = false, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Ooo hot..'},
    ['laserdrill'] = {['name'] = 'laserdrill', ['label'] = 'Laser Drill', ['weight'] = 1000, ['type'] = 'item', ['image'] = 'laserdrill.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = ''},
    ['x_fakecredit'] = {['name'] = 'x_fakecredit', ['label'] = 'X Credit Card', ['weight'] = 1000, ['type'] = 'item', ['image'] = 'x_fakecredit.png', ['unique'] = true, ['useable'] = false, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = '..'},
    ['x_gastank'] = {['name'] = 'x_gastank', ['label'] = 'X Gas Tank', ['weight'] = 1000, ['type'] = 'item', ['image'] = 'x_gastank.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = '..'},
    ['x_device'] = {['name'] = 'x_device', ['label'] = 'X Device', ['weight'] = 50, ['type'] = 'item', ['image'] = 'x_device.png', ['unique'] = true, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = '?????????'},
    ['thermite'] = {['name'] = 'thermite', ['label'] = 'Thermite', ['weight'] = 1000, ['type'] = 'item', ['image'] = 'thermite.png', ['unique'] = false, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Sometimes you\'d wish for everything to burn'},
    ['screwdriverset'] = {['name'] = 'screwdriverset', ['label'] = 'Toolkit', ['weight'] = 1000, ['type'] = 'item', ['image'] = 'screwdriverset.png', ['unique'] = false, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Very useful to screw... screws...'},
    ['lighter'] = {['name'] = 'lighter', ['label'] = 'Lighter', ['weight'] = 0, ['type'] = 'item', ['image'] = 'lighter.png', ['unique'] = false, ['useable'] = false, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'On new years eve a nice fire to stand next to'},
    ```
  </Tab>
</Tabs>
