> ## 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 K4MB1 Laundromat 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="K4MB1 Panache Map" icon="map" href="https://k4mb1maps.com/product/6711148">
        Required map by K4MB1
      </Card>

      <Card title="bl_ui" icon="gamepad" href="https://github.com/Byte-Labs-Studio/bl_ui">
        Required minigame resource
      </Card>

      <Card title="projectx-bridge" icon="bridge" href="/resources/bridge/installation">
        Required Project X Bridge
      </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">
      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.
  </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, minigames, and `mka-lasers` are all started before the robbery script.

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

    ensure mka-lasers
    ensure bl_ui

    ensure projectx-laundromatrobbery-k4mb1
    ```
  </Step>
</Steps>

## Items Required

### Items Required from Outside the Robbery

The `laundromatkey` must be obtained externally before the robbery can be started.

* `laundromatkey`

### Items Required from Shop/Black Market

* `x_cratejammer`
* `x_device`
* `bag`

<Info>
  Clothing loot items (`x_shirt`, `x_shirt_pile`, `x_overalls`, `x_towel`, `x_hat`) are obtained within the robbery itself.
</Info>

### Item Configuration

<Tabs>
  <Tab title="ox_inventory">
    ```lua theme={null}
    ["x_cratejammer"] = {
        label = "X Crate Jammer",
        weight = 300,
        stack = false,
        close = false,
        description = "?????????",
    },
    ['x_device'] = {
        label = "X Device",
        weight = 50,
        stack = false,
        close = false,
        description = "?????????",
    },
    ['bag'] = {
        label = "Bag",
        weight = 400,
        stack = false,
        close = false,
        description = "Duffel bag",
    },
    ['laundromatkey'] = {
        label = "Laundromat Key",
        weight = 400,
        stack = false,
        close = false,
        description = "Laundromat Key",
    },
    ['x_shirt'] = {
        label = "Shirt",
        weight = 200,
        stack = false,
        close = false,
        description = "A Shirt",
    },
    ['x_shirt_pile'] = {
        label = "Pile of shirts",
        weight = 800,
        stack = false,
        close = false,
        description = "Pile of shirts",
    },
    ['x_overalls'] = {
        label = "Overalls",
        weight = 200,
        stack = false,
        close = false,
        description = "Overalls",
    },
    ['x_towel'] = {
        label = "A Towel",
        weight = 200,
        stack = false,
        close = false,
        description = "A Towel",
    },
    ['x_hat'] = {
        label = "A Hat",
        weight = 200,
        stack = false,
        close = false,
        description = "A Hat",
    },
    ```
  </Tab>

  <Tab title="qb-inventory">
    ```lua theme={null}
    ['x_cratejammer'] = {['name'] = 'x_cratejammer', ['label'] = 'X Crate Jammer', ['weight'] = 200, ['type'] = 'item', ['image'] = 'x_cratejammer.png', ['unique'] = false, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'boop beep'},
    ['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'] = '?????????'},
    ['bag'] = {['name'] = 'bag', ['label'] = 'Bag', ['weight'] = 400, ['type'] = 'item', ['image'] = 'bag.png', ['unique'] = true, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Duffel bag'},
    ['laundromatkey'] = {['name'] = 'laundromatkey', ['label'] = 'Laundromat Key', ['weight'] = 400, ['type'] = 'item', ['image'] = 'laundromatkey.png', ['unique'] = true, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Laundromat key'},
    ['x_shirt'] = {['name'] = 'x_shirt', ['label'] = 'Shirt', ['weight'] = 200, ['type'] = 'item', ['image'] = 'x_shirt.png', ['unique'] = false, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'A Shirt'},
    ['x_shirt_pile'] = {['name'] = 'x_shirt_pile', ['label'] = 'Pile of Shirts', ['weight'] = 800, ['type'] = 'item', ['image'] = 'x_shirt_pile.png', ['unique'] = false, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Pile of shirts'},
    ['x_overalls'] = {['name'] = 'x_overalls', ['label'] = 'Overalls', ['weight'] = 200, ['type'] = 'item', ['image'] = 'x_overalls.png', ['unique'] = false, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Overalls'},
    ['x_towel'] = {['name'] = 'x_towel', ['label'] = 'Towel', ['weight'] = 200, ['type'] = 'item', ['image'] = 'x_towel.png', ['unique'] = false, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'A Towel'},
    ['x_hat'] = {['name'] = 'x_hat', ['label'] = 'Hat', ['weight'] = 200, ['type'] = 'item', ['image'] = 'x_hat.png', ['unique'] = false, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'A Hat'},
    ```
  </Tab>
</Tabs>
