Requirements
- A FiveM server already running cc_heistcontracts.
- ox_lib and oxmysql.
- A working
cc_libresource. - An inventory system (defaults assume ox_inventory).
Steps
Place the resource
Copy
cc_paletoheist into a resources directory the server loads. The repo ships under resources/[cc]/cc_paletoheist/.Add the inventory items
- ox_inventory
- qb-inventory
Add the following items to Drop the matching item images into
ox_inventory/data/items.luaox_inventory/web/images/ (filenames must match the name of the item).The
weapon_smg requirement is a standard ox_inventory weapon — no extra config needed if you’re on the stock weapons list.Configure gabz map-data
Changes need to be made in The
cfx-gabz-mapdata/gabz_entityset_mods1.luaReplace the gabz_paletobank_milo_ entry with this:palbank_vault_trolleys entry must be disabled — cc_paletoheist spawns its own trolley props during the run and the gabz set would duplicate them.Ensure after cc_heistcontracts
Order in
server.cfg:cc_paletoheist’s fxmanifest.lua already declares cc_heistcontracts as a dependency, so FXServer enforces this.(Optional) Tune the vault timer
Default vault open delay is 60 seconds. Edit Set it lower for testing, higher for harder runs.
shared/config.lua:Doors integration
- ox_doorlock
- qb-doorlock
Set
cfg.auto_insert_doors = true in shared/config.lua and the resource will insert these doors into the ox_doorlock table on first start (skipping any names already present). Leave it false if you manage doors manually.Customising loot
shared/rewards.lua defines the global loot table. When cfg.use_global_loot_table = true (default), the rolled totals are split evenly across all lockers and all trolleys.
use_global_loot_table = false to define loot per-unit inside shared/location.lua (each locker and each trolley accepts its own rewards table).