API

Work in progress...

Events

Hooks

sh-heists:sv:TimerStarted

Triggered when a heist timer begins.

Parameters:

  • heist_id (number) - The heist identifier

  • render_id (number) - The render zone identifier

  • caller_id (number) - Player source who started the timer

sh-heists:sv:CooldownStarted

Triggered when a heist enters cooldown phase.

Parameters:

  • heist_id (string) - The heist identifier

  • render_id (number) - The render zone identifier

  • caller_id (number) - Player source who triggered cooldown

sh-heists:sv:HeistReset

Triggered when a heist is completely reset.

Parameters:

  • heist_id (string) - The heist identifier

Example Usage:

AddEventHandler('sh-heists:sv:TimerStarted', function(heist_id, render_id, caller_id)
    local playerName = GetPlayerName(caller_id)
    print(string.format('Heist %s started by %s', heist_id, playerName))
end)

State Bags

Player States

sh_heist

Contains the player's current heist participation status.

Structure:

{
    entered = boolean,    -- Whether player is in heist zone
    heist_id = number,   -- Current heist identifier
    render_id = number,  -- Current render zone
}

Usage:

local state = Player(source).state.sh_heist
if state and state.entered then
    print('Player is in heist:', state.heist_id)
end

Entity States

sh_heists_npc

Contains NPC behavior and identification data.

Structure:

{
    heist_id = string,   -- Associated heist
    render_id = number,  -- Associated render zone
    index = number,      -- NPC index in configuration
    net_id = number      -- Network ID of the entity
}

Global States

Timer and Cooldown States

  • sh-heists:id-{heist_id}:timer (boolean) - Whether heist timer is active

  • sh-heists:id-{heist_id}:cooldown (boolean) - Whether heist is in cooldown

  • sh-heists:cooldown_group:{group} (boolean) - Group cooldown status

Last updated