if not Framework.QBCore() then return end local client = client local QBCore = exports["qb-core"]:GetCoreObject() local PlayerData = QBCore.Functions.GetPlayerData() local function getRankInputValues(rankList) local rankValues = {} for k, v in pairs(rankList) do rankValues[#rankValues + 1] = { label = v.name, value = k } end return rankValues end local function setClientParams() client.job = PlayerData.job client.gang = PlayerData.gang client.citizenid = PlayerData.citizenid end function Framework.GetPlayerGender() if PlayerData.charinfo.gender == 1 then return "Female" end return "Male" end function Framework.UpdatePlayerData() PlayerData = QBCore.Functions.GetPlayerData() setClientParams() end function Framework.HasTracker() return QBCore.Functions.GetPlayerData().metadata["tracker"] end function Framework.CheckPlayerMeta() return PlayerData.metadata["isdead"] or PlayerData.metadata["inlaststand"] or PlayerData.metadata["ishandcuffed"] end function Framework.IsPlayerAllowed(citizenid) return citizenid == PlayerData.citizenid end function Framework.GetRankInputValues(type) local grades = QBCore.Shared.Jobs[client.job.name].grades if type == "gang" then grades = QBCore.Shared.Gangs[client.gang.name].grades end return getRankInputValues(grades) end function Framework.GetJobGrade() return client.job.grade.level end function Framework.GetGangGrade() return client.gang.grade.level end RegisterNetEvent("QBCore:Client:OnJobUpdate", function(JobInfo) PlayerData.job = JobInfo client.job = JobInfo ResetBlips() end) RegisterNetEvent("QBCore:Client:OnGangUpdate", function(GangInfo) PlayerData.gang = GangInfo client.gang = GangInfo ResetBlips() end) RegisterNetEvent("QBCore:Client:SetDuty", function(duty) if PlayerData and PlayerData.job then PlayerData.job.onduty = duty client.job = PlayerData.job end end) RegisterNetEvent("QBCore:Client:OnPlayerLoaded", function() InitAppearance() end) RegisterNetEvent("qb-clothes:client:CreateFirstCharacter", function() QBCore.Functions.GetPlayerData(function(pd) PlayerData = pd setClientParams() InitializeCharacter(Framework.GetGender(true)) end) end) function Framework.CachePed() return nil end function Framework.RestorePlayerArmour() Framework.UpdatePlayerData() if PlayerData and PlayerData.metadata then Wait(1000) SetPedArmour(cache.ped, PlayerData.metadata["armor"]) end end