1
0
Fork 0
forked from Simnation/Main
Main/resources/[standalone]/ps-multijob/client/cl_main.lua
2025-07-02 07:37:36 +02:00

90 lines
No EOL
2.6 KiB
Lua

local QBCore = exports['qb-core']:GetCoreObject()
local function GetJobs()
local p = promise.new()
QBCore.Functions.TriggerCallback('ps-multijob:getJobs', function(result)
p:resolve(result)
end)
return Citizen.Await(p)
end
local function OpenUI()
local job = QBCore.Functions.GetPlayerData().job
SetNuiFocus(true,true)
SendNUIMessage({
action = 'sendjobs',
activeJob = job["name"],
onDuty = job["onduty"],
jobs = GetJobs(),
side = Config.Side,
})
end
RegisterNUICallback('selectjob', function(data, cb)
TriggerServerEvent("ps-multijob:changeJob", data["name"], data["grade"])
local onDuty = false
if data["name"] ~= "police" then onDuty = QBCore.Shared.Jobs[data["name"]].defaultDuty end
cb({onDuty = onDuty})
end)
RegisterNUICallback('closemenu', function(data, cb)
cb({})
SetNuiFocus(false,false)
end)
RegisterNUICallback('removejob', function(data, cb)
TriggerServerEvent("ps-multijob:removeJob", data["name"], data["grade"])
local jobs = GetJobs()
jobs[data["name"]] = nil
cb(jobs)
end)
RegisterNUICallback('toggleduty', function(data, cb)
cb({})
local job = QBCore.Functions.GetPlayerData().job.name
if Config.DenyDuty[job] then
TriggerEvent("QBCore:Notify", 'Not allowed to use this station for clock-in.', 'error')
return
end
TriggerServerEvent("QBCore:ToggleDuty")
end)
RegisterNetEvent('QBCore:Client:OnJobUpdate', function(JobInfo)
SendNUIMessage({
action = 'updatejob',
name = JobInfo["name"],
label = JobInfo["label"],
onDuty = JobInfo["onduty"],
gradeLabel = JobInfo["grade"].name,
grade = JobInfo["grade"].level,
salary = JobInfo["payment"],
isWhitelist = Config.WhitelistJobs[JobInfo["name"]] or false,
description = Config.Descriptions[JobInfo["name"]] or "",
icon = Config.FontAwesomeIcons[JobInfo["name"]] or "",
})
end)
RegisterCommand("jobmenu", OpenUI, false)
RegisterKeyMapping('jobmenu', "Show Job Management", "keyboard", "J")
TriggerEvent('chat:removeSuggestion', '/jobmenu')
-- Add this to cl_main.lua
RegisterNetEvent('ps-multijob:refreshJobs', function()
if not IsPauseMenuActive() then -- Only refresh if menu is open
local isMenuOpen = false
-- Check if the NUI is focused (menu is open)
if IsPauseMenuActive() and IsPauseMenuRestarting() then
isMenuOpen = true
end
if isMenuOpen then
OpenUI() -- Refresh the UI with updated job data
end
end
end)