MSK Scripts
TebexGithubDiscordMusiker15
  • MSK Scripts
    • Welcome
  • Common Issues
    • Keymaster
  • Miscellaneous
    • Change Notifications
  • Scripts
    • MSK Core
      • Installation
      • Functions
        • Client
          • Ace Permission
          • Commands
          • Coords
          • Player
          • Points
          • Request
          • Scaleform
          • UI
            • Input
            • Numpad
            • Progressbar
            • TextUI
          • Vehicle
        • Shared
          • String
          • Math
          • Table
          • Timeout
          • Vector
        • Server
          • Ace Permission
          • Ban System
          • Commands
          • Player
          • Scaleform
          • UI
            • Input
            • Numpad
            • Progressbar
            • TextUI
    • MSK Banking
      • Installation
        • Paycheck Transaction
      • Config
      • Exports
        • Client
        • Server
      • Events
        • Client
        • Server
      • Server Callbacks
    • MSK EngineToggle
      • Guides
      • Exports
        • Client
      • Event Handler
        • Client
        • Server
    • MSK Fuel
      • Config
      • Exports
        • Client
    • MSK Garage
      • Config
      • Exports
        • Client
    • MSK Handcuffs
      • Guides
        • General Edits for Jobs
        • Jaksam Job Creator
        • Multichar
        • ox_inventory
      • Config
      • Admin Commands
      • Exports
        • Client
        • Server
      • Events
        • Client
        • Server
      • Event Handlers
    • MSK Radio
      • Config
      • Exports
        • Client
        • Server
      • Events
        • Server
    • MSK Simcard
      • Installation
        • Config.Database
      • Config
    • MSK VehicleKeys
      • Guides
        • Installation
        • Integrations
      • Config
      • Admin Commands
      • Exports
        • Client
        • Server
    • MSK Whitelist
      • Config
      • Exports
        • Client
        • Server
    • MSK Weaponammo
Powered by GitBook
On this page
  1. Scripts
  2. MSK Handcuffs
  3. Guides

Jaksam Job Creator

Last updated 8 months ago

You have to edit the following file:

jobs_creator/client/actions/actions.lua

In most versions you can access this file. If not, the you can't implement it.

Edit Menu Options

client/actions/actions.lua
{condition = JobsCreator.activeActions.canHandcuff, label = getLocalizedText('actions_put_handcuffs'), value = 'cuff', type = 'player'},
{condition = JobsCreator.activeActions.canHandcuff, label = getLocalizedText('actions_put_hardcuffs'), value = 'hardcuff', type = 'player'},
{condition = JobsCreator.activeActions.canHandcuff, label = getLocalizedText('actions_take_handcuffs'), value = 'uncuff', type = 'player'},
{condition = JobsCreator.activeActions.canHandcuff, label = getLocalizedText('actions_headbag'), value = 'headbag', type = 'player'},
{condition = JobsCreator.activeActions.canHandcuff, label = getLocalizedText('actions_tape'), value = 'tape', type = 'player'},
{condition = JobsCreator.activeActions.canHandcuff, label = getLocalizedText('actions_ankletracker'), value = 'ankletracker', type = 'player'},
{condition = JobsCreator.activeActions.canHandcuff, label = getLocalizedText('actions_start_dragging'), value = 'drag', type = 'player'},
{condition = JobsCreator.activeActions.canHandcuff, label = getLocalizedText('actions_put_in_car'), value = 'putInCar', type = 'player'},
{condition = JobsCreator.activeActions.canHandcuff, label = getLocalizedText('actions_take_from_car'), value = 'takeFromCar', type = 'vehicle'},

Do NOT forget to add the LocalizedText to the jobs_creator/locals files!

-- English
['actions_put_handcuffs'] = "Cuff",
['actions_put_hardcuffs'] = "Hardcuff",
['actions_take_handcuffs'] = "Uncuff",
['actions_ankletracker'] = "AnkleTracker",
['actions_headbag'] = "Headbag",
['actions_tape'] = "Tape",

-- German
['actions_put_handcuffs'] = "Handfesseln anlegen",
['actions_put_hardcuffs'] = "Fußfesseln anlegen",
['actions_take_handcuffs'] = "Handfesseln ablegen",
['actions_ankletracker'] = "Fusfessel",
['actions_headbag'] = "Kopfsack",
['actions_tape'] = "Klebeband",

Replace isHandcuffed function

if (exports['msk_handcuffs']:getIsHandcuffed()) then
    notifyClient(getLocalizedText("you_cant_while_handcuffed"))
    return
end

Edit Menu Actions

client/actions/actions.lua
local function openActionsMenu()
    if not canDoAnyAction or not actionsMenuEnabled or IsPedDeadOrDying(PlayerPedId()) then return end
    if(canDoAnyAction and (not config.canUseActionsMenuWhileOffDuty and not isOnDuty)) then
        notifyClient(getLocalizedText("you_are_not_on_duty"))
        return
    end

    if (exports['msk_handcuffs']:getIsHandcuffed()) then
        notifyClient(getLocalizedText("you_cant_while_handcuffed"))
        return
    end

    Framework.menu().CloseAll()

    Framework.menu().Open('default', GetCurrentResourceName(), 'actions_menu', {
        title = getLocalizedText('actions_menu'),
        align = config.menuPosition,
        elements = menuElements
    }, 
    function(data, menu) 
        local action = data.current.value
        local extraData = data.current.extraData
        local playerJob = ESX.GetPlayerData().job.name or 'unemployed'

        -- Default Options for every Player and Job
        local defaultItems = {
            cuffItem = 'cable_ties',
            hardcuffItem = 'hardcuff',
            uncuffItem = 'scissors',
            enableAnkletracker = false, 
            enableHeadbag = true,
            enableTape = true,
        }

        -- Specific Options for Jobs
        local jobs = {
            ['police'] = {
                cuffItem = 'cuffs',
                hardcuffItem = 'hardcuff',
                uncuffItem = 'cuff_keys',
                enableAnkletracker = true,
                enableHeadbag = true,
                enableTape = true,
            },
            ['doj'] = {
                cuffItem = 'cuffs',
                hardcuffItem = 'hardcuff',
                uncuffItem = 'cuff_keys',
                enableAnkletracker = true,
                enableHeadbag = true,
                enableTape = true,
            },
        }

        if action == 'cuff' then
            exports.msk_handcuffs:cuffPlayer(jobs[playerJob] and jobs[playerJob].cuffItem or defaultItems.cuffItem)
        elseif action == 'hardcuff' then
            exports.msk_handcuffs:hardcuffPlayer(jobs[playerJob] and jobs[playerJob].hardcuffItem or defaultItems.hardcuffItem)
        elseif action == 'uncuff' then 
            exports.msk_handcuffs:uncuffPlayer(jobs[playerJob] and jobs[playerJob].uncuffItem or defaultItems.uncuffItem)
        elseif action == 'ankletracker' then 
            if jobs[playerJob] and jobs[playerJob].enableAnkletracker or defaultItems.enableAnkletracker then
                exports.msk_handcuffs:ankleTrackerPlayer()
            else
                notifyClient('You are not allowed to do that!')
            end
        elseif action == 'headbag' then 
            if jobs[playerJob] and jobs[playerJob].enableHeadbag or defaultItems.enableHeadbag then
                exports.msk_handcuffs:headbagPlayer()
            else
                notifyClient('You are not allowed to do that!')
            end
        elseif action == 'tape' then 
            if jobs[playerJob] and jobs[playerJob].enableTape or defaultItems.enableTape then
                exports.msk_handcuffs:tapePlayer()
            else
                notifyClient('You are not allowed to do that!')
            end
        elseif action == 'drag' then
            local player, distance = ESX.Game.GetClosestPlayer()

            if player ~= -1 and distance <= 2.5 then
                TriggerServerEvent('msk_handcuffs:setDrag', GetPlayerServerId(player))
            end
        elseif action == 'putInCar' then
            local player, distance = ESX.Game.GetClosestPlayer()

            if player ~= -1 and distance <= 2.5 then
                TriggerServerEvent('msk_handcuffs:putInCar', GetPlayerServerId(player))
            end
        elseif action == 'takeFromCar' then
            local player, distance = ESX.Game.GetClosestPlayer()

            if player ~= -1 and distance <= 2.5 then
                TriggerServerEvent('msk_handcuffs:outOfCar', GetPlayerServerId(player))
            end
        else
            TriggerEvent(Utils.eventsPrefix .. ':actions:' .. action, extraData)
        end
    end,
    function(data, menu)
        menu.close()
    end)
end

Edit Menu Options

client/actions/actions.lua
{condition = JobsCreator.activeActions.canHandcuff, label = getLocalizedText('actions_put_handcuffs'), value = 'cuff', type = 'player'},
{condition = JobsCreator.activeActions.canHandcuff, label = getLocalizedText('actions_put_hardcuffs'), value = 'hardcuff', type = 'player'},
{condition = JobsCreator.activeActions.canHandcuff, label = getLocalizedText('actions_take_handcuffs'), value = 'uncuff', type = 'player'},
{condition = JobsCreator.activeActions.canHandcuff, label = getLocalizedText('actions_ankletracker'), value = 'ankletracker', type = 'player'},
{condition = JobsCreator.activeActions.canHandcuff, label = getLocalizedText('actions_headbag'), value = 'headbag', type = 'player'},
{condition = JobsCreator.activeActions.canHandcuff, label = getLocalizedText('actions_tape'), value = 'tape', type = 'player'},
{condition = JobsCreator.activeActions.canHandcuff, label = getLocalizedText('actions_start_dragging'), value = 'drag', type = 'player'},
{condition = JobsCreator.activeActions.canHandcuff, label = getLocalizedText('actions_put_in_car'), value = 'putInCar', type = 'player'},
{condition = JobsCreator.activeActions.canHandcuff, label = getLocalizedText('actions_take_from_car'), value = 'takeFromCar', type = 'vehicle'},

Do NOT forget to add the LocalizedText to the jobs_creator/locals files!

-- English
['actions_put_handcuffs'] = "Cuff",
['actions_put_hardcuffs'] = "Hardcuff",
['actions_take_handcuffs'] = "Uncuff",
['actions_ankletracker'] = "AnkleTracker",
['actions_headbag'] = "Headbag",
['actions_tape'] = "Tape",

-- German
['actions_put_handcuffs'] = "Handfesseln anlegen",
['actions_put_hardcuffs'] = "Fußfesseln anlegen",
['actions_take_handcuffs'] = "Handfesseln ablegen",
['actions_ankletracker'] = "Fusfessel",
['actions_headbag'] = "Kopfsack",
['actions_tape'] = "Klebeband",

Edit Menu Actions

client/actions/actions.lua
local function openActionsMenu()
    if not canDoAnyAction or not actionsMenuEnabled or IsPedDeadOrDying(PlayerPedId()) then return end
    if(canDoAnyAction and (not config.canUseActionsMenuWhileOffDuty and not isOnDuty)) then
        notifyClient(getLocalizedText("you_are_not_on_duty"))
        return
    end

    if (exports['msk_handcuffs']:getIsHandcuffed()) then
        notifyClient(getLocalizedText("you_cant_while_handcuffed"))
        return
    end

    Utils.hideInteractionMenu()

    Utils.openInteractionMenu("actions", getLocalizedText('actions_menu'), menuElements, function(selected, scrollIndex, args)
        if not ESX then ESX = exports["es_extended"]:getSharedObject() end
        local playerJob = ESX.GetPlayerData().job.name or 'unemployed'

        -- Default Options for every Player and Job
        local defaultItems = {
            cuffItem = 'cable_ties',
            hardcuffItem = 'hardcuff',
            uncuffItem = 'scissors',
            enableAnkletracker = false, 
            enableHeadbag = true,
            enableTape = true,
        }

        -- Specific Options for Jobs
        local jobs = {
            ['police'] = {
                cuffItem = 'cuffs',
                hardcuffItem = 'hardcuff',
                uncuffItem = 'cuff_keys',
                enableAnkletracker = true,
                enableHeadbag = true,
                enableTape = true,
            },
            ['doj'] = {
                cuffItem = 'cuffs',
                hardcuffItem = 'hardcuff',
                uncuffItem = 'cuff_keys',
                enableAnkletracker = true,
                enableHeadbag = true,
                enableTape = true,
            },
        }

        if args.value == 'cuff' then
            exports.msk_handcuffs:cuffPlayer(jobs[playerJob] and jobs[playerJob].cuffItem or defaultItems.cuffItem)
        elseif args.value == 'hardcuff' then
            exports.msk_handcuffs:hardcuffPlayer(jobs[playerJob] and jobs[playerJob].hardcuffItem or defaultItems.hardcuffItem)
        elseif args.value == 'uncuff' then 
            exports.msk_handcuffs:uncuffPlayer(jobs[playerJob] and jobs[playerJob].uncuffItem or defaultItems.uncuffItem)
        elseif args.value == 'ankletracker' then 
            if jobs[playerJob] and jobs[playerJob].enableAnkletracker or defaultItems.enableAnkletracker then
                exports.msk_handcuffs:ankleTrackerPlayer()
            else
                notifyClient('You are not allowed to do that!')
            end
        elseif args.value == 'headbag' then 
            if jobs[playerJob] and jobs[playerJob].enableHeadbag or defaultItems.enableHeadbag then
                exports.msk_handcuffs:headbagPlayer()
            else
                notifyClient('You are not allowed to do that!')
            end
        elseif args.value == 'tape' then 
            if jobs[playerJob] and jobs[playerJob].enableTape or defaultItems.enableTape then
                exports.msk_handcuffs:tapePlayer()
            else
                notifyClient('You are not allowed to do that!')
            end
        elseif args.value == 'drag' then
            local player, distance = ESX.Game.GetClosestPlayer()

            if player ~= -1 and distance <= 2.5 then
                TriggerServerEvent('msk_handcuffs:setDrag', GetPlayerServerId(player))
            end
        elseif args.value == 'putInCar' then
            local player, distance = ESX.Game.GetClosestPlayer()

            if player ~= -1 and distance <= 2.5 then
                TriggerServerEvent('msk_handcuffs:putInCar', GetPlayerServerId(player))
            end
        elseif args.value == 'takeFromCar' then
            local player, distance = ESX.Game.GetClosestPlayer()

            if player ~= -1 and distance <= 2.5 then
                TriggerServerEvent('msk_handcuffs:outOfCar', GetPlayerServerId(player))
            end
        else
            TriggerEvent(Utils.eventsPrefix .. ':actions:' .. args.value, args.extraData)
        end
    end)
end
Edit Menu Options
Replace isHandcuffed function
Edit Menu Options