Page cover image

cl_utils.lua

editable/cl_utils.lua
Framework = "qb"
local Core
local loadEvent = "QBCore:Client:OnPlayerLoaded"
local jobEvent = "QBCore:Client:OnJobUpdate"

if GetResourceState("qbx_core") == "started" or Config.framework == "qbx" then
    Framework = "qbx"
    Core = exports.qbx_core
    lib.print.info("Detected Framework: QBOX")

elseif GetResourceState("es_extended") == "started" or Config.framework == "esx" then
    Framework = "esx"
    Core = ESX
    loadEvent = 'esx:playerLoaded'
    jobEvent = "esx:setJob"
    lib.print.info("Detected Framework: ESX")
elseif GetResourceState("qb-core") == "started" or Config.framework == "qb" then 
    Framework = "qb"
    Core = exports['qb-core']:GetCoreObject()
    lib.print.info("Detected Framework: QB")
else
    Framework = Config.framework
end 

function GetPlayerCharName()
    if Framework == "qb" then 
        local Player = Core.Functions.GetPlayerData()
        local firstName = Player.charinfo.firstname
        local lastName = Player.charinfo.lastname
        return firstName .. " " .. lastName
    elseif Framework == "esx" then 
        local firstName = Core.PlayerData.firstName
        local lastName = Core.PlayerData.lastName
        return firstName .. " " .. lastName
    elseif Framework == "qbx" then 
        local Player = Core:GetPlayerData()
        local firstName = Player.charinfo.firstname
        local lastName = Player.charinfo.lastname
        return firstName .. " " .. lastName
    else 
        --Custom Framework here
        return "Unknown"
    end
end

function GetPlayerJob()
    if Framework == "qb" then 
        local Player = Core.Functions.GetPlayerData()
        local job = Player.job.name
        local gradelabel = Player.job.grade.name
        return job, gradelabel
    elseif Framework == "esx" then 
        local job = Core.PlayerData.job.name
        local gradelabel = Core.PlayerData.job.grade_name
        return job, gradelabel
    elseif Framework == "qbx" then 
        local Player = Core:GetPlayerData()
        local job = Player.job.name
        local gradelabel = Player.job.grade.name
        return job, gradelabel
    else 
        --Custom Framework here
        return "Unknown"
    end
end

function Notify(text, type)
    local jobName = ""
    if Framework == "qb" then 
        Core.Functions.Notify(text, type)
    elseif Framework == "esx" then 
        Core.ShowNotification(text)
    elseif Framework == "qbx" then 
        Core:Notify(text, type)
    else 
        --Custom Framework here
    end
end

function checkItem(itemName)
    if Framework == "qb" then 
        local hasItem = Core.Functions.HasItem(itemName)
        return hasItem
    elseif Framework == "esx" then 
        local hasItem = Core.SearchInventory(itemName, 1)
        return hasItem >= 1
    elseif Framework == "qbx" then 
        local count = exports.ox_inventory:Search('count', itemName)
        return count >= 1
    else 
        --Custom Framework here
    end
end

RegisterNetEvent(loadEvent)
AddEventHandler(loadEvent, function()
    loadGpsData()
end)

RegisterNetEvent(jobEvent)
AddEventHandler(jobEvent, function(job)
    if Framework == "qb" or Framework == "qbx" then 
        UpdateJob(job.name)
    elseif Framework == "esx" then 
        Wait(500)
        local jobName = Core.PlayerData.job.name
        UpdateJob(jobName)
    end
end)

if GetResourceState("qb-inventory") == "started" or Config.inventory == "qb" then
    RegisterNetEvent('QBCore:Player:SetPlayerData', function(val)
        local src = source
        local hasItem = false
        for _, item in pairs(val.items) do
            if item.name == Config.bodycamItem then
                hasItem = true
                break
            end
        end
        if not hasItem then
            TriggerEvent('cdw-bodycam:client:removedItem')
        end
    end)
end

Last updated