feat: add esx job types

This commit is contained in:
Kenshin13
2025-09-07 23:22:26 +02:00
committed by _Not_
parent 01470dec92
commit b9ca12a65d
5 changed files with 49 additions and 22 deletions
@@ -585,6 +585,7 @@ function CreateExtendedPlayer(playerId, identifier, ssn, group, accounts, invent
id = jobObject.id,
name = jobObject.name,
label = jobObject.label,
type = jobObject.type,
onDuty = onDuty,
grade = tonumber(grade) or 0,
+22 -3
View File
@@ -562,7 +562,7 @@ function ESX.RefreshJobs()
if not Jobs then
-- Fallback data, if no jobs exist
ESX.Jobs["unemployed"] = { name = "unemployed", label = "Unemployed", whitelisted = false, grades = { ["0"] = { grade = 0, name = "unemployed", label = "Unemployed", salary = 200, skin_male = {}, skin_female = {} } } }
ESX.Jobs["unemployed"] = { name = "unemployed", label = "Unemployed", type = "civ", whitelisted = false, grades = { ["0"] = { grade = 0, name = "unemployed", label = "Unemployed", salary = 200, skin_male = {}, skin_female = {} } } }
else
ESX.Jobs = Jobs
end
@@ -628,13 +628,32 @@ function ESX.GetItemLabel(item)
end
end
---@param jobType string|string[]?
---@return table
function ESX.GetJobs()
function ESX.GetJobs(jobType)
while not Core.JobsLoaded do
Citizen.Wait(200)
end
return ESX.Jobs
if not jobType then
return ESX.Jobs
end
jobType = type(jobType) == "string" and { jobType } or jobType
local jobTypeLookup = {}
for i = 1, #jobType do
jobTypeLookup[jobType[i]] = true
end
local filteredJobs = {}
for jobName, jobObject in pairs(ESX.Jobs) do
if jobTypeLookup[jobObject.type] then
filteredJobs[jobName] = jobObject
end
end
return filteredJobs
end
---@return table
+1
View File
@@ -234,6 +234,7 @@ function loadESXPlayer(identifier, playerId, isNew)
id = jobObject.id,
name = jobObject.name,
label = jobObject.label,
type = jobObject.type,
grade = tonumber(grade),
grade_name = gradeObject.name,
@@ -19,8 +19,8 @@ local function doesJobAndGradesExist(name, grades)
return true
end
local function generateNewJobTable(name, label, grades)
local job = { name = name, label = label, grades = {} }
local function generateNewJobTable(name, label, grades, jobType)
local job = { name = name, label = label, type = jobType, grades = {} }
for _, v in pairs(grades) do
job.grades[tostring(v.grade)] = { job_name = name, grade = v.grade, name = v.name, label = v.label, salary = v.salary, skin_male = v.skin_male or '{}', skin_female = v.skin_female or '{}' }
end
@@ -42,7 +42,8 @@ end
--- @param name string
--- @param label string
--- @param grades table
function ESX.CreateJob(name, label, grades)
--- @param jobType string
function ESX.CreateJob(name, label, grades, jobType)
local currentResourceName = GetInvokingResource()
local success = false
@@ -61,6 +62,10 @@ function ESX.CreateJob(name, label, grades)
return success
end
if type(jobType) ~= "string" then
jobType "civ"
end
local currentJobExist = doesJobAndGradesExist(name, grades)
if currentJobExist then
@@ -69,7 +74,7 @@ function ESX.CreateJob(name, label, grades)
end
local queries = {
{ query = 'INSERT INTO jobs (name, label) VALUES (?, ?)', values = { name, label } }
{ query = 'INSERT INTO `jobs` (`name`, `label`, `type`) VALUES (?, ?, ?)', values = { name, label, jobType } }
}
for _, grade in pairs(grades) do
@@ -86,7 +91,7 @@ function ESX.CreateJob(name, label, grades)
return success
end
ESX.Jobs[name] = generateNewJobTable(name, label, grades)
ESX.Jobs[name] = generateNewJobTable(name, label, grades, jobType)
notify("SUCCESS", currentResourceName, 'Job created successfully: `%s`', name)