Browse docs

Client Exports

Client-side exports provided by the Sky Police Job resource.

Restraints

These exports use the shared sky_jobs_base interaction system. The local player's job must be registered on the server and have the required capability. Police jobs from Config.Jobs are registered automatically; other job resources must use the server-side registerInteractionJobs export first. Calling a client export alone does not whitelist a job.

See the Sky Jobs Base client exports and server whitelist documentation for the preferred shared API.

Police keeps compatibility forwards for cuffs, zipties, and escort. Use the direct Jobs Base exports for leg restraints and head bags.

cuffPlayer(cuffType?)

  • Purpose: Applies cuffs or zipties to the nearest valid player as an officer.
  • Arguments:
    • cuffType (string?): "cuffs" (default) or "zipties".
  • Returns: boolean, string?.
exports["sky_policejob"]:cuffPlayer()

uncuffPlayer()

  • Purpose: Removes cuffs from the nearest player as an officer.
  • Returns: boolean, string?.
exports["sky_policejob"]:uncuffPlayer()

cutZipties()

  • Purpose: Cuts zipties on the nearest player as an officer.
  • Returns: boolean, string?.
exports["sky_policejob"]:cutZipties()

useCuffPlayer(cuffType?) / useUncuffPlayer() / useCutZipties()

  • Purpose: Compatibility aliases for cuffPlayer, uncuffPlayer, and cutZipties. They use the same server-side job whitelist and do not bypass access or item checks.
  • Returns: boolean, string?.
exports["sky_policejob"]:useCuffPlayer("cuffs") -- or "zipties"
exports["sky_policejob"]:useUncuffPlayer()
exports["sky_policejob"]:useCutZipties()

useHandcuffsItem() / useZiptiesItem()

  • Purpose: Runs the full handcuffs/zipties item flow (the same path as using the inventory item), including the item checks.
  • Returns: boolean.
exports["sky_policejob"]:useHandcuffsItem()
exports["sky_policejob"]:useZiptiesItem()

isPlayerCuffed(serverId)

  • Purpose: Checks the locally known cuff state for a player.
  • Returns: boolean.
local cuffed = exports["sky_policejob"]:isPlayerCuffed(serverId)

Escort

escortToggle()

  • Purpose: Starts or stops escorting the nearest player.
  • Returns: boolean, string?.
exports["sky_policejob"]:escortToggle()

escortPutInVehicle()

  • Purpose: Puts the escorted player into the closest vehicle.
  • Returns: boolean, string?.
exports["sky_policejob"]:escortPutInVehicle()

escortTakeOutVehicle()

  • Purpose: Takes the escorted player out of a vehicle.
  • Returns: boolean, string?.
exports["sky_policejob"]:escortTakeOutVehicle()

Jail

openJailMenu()

  • Purpose: Opens the menu to put someone in jail.
exports["sky_policejob"]:openJailMenu()

Radial menu actions

Other resources (e.g. a custom radial menu or keybind resource) can read and trigger the police radial actions instead of using the built-in radial menu. In the built-in menu, currently available actions are grouped into localized person and vehicle submenus.

Available action IDs: handcuff, unhandcuff, ziptie, cut_zipties, leg_restraints, ankle_monitor, head_bag, escort, escort_vehicle, escort_take_out, tackle, tackle_cuff, tackle_release, player_search, carry_patient, impound, park_vehicle, wheel_clamp, wheel_clamp_remove, camera_disassemble, billing, tablet.

getRadialActions()

  • Purpose: Returns every radial action currently offered to the local player, including its availability state.
  • Returns: table — array of action records (id, label, disabled, …). Empty when the radial system is disabled.
local actions = exports["sky_policejob"]:getRadialActions()

getRadialAction(actionId)

  • Purpose: Returns a single radial action record by ID.
  • Returns: table | nil.
local action = exports["sky_policejob"]:getRadialAction("handcuff")

getRadialActionReport()

  • Purpose: Returns all actions plus a per-ID availability map — useful to build an external menu in one call.
  • Returns: table{ actions = { ... }, availability = { [actionId] = { available, disabledReasonKey, disabledReason } } }.
local report = exports["sky_policejob"]:getRadialActionReport()
if report.availability["handcuff"] and report.availability["handcuff"].available then
    -- show the handcuff option
end

isRadialMenuActionAvailable(actionId)

  • Purpose: Checks whether one radial action is currently available.
  • Returns: boolean.
local available = exports["sky_policejob"]:isRadialMenuActionAvailable("impound")

triggerRadialMenuAction(actionId)

  • Purpose: Executes a radial action for the local player.
  • Returns: boolean, table?true on success, otherwise false and a reason ({ key, fallback }).
local success, reason = exports["sky_policejob"]:triggerRadialMenuAction("player_search")

Usable items

useItem(itemName, payload?)

  • Purpose: Triggers a registered client-side police usable-item handler for the local player.
  • Returns: booleantrue when a handler ran successfully; prints an English debug message when no handler is registered for the item.
exports["sky_policejob"]:useItem("bodycam")

Support

Need help? Our support team is always ready to assist

Join Discord