56 lines
1.9 KiB
Lua
56 lines
1.9 KiB
Lua
Framework = Framework or {}
|
|
|
|
local jobsRegisteredTable = {}
|
|
local invertedJobsRegisteredTable = {}
|
|
|
|
---This is an internal function that will be used to retrieve job counts later.
|
|
---@param jobName string
|
|
---@return number
|
|
Framework.GetJobCount = function(jobName)
|
|
return #jobsRegisteredTable[jobName] or 0
|
|
end
|
|
|
|
---This will return a list of player sources for a given job.
|
|
---@param jobName string
|
|
---@return table
|
|
Framework.GetPlayerSourcesByJob = function(jobName)
|
|
if not jobsRegisteredTable[jobName] then return {} end
|
|
return jobsRegisteredTable[jobName]
|
|
end
|
|
|
|
---This will update the cached tables for job counts.
|
|
---This is used to track how many players are in a job.
|
|
---@param src number
|
|
---@param jobName string
|
|
Framework.AddJobCount = function(src, jobName)
|
|
if not jobsRegisteredTable[jobName] then jobsRegisteredTable[jobName] = {} end
|
|
if jobsRegisteredTable[jobName][src] then return false end
|
|
jobsRegisteredTable[jobName][src] = true
|
|
invertedJobsRegisteredTable[src] = jobName
|
|
return true, #jobsRegisteredTable[jobName]
|
|
end
|
|
|
|
---This will return the job name for a given source.
|
|
---This is an internal function that will be used to retrieve job names in situations where player data is unavailable.
|
|
---@param src number
|
|
Framework.SearchJobCountBySource = function(src)
|
|
if not invertedJobsRegisteredTable[src] then return nil end
|
|
return invertedJobsRegisteredTable[src]
|
|
end
|
|
|
|
---This will remove the job count for a given source.
|
|
---@param src number
|
|
---@param jobName string | nil
|
|
Framework.RemoveJobCount = function(src, jobName)
|
|
if not jobName then
|
|
jobName = Framework.SearchJobCountBySource(src)
|
|
end
|
|
if not jobName then return false end
|
|
if not jobsRegisteredTable[jobName] then return false end
|
|
if not jobsRegisteredTable[jobName][src] then return false end
|
|
invertedJobsRegisteredTable[src] = nil
|
|
jobsRegisteredTable[jobName][src] = nil
|
|
return true, #jobsRegisteredTable[jobName]
|
|
end
|
|
|
|
return Framework |