> ## 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 Sandy Bank 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="Sandy Bank Map" icon="map" href="https://store.prompt-mods.com/store/package/7122051">
        Required map by Prompt Mods
      </Card>

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

  <Step title="Install minigames">
    Download the minigames zip and place each resource into your standalone or dependencies folder.

    <Card title="Minigames" icon="gamepad" href="https://drive.google.com/file/d/1zb5Mnz7I-OQXRoBMsUnIfu8Ef0qoxNcM/view?usp=sharing">
      Download and place in your standalone or minigames folder
    </Card>

    <Warning>
      Make sure the 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.
  </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. The bridge handles framework, inventory, dispatch, and interaction automatically if set to `'auto'`.
  </Step>

  <Step title="Add to server.cfg">
    Make sure the bridge, ox\_lib, your target, dispatch, inventory, and minigames are all started before the robbery script.

    ```cfg theme={null}
    ensure ox_lib
    ensure projectx-bridge

    ensure bl_ui
    ensure pure-minigames
    ensure xdecrypto

    ensure projectx-sandybankrobbery-prompt
    ```
  </Step>
</Steps>

## Items Required

### Items Required from Outside the Robbery

The `sandybank_key` must be obtained externally (e.g. from another robbery or side mission) before the robbery can be started.

* `sandybank_key`

### Items Required from Shop/Black Market

* `x_device`
* `x_phone`
* `x_circuittester`
* `x_breachcharge`
* `x_cyberdeck`
* `hackcard`
* `decryptor`
* `laserdrill`
* `bag`

<Info>
  The rest of the items (`sandybank_security_key`, `managerlaptop`) are obtained within the robbery itself.
</Info>

### Item Configuration

<Tabs>
  <Tab title="ox_inventory">
    ```lua theme={null}
    ["sandybank_key"] = {
        label = "Sandy Bank Key",
        weight = 125,
        stack = false,
        close = false,
        description = "Key!",
    },
    ["sandybank_security_key"] = {
        label = "Sandy Bank Security Key",
        weight = 125,
        stack = false,
        close = false,
        description = "Key!",
    },
    ["x_device"] = {
        label = "X Device",
        weight = 125,
        stack = false,
        close = false,
        description = "?????????",
    },
    ["x_phone"] = {
        label = "x Phone",
        weight = 300,
        stack = false,
        close = false,
        description = "?????????",
    },
    ["x_circuittester"] = {
        label = "X Circuit Tester",
        weight = 125,
        stack = false,
        close = false,
        description = "?????????",
    },
    ["x_breachcharge"] = {
        label = "X Breach Charge",
        weight = 125,
        stack = false,
        close = false,
        description = "?????????",
    },
    ["x_cyberdeck"] = {
        label = "X Cyberdeck",
        weight = 100,
        stack = false,
        close = false,
        description = "Nothing suspicious about this cyberdeck..",
    },
    ["hackcard"] = {
        label = "Hackcard",
        weight = 50,
        stack = false,
        close = false,
        description = "Hack card",
    },
    ["decryptor"] = {
        label = "Decrypt-o-matic",
        weight = 300,
        stack = false,
        close = false,
        description = "Decrypt PIN based encryptions",
    },
    ["laserdrill"] = {
        label = "Laser Drill",
        weight = 1000,
        stack = false,
        close = false,
        description = "",
    },
    ["bag"] = {
        label = "Duffel Bag",
        weight = 250,
        stack = false,
        close = false,
        description = "Duffel bag",
    },
    ["managerlaptop"] = {
        label = "Manager Laptop",
        weight = 250,
        stack = false,
        close = false,
        description = "Manager's Laptop",
    },
    ```
  </Tab>

  <Tab title="qb-inventory">
    ```lua theme={null}
    ['sandybank_key'] = {['name'] = 'sandybank_key', ['label'] = 'Sandy Bank Key', ['weight'] = 50, ['type'] = 'item', ['image'] = 'sandybank_key.png', ['unique'] = true, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Key!'},
    ['sandybank_security_key'] = {['name'] = 'sandybank_security_key', ['label'] = 'Sandy Bank Security Key', ['weight'] = 50, ['type'] = 'item', ['image'] = 'sandybank_security_key.png', ['unique'] = true, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Key!'},
    ['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'] = '?????????'},
    ['x_phone'] = {['name'] = 'x_phone', ['label'] = 'X Phone', ['weight'] = 50, ['type'] = 'item', ['image'] = 'x_phone.png', ['unique'] = true, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = '?????????'},
    ['x_circuittester'] = {['name'] = 'x_circuittester', ['label'] = 'X Circuit Tester', ['weight'] = 200, ['type'] = 'item', ['image'] = 'x_circuittester.png', ['unique'] = false, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = '????'},
    ['x_breachcharge'] = {['name'] = 'x_breachcharge', ['label'] = 'X Breach Charge', ['weight'] = 200, ['type'] = 'item', ['image'] = 'x_breachcharge.png', ['unique'] = false, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = '????'},
    ['x_cyberdeck'] = {['name'] = 'x_cyberdeck', ['label'] = 'X Cyberdeck', ['weight'] = 100, ['type'] = 'item', ['image'] = 'x_cyberdeck.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Nothing suspicious about this cyberdeck..'},
    ['hackcard'] = {['name'] = 'hackcard', ['label'] = 'hackcard', ['weight'] = 50, ['type'] = 'item', ['image'] = 'hackcard.png', ['unique'] = true, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Hack card'},
    ['decryptor'] = {['name'] = 'decryptor', ['label'] = 'decryptor', ['weight'] = 750, ['type'] = 'item', ['image'] = 'decryptomatic.png', ['unique'] = true, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Decyrptomatic'},
    ['laserdrill'] = {['name'] = 'laserdrill', ['label'] = 'Laser Drill', ['weight'] = 7500, ['type'] = 'item', ['image'] = 'laserdrill.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Laser Drill'},
    ['bag'] = {['name'] = 'bag', ['label'] = 'Bag', ['weight'] = 400, ['type'] = 'item', ['image'] = 'bag.png', ['unique'] = true, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Duffel bag'},
    ['managerlaptop'] = {['name'] = 'managerlaptop', ['label'] = 'Manager Laptop', ['weight'] = 750, ['type'] = 'item', ['image'] = 'managerlaptop.png', ['unique'] = true, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = "Manager's Laptop"},
    ```
  </Tab>
</Tabs>
