Skip to main content
cc_paletoheist is a heist module that plugs into cc_heistcontracts. It registers a single contract — Paleto Bank Heist — at the Blaine County Savings Bank and hands runtime control of the run to cc_heistcontracts. 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
hacking_deviceDataJackSecurity backdoor, office computers
laptop_proJackbox ProVault panel
frequency_tunerSignal ModulatorOutdoor frequency control
electric_drillCordless DrillLockers & safe
weapon_smg (weapon)SMGRequired 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
idpaleto_heistInternal contract id
difficultymediumDisplay tag in the dashboard
weight0.5Rarity weight for marketplace drips
levelRequired3Minimum 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
locations1paleto — Blaine County Savings Bank
Coordinates, doors, cameras, and task points live in shared/location.lua and are 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 in that category.
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 on each loot point
cfg.enable_task_listtrueShow the TaskUI panel during the run
cfg.vault_timer60Vault open delay in seconds
cfg.debugfalseBypasses gates and logs verbosely
cfg.dispatchfunction(location) ... endPolice alert payload — replace to integrate with your dispatch resource

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