Skip to main content
Follow this page if you own all heist modules. Each module also ships its own installation page; this guide just consolidates the shared steps (inventory items, gabz mapdata, ensure order) so you only edit each file once.

Requirements

  • A FiveM server already running cc_heistcontracts — every module registers contracts against it.
  • ox_lib, oxmysql, and ox_target (cc_cargoheist).
  • A working cc_lib resource.
  • cc_minigamescc_jewelryheist’s glass-cut and hack skill checks.
  • An inventory system (defaults assume ox_inventory).
  • Streaming enabled — cc_pacificheist ships custom jammer assets under stream/.

Steps

1

Place the resources

Copy all four resources into a directory the server loads. The repo ships them under resources/[cc]/:
resources/[cc]/cc_fleecaheist/
resources/[cc]/cc_paletoheist/
resources/[cc]/cc_pacificheist/
resources/[cc]/cc_jewelryheist/
resources/[cc]/cc_cargoheist/
2

Add the inventory items

Every item used by the four heists in one block. Drop the matching images into your inventory’s images folder (filenames must match the item name / image field).
Add the following items to ox_inventory/data/items.lua
laptop_cheap = { label = 'Refurb LiteBook', weight = 2500, stack = false },
laptop_pro = { label = 'Jackbox Pro', weight = 2800, stack = false },
laptop_elite = { label = 'BlackBook Mk-III', weight = 3200, stack = false },

hacking_device = { label = 'DataJack', weight = 600, stack = false },
frequency_tuner = { label = 'Signal Modulator', weight = 250 },
electric_drill = { label = 'Cordless Drill', weight = 1800, stack = false },

signal_jammer = { label = 'Signal Jammer', weight = 400 },
thermite = { label = 'Thermite Charge', weight = 800 },

glass_cutter = { label = 'Glass Cutter', weight = 500, stack = false },
angle_grinder = { label = 'Angle Grinder', weight = 500, stack = false },
Add the following weapons to ox_inventory/data/weapons.lua
['WEAPON_DIGISCANNER'] = {
	label = 'RF Sweeper',
	weight = 12000,
},
3

Configure gabz map-data

Replace cfx-gabz-mapdata/gabz_entityset_mods1.lua with the following:
4

Ensure after cc_heistcontracts

Final order in server.cfg:
ensure oxmysql
ensure ox_lib
ensure ox_inventory
ensure ox_target
ensure cc_lib
ensure cc_minigames
ensure cc_heistcontracts
ensure cc_fleecaheist
ensure cc_paletoheist
ensure cc_pacificheist
ensure cc_jewelryheist
ensure cc_cargoheist
Each module’s fxmanifest.lua declares cc_heistcontracts as a dependency, so FXServer will refuse to start any of them before the parent is up. Wrong order = No such export RegisterContract in resource cc_heistcontracts. cc_jewelryheist also needs cc_minigames up first for its glass-cut and hack skill checks.
5

(Optional) Register the heist doors

Each heist ships an auto_insert_doors flag in its shared/config.lua. Set it to true and the resource will insert its doors into the ox_doorlock table on first start (skipping any names already present):
-- cc_fleecaheist/shared/config.lua
cfg.auto_insert_doors = true
-- cc_paletoheist/shared/config.lua
cfg.auto_insert_doors = true
-- cc_pacificheist/shared/config.lua
cfg.auto_insert_doors = true
-- cc_jewelryheist/shared/config.lua
cfg.auto_insert_doors = true
Leave any of them false if you manage that heist’s doors manually. cc_cargoheist has no doors.
6

(Optional) Tune the police gate

Fleeca is the only heist with a stock police-count gate. Edit cc_fleecaheist/shared/contract.lua:
requiredPolice = { jobs = { 'police' }, count = 2 }
Set count = 0 (or remove the field) to disable the gate for testing.
7

Verify in-game

  1. Use a heist_tablet to open the dashboard.
  2. With drips on default (3 min), every contract rolls into the marketplace within a few intervals. Lower config.rotation.dripIntervalMs in cc_heistcontracts/shared/config.lua (e.g. 5 * 1000) and restart cc_heistcontracts to see them faster.
  3. Each contract has its own level gate — Fleeca 1, Jewelry 1, Cargo 1, Paleto 3, Pacific 5. Use /heist:grantxp <playerId> <amount> if you’ve enabled the admin command.
  4. Watch the server console on first Pacific run for Streaming pacificheist resource 'cc_jammer.ytyp' — no error means the custom jammer props are loading.
Setting cfg.debug = true in each heist’s shared/config.lua bypasses level / police / cooldown gates so you can chain runs while testing.

Per-heist details

This page only covers the consolidated steps. For loot tables, branch disabling, jammer tuning, vault timers, dispatch callbacks, and other per-heist tunables, see each module’s own page: