❤️Cooldown Integration on Frameworks
Important!
You only need to do this if you want the cooldown system to be general and not only for the job center.
QB-Core
Locate the file:
qb-core/server/player.lua
Replace the function
self.Functions.SetJob(job, grade)
function with:
function self.Functions.SetJob(job, grade)
job = job:lower()
grade = grade or '0'
if not QBCore.Shared.Jobs[job] then return false end
if exports['mg-jobCenter']:HasCooldown(self.PlayerData.citizenid) then
TriggerClientEvent('QBCore:Notify', self.PlayerData.source, 'You are still on cooldown!', 'error', 5000)
return false
end
self.PlayerData.job = {
name = job,
label = QBCore.Shared.Jobs[job].label,
onduty = QBCore.Shared.Jobs[job].defaultDuty,
type = QBCore.Shared.Jobs[job].type or 'none',
grade = {
name = 'No Grades',
level = 0,
payment = 30,
isboss = false
}
}
local gradeKey = tostring(grade)
local jobGradeInfo = QBCore.Shared.Jobs[job].grades[gradeKey]
if jobGradeInfo then
self.PlayerData.job.grade.name = jobGradeInfo.name
self.PlayerData.job.grade.level = tonumber(gradeKey)
self.PlayerData.job.grade.payment = jobGradeInfo.payment
self.PlayerData.job.grade.isboss = jobGradeInfo.isboss or false
self.PlayerData.job.isboss = jobGradeInfo.isboss or false
end
exports['mg-jobCenter']:SetPlayerCooldown(self.PlayerData.citizenid)
TriggerClientEvent('QBCore:Notify', self.PlayerData.source, 'You are now on Job Cooldown!', 'success', 5000)
if not self.Offline then
self.Functions.UpdatePlayerData()
TriggerEvent('QBCore:Server:OnJobUpdate', self.PlayerData.source, self.PlayerData.job)
TriggerClientEvent('QBCore:Client:OnJobUpdate', self.PlayerData.source, self.PlayerData.job)
end
return true
end
ESX
Locate the file:
es_extended/server/classes/player.lua
Replace the
self.setJob(newJob, grade, onDuty)
function with:
function self.setJob(newJob, grade, onDuty)
grade = tostring(grade)
local lastJob = self.job
if not ESX.DoesJobExist(newJob, grade) then
return print(("[ESX] [^3WARNING^7] Ignoring invalid ^5.setJob()^7 usage for ID: ^5%s^7, Job: ^5%s^7"):format(self.source, newJob))
end
if exports['mg-jobCenter']:HasCooldown(self.getIdentifier()) then
self.triggerEvent("esx:showNotification", 'You are still on cooldown!', 'error', 5000)
return
end
if newJob == "unemployed" then
onDuty = false
end
if type(onDuty) ~= "boolean" then
onDuty = Config.DefaultJobDuty
end
local jobObject, gradeObject = ESX.Jobs[newJob], ESX.Jobs[newJob].grades[grade]
self.job = {
id = jobObject.id,
name = jobObject.name,
label = jobObject.label,
onDuty = onDuty,
grade = tonumber(grade),
grade_name = gradeObject.name,
grade_label = gradeObject.label,
grade_salary = gradeObject.salary,
skin_male = gradeObject.skin_male and json.decode(gradeObject.skin_male) or {},
skin_female = gradeObject.skin_female and json.decode(gradeObject.skin_female) or {},
}
self.metadata.jobDuty = onDuty
TriggerEvent("esx:setJob", self.source, self.job, lastJob)
self.triggerEvent("esx:setJob", self.job, lastJob)
Player(self.source).state:set("job", self.job, true)
exports['mg-jobCenter']:SetPlayerCooldown(self.getIdentifier())
self.triggerEvent("esx:showNotification", 'You are now on Job Cooldown!', 'success', 5000)
end
Last updated