QBOX

CreateThread(function()
    if Config.framework ~= 'QBox' then return end
    
    QBCore = exports['qbx_core']:GetCoreObject()
    
    -- GetPlayer
    function GetPlayer(source)
        return QBCore.Functions.GetPlayer(source)
    end
    
    -- CreateUseableItem
    function CreateUseableItem(itemName, callback)
        QBCore.Functions.CreateUseableItem(itemName, callback)
    end
    
    -- GetPlayerJobName
    function GetPlayerJobName(source)
        local Player = GetPlayer(source)
        if Player and Player.PlayerData and Player.PlayerData.job and Player.PlayerData.job.name then
            return Player.PlayerData.job.name
        end
        return nil
    end
    
    -- GetPlayerJobGrade
    function GetPlayerJobGrade(source)
        local Player = GetPlayer(source)
        if Player and Player.PlayerData and Player.PlayerData.job and Player.PlayerData.job.grade and Player.PlayerData.job.grade.level then
            return Player.PlayerData.job.grade.level
        end
        return nil
    end
    
    -- AddItem
    function AddItem(source, itemName, amount, info)
        local Player = GetPlayer(source)
        if Player then
            if info then
                return Player.Functions.AddItem(itemName, amount, nil, info)
            else
                return Player.Functions.AddItem(itemName, amount)
            end
        end
        return false
    end
    
    -- RemoveItem
    function RemoveItem(source, itemName, amount, slot)
        local Player = GetPlayer(source)
        if Player then
            return Player.Functions.RemoveItem(itemName, amount, slot)
        end
        return false
    end

    -- SetItemMetadata
    function SetItemMetadata(source, itemName, slot, info)
        local Player = GetPlayer(source)
        if Player then
            if Player.Functions.RemoveItem(itemName, 1, slot) then
                return Player.Functions.AddItem(itemName, 1, slot, info)
            end
        end
        return false
    end
    
    -- GetItemByName
    function GetItemByName(source, itemName)
        local Player = GetPlayer(source)
        if Player then
            return Player.Functions.GetItemByName(itemName)
        end
        return nil
    end
    
    -- GetItemsByName (QBox specific - returns array)
    function GetItemsByName(source, itemName)
        local Player = GetPlayer(source)
        if Player then
            return Player.Functions.GetItemsByName(itemName)
        end
        return {}
    end
    
    -- GetPlayerData for metadata access
    function GetPlayerData(source)
        local Player = GetPlayer(source)
        if Player then
            return Player.PlayerData
        end
        return nil
    end
    
    -- AddMoney
    function AddMoney(source, moneyType, amount)
        local Player = GetPlayer(source)
        if Player then
            local typeToUse = moneyType or Config.MoneyType or 'cash'
            return Player.Functions.AddMoney(typeToUse, amount)
        end
        return false
    end
    
    -- RemoveMoney
    function RemoveMoney(source, moneyType, amount)
        local Player = GetPlayer(source)
        if Player then
            local typeToUse = moneyType or Config.MoneyType or 'cash'
            return Player.Functions.RemoveMoney(typeToUse, amount)
        end
        return false
    end
    
    -- GetSharedItem
    function GetSharedItem(itemName)
        if QBCore.Shared.Items and QBCore.Shared.Items[itemName] then
            return QBCore.Shared.Items[itemName]
        end
        return nil
    end
    
    -- Notify
    function Notify(source, message, theme, duration)
        TriggerClientEvent('qbx_lib:notify', source, {
            title = 'Trรฉsor',
            description = message,
            type = theme or 'primary',
            duration = duration or 5000
        })
    end
    
    -- GetPlayerMoney
    function GetPlayerMoney(source, moneyType)
        local Player = GetPlayer(source)
        local typeToUse = moneyType or Config.MoneyType or 'cash'
        if Player and Player.PlayerData and Player.PlayerData.money and Player.PlayerData.money[typeToUse] then
            return Player.PlayerData.money[typeToUse]
        end
        return 0
    end
end)

Last updated