From 06ac4293538b4155348584bfc651440ddb0c9b3d Mon Sep 17 00:00:00 2001 From: Selt <83926739+seltonmt012@users.noreply.github.com> Date: Sat, 8 Aug 2026 16:55:35 +0200 Subject: [PATCH] fix(es_extended/server/modules/createJob): store the encoded skin in ESX.Jobs CreateJob wrote the caller's skin table straight into ESX.Jobs while the row got the encoded string. setJob then ran json.decode over a table and died with "bad argument #1 to 'json.decode' (string expected, got table)". A restart appeared to repair the job, because the grade came back from the database as a string. Cache the same value that goes into the row. --- [core]/es_extended/server/modules/createJob.lua | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/[core]/es_extended/server/modules/createJob.lua b/[core]/es_extended/server/modules/createJob.lua index f27172e5..b16ade82 100644 --- a/[core]/es_extended/server/modules/createJob.lua +++ b/[core]/es_extended/server/modules/createJob.lua @@ -8,7 +8,7 @@ local NOTIFY_TYPES = { local function generateNewJobTable(name, label, grades, jobType) local job = ESX.Jobs[name] or { 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 '{}' } + 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, skin_female = v.skin_female } end return job @@ -79,10 +79,13 @@ function ESX.CreateJob(name, label, grades, jobType) for _, grade in pairs(grades) do if not existingGrades[tostring(grade.grade)] then - newGrades[#newGrades + 1] = grade + local skinMale = grade.skin_male and json.encode(grade.skin_male) or '{}' + local skinFemale = grade.skin_female and json.encode(grade.skin_female) or '{}' + + newGrades[#newGrades + 1] = { grade = grade.grade, name = grade.name, label = grade.label, salary = grade.salary, skin_male = skinMale, skin_female = skinFemale } queries[#queries + 1] = { query = 'INSERT INTO job_grades (job_name, grade, name, label, salary, skin_male, skin_female) VALUES (?, ?, ?, ?, ?, ?, ?)', - values = { name, grade.grade, grade.name, grade.label, grade.salary, grade.skin_male and json.encode(grade.skin_male) or '{}', grade.skin_female and json.encode(grade.skin_female) or '{}' } + values = { name, grade.grade, grade.name, grade.label, grade.salary, skinMale, skinFemale } } end end