From ffc67e03475cc45748b6421a80be56ddda2769f2 Mon Sep 17 00:00:00 2001 From: Zerio Date: Sun, 26 May 2024 00:21:29 +0200 Subject: [PATCH 1/3] fix: validate job info upon player login --- server/player.lua | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/server/player.lua b/server/player.lua index a8963e0..4f502c0 100644 --- a/server/player.lua +++ b/server/player.lua @@ -100,6 +100,24 @@ function QBCore.Player.CheckPlayerData(source, PlayerData) PlayerData.name = GetPlayerName(source) end + -- todo, what should happen if the job doesnt exist? + if PlayerData.job and PlayerData.job.name ~= nil and PlayerData.job.grade and PlayerData.job.grade.level ~= nil then + local jobInfo = QBCore.Shared.Jobs[PlayerData.job.name] + + if jobInfo then + local jobGradeInfo = jobInfo.grades[tostring(PlayerData.job.grade.level)] + if jobGradeInfo then + PlayerData.job.label = jobInfo.label + PlayerData.job.grade.name = jobGradeInfo.name + PlayerData.job.payment = jobGradeInfo.payment + PlayerData.job.grade.isboss = jobGradeInfo.isboss or false + PlayerData.job.isboss = jobGradeInfo.isboss or false + end + end + end + + -- todo, fix same thing as above, but for the gang data + applyDefaults(PlayerData, QBCore.Config.Player.PlayerDefaults) if GetResourceState('qb-inventory') ~= 'missing' then From 3d6760b4020547d7dce6369125644886e161a095 Mon Sep 17 00:00:00 2001 From: Zerio Date: Sun, 26 May 2024 07:55:11 +0200 Subject: [PATCH 2/3] fix: what should happen for non existant jobs? --- server/player.lua | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/server/player.lua b/server/player.lua index 4f502c0..db37017 100644 --- a/server/player.lua +++ b/server/player.lua @@ -100,7 +100,7 @@ function QBCore.Player.CheckPlayerData(source, PlayerData) PlayerData.name = GetPlayerName(source) end - -- todo, what should happen if the job doesnt exist? + local validatedJob = false if PlayerData.job and PlayerData.job.name ~= nil and PlayerData.job.grade and PlayerData.job.grade.level ~= nil then local jobInfo = QBCore.Shared.Jobs[PlayerData.job.name] @@ -112,11 +112,15 @@ function QBCore.Player.CheckPlayerData(source, PlayerData) PlayerData.job.payment = jobGradeInfo.payment PlayerData.job.grade.isboss = jobGradeInfo.isboss or false PlayerData.job.isboss = jobGradeInfo.isboss or false + validatedJob = true end end end - -- todo, fix same thing as above, but for the gang data + if validatedJob == false then + -- set to nil, as the default job (unemployed) will be added by `applyDefaults` + PlayerData.job = nil + end applyDefaults(PlayerData, QBCore.Config.Player.PlayerDefaults) From 5d2ee040b30ba26ece485035d95d53e9a9402d99 Mon Sep 17 00:00:00 2001 From: Zerio Date: Sun, 26 May 2024 07:55:38 +0200 Subject: [PATCH 3/3] feat: add same validation for gangs as for job --- server/player.lua | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/server/player.lua b/server/player.lua index db37017..7b3363f 100644 --- a/server/player.lua +++ b/server/player.lua @@ -122,6 +122,28 @@ function QBCore.Player.CheckPlayerData(source, PlayerData) PlayerData.job = nil end + local validatedGang = false + if PlayerData.gang and PlayerData.gang.name ~= nil and PlayerData.gang.grade and PlayerData.gang.grade.level ~= nil then + local gangInfo = QBCore.Shared.Gangs[PlayerData.gang.name] + + if gangInfo then + local gangGradeInfo = gangInfo.grades[tostring(PlayerData.gang.grade.level)] + if gangGradeInfo then + PlayerData.gang.label = gangInfo.label + PlayerData.gang.grade.name = gangGradeInfo.name + PlayerData.gang.payment = gangGradeInfo.payment + PlayerData.gang.grade.isboss = gangGradeInfo.isboss or false + PlayerData.gang.isboss = gangGradeInfo.isboss or false + validatedGang = true + end + end + end + + if validatedGang == false then + -- set to nil, as the default gang (unemployed) will be added by `applyDefaults` + PlayerData.gang = nil + end + applyDefaults(PlayerData, QBCore.Config.Player.PlayerDefaults) if GetResourceState('qb-inventory') ~= 'missing' then