MSK Handcuffs

Description
- Cuff and uncuff players with animations and props
- Hardcuff a player (player can't move)
- Drag and undrag / escort a player
- Put a player in/out of a vehicle
- AnkleTracker — a specific job can track a player's position (live blips)
- Headbag — the player gets a blackscreen and a bag on their head
- Tape — the player gets tape on their mouth and can't talk
- Trigger actions via items, commands, exports or the target menu (ox_target / qb-target)
- Server-side timer for automatic uncuff
- Admin commands
- Discord logs
- Status (cuffed, ankletracker, …) is persisted in MySQL and restored after relog
What's new in v3.0.0
| Area | v2.x | v3.0.0 |
|---|---|---|
| Framework | ESX only | ESX & QBCore (auto-detected via msk_core) |
| Persistence | flat database.json | oxmysql (msk_handcuffs table) with automatic one-time migration from database.json |
| Trust model | client-driven | server-authoritative — the server validates distance, item possession and job for every action |
| Status | events + callbacks | replicated statebags (single source of truth, readable by any resource) |
| Targeting | ox_target | ox_target & qb-target (auto-detected) |
| Auto-uncuff timer / death | client-side (exploitable) | server-driven |
See Migration from v2 for renamed/removed exports & events.
Requirements
- msk_core 3.0.0+
- oxmysql
- A framework: ESX Legacy or QBCore