Actual working checks for hasJob()

`goto skip` is weird.
This commit is contained in:
Jim Shield
2025-10-24 14:25:17 +01:00
parent 18ecc1429e
commit 960f73ad6d
2 changed files with 40 additions and 34 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,27 +439,30 @@ 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)
if not playerInfo then local jobInfo, gangInfo = nil, nil
goto skip if next(playerInfo) then
jobInfo = playerInfo.job
gangInfo = playerInfo.gang
if playerInfo.PlayerData then
jobInfo = playerInfo.PlayerData.job
gangInfo = playerInfo.PlayerData.gang
end
end 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
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 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
return hasJobFlag, duty return hasJobFlag, duty
end end
::skip::
return hasJobFlag, duty return hasJobFlag, duty
end, end,
}, },
@@ -469,21 +472,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)
if not playerInfo then local jobInfo, gangInfo = nil, nil
goto skip if next(playerInfo) then
jobInfo = playerInfo.job
gangInfo = playerInfo.gang
if playerInfo.PlayerData then
jobInfo = playerInfo.PlayerData.job
gangInfo = playerInfo.PlayerData.gang
end
end 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
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 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
@@ -517,9 +524,6 @@ 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)
if not playerInfo then
goto skip
end
local info = playerInfo and playerInfo.job local info = playerInfo and playerInfo.job
while not info do while not info do
info = GetPlayer(src).job info = GetPlayer(src).job
@@ -528,7 +532,6 @@ 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,
}, },
@@ -538,25 +541,28 @@ 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)
if not playerInfo then local jobInfo, gangInfo = nil, nil
goto skip if next(playerInfo) then
jobInfo = playerInfo.job
gangInfo = playerInfo.gang
if playerInfo.PlayerData then
jobInfo = playerInfo.PlayerData.job
gangInfo = playerInfo.PlayerData.gang
end
end 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
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 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,
}, },