Browse docs

Events

Supported Police Job client events and read-only Advanced Speed Camera state events.

Events on this page either invoke an already validated built-in interaction flow or publish read-only presentation state. They do not grant Police permissions or mutate an Advanced Speed Camera review.

Police interaction events

Client Events

These events can be triggered from other resources to interact with the police job on the client side. They mirror the client exports for resources that prefer events over export calls.

The local player's job must already be registered through the server-side registerInteractionJobs export and have the required capability. Police jobs from Config.Jobs are registered automatically. Triggering one of these events does not bypass the shared whitelist, duty policy, item checks, or server validation.

EventDescription
sky_policejob:client:cuffPlayerApply cuffs or zipties to the nearest valid player as an officer.
sky_policejob:client:uncuffPlayerRemove cuffs from the nearest player as an officer.
sky_policejob:client:useCuffPlayerCompatibility alias for the cuff action; uses the same whitelist.
sky_policejob:client:useUncuffPlayerCompatibility alias for the uncuff action; uses the same whitelist.
sky_policejob:client:escortToggleStart or stop escorting the nearest player.
sky_policejob:client:escortPutInVehiclePut the escorted player into the closest vehicle.
sky_policejob:client:escortTakeOutVehicleTake the escorted player out of a vehicle.

sky_policejob:client:cuffPlayer

Applies restraints to the nearest valid player. Accepts an optional cuff type.

client.lua
TriggerEvent("sky_policejob:client:cuffPlayer") -- cuffs
TriggerEvent("sky_policejob:client:cuffPlayer", "zipties")

sky_policejob:client:uncuffPlayer

Removes cuffs or zipties from the nearest player.

client.lua
TriggerEvent("sky_policejob:client:uncuffPlayer")

sky_policejob:client:useCuffPlayer / sky_policejob:client:useUncuffPlayer

Compatibility aliases for the regular cuff and uncuff events. They use the same registered-job access policy and server checks. Failures show a notification to the player.

client.lua
TriggerEvent("sky_policejob:client:useCuffPlayer", "cuffs") -- or "zipties"
TriggerEvent("sky_policejob:client:useUncuffPlayer")

sky_policejob:client:escortToggle

Starts or stops escorting the nearest player.

client.lua
TriggerEvent("sky_policejob:client:escortToggle")

sky_policejob:client:escortPutInVehicle

Puts the currently escorted player into the closest vehicle.

client.lua
TriggerEvent("sky_policejob:client:escortPutInVehicle")

sky_policejob:client:escortTakeOutVehicle

Takes the escorted player out of a vehicle.

client.lua
TriggerEvent("sky_policejob:client:escortTakeOutVehicle")

Advanced Speed Camera

Server-emitted camera state

These events keep streamed camera props and optional client integrations synchronized. They are presentation signals, not an authority for review or billing.

EventPayloadPurpose
sky_policejob:speedcam:synctableReplaces the locally known camera collection with a server snapshot
sky_policejob:speedcam:createdtableAdds or replaces one deployed camera
sky_policejob:speedcam:removednumberRemoves one camera by numeric server ID
sky_policejob:speedcam:updatedtableUpdates durability and operational status for one camera

Listen for created cameras

client.lua
AddEventHandler("sky_policejob:speedcam:created", function(camera)
    print("Speed camera created:", camera.id, camera.name)
end)

Listen for removal

client.lua
AddEventHandler("sky_policejob:speedcam:removed", function(cameraId)
    print("Speed camera removed:", cameraId)
end)

Listen for durability changes

client.lua
AddEventHandler("sky_policejob:speedcam:updated", function(change)
    print("Speed camera status:", change.id, change.status, change.durability)
end)

Events that are not public APIs

Photo capture, evidence-token attachment, review listing, approval, and discard callbacks are internal. They are deliberately excluded from this reference because integrations must not imitate the built-in client-to-server workflow.

An exploiter can locally trigger a registered client event and fake presentation state on their own client. These documented events never update the camera database, review status, offence, owner, or invoice. All persistent decisions remain server-authoritative.

Support

Need help? Our support team is always ready to assist.

Join Discord