The Control Panel isn’t a minigame — it’s a long-lived NUI surface for showing a heist schematic with clickable doors and cameras. It lives inDocumentation Index
Fetch the complete documentation index at: https://docs.cc-scripts.com/llms.txt
Use this file to discover all available pages before exploring further.
cc_minigames because it shares the same NUI shell, design tokens, and SFX as the minigames. The caller drives it by passing callbacks and updating state with the ControlSet* exports.
The panel and a minigame can not be open at the same time on a given client — both compete for NUI focus. Use
IsActive() / ControlIsOpen() to coordinate.Open the panel
schematic accepts either an inline table or a string. When a string is passed, the resource looks up schematics/<name>.json inside cc_minigames (schematics/paleto_bank.json ships out of the box).
Update state from the callbacks
The panel doesn’t change state on its own — clicks fire your handlers, your handlers decide what to do, then you push the new state with these exports:| Export | Description |
|---|---|
ControlSetDoor(id, state) | Replace one door’s state. Accepts a string ('locked', 'unlocked', …) or a table for richer states (e.g. { state = 'unlocked', expiresIn = 5000 }). |
ControlSetCamera(id, state) | Replace one camera’s state. |
ControlClose() | Close the panel. Fires onClose. |
ControlIsOpen() | Returns whether the panel is currently rendered. |
Door state shape
| Form | Example | Effect |
|---|---|---|
| String | 'locked', 'unlocked' | Plain state. |
| Table | { state = 'unlocked', expiresIn = 5000 } | Time-limited unlock. The UI computes expiresAt against its own clock, and demotes the door back to plain 'locked' when the window expires. Fires onDoorRelocked so you can persist the demotion. |
Camera state cycling
The shipped test command uses a three-state cycle (active → disabled → hacked → active) but nothing about the panel forces that — the strings are just labels you push. Use whatever vocabulary fits your heist resource.
Test command
/control paleto_bank opens the bundled schematics/paleto_bank.json and wires up a stub handler that:
- Unlocks any clicked door for 5 seconds, then re-locks it.
- Cycles cameras
active → disabled → hacked → activeon click. - Logs every state transition to the F8 console.