diff --git a/imports/getCore/es_extended/client.lua b/imports/getCore/es_extended/client.lua index 5219f24..b086c5f 100644 --- a/imports/getCore/es_extended/client.lua +++ b/imports/getCore/es_extended/client.lua @@ -11,28 +11,30 @@ return function(resource) ESX.PlayerData.job = job end) - lib.addPlayerMethod('hasGroup', function(self, filter) + lib.addPlayerMethod('hasGroup', function(_, filter) + local data = ESX.PlayerData local type = type(filter) if type == 'string' then - return ESX.PlayerData.job.name == filter - end + if data.job.name == filter then + return data.job.name, data.job.grade + end + else + local tabletype = table.type(filter) - local tabletype = table.type(filter) + if tabletype == 'hash' then + local grade = filter[data.job.name] - if tabletype == 'hash' then - local grade = filter[ESX.PlayerData.job.name] - return grade and grade <= ESX.PlayerData.job.grade - end - - if tabletype == 'array' then - for i = 1, #filter do - if ESX.PlayerData.job.name == filter[i] then - return true + if grade and grade <= data.job.grade then + return data.job.name, data.job.grade + end + elseif tabletype == 'array' then + for i = 1, #filter do + if data.job.name == filter[i] then + return data.job.name, data.job.grade + end end end - - return false end end) diff --git a/imports/getCore/qb-core/client.lua b/imports/getCore/qb-core/client.lua index 03e0d1a..b6151b6 100644 --- a/imports/getCore/qb-core/client.lua +++ b/imports/getCore/qb-core/client.lua @@ -16,41 +16,44 @@ return function(resource) PlayerData.gang = gang end) - lib.addPlayerMethod('hasGroup', function(self, filter) + local groups = { 'job', 'gang' } + + lib.addPlayerMethod('hasGroup', function(_, filter) local type = type(filter) if type == 'string' then - return PlayerData.job.name == filter or PlayerData.gang.name == filter - end + for i = 1, #groups do + local data = PlayerData[groups[i]] - local tabletype = table.type(filter) - - if tabletype == 'hash' then - local jobGrade = filter[PlayerData.job.name] - - if jobGrade then - return jobGrade <= PlayerData.job.grade - end - - local gangGrade = filter[PlayerData.gang.name] - - if gangGrade then - return gangGrade <= PlayerData.gang.grade - end - - return false - end - - if tabletype == 'array' then - for i = 1, #filter do - local group = filter[i] - - if PlayerData.job.name == group or PlayerData.gang.name == group then - return true + if data.name == filter then + return data.name, data.grade.level end end + else + local tabletype = table.type(filter) - return false + if tabletype == 'hash' then + for i = 1, #groups do + local data = PlayerData[groups[i]] + local grade = filter[data.name] + + if grade and grade <= data.grade.level then + return data.name, data.grade.level + end + end + elseif tabletype == 'array' then + for i = 1, #filter do + local group = filter[i] + + for j = 1, #groups do + local data = PlayerData[groups[j]] + + if data.name == group then + return data.group.name, data.grade.level + end + end + end + end end end) diff --git a/init.lua b/init.lua index 5ebb0b8..688be88 100644 --- a/init.lua +++ b/init.lua @@ -158,6 +158,8 @@ local cache = setmetatable({}, { self.serverId = GetPlayerServerId(self.playerId) end + self.resource = GetCurrentResourceName() + if ox.groups then self.groups = setmetatable({}, { __index = function(groups, index)