2026-04-14 17:41:39 +02:00

93 lines
2.4 KiB
Lua

local ESX = exports.es_extended:getSharedObject()
local utils = require 'client.utils'
local groups = { 'job', 'job2' }
local playerGroups = {}
local playerItems = utils.getItems()
local usingOxInventory = utils.hasExport('ox_inventory.Items')
local function setPlayerData(playerData)
table.wipe(playerGroups)
table.wipe(playerItems)
for i = 1, #groups do
local group = groups[i]
local data = playerData[group]
if data then
playerGroups[group] = data
end
end
if usingOxInventory or not playerData.inventory then return end
for _, v in pairs(playerData.inventory) do
if v.count > 0 then
playerItems[v.name] = v.count
end
end
end
if ESX.PlayerLoaded then
setPlayerData(ESX.PlayerData)
end
RegisterNetEvent('esx:playerLoaded', function(data)
if source == '' then return end
setPlayerData(data)
end)
RegisterNetEvent('esx:setJob', function(job)
if source == '' then return end
playerGroups.job = job
end)
RegisterNetEvent('esx:setJob2', function(job)
if source == '' then return end
playerGroups.job2 = job
end)
RegisterNetEvent('esx:addInventoryItem', function(name, count)
playerItems[name] = count
end)
RegisterNetEvent('esx:removeInventoryItem', function(name, count)
playerItems[name] = count
end)
---@diagnostic disable-next-line: duplicate-set-field
function utils.hasPlayerGotGroup(filter)
local _type = type(filter)
for i = 1, #groups do
local group = groups[i]
if _type == 'string' then
local data = playerGroups[group]
if filter == data?.name then
return true
end
elseif _type == 'table' then
local tabletype = table.type(filter)
if tabletype == 'hash' then
for name, grade in pairs(filter) do
local data = playerGroups[group]
if data?.name == name and grade <= data.grade then
return true
end
end
elseif tabletype == 'array' then
for j = 1, #filter do
local name = filter[j]
local data = playerGroups[group]
if data?.name == name then
return true
end
end
end
end
end
end