cl_utils.lua
Framework = "qb"
local Core
local loadEvent = "QBCore:Client:OnPlayerLoaded"
local jobEvent = "QBCore:Client:OnJobUpdate"
local moneyEvent = "QBCore:Client:OnMoneyChange"
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"
moneyEvent = "esx:setAccountMoney"
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 = ESX.PlayerData.firstName
local lastName = ESX.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()
local jobName = ""
if Framework == "qb" then
local Player = Core.Functions.GetPlayerData()
local job = Player.job.label
local grade = Player.job.grade.name
jobName = job .. " | " .. grade
return jobName
elseif Framework == "esx" then
local job = Core.PlayerData.job.label
local grade = Core.PlayerData.job.grade_name
jobName = job .. " | " .. grade
return jobName
elseif Framework == "qbx" then
local Player = Core:GetPlayerData()
local job = Player.job.label
local grade = Player.job.grade.name
jobName = job .. " | " .. grade
return jobName
else
--Custom Framework here
return "Unknown"
end
end
function GetPlayerMoney()
local cash, bank = 0, 0
if Framework == "qb" then
local Player = Core.Functions.GetPlayerData()
cash = Player.money.cash
bank = Player.money.bank
elseif Framework == "qbx" then
local Player = Core:GetPlayerData()
cash = Player.money.cash
bank = Player.money.bank
elseif Framework == "esx" then
local Account = Core.PlayerData.accounts
for k,v in pairs(Account) do
if v.name == "money" then
cash = v.money
elseif v.name == "bank" then
bank = v.money
end
end
end
return cash, bank
end
function GetPlayerStats()
local hunger, thirst = 0, 0
if Framework == "qb" then
local Player = Core.Functions.GetPlayerData()
hunger = Player.metadata.hunger
thirst = Player.metadata.thirst
elseif Framework == "qbx" then
local Player = Core:GetPlayerData()
hunger = Player.metadata.hunger
thirst = Player.metadata.thirst
elseif Framework == "esx" then
return 0, 0
end
return hunger, thirst
end
RegisterNetEvent(loadEvent)
AddEventHandler(loadEvent, function()
initializeHud()
end)
RegisterNetEvent(jobEvent)
AddEventHandler(jobEvent, function(job)
local joblabel = ""
if Framework == "qb" or Framework == "qbx" then
joblabel = job.label .. " | " .. job.grade.name
elseif Framework == "esx" then
Wait(500)
joblabel = Core.PlayerData.job.label .. " | " .. Core.PlayerData.job.grade_name
end
updateJobHud(joblabel)
end)
RegisterNetEvent(moneyEvent)
AddEventHandler(moneyEvent, function()
local cash, bank = 0, 0
if Framework == "qb" then
local Player = Core.Functions.GetPlayerData()
cash = Player.money.cash
bank = Player.money.bank
elseif Framework == "qbx" then
local Player = Core:GetPlayerData()
cash = Player.money.cash
bank = Player.money.bank
elseif Framework == "esx" then
local Account = Core.PlayerData.accounts
for k, account in pairs(Account) do
if account.name == "bank" then
bank = account.money
elseif account.name == "money" then
cash = account.money
end
end
end
updateMoneyHud(cash, bank)
end)
if Framework == "qbx" or Framework == "qb" then
RegisterNetEvent('hud:client:UpdateNeeds')
AddEventHandler('hud:client:UpdateNeeds', function(newHunger, newThirst)
updateNeeds(newHunger, newThirst)
end)
elseif Framework == 'esx' then
RegisterNetEvent("esx_status:onTick")
AddEventHandler("esx_status:onTick", function(data)
local hunger, thirst
for i = 1, #data do
if data[i].name == "thirst" then
thirst = math.floor(data[i].percent)
end
if data[i].name == "hunger" then
hunger = math.floor(data[i].percent)
end
end
updateNeeds(hunger, thirst)
end)
end
RegisterNetEvent("onClientResourceStart")
AddEventHandler("onClientResourceStart", function(resource)
if resource ~= GetCurrentResourceName() then return end
if Config.testMode then
Wait(300)
initializeHud()
end
end)
Last updated