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.
local inShift = exports['activitymanager']:IsPlayerInShift()
if inShift then
print("Player is working!")
endGetPlayerShiftData()Get current shift information for the local player.
local shiftData = exports['activitymanager']:GetPlayerShiftData()
if shiftData then
print("Zone: " .. shiftData.zoneName)
print("Start Time: " .. shiftData.startTime)
print("Duration: " .. shiftData.duration)
endGetZoneData(zoneId)Get information about a specific work zone.
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)
endOpenLoyaltyCardMenu()Open the loyalty card menu for customers.
exports['activitymanager']:OpenLoyaltyCardMenu()Server exports
StartShift(source, zoneId)Programmatically start a shift for a player.
local success = exports['activitymanager']:StartShift(source, zoneId)
if success then
print("Shift started for player " .. source)
endEndShift(source)End the current shift for a player.
local shiftData = exports['activitymanager']:EndShift(source)
if shiftData then
print("Shift ended. Duration: " .. shiftData.duration .. " minutes")
endSendInvoice(source, targetId, amount, label)Send an invoice and sync with the ActivityManager API.
exports['activitymanager']:SendInvoice(source, targetId, 5000, "Vehicle Repair")
-- This will be synced to Discord automaticallyGetPlayerData(source)Get ActivityManager data for a player.
local playerData = exports['activitymanager']:GetPlayerData(source)
if playerData then
print("Discord ID: " .. (playerData.discordId or "Not linked"))
print("Current Job: " .. playerData.job)
endSaveShiftData(source, data)Save custom shift data to the API.
exports['activitymanager']:SaveShiftData(source, {
customField = "value",
notes = "Extra shift notes"
})Client events
activitymanager:client:enteredZoneTriggered when a player enters a work zone.
RegisterNetEvent('activitymanager:client:enteredZone')
AddEventHandler('activitymanager:client:enteredZone', function(zone)
print("Entered zone: " .. zone.name)
print("Zone ID: " .. zone.id)
end)activitymanager:client:leftZoneTriggered when a player leaves a work zone.
RegisterNetEvent('activitymanager:client:leftZone')
AddEventHandler('activitymanager:client:leftZone', function(zone)
print("Left zone: " .. zone.name)
end)activitymanager:client:shiftStartedTriggered when a shift starts.
RegisterNetEvent('activitymanager:client:shiftStarted')
AddEventHandler('activitymanager:client:shiftStarted', function(shiftData)
print("Shift started in zone: " .. shiftData.zoneName)
end)activitymanager:client:shiftEndedTriggered when a shift ends.
RegisterNetEvent('activitymanager:client:shiftEnded')
AddEventHandler('activitymanager:client:shiftEnded', function(shiftData)
print("Shift ended. Total time: " .. shiftData.duration .. " minutes")
end)Server events
activitymanager:server:requestZonesRequest zone data from the server (used internally).
TriggerServerEvent('activitymanager:server:requestZones')activitymanager:server:checkActiveShiftCheck if the player has an active shift (reconnection handling).
TriggerServerEvent('activitymanager:server:checkActiveShift')Looking for the HTTP API instead? See the Public API reference.
