> ## 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 Casino Heist resource

## Installation Steps

**1. Install required dependencies**

> [!WARNING]
>
> Verify all dependencies below are started **before** this script in your `server.cfg`. This resource loads `@mka-lasers/client/client.lua` from **mka-lasers** — it must be installed and started.

> [card] [ox\_lib](https://github.com/CommunityOx/ox_lib/releases/latest)
>
> Download ox\_lib

> [card] [K4MB1 Casino Map](https://www.k4mb1maps.com/product/5325085)
>
> Required map by K4MB1

> [card] [projectx-bridge](https://docs.projectx.gg/resources/bridge/installation.md)
>
> Required Project X Bridge

> [card] [Project X Masks (optional)](https://www.projectx.gg/product/7126449)
>
> Optional mask integration

**2. Install minigames**

Download the minigames zip and place each resource into your standalone or dependencies folder.

> [card] [Minigames](https://drive.google.com/file/d/1UTjjcJmZxWenLpnIof1Zg921D1nvp9ay/view?usp=sharing)
>
> Download and place in your standalone or minigames folder

> [!WARNING]
>
> Make sure the minigames are **not** in the same folder as the robbery script.

**3. Extract and place the resource**

Extract `projectx-casinoheist-k4mb1` from the zip and place it into your scripts folder.

**4. Add items to your inventory**

Add the required items and their images to your inventory resource. See the [items section](#items-required) below.

> [!NOTE]
>
> Item images done by [Artwork Inventory](https://discord.gg/Z2awpnXKdw) — use code **ProjectX** for 10% off!

**5. Configure the resource**

Open `config/config.lua` and adjust settings for your server. Framework, inventory, dispatch, and interaction are handled by the bridge when set to `'auto'` in the bridge config.

**6. Add to server.cfg**

Start the bridge, ox\_lib, **mka-lasers**, minigames, then the heist resource.

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

ensure mka-lasers
ensure bl_ui
ensure SN-Hacking
ensure utk_fingerprint
ensure lightsout
ensure boii_minigames
ensure pure-minigames
ensure pd-safe

ensure projectx-casinoheist-k4mb1
```

## Items Required

### Items Required from Outside the Robbery

Obtain these before starting the heist (for example from another robbery or your economy):

* `casinomaintenancecard`
* `x_moneysuitcase`

### Items Required from Shop / Black Market

* `x_phone`
* `x_device`
* `x_laptop`
* `x_stethoscope`
* `x_cratejammer`
* `x_circuittester`
* `x_fingerprinttape`
* `bag`
* `glass_cutter`
* `weapon_smokegrenade`
* `weapon_stickybomb`

> [!NOTE]
>
> Keycards, tools, and loot such as `x_wrench`, casino keycards, `laserdrill`, `x_painting`, and `giant_ruby` / `giant_gem` are obtained during the heist.

### Item Configuration

> [tab] ox\_inventory
>
> ```lua theme={null}
> ["x_phone"] = { label = "X Phone", weight = 300, stack = false, close = false, description = "?????????" },
> ["x_device"] = { label = "X Device", weight = 125, stack = false, close = false, description = "?????????" },
> ["x_laptop"] = { label = "X Laptop", weight = 125, stack = false, close = false, description = "?????????" },
> ["x_stethoscope"] = { label = "X Stethoscope", weight = 200, stack = false, close = false, description = "click click" },
> ["x_cratejammer"] = { label = "X Crate Jammer", weight = 300, stack = false, close = false, description = "?????????" },
> ["x_circuittester"] = { label = "X Circuit Tester", weight = 200, stack = false, close = false, description = "????" },
> ["x_fingerprinttape"] = { label = "Fingerprint Tape", weight = 200, stack = false, close = false, description = "????" },
> ["bag"] = { label = "Duffel Bag", weight = 250, stack = false, close = false, description = "Duffel bag" },
> ["glass_cutter"] = { label = "Glass Cutter", weight = 1000, stack = false, close = false, description = "" },
> ["casinomaintenancecard"] = { label = "Casino Maintenance Keycard", weight = 100, stack = false, close = false, description = "I wonder what I can use this for.." },
> ["x_moneysuitcase"] = { label = "Money Suitcase", weight = 2500, stack = false, close = false, description = "This is holding a lot of cash.." },
> ["x_wrench"] = { label = "Wrench", weight = 250, stack = false, close = false, description = "Good for maintenance" },
> ["casinosecuritycard"] = { label = "Casino Security Keycard", weight = 100, stack = false, close = false, description = "I wonder what I can use this for.." },
> ["casinovaultcard"] = { label = "Casino Vault Keycard", weight = 100, stack = false, close = false, description = "I wonder what I can use this for.." },
> ["casinomanagercard"] = { label = "Casino Manager Keycard", weight = 100, stack = false, close = false, description = "I wonder what I can use this for.." },
> ["casinopenthousecard"] = { label = "Casino Penthouse Keycard", weight = 100, stack = false, close = false, description = "Fancy keycard.." },
> ["managerlaptop"] = { label = "Manager Laptop", weight = 100, stack = false, close = false, description = "I Wonder what I can do with this.." },
> ["x_fingerprintbag"] = { label = "Fingerprint Bag", weight = 200, stack = false, close = false, description = "????" },
> ["laserdrill"] = { label = "Laser Drill", weight = 1000, stack = false, close = true, description = "Laser Drill" },
> ["x_painting"] = { label = "Painting", weight = 25000, stack = false, close = true, description = "Just a work of art," },
> ["giant_gem"] = { label = "Giant Gem", weight = 2500, stack = false, close = false, description = "" },
> ```

> [tab] qb-inventory
>
> ```lua theme={null}
> ['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_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_laptop'] = {['name'] = 'x_laptop', ['label'] = 'X Laptop', ['weight'] = 50, ['type'] = 'item', ['image'] = 'x_laptop.png', ['unique'] = true, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = '?????????'},
> ['x_stethoscope'] = {['name'] = 'x_stethoscope', ['label'] = 'X Stethoscope', ['weight'] = 200, ['type'] = 'item', ['image'] = 'x_stethoscope.png', ['unique'] = false, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'click click'},
> ['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_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_fingerprinttape'] = {['name'] = 'x_fingerprinttape', ['label'] = 'Fingerprint Tape', ['weight'] = 200, ['type'] = 'item', ['image'] = 'x_fingerprinttape.png', ['unique'] = false, ['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'},
> ['glass_cutter'] = {['name'] = 'glass_cutter', ['label'] = 'Glass Cutter', ['weight'] = 1000, ['type'] = 'item', ['image'] = 'glass_cutter.png', ['unique'] = false, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = ''},
> ['casinomaintenancecard'] = {['name'] = 'casinomaintenancecard', ['label'] = 'Casino Maintenance Keycard', ['weight'] = 100, ['type'] = 'item', ['image'] = 'casinomaintenancecard.png', ['unique'] = true, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'I wonder what I can use this for..'},
> ['x_moneysuitcase'] = {['name'] = 'x_moneysuitcase', ['label'] = 'Money Suitcase', ['weight'] = 2500, ['type'] = 'item', ['image'] = 'x_moneysuitcase.png', ['unique'] = true, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'This is holding a lot of cash..'},
> ['x_wrench'] = {['name'] = 'x_wrench', ['label'] = 'Wrench', ['weight'] = 250, ['type'] = 'item', ['image'] = 'x_wrench.png', ['unique'] = true, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Good for maintenance'},
> ['casinosecuritycard'] = {['name'] = 'casinosecuritycard', ['label'] = 'Casino Security Keycard', ['weight'] = 100, ['type'] = 'item', ['image'] = 'casinosecuritycard.png', ['unique'] = true, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'I wonder what I can use this for..'},
> ['casinovaultcard'] = {['name'] = 'casinovaultcard', ['label'] = 'Casino Vault Keycard', ['weight'] = 100, ['type'] = 'item', ['image'] = 'casinovaultcard.png', ['unique'] = true, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'I wonder what I can use this for..'},
> ['casinomanagercard'] = {['name'] = 'casinomanagercard', ['label'] = 'Casino Manager Keycard', ['weight'] = 100, ['type'] = 'item', ['image'] = 'casinomanagercard.png', ['unique'] = true, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'I wonder what I can use this for..'},
> ['casinopenthousecard'] = {['name'] = 'casinopenthousecard', ['label'] = 'Casino Penthouse Keycard', ['weight'] = 100, ['type'] = 'item', ['image'] = 'casinopenthousecard.png', ['unique'] = true, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Fancy keycard..'},
> ['managerlaptop'] = {['name'] = 'managerlaptop', ['label'] = 'Manager Laptop', ['weight'] = 100, ['type'] = 'item', ['image'] = 'managerlaptop.png', ['unique'] = true, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'I Wonder what I can do with this..'},
> ['x_fingerprintbag'] = {['name'] = 'x_fingerprintbag', ['label'] = 'Fingerprint Bag', ['weight'] = 200, ['type'] = 'item', ['image'] = 'x_fingerprintbag.png', ['unique'] = false, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = '????'},
> ['laserdrill'] = {['name'] = 'laserdrill', ['label'] = 'Laser Drill', ['weight'] = 7500, ['type'] = 'item', ['image'] = 'laserdrill.png', ['unique'] = true, ['useable'] = true, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Laser Drill'},
> ['x_painting'] = {['name'] = 'x_painting', ['label'] = 'Painting', ['weight'] = 25000, ['type'] = 'item', ['image'] = 'x_painting.png', ['unique'] = true, ['useable'] = false, ['shouldClose'] = true, ['combinable'] = nil, ['description'] = 'Just a work of art,'},
> ['giant_ruby'] = {['name'] = 'giant_ruby', ['label'] = 'Giant Ruby', ['weight'] = 50, ['type'] = 'item', ['image'] = 'giant_ruby.png', ['unique'] = true, ['useable'] = false, ['shouldClose'] = false, ['combinable'] = nil, ['description'] = 'Shiny..'},
> ```


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