as nil value check for hasJob() function

Should now properly check if the player hasn't got `playerData` from loading in fully and just return that they don't have the requested job
This commit is contained in:
Jim Shield
2025-10-24 13:23:05 +01:00
parent a9403e5513
commit 18ecc1429e

View File

@@ -439,7 +439,10 @@ local hasGroupFunc = {
function(group, grade, src) function(group, grade, src)
local hasJobFlag, duty = false, true local hasJobFlag, duty = false, true
local playerInfo = GetPlayer(src) local playerInfo = GetPlayer(src)
local jobinfo = playerInfo.job or playerInfo.PlayerData.job if not playerInfo then
goto skip
end
local jobinfo = playerInfo and playerInfo.job or playerInfo.PlayerData.job
if jobinfo and jobinfo.name == group then if jobinfo and jobinfo.name == group then
hasJobFlag = true hasJobFlag = true
duty = jobinfo.onduty duty = jobinfo.onduty
@@ -448,7 +451,7 @@ local hasGroupFunc = {
end end
return hasJobFlag, duty return hasJobFlag, duty
end end
local ganginfo = playerInfo.gang or playerInfo.PlayerData.gang local ganginfo = playerInfo and playerInfo.gang or playerInfo.PlayerData.gang
if ganginfo and ganginfo.name == group then if ganginfo and ganginfo.name == group then
hasJobFlag = true hasJobFlag = true
if grade and not (grade <= ganginfo.grade.level) then if grade and not (grade <= ganginfo.grade.level) then
@@ -456,6 +459,7 @@ local hasGroupFunc = {
end end
return hasJobFlag, duty return hasJobFlag, duty
end end
::skip::
return hasJobFlag, duty return hasJobFlag, duty
end, end,
}, },
@@ -465,7 +469,10 @@ local hasGroupFunc = {
function(group, grade, src) function(group, grade, src)
local hasJobFlag, duty = false, true local hasJobFlag, duty = false, true
local playerInfo = GetPlayer(src) local playerInfo = GetPlayer(src)
local jobinfo = playerInfo.job or playerInfo.PlayerData.job if not playerInfo then
goto skip
end
local jobinfo = playerInfo and playerInfo.job or playerInfo.PlayerData.job
if jobinfo and jobinfo.name == group then if jobinfo and jobinfo.name == group then
hasJobFlag = true hasJobFlag = true
duty = jobinfo.onduty duty = jobinfo.onduty
@@ -473,13 +480,14 @@ local hasGroupFunc = {
hasJobFlag = false hasJobFlag = false
end end
end end
local ganginfo = playerInfo.gang or playerInfo.PlayerData.gang local ganginfo = playerInfo and playerInfo.gang or playerInfo.PlayerData.gang
if ganginfo and ganginfo.name == group then if ganginfo and ganginfo.name == group then
hasJobFlag = true hasJobFlag = true
if grade and not (grade <= ganginfo.grade.level) then if grade and not (grade <= ganginfo.grade.level) then
hasJobFlag = false hasJobFlag = false
end end
end end
::skip::
return hasJobFlag, duty return hasJobFlag, duty
end, end,
}, },
@@ -508,9 +516,11 @@ local hasGroupFunc = {
hasGroup = hasGroup =
function(group, grade, src) function(group, grade, src)
local hasJobFlag, duty = false, true local hasJobFlag, duty = false, true
local playerInfo = GetPlayer(src) local playerInfo = GetPlayer(src)
local info = playerInfo.job if not playerInfo then
goto skip
end
local info = playerInfo and playerInfo.job
while not info do while not info do
info = GetPlayer(src).job info = GetPlayer(src).job
Wait(100) Wait(100)
@@ -518,7 +528,7 @@ local hasGroupFunc = {
if info.name == group then if info.name == group then
hasJobFlag = true hasJobFlag = true
end end
::skip::
return hasJobFlag, duty return hasJobFlag, duty
end, end,
}, },
@@ -528,7 +538,10 @@ local hasGroupFunc = {
function(group, grade, src) function(group, grade, src)
local hasJobFlag, duty = false, true local hasJobFlag, duty = false, true
local playerInfo = GetPlayer(src) local playerInfo = GetPlayer(src)
local jobinfo = playerInfo.job or playerInfo.PlayerData.job if not playerInfo then
goto skip
end
local jobinfo = playerInfo and playerInfo.job or playerInfo.PlayerData.job
if jobinfo and jobinfo.name == group then if jobinfo and jobinfo.name == group then
hasJobFlag = true hasJobFlag = true
duty = jobinfo.onduty duty = jobinfo.onduty
@@ -536,13 +549,14 @@ local hasGroupFunc = {
hasJobFlag = false hasJobFlag = false
end end
end end
local ganginfo = playerInfo.gang or playerInfo.PlayerData.gang local ganginfo = playerInfo and playerInfo.gang or playerInfo.PlayerData.gang
if ganginfo and ganginfo.name == group then if ganginfo and ganginfo.name == group then
hasJobFlag = true hasJobFlag = true
if grade and not (grade <= ganginfo.grade.level) then if grade and not (grade <= ganginfo.grade.level) then
hasJobFlag = false hasJobFlag = false
end end
end end
::skip::
return hasJobFlag, duty return hasJobFlag, duty
end, end,
}, },