ActivityManager

Exports & Events

Use these exports and events to integrate ActivityManager with your custom scripts.

Client exports

IsPlayerInShift()

Check if the local player is currently in an active shift.

lua
local inShift = exports['activitymanager']:IsPlayerInShift()
if inShift then
    print("Player is working!")
end
GetPlayerShiftData()

Get current shift information for the local player.

lua
local shiftData = exports['activitymanager']:GetPlayerShiftData()
if shiftData then
    print("Zone: " .. shiftData.zoneName)
    print("Start Time: " .. shiftData.startTime)
    print("Duration: " .. shiftData.duration)
end
GetZoneData(zoneId)

Get information about a specific work zone.

lua
local zoneData = exports['activitymanager']:GetZoneData(1)
if zoneData then
    print("Zone Name: " .. zoneData.name)
    print("Job: " .. zoneData.job_name)
    print("Coords: " .. zoneData.coords_x .. ", " .. zoneData.coords_y)
end
OpenLoyaltyCardMenu()

Open the loyalty card menu for customers.

lua
exports['activitymanager']:OpenLoyaltyCardMenu()

Server exports

StartShift(source, zoneId)

Programmatically start a shift for a player.

lua
local success = exports['activitymanager']:StartShift(source, zoneId)
if success then
    print("Shift started for player " .. source)
end
EndShift(source)

End the current shift for a player.

lua
local shiftData = exports['activitymanager']:EndShift(source)
if shiftData then
    print("Shift ended. Duration: " .. shiftData.duration .. " minutes")
end
SendInvoice(source, targetId, amount, label)

Send an invoice and sync with the ActivityManager API.

lua
exports['activitymanager']:SendInvoice(source, targetId, 5000, "Vehicle Repair")
-- This will be synced to Discord automatically
GetPlayerData(source)

Get ActivityManager data for a player.

lua
local playerData = exports['activitymanager']:GetPlayerData(source)
if playerData then
    print("Discord ID: " .. (playerData.discordId or "Not linked"))
    print("Current Job: " .. playerData.job)
end
SaveShiftData(source, data)

Save custom shift data to the API.

lua
exports['activitymanager']:SaveShiftData(source, {
    customField = "value",
    notes = "Extra shift notes"
})

Client events

eventactivitymanager:client:enteredZone

Triggered when a player enters a work zone.

lua
RegisterNetEvent('activitymanager:client:enteredZone')
AddEventHandler('activitymanager:client:enteredZone', function(zone)
    print("Entered zone: " .. zone.name)
    print("Zone ID: " .. zone.id)
end)
eventactivitymanager:client:leftZone

Triggered when a player leaves a work zone.

lua
RegisterNetEvent('activitymanager:client:leftZone')
AddEventHandler('activitymanager:client:leftZone', function(zone)
    print("Left zone: " .. zone.name)
end)
eventactivitymanager:client:shiftStarted

Triggered when a shift starts.

lua
RegisterNetEvent('activitymanager:client:shiftStarted')
AddEventHandler('activitymanager:client:shiftStarted', function(shiftData)
    print("Shift started in zone: " .. shiftData.zoneName)
end)
eventactivitymanager:client:shiftEnded

Triggered when a shift ends.

lua
RegisterNetEvent('activitymanager:client:shiftEnded')
AddEventHandler('activitymanager:client:shiftEnded', function(shiftData)
    print("Shift ended. Total time: " .. shiftData.duration .. " minutes")
end)

Server events

eventactivitymanager:server:requestZones

Request zone data from the server (used internally).

lua
TriggerServerEvent('activitymanager:server:requestZones')
eventactivitymanager:server:checkActiveShift

Check if the player has an active shift (reconnection handling).

lua
TriggerServerEvent('activitymanager:server:checkActiveShift')

Looking for the HTTP API instead? See the Public API reference.