Skip to main content

Requirements

Steps

1

Place the resource

Copy cc_jewelryheist into a resources directory the server loads. The repo ships it under resources/[cc]/cc_jewelryheist/.
2

Confirm the inventory items

The two required items (glass_cutter, hacking_device) and the loot items (diamond_ring, goldchain, rolex) all ship in the stock Qbox ox_inventory list — no edits needed on a default install. The cabinets are smashed with any equipped weapon, so there’s no specific weapon requirement.If you run a trimmed item list, add the two required items:
Add to ox_inventory/data/items.lua
glass_cutter = { label = 'Glass Cutter', weight = 500, stack = false, client = { image = 'glass_cutter.png' } },
hacking_device = { label = 'DataJack', weight = 600, stack = false, client = { image = 'hacking_device.png' } },
Drop the matching images into ox_inventory/web/images/.
3

Register the store doors

The heist needs two locked doors: the front jewelry-entrance (auto-locks at night) and the jewelry-security room.
Set cfg.auto_insert_doors = true in shared/config.lua and the resource inserts both doors into the ox_doorlock table on first start (skipping any names already present). Leave it false if you manage doors manually.
4

Ensure after cc_heistcontracts

Order in server.cfg:
ensure oxmysql
ensure ox_lib
ensure cc_lib
ensure cc_minigames
ensure cc_heistcontracts
ensure cc_jewelryheist
cc_jewelryheist’s fxmanifest.lua already declares cc_heistcontracts as a dependency.
5

Verify in-game

  1. The contract is level 1 and drips at weight 1.0, so it rolls into the marketplace quickly. Lower config.rotation.dripIntervalMs in cc_heistcontracts/shared/config.lua if you want it instantly while testing.
  2. Make sure at least one police unit is online (requiredPolice.count = 1), or drop the gate for solo testing (see below).
  3. Buy it for 1,500 VICE, grab the items, drive to Vangelico. By day, cut the centerpiece and the security guards spawn; by night, hack the access panel to get in first.
Set cfg.debug = true in shared/config.lua to bypass level / police / cooldown gates while testing. Remove the requiredPolice field in shared/contract.lua to drop the cop-count gate entirely.

Configure

Loot tables, the day/night behaviour, guard damage, the closing-time teleport, and the dispatch payload all live in shared/config.lua, shared/rewards.lua, and shared/location.lua. Restart the resource after editing. A few headline knobs in shared/config.lua:
FieldDefaultWhat it does
cfg.use_global_loot_tabletrueSplit the rolled vitrine totals across all cabinets; false expects per-vitrine loot in shared/location.lua
cfg.enable_task_listtrueShow the TaskUI panel during the run
cfg.auto_insert_doorsfalseInsert the two doors into ox_doorlock on start
cfg.teleport_out_at_closetrueTeleport players still inside at closing (21:30) so the auto-lock doesn’t trap them
cfg.debugfalseBypass gates and log verbosely
cfg.dispatchfunction(location) ... endPolice alert payload — replace to integrate with your dispatch resource
The minigames are swappable: client/minigames.lua wraps the cc_minigames Cutter (glass cut) and Verbal (panel hack) calls, so you can drop in any other cc_minigames game without touching the heist logic.