QBCore = exports['qb-core']:GetCoreObject() local StolenDrugs = {} local function getAvailableDrugs(source) local AvailableDrugs = {} local Player = QBCore.Functions.GetPlayer(source) if not Player then print("Player not found!") return nil end -- Retrieve the items from QB Inventory local items = Player.PlayerData.items if not items or not next(items) then print("QB Inventory items not loaded or empty!") return nil end -- Loop through the drugs listed in Config.DrugsPrice and check player's inventory for these items for k in pairs(Config.DrugsPrice) do local item = Player.Functions.GetItemByName(k) if item and item.amount > 0 then table.insert(AvailableDrugs, { item = item.name, amount = item.amount, label = item.label }) end end return #AvailableDrugs > 0 and AvailableDrugs or nil end QBCore.Functions.CreateCallback('qb-drugs:server:cornerselling:getAvailableDrugs', function(source, cb) cb(getAvailableDrugs(source)) end) RegisterNetEvent('qb-drugs:server:giveStealItems', function(drugType, amount) local Player = QBCore.Functions.GetPlayer(source) if not Player or next(StolenDrugs) == nil then return end for k, v in pairs(StolenDrugs) do if drugType == v.item and amount == v.amount then Player.Functions.AddItem(drugType, amount) table.remove(StolenDrugs, k) end end end) RegisterNetEvent('qb-drugs:server:sellCornerDrugs', function(drugType, amount, price) local src = source local Player = QBCore.Functions.GetPlayer(src) local availableDrugs = getAvailableDrugs(src) if not availableDrugs or not Player then return end local drugInfo = availableDrugs[drugType] if not drugInfo then TriggerClientEvent('QBCore:Notify', src, "Drug type not found", 'error') return end local item = drugInfo.item local hasItem = Player.Functions.GetItemByName(item) if hasItem and hasItem.amount >= amount then TriggerClientEvent('QBCore:Notify', src, "Offer accepted", 'success') Player.Functions.RemoveItem(item, amount) Player.Functions.AddMoney('cash', price, "sold-cornerdrugs") TriggerClientEvent('inventory:client:ItemBox', src, QBCore.Shared.Items[item], "remove") TriggerClientEvent('qb-drugs:client:refreshAvailableDrugs', src, getAvailableDrugs(src)) else TriggerClientEvent('qb-drugs:client:cornerselling', src) end end) RegisterNetEvent('qb-drugs:server:robCornerDrugs', function(drugType, amount) local src = source local Player = QBCore.Functions.GetPlayer(src) local availableDrugs = getAvailableDrugs(src) if not availableDrugs or not Player then return end local drugInfo = availableDrugs[drugType] if not drugInfo then TriggerClientEvent('QBCore:Notify', src, "Drug type not found", 'error') return end local item = drugInfo.item Player.Functions.RemoveItem(item, amount) table.insert(StolenDrugs, {item = item, amount = amount}) TriggerClientEvent('inventory:client:ItemBox', src, QBCore.Shared.Items[item], "remove") TriggerClientEvent('qb-drugs:client:refreshAvailableDrugs', src, getAvailableDrugs(src)) end)