Skip to main content

Installation

1. Dependencies

Make sure the following resources are installed and start before msk_handcuffs:

ResourceRequiredNotes
oxmysqlDatabase access
msk_core 3.0.0+Framework bridge & utilities
ESX or QBCoreAuto-detected by msk_core
ox_target or qb-targetoptionalTarget menu. ox_target is recommended
pma-voice or saltychatoptionalTape mute feature

2. Start order

ensure oxmysql
ensure es_extended # or qb-core
ensure msk_core
ensure ox_target # optional, recommended (or qb-target)
ensure msk_handcuffs
Target menu

New in v3: msk_handcuffs registers its own target options on every player. ox_target is the recommended system and is picked automatically when it is running (Config.Target.system = 'auto'). See Config → Config.Target.

3. Database

You do not need to import any .sql file. On first start msk_handcuffs creates its tables automatically, migrates a legacy database.json once into MySQL and imports config/settings.lua into the settings table.

See Database & Migration for details.

4. Items

Add the items to your inventory. For ox_inventory see the ox_inventory guide. The default item names are:

cuffs, cable_ties, hardcuff, cuff_keys, scissors, ankletracker, headbag, tape

If you use the removeItem options for AnkleTracker / Headbag / Tape, also add those items (e.g. ankletracker_key, headbag_key, tape_key).

5. Configure

Open config/settings.lua and set your Config.Locale, jobs and items before the first start — the file is imported into the database exactly once. Code hooks like the notification, the mute function and the props live in config/static.lua and can be changed at any time.

6. Manage it in-game

Everything else happens in the admin dashboard:

/handcuffadmin

Add your team's groups to Config.dashboardGroups (or later in the Permissions tab), paste your Discord webhook into the Settings tab, and adjust items and job restrictions without touching a file or restarting the server.

tip

Set Config.Debug = false on your live server (it is the default).