From 960fe4339858569530b3e272124861d2f0cc6116 Mon Sep 17 00:00:00 2001 From: Demigod Date: Mon, 21 Aug 2023 14:52:37 -0700 Subject: [PATCH] refactor(server): remove ox_inventory dependency. added esx/qb support directly --- server/server.lua | 49 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 46 insertions(+), 3 deletions(-) diff --git a/server/server.lua b/server/server.lua index cc34dc1..b4573cf 100644 --- a/server/server.lua +++ b/server/server.lua @@ -1,3 +1,15 @@ +local frameWork = + GetResourceState("es_extended") == "started" and 'esx' + or + GetResourceState("qb-core") == "started" and 'qb' + +local core = + (Bridge.frameWork == "esx" and exports["es_extended"]:getSharedObject()) + or + (Bridge.frameWork == "qb" and exports["qb-core"]:GetCoreObject()) + +local ox_inventory = exports.ox_inventory + local POOL_SIZE = 100 local function tableConcat(t1, t2) @@ -15,6 +27,38 @@ local function shuffle(tbl) return tbl end +local function getPlayer(src) + if not core then return end + + if frameWork == "esx" then + return core.GetPlayerFromId(src) + elseif frameWork == "qb" then + return core.Functions.GetPlayer(src) + end +end + +local function giveItem(src, item, amount, metadata) + if GetResourceState("ox_inventory") == "started" then + if ox_inventory:CanCarryItem(src, item, amount, metadata) then + return ox_inventory:AddItem(src, item, amount, metadata) + else + local dropId = ox_inventory:CreateDropFromPlayer(src) + ox_inventory:AddItem(dropId, item, amount, metadata) + end + return + end + + local Player = getPlayer(src) + + if not Player then return end + + if frameWork == "esx" then + Player.addInventoryItem(item, amount, metadata or {}) + elseif frameWork == "qb" then + Player.Functions.AddItem(item, amount, false, metadata or {}) + end +end + local function generateLootPoolFromCase(case) local pool = {} local desiredCounts = { @@ -79,12 +123,11 @@ RegisterNetEvent('demi_lootbox:getQueuedItem', function() if not playerLootQueue[source] then print("^1 ==================================================================================================") print(('^1 [WARNING]: POSSIBLE CHEATER. Player Source %s triggered lootbox get item event while not in queue') - :format(source)) + :format(source)) print('^1 =================================================================================================') print(('^1 PLAYERS IDENTIFIERS = %s'):format(json.encode(GetPlayerIdentifiers(source), { indent = true }))) print('^1 =================================================================================================') return end - - exports.ox_inventory:AddItem(source, playerLootQueue[source].name, playerLootQueue[source].amount) + giveItem(source, playerLootQueue[source].name, playerLootQueue[source].amount) end)