Compare commits

..

2 Commits

Author SHA1 Message Date
Jim Shield
960f73ad6d Actual working checks for hasJob()
`goto skip` is weird.
2025-10-24 14:25:17 +01:00
Jim Shield
18ecc1429e 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
2025-10-24 13:23:05 +01:00
2 changed files with 45 additions and 25 deletions

View File

@@ -122,7 +122,7 @@ function GetPlayer(source)
return framework.GetPlayer(source) return framework.GetPlayer(source)
end end
end end
return nil return {}
end end
------------------------------------------------------------- -------------------------------------------------------------

View File

@@ -439,19 +439,26 @@ 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 local jobInfo, gangInfo = nil, nil
if jobinfo and jobinfo.name == group then if next(playerInfo) then
jobInfo = playerInfo.job
gangInfo = playerInfo.gang
if playerInfo.PlayerData then
jobInfo = playerInfo.PlayerData.job
gangInfo = playerInfo.PlayerData.gang
end
end
if jobInfo and jobInfo.name == group then
hasJobFlag = true hasJobFlag = true
duty = jobinfo.onduty duty = jobInfo.onduty
if grade and not (grade <= jobinfo.grade.level) then if grade and not (grade <= jobInfo.grade.level) then
hasJobFlag = false hasJobFlag = false
end end
return hasJobFlag, duty return hasJobFlag, duty
end end
local ganginfo = 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
return hasJobFlag, duty return hasJobFlag, duty
@@ -465,21 +472,29 @@ 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 local jobInfo, gangInfo = nil, nil
if jobinfo and jobinfo.name == group then if next(playerInfo) then
jobInfo = playerInfo.job
gangInfo = playerInfo.gang
if playerInfo.PlayerData then
jobInfo = playerInfo.PlayerData.job
gangInfo = playerInfo.PlayerData.gang
end
end
if jobInfo and jobInfo.name == group then
hasJobFlag = true hasJobFlag = true
duty = jobinfo.onduty duty = jobInfo.onduty
if grade and not (grade <= jobinfo.grade.level) then if grade and not (grade <= jobInfo.grade.level) then
hasJobFlag = false hasJobFlag = false
end end
end end
local ganginfo = 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 +523,8 @@ 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 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 +532,6 @@ local hasGroupFunc = {
if info.name == group then if info.name == group then
hasJobFlag = true hasJobFlag = true
end end
return hasJobFlag, duty return hasJobFlag, duty
end, end,
}, },
@@ -528,18 +541,25 @@ 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 local jobInfo, gangInfo = nil, nil
if jobinfo and jobinfo.name == group then if next(playerInfo) then
jobInfo = playerInfo.job
gangInfo = playerInfo.gang
if playerInfo.PlayerData then
jobInfo = playerInfo.PlayerData.job
gangInfo = playerInfo.PlayerData.gang
end
end
if jobInfo and jobInfo.name == group then
hasJobFlag = true hasJobFlag = true
duty = jobinfo.onduty duty = jobInfo.onduty
if grade and not (grade <= jobinfo.grade.level) then if grade and not (grade <= jobInfo.grade.level) then
hasJobFlag = false hasJobFlag = false
end end
end end
local ganginfo = 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