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]/:
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
Add the following weapons to ox_inventory/data/weapons.lua
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:
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):
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:
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: