diff --git a/server/classes/player.lua b/server/classes/player.lua index 90af90f6..73f5bbb9 100644 --- a/server/classes/player.lua +++ b/server/classes/player.lua @@ -348,29 +348,30 @@ function CreateExtendedPlayer(player, accounts, inventory, job, loadout, name, l end self.setJob = function(job, grade) + grade = tostring(grade) local lastJob = json.decode(json.encode(self.job)) if ESX.DoesJobExist(job, grade) then local jobObject, gradeObject = ESX.Jobs[job], ESX.Jobs[job].grades[grade] - self.job['id'] = jobObject.id - self.job['name'] = jobObject.name - self.job['label'] = jobObject.label + self.job.id = jobObject.id + self.job.name = jobObject.name + self.job.label = jobObject.label - self.job['grade'] = grade - self.job['grade_name'] = gradeObject.name - self.job['grade_label'] = gradeObject.label - self.job['grade_salary'] = gradeObject.salary + self.job.grade = grade + self.job.grade_name = gradeObject.name + self.job.grade_label = gradeObject.label + self.job.grade_salary = gradeObject.salary - self.job['skin_male'] = nil - self.job['skin_female'] = nil + self.job.skin_male = {} + self.job.skin_female = {} if gradeObject.skin_male ~= nil then - self.job['skin_male'] = json.decode(gradeObject.skin_male) + self.job.skin_male = json.decode(gradeObject.skin_male) end if gradeObject.skin_female ~= nil then - self.job['skin_female'] = json.decode(gradeObject.skin_female) + self.job.skin_female = json.decode(gradeObject.skin_female) end TriggerEvent('esx:setJob', self.source, self.job, lastJob) diff --git a/server/functions.lua b/server/functions.lua index 2b9467c9..c61e17b2 100644 --- a/server/functions.lua +++ b/server/functions.lua @@ -185,6 +185,8 @@ ESX.CreatePickup = function(type, name, count, label, player) end ESX.DoesJobExist = function(job, grade) + grade = tostring(grade) + if job and grade then if ESX.Jobs[job] and ESX.Jobs[job].grades[grade] then return true diff --git a/server/main.lua b/server/main.lua index 200431dc..26033bac 100644 --- a/server/main.lua +++ b/server/main.lua @@ -130,8 +130,52 @@ AddEventHandler('es:playerLoaded', function(source, _player) MySQL.Async.fetchAll('SELECT job, job_grade, loadout, position FROM `users` WHERE `identifier` = @identifier', { ['@identifier'] = player.getIdentifier() }, function(result) - userData.job['name'] = result[1].job - userData.job['grade'] = result[1].job_grade + local job, grade = result[1].job, tostring(result[1].job_grade) + + if ESX.DoesJobExist(job, grade) then + local jobObject, gradeObject = ESX.Jobs[job], ESX.Jobs[job].grades[grade] + + userData.job = {} + + userData.job.id = jobObject.id + userData.job.name = jobObject.name + userData.job.label = jobObject.label + + userData.job.grade = grade + userData.job.grade_name = gradeObject.name + userData.job.grade_label = gradeObject.label + userData.job.grade_salary = gradeObject.salary + + userData.job.skin_male = {} + userData.job.skin_female = {} + + if gradeObject.skin_male ~= nil then + userData.job.skin_male = json.decode(gradeObject.skin_male) + end + + if gradeObject.skin_female ~= nil then + userData.job.skin_female = json.decode(gradeObject.skin_female) + end + else + print(('es_extended: %s had an unknown job [job: %s, grade: %s], setting as unemployed!'):format(player.getIdentifier(), job, grade)) + + local job, grade = 'unemployed', '0' + local jobObject, gradeObject = ESX.Jobs[job], ESX.Jobs[job].grades[grade] + + userData.job = {} + + userData.job.id = jobObject.id + userData.job.name = jobObject.name + userData.job.label = jobObject.label + + userData.job.grade = grade + userData.job.grade_name = gradeObject.name + userData.job.grade_label = gradeObject.label + userData.job.grade_salary = gradeObject.salary + + userData.job.skin_male = {} + userData.job.skin_female = {} + end if result[1].loadout ~= nil then userData.loadout = json.decode(result[1].loadout) @@ -146,44 +190,6 @@ AddEventHandler('es:playerLoaded', function(source, _player) end) - -- Get job label - table.insert(tasks2, function(cb2) - MySQL.Async.fetchAll('SELECT * FROM `jobs` WHERE `name` = @name', { - ['@name'] = userData.job.name - }, function(result) - userData.job['label'] = result[1].label - cb2() - end) - end) - - -- Get job grade data - table.insert(tasks2, function(cb2) - - MySQL.Async.fetchAll('SELECT * FROM `job_grades` WHERE `job_name` = @job_name AND `grade` = @grade', { - ['@job_name'] = userData.job.name, - ['@grade'] = userData.job.grade - }, function(result) - - userData.job['grade_name'] = result[1].name - userData.job['grade_label'] = result[1].label - userData.job['grade_salary'] = result[1].salary - - userData.job['skin_male'] = {} - userData.job['skin_female'] = {} - - if result[1].skin_male ~= nil then - userData.job['skin_male'] = json.decode(result[1].skin_male) - end - - if result[1].skin_female ~= nil then - userData.job['skin_female'] = json.decode(result[1].skin_female) - end - - cb2() - end) - - end) - Async.series(tasks2, cb) end) @@ -219,10 +225,10 @@ AddEventHandler('es:playerLoaded', function(source, _player) job = xPlayer.getJob(), loadout = xPlayer.getLoadout(), lastPosition = xPlayer.getLastPosition(), - money = xPlayer.get('money') + money = xPlayer.getMoney() }) - xPlayer.player.displayMoney(xPlayer.get('money')) + xPlayer.displayMoney(xPlayer.getMoney()) end)