Implemented ESX.DoesJobExist()

This commit is contained in:
ElPumpo
2019-02-28 12:57:09 +01:00
parent 611bf76aaa
commit 5ab6123b44
4 changed files with 64 additions and 27 deletions
+23 -26
View File
@@ -345,40 +345,37 @@ function CreateExtendedPlayer(player, accounts, inventory, job, loadout, name, l
end
self.setJob = function(name, grade)
self.setJob = function(job, grade)
local lastJob = json.decode(json.encode(self.job))
MySQL.Async.fetchAll('SELECT * FROM `jobs` WHERE `name` = @name', {
['@name'] = name
}, function(result)
if ESX.DoesJobExist(job, grade) then
local jobObject, gradeObject = ESX.Jobs[job], ESX.Jobs[job].grades[grade]
self.job['id'] = result[1].id
self.job['name'] = result[1].name
self.job['label'] = result[1].label
self.job['id'] = jobObject.id
self.job['name'] = jobObject.name
self.job['label'] = jobObject.label
MySQL.Async.fetchAll('SELECT * FROM `job_grades` WHERE `job_name` = @job_name AND `grade` = @grade', {
['@job_name'] = name,
['@grade'] = grade
}, function(result)
self.job['grade'] = grade
self.job['grade_name'] = result[1].name
self.job['grade_label'] = result[1].label
self.job['grade_salary'] = result[1].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'] = nil
self.job['skin_female'] = nil
if result[1].skin_male ~= nil then
self.job['skin_male'] = json.decode(result[1].skin_male)
end
if gradeObject.skin_male ~= nil then
self.job['skin_male'] = json.decode(gradeObject.skin_male)
end
if result[1].skin_female ~= nil then
self.job['skin_female'] = json.decode(result[1].skin_female)
end
if gradeObject.skin_female ~= nil then
self.job['skin_female'] = json.decode(gradeObject.skin_female)
end
TriggerEvent("esx:setJob", self.source, self.job, lastJob)
TriggerClientEvent("esx:setJob", self.source, self.job)
end)
end)
TriggerEvent('esx:setJob', self.source, self.job, lastJob)
TriggerClientEvent('esx:setJob', self.source, self.job)
else
print(('es_extended: ignoring setJob for %s due to job not found!'):format(self.source))
end
end
self.addWeapon = function(weaponName, ammo)
+6 -1
View File
@@ -21,7 +21,12 @@ TriggerEvent('es:addGroupCommand', 'setjob', 'jobmaster', function(source, args,
local xPlayer = ESX.GetPlayerFromId(args[1])
if xPlayer then
xPlayer.setJob(args[2], tonumber(args[3]))
if ESX.DoesJobExist(args[2], args[3]) then
xPlayer.setJob(args[2], args[3])
else
TriggerClientEvent('chat:addMessage', source, { args = { '^1SYSTEM', 'That job does not exist.' } })
end
else
TriggerClientEvent('chat:addMessage', source, { args = { '^1SYSTEM', 'Player not online.' } })
end
+25
View File
@@ -8,6 +8,7 @@ ESX.CancelledTimeouts = {}
ESX.LastPlayerData = {}
ESX.Pickups = {}
ESX.PickupId = 0
ESX.Jobs = {}
AddEventHandler('esx:getSharedObject', function(cb)
cb(ESX)
@@ -28,6 +29,30 @@ MySQL.ready(function()
}
end
end)
local result = MySQL.Sync.fetchAll('SELECT * FROM jobs', {})
for i=1, #result do
ESX.Jobs[result[i].name] = result[i]
ESX.Jobs[result[i].name].grades = {}
end
local result2 = MySQL.Sync.fetchAll('SELECT * FROM job_grades', {})
for i=1, #result2 do
if ESX.Jobs[result2[i].job_name] then
ESX.Jobs[result2[i].job_name].grades[tostring(result2[i].grade)] = result2[i]
else
print(('es_extended: invalid job "%s" from table job_grades ignored!'):format(result2[i].job_name))
end
end
for k,v in pairs(ESX.Jobs) do
if next(v.grades) == nil then
ESX.Jobs[v.name] = nil
print(('es_extended: ignoring job "%s" due to missing job grades!'):format(v.name))
end
end
end)
AddEventHandler('esx:playerLoaded', function(source)
+10
View File
@@ -186,3 +186,13 @@ ESX.CreatePickup = function(type, name, count, label, player)
TriggerClientEvent('esx:pickup', -1, pickupId, label, player)
ESX.PickupId = pickupId
end
ESX.DoesJobExist = function(job, grade)
if job and grade then
if ESX.Jobs[job] and ESX.Jobs[job].grades[grade] then
return true
end
end
return false
end