79 lines
2.3 KiB
Lua
79 lines
2.3 KiB
Lua
local QBCore = exports['qb-core']:GetCoreObject()
|
|
|
|
local success, result = pcall(function()
|
|
return QBCore.Functions.GetPlayerData()
|
|
end)
|
|
|
|
local playerData = success and result or {}
|
|
local utils = require 'client.utils'
|
|
local playerItems = utils.getItems()
|
|
|
|
local function setPlayerItems()
|
|
if not playerData?.items then return end
|
|
|
|
table.wipe(playerItems)
|
|
|
|
for _, item in pairs(playerData.items) do
|
|
playerItems[item.name] = (playerItems[item.name] or 0) + item.amount
|
|
end
|
|
end
|
|
|
|
local usingOxInventory = utils.hasExport('ox_inventory.Items')
|
|
|
|
if not usingOxInventory then
|
|
setPlayerItems()
|
|
end
|
|
|
|
AddEventHandler('QBCore:Client:OnPlayerLoaded', function()
|
|
playerData = QBCore.Functions.GetPlayerData()
|
|
if not usingOxInventory then setPlayerItems() end
|
|
end)
|
|
|
|
RegisterNetEvent('QBCore:Player:SetPlayerData', function(val)
|
|
if source == '' then return end
|
|
|
|
playerData = val
|
|
|
|
if not usingOxInventory then setPlayerItems() end
|
|
end)
|
|
|
|
---@diagnostic disable-next-line: duplicate-set-field
|
|
function utils.hasPlayerGotGroup(filter)
|
|
local _type = type(filter)
|
|
|
|
if _type == 'string' then
|
|
local job = playerData.job.name == filter
|
|
local gang = playerData.gang.name == filter
|
|
local citizenId = playerData.citizenid == filter
|
|
|
|
if job or gang or citizenId 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 job = playerData.job.name == name
|
|
local gang = playerData.gang.name == name
|
|
local citizenId = playerData.citizenid == name
|
|
|
|
if job and grade <= playerData.job.grade.level or gang and grade <= playerData.gang.grade.level or citizenId then
|
|
return true
|
|
end
|
|
end
|
|
elseif tabletype == 'array' then
|
|
for i = 1, #filter do
|
|
local name = filter[i]
|
|
local job = playerData.job.name == name
|
|
local gang = playerData.gang.name == name
|
|
local citizenId = playerData.citizenid == name
|
|
|
|
if job or gang or citizenId then
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|