Skip to main content
cc_pacificheist is a heist module that plugs into cc_heistcontracts. It registers a single contract — Pacific Bank Heist — at the Pacific Standard Bank in downtown Los Santos. The run includes jammers, lasers, thermite, a manager ped, and multiple loot rooms. Everything in this page is a default. All of it lives in plain Lua files in shared/ and is meant to be edited.

Required items

Players need these in their inventory before the dashboard will let them press Start. The list lives in shared/contract.lua under itemsRequired — add, remove, or change quantities freely.
Item idInventory labelDefault role in the run
laptop_eliteBlackBook Mk-IIIVault panel + loot room cracks
signal_jammerSignal JammerThree placements (qty 3)
thermiteThermite ChargeVault door cuts
electric_drillCordless DrillLockers
weapon_digiscanner (weapon)DigiscannerNote search / signal sweep
weapon_assaultrifle (weapon)Assault RifleRequired loadout
These items all need to exist in your ox_inventory (or equivalent) items list — see the installation guide.

Contract defaults

Defined in shared/contract.lua. Every field is editable.
FieldDefaultWhat it does
idpacific_heistInternal contract id
difficultyhardDisplay tag in the dashboard
weight0.2Rarity weight for marketplace drips (rare)
levelRequired5Minimum heist level to purchase
price2500VICE cost to buy the slot
crewSize{ min = 2, max = 4 }Crew size bounds
duration1200Soft cap in seconds before the slot auto-fails
cooldown1800Server-wide cooldown after each completion
reward{ vice = 1500, xp = 250 }Credited automatically on success
locations1pacific — Pacific Standard Bank
Coordinates, doors, cameras, jammer points, and note spawn pool live in shared/location.lua and shared/configuration/. All editable.

Loot table

shared/rewards.lua defines the global loot. When cfg.use_global_loot_table = true (default), each category’s rolled total is split across every unit across every loot room.
return {
    lockers = {
        { type = 'item', item = 'black_money', amount = { min = 1000, max = 2000 } },
        { type = 'money',                       amount = { min = 1000, max = 2000 } },
    },
    trolleys = {
        { type = 'item', item = 'black_money', amount = { min = 1000, max = 2000 } },
        { type = 'money',                       amount = { min = 1000, max = 2000 } },
    },
}
Set cfg.use_global_loot_table = false to define loot per-unit inside shared/location.lua.

Other tunables

shared/config.lua:
FieldDefaultWhat it does
cfg.use_global_loot_tabletrueIf false, expects per-unit rewards
cfg.enable_task_listtrueShow the TaskUI panel during the run
cfg.debugfalseBypasses gates and logs verbosely
cfg.jammer.drainSeconds90100% → 0% drain time without a maintain
cfg.jammer.bumpAmount40+% signal restored per successful maintain
cfg.jammer.beepWarn / beepCritical40 / 20Beep thresholds
cfg.maintain_timer300Per-jammer maintain cooldown (seconds)
cfg.enable_managertrueSpawn the armed bank manager (IG_Avery with a pistol)
cfg.dispatch_on_laser_hittrueTrip a police alert when a laser is broken
cfg.dispatchfunction(location) ... endPolice alert payload — replace to integrate with your dispatch resource

Streamed assets

The custom signal-jammer props ship under stream/ and are pulled in by data_file 'DLC_ITYP_REQUEST' 'stream/cc_jammer.ytyp' in fxmanifest.lua. Don’t remove stream/ — without it the jammers won’t render.

Dependencies

  • cc_heistcontracts
  • cc_lib — TaskUI, Groups, Inventory, Target, Notification, Dispatch wrappers
  • ox_lib, oxmysql
  • A police job framework that responds to cc.Dispatch.Alert