167 lines
No EOL
5.7 KiB
Lua
167 lines
No EOL
5.7 KiB
Lua
-- Initialize global variables to store framework & inventory
|
|
Framework, Inventory = nil, nil
|
|
|
|
-- Initialize global player variables
|
|
PlayerLoaded, PlayerData = nil, {}
|
|
|
|
-- Get framework
|
|
local function InitializeFramework()
|
|
if GetResourceState('es_extended') == 'started' then
|
|
ESX = exports['es_extended']:getSharedObject()
|
|
Framework = 'esx'
|
|
|
|
RegisterNetEvent('esx:playerLoaded', function(xPlayer)
|
|
PlayerData = xPlayer
|
|
PlayerLoaded = true
|
|
TriggerEvent('lation_247robbery:onPlayerLoaded')
|
|
end)
|
|
|
|
RegisterNetEvent('esx:onPlayerLogout', function()
|
|
table.wipe(PlayerData)
|
|
PlayerLoaded = false
|
|
end)
|
|
|
|
AddEventHandler('onResourceStart', function(resourceName)
|
|
if GetCurrentResourceName() ~= resourceName then return end
|
|
PlayerData = GetPlayerData()
|
|
PlayerLoaded = true
|
|
TriggerEvent('lation_247robbery:onPlayerLoaded')
|
|
end)
|
|
|
|
elseif GetResourceState('qbx_core') == 'started' then
|
|
Framework = 'qbx'
|
|
|
|
AddEventHandler('QBCore:Client:OnPlayerLoaded', function()
|
|
PlayerData = GetPlayerData()
|
|
PlayerLoaded = true
|
|
TriggerEvent('lation_247robbery:onPlayerLoaded')
|
|
end)
|
|
|
|
RegisterNetEvent('qbx_core:client:playerLoggedOut', function()
|
|
table.wipe(PlayerData)
|
|
PlayerLoaded = false
|
|
end)
|
|
|
|
AddEventHandler('onResourceStart', function(resourceName)
|
|
if GetCurrentResourceName() ~= resourceName then return end
|
|
PlayerData = GetPlayerData()
|
|
PlayerLoaded = true
|
|
TriggerEvent('lation_247robbery:onPlayerLoaded')
|
|
end)
|
|
elseif GetResourceState('qb-core') == 'started' then
|
|
QBCore = exports['qb-core']:GetCoreObject()
|
|
Framework = 'qb'
|
|
|
|
AddEventHandler('QBCore:Client:OnPlayerLoaded', function()
|
|
PlayerData = GetPlayerData()
|
|
PlayerLoaded = true
|
|
TriggerEvent('lation_247robbery:onPlayerLoaded')
|
|
end)
|
|
|
|
RegisterNetEvent('QBCore:Client:OnPlayerUnload', function()
|
|
table.wipe(PlayerData)
|
|
PlayerLoaded = false
|
|
end)
|
|
|
|
AddEventHandler('onResourceStart', function(resourceName)
|
|
if GetCurrentResourceName() ~= resourceName then return end
|
|
PlayerData = GetPlayerData()
|
|
PlayerLoaded = true
|
|
TriggerEvent('lation_247robbery:onPlayerLoaded')
|
|
end)
|
|
elseif GetResourceState('ox_core') == 'started' then
|
|
Ox = require '@ox_core.lib.init'
|
|
Framework = 'ox'
|
|
|
|
AddEventHandler('ox:playerLoaded', function()
|
|
PlayerData = GetPlayerData()
|
|
PlayerLoaded = true
|
|
TriggerEvent('lation_247robbery:onPlayerLoaded')
|
|
end)
|
|
|
|
AddEventHandler('ox:playerLogout', function()
|
|
table.wipe(PlayerData)
|
|
PlayerLoaded = false
|
|
end)
|
|
|
|
AddEventHandler('onResourceStart', function(resourceName)
|
|
if GetCurrentResourceName() ~= resourceName then return end
|
|
PlayerData = GetPlayerData()
|
|
PlayerLoaded = true
|
|
TriggerEvent('lation_247robbery:onPlayerLoaded')
|
|
end)
|
|
else
|
|
-- Add custom framework here
|
|
end
|
|
end
|
|
|
|
-- Get inventory
|
|
local function InitializeInventory()
|
|
if GetResourceState('ox_inventory') == 'started' then
|
|
Inventory = 'ox_inventory'
|
|
elseif GetResourceState('qb-inventory') == 'started' then
|
|
Inventory = 'qb-inventory'
|
|
elseif GetResourceState('qs-inventory') == 'started' then
|
|
Inventory = 'qs-inventory'
|
|
elseif GetResourceState('ps-inventory') == 'started' then
|
|
Inventory = 'ps-inventory'
|
|
elseif GetResourceState('origen_inventory') == 'started' then
|
|
Inventory = 'origen_inventory'
|
|
elseif GetResourceState('codem-inventory') == 'started' then
|
|
Inventory = 'codem-inventory'
|
|
elseif GetResourceState('core_inventory') == 'started' then
|
|
Inventory = 'core_inventory'
|
|
else
|
|
-- Add custom inventory here
|
|
end
|
|
end
|
|
|
|
-- Returns player data
|
|
function GetPlayerData()
|
|
if Framework == 'esx' then
|
|
return ESX.GetPlayerData()
|
|
elseif Framework == 'qb' then
|
|
return QBCore.Functions.GetPlayerData()
|
|
elseif Framework == 'qbx' then
|
|
return exports.qbx_core:GetPlayerData()
|
|
elseif Framework == 'ox' then
|
|
return Ox.GetPlayer()
|
|
else
|
|
-- Add custom framework here
|
|
end
|
|
end
|
|
|
|
-- Returns boolean if player has specified amount of item
|
|
--- @param item string
|
|
--- @param amount number
|
|
--- @return boolean
|
|
function HasItem(item, amount)
|
|
if not item or not amount then return false end
|
|
if Inventory then
|
|
if Inventory == 'ox_inventory' then
|
|
return exports[Inventory]:Search('count', item) >= amount
|
|
elseif Inventory == 'core_inventory' then
|
|
return exports[Inventory]:hasItem(item, amount)
|
|
else
|
|
return exports[Inventory]:HasItem(item, amount)
|
|
end
|
|
else
|
|
local player = GetPlayerData()
|
|
if not player then return false end
|
|
local inventory = Framework == 'esx' and player.inventory or player.items
|
|
if not inventory then return false end
|
|
for _, item_data in pairs(inventory) do
|
|
if item_data and item_data.name == item then
|
|
local count = item_data.amount or item_data.count or 0
|
|
if count >= amount then
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
end
|
|
|
|
-- Initialize defaults
|
|
InitializeFramework()
|
|
InitializeInventory() |