Browse docs

Player Interaction Actions

Reference for Player Interaction Actions in sky_jobs_base.

All server exports

Player Interaction Actions

Every action export below validates the acting player's current whitelist access. Target existence, distance, vehicle state, restraint state, items, and inventory operations are also validated where applicable.

These are trusted server-side integration points. Never forward an options table, target ID, network ID, seat, item name, amount, or metadata directly from an unvalidated client event.

Handcuffs and zipties

ExportReturnsPurpose
cuffPlayer(sourceId, targetId, cuffType, options?)boolean, string?Applies cuffs or zipties.
uncuffPlayer(sourceId, targetId, options?)boolean, string?Removes the target's current cuffs or zipties.
cutZipties(sourceId, targetId, options?)boolean, string?Cuts the target's zipties with the configured cutter.
isPlayerCuffed(targetId)booleanReads the shared cuff state.
getCuffConfig()tableReturns a read-only snapshot of Config.PoliceCuffs.

Trusted options for cuffPlayer are ignoreItemCheck, allowSelf, and forceNormal. uncuffPlayer and cutZipties accept allowSelf and forceNormal. Whitelist and distance validation cannot be disabled.

local success, reason = exports["sky_jobs_base"]:cuffPlayer(
    source,
    targetId,
    "cuffs"
)

Escape opportunities are not exposed as a forceable integration API. The server rolls and validates them from Config.PoliceCuffs.escape, including timing, expected keys, round progression, cooldowns, and final restraint removal.

Leg restraints

ExportReturnsPurpose
applyLegRestraints(sourceId, targetId)boolean, string?Applies leg restraints after all access and target checks.
removeLegRestraints(sourceId, targetId)boolean, string?Removes the target's leg restraints.
isPlayerLegRestrained(targetId)booleanReads the shared leg-restraint state.
getLegRestraintsTargetState(targetId)tableReturns the target's validated cuff and leg-restraint state.
getLegRestraintsConfig()tableReturns a read-only snapshot of Config.LegRestraints.

Escort and vehicles

ExportReturnsPurpose
escortToggle(sourceId, targetId)boolean, string?Starts or stops escorting a cuffed target.
escortPutInVehicle(sourceId, targetId, netId, seat)boolean, string?Places an escorted target into a nearby networked vehicle.
escortTakeOutVehicle(sourceId, targetId)boolean, string?Removes a nearby cuffed target from a vehicle.

escortToggle requires escort; the two vehicle exports require vehicle.

Head bag

ExportReturnsPurpose
useHeadBag(sourceId, targetId, action)boolean, string?Uses apply, remove, or toggle.
applyHeadBag(sourceId, targetId)boolean, string?Applies a head bag.
removeHeadBag(sourceId, targetId)boolean, string?Removes a head bag.
isPlayerHeadBagged(targetId)booleanReads the shared head-bag state.
getHeadBagTargetState(targetId)tableReturns success, hooded, and restrained.
getHeadBagConfig()tableReturns a read-only snapshot of Config.HeadBag.
ExportReturnsPurpose
getSearchTargetInventory(sourceId, targetId)tableReturns the validated target inventory and weapons.
searchTransfer(sourceId, targetId, transferType, name, amount, metadata?)tableTransfers a validated item from the target to the acting player.

searchTransfer currently accepts only transferType = "storage". The target must remain nearby and restrained for the initial read and every transfer.