Skip to main content
cc_heistcontracts ships one console command, /heist:grantxp, ACE-gated. Everything else administrative is direct SQL or cc_heistcontracts restarts.

/heist:grantxp <alias> <amount>

Grant XP to a profile by alias. Handles level-ups and pushes a fresh profile sync to the recipient if they’re online.

ACE setup

Either grant the dedicated permission:
Or use the catch-all admin ace. Built-in superadmins are usually in group.admin already.

Output

If the alias doesn’t exist:
Other failure codes: invalid_amount (zero/negative), db (UPDATE didn’t affect any rows).

Debug logging

config.debug = true in shared/config.lua toggles [DEBUG] lines from utils.dprint. Default is off in the shipped config — flip it on locally when investigating. Useful lines you’ll see:
  • [DEBUG] listing added: <contractId> (N/max) — every time the drip thread successfully adds a listing.
  • [DEBUG] listings expired: N removed, M remain — every expiry sweep that finds something to cull.
  • [DEBUG] entry_point error for <id>: <msg> — when a contract’s entry point throws on Start. The active-slot mark is rolled back when this happens.
  • [DEBUG] reset error for <id>: <msg> — when a contract’s cooldown reset callback throws.
  • [DEBUG] Profile.GetBySrc: no citizenid for src <n> — citizenid lookup failed (usually means the player isn’t fully loaded into the core yet).
Server prints (not gated by debug) also include:
  • [cc_heistcontracts] CancelHeist threw for <resource>: <msg> — a heist resource’s CancelHeist export raised an exception during a give-up flow.
With config.debug = false (the shipped default) you only see server prints on actual failures.