Laundromat Heist Items

3 min read

Items & Images

The heist uses a small set of items. Three are usable: their client.export drives the heist's own client logic (place the RC Bandito, drive it, view the microcamera). All item names are configurable in config/config.lua.

Item reference

ItemUsableRole
microcamera✅ exportscouting viewfinder (prep)
rcbandito✅ exportplaces the RC Bandito
rccontroller✅ exportRC remote (enter / exit RC mode)
passnostolen access badge
crowbarnobreach the washing machines
jewels / documents / coke_small_bricknocontract request packages (configurable)

ox_inventory

Drop this into ox_inventory/data/items.lua (labels / weights / images are examples: tune to taste):

-- ox_inventory/data/items.lua
['microcamera']  = { label = 'Micro Camera', weight = 200,  stack = false, close = true,
    client = { export = 'vs-laundromat-heist.microcamera' } },
['rcbandito']    = { label = 'RC Bandito',   weight = 3000, stack = false, close = true,
    client = { export = 'vs-laundromat-heist.rcbandito' } },
['rccontroller'] = { label = 'RC Remote',    weight = 500,  stack = false, close = true,
    client = { export = 'vs-laundromat-heist.rccontroller' } },
['pass']      = { label = 'Access Badge', weight = 100,  stack = false },
['crowbar']   = { label = 'Crowbar',      weight = 1500, stack = true  },
-- contract request packages (Config.Contract), defaults:
['jewels']    = { label = 'Jewels',    weight = 300, stack = true },
['documents'] = { label = 'Documents', weight = 100, stack = true },
['coke']      = { label = 'Cocaine',   weight = 200, stack = true },

The shipped Config.Contract.requests uses coke_small_brick (a common Qbox/QBCore drug item). Point the config at whatever brick/drug item your server already stocks, or add coke as above and set the config to coke. The package item just has to be a registered item in your inventory.

qb-inventory

Add the same items to qb-inventory's items.lua, then register the three usable items with CreateUseableItem under the same names so they fire the same logic:

-- somewhere in a server script, after the items exist
CreateUseableItem('microcamera',  function(source) exports['vs-laundromat-heist']:microcamera(source)  end)
CreateUseableItem('rcbandito',     function(source) exports['vs-laundromat-heist']:rcbandito(source)     end)
CreateUseableItem('rccontroller',  function(source) exports['vs-laundromat-heist']:rccontroller(source)  end)

Prefer ox_inventory if you can: the three usable items work out of the box through its item-export hook, plus you get weapon-durability wear on the washer breach-force. On qb-inventory those two extras no-op, but everything else works.

Usable-item exports

These are the integration surface for your inventory. Each fires the heist's client logic:

ExportItemWhat it does
vs-laundromat-heist.microcameramicrocameraopens the phone viewfinder to photograph cameras + the air vent
vs-laundromat-heist.rcbanditorcbanditoplaces the RC Bandito in the world
vs-laundromat-heist.rccontrollerrccontrollerenters / exits RC control mode

Gun-van weapons

The prep gun van sells weapon items (charged from cash by default). These are standard weapon items your inventory already knows:

Weapon itemLabelDefault price
WEAPON_KNIFEKnife$750
WEAPON_PISTOLPistol$2,500
WEAPON_PUMPSHOTGUNPump Shotgun$6,000
WEAPON_CROWBARCrowbar$500

Prices, the weapon list, and the charge account (money or bank) are all in Config.Heist.prep.gunVan. See Configuration.

Item images

Give every item an inventory image so it doesn't render blank:

  • ox_inventory: drop <item>.png into ox_inventory/web/images/ (matching the item name, e.g. microcamera.png).
  • qb-inventory: drop <item>.png into your inventory's image folder (e.g. qb-inventory/html/images/).

Missing images are the most common "it looks broken" report: items work but show as a blank box. Add an image per item name above.