Requirements
- A FiveM server already running cc_heistcontracts.
- ox_lib and oxmysql.
- A working
cc_libresource. - cc_minigames for the glass-cut and access-panel hacks.
- An inventory system (defaults assume ox_inventory).
Steps
Place the resource
Copy
cc_jewelryheist into a resources directory the server loads. The repo ships it under resources/[cc]/cc_jewelryheist/.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:- ox_inventory
- qb-inventory
Add to Drop the matching images into
ox_inventory/data/items.luaox_inventory/web/images/.Register the store doors
The heist needs two locked doors: the front
jewelry-entrance (auto-locks at night) and the jewelry-security room.- ox_doorlock
- qb-doorlock
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.Ensure after cc_heistcontracts
Order in
server.cfg:cc_jewelryheist’s fxmanifest.lua already declares cc_heistcontracts as a dependency.Verify in-game
- The contract is level 1 and drips at weight
1.0, so it rolls into the marketplace quickly. Lowerconfig.rotation.dripIntervalMsincc_heistcontracts/shared/config.luaif you want it instantly while testing. - Make sure at least one police unit is online (
requiredPolice.count = 1), or drop the gate for solo testing (see below). - 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.
Configure
Loot tables, the day/night behaviour, guard damage, the closing-time teleport, and the dispatch payload all live inshared/config.lua, shared/rewards.lua, and shared/location.lua. Restart the resource after editing.
A few headline knobs in shared/config.lua:
| Field | Default | What it does |
|---|---|---|
cfg.use_global_loot_table | true | Split the rolled vitrine totals across all cabinets; false expects per-vitrine loot in shared/location.lua |
cfg.enable_task_list | true | Show the TaskUI panel during the run |
cfg.auto_insert_doors | false | Insert the two doors into ox_doorlock on start |
cfg.teleport_out_at_close | true | Teleport players still inside at closing (21:30) so the auto-lock doesn’t trap them |
cfg.debug | false | Bypass gates and log verbosely |
cfg.dispatch | function(location) ... end | Police alert payload — replace to integrate with your dispatch resource |
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.