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 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:enteredZone
Triggered 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:leftZone
Triggered 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:shiftStarted
Triggered when a shift starts.
RegisterNetEvent('activitymanager:client:shiftStarted')
AddEventHandler('activitymanager:client:shiftStarted', function(shiftData)
print("Shift started in zone: " .. shiftData.zoneName)
end)activitymanager:client:shiftEnded
Triggered 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:requestZones
Request zone data from the server (used internally).
TriggerServerEvent('activitymanager:server:requestZones')activitymanager:server:checkActiveShift
Check if the player has an active shift (reconnection handling).
TriggerServerEvent('activitymanager:server:checkActiveShift')