if Config.Framework ~= "qb" and Config.Framework ~= "qbx" then return end debugprint("Loading QBX/QB") local QB = exports['qb-core']:GetCoreObject() RegisterNetEvent('QBCore:Client:OnPlayerLoaded', function() debugprint("QB Player Loaded, triggering tablet initialization") TriggerEvent('gkstablet:client:onCharacterSelected') end) function GetCharacterInfo() local data = { name = "Unknown", phoneNumber = "1234567890", birthDate = "1999-01-01", bank = 0, jobLabel = "Civilian", gradeLabel = "Unemployed", jobName = "", charLicenses = {}, } local PlayerData = QB.Functions.GetPlayerData() if PlayerData then data.name = PlayerData.charinfo.firstname .. " " .. PlayerData.charinfo.lastname data.phoneNumber = PlayerData.charinfo.phone data.birthDate = PlayerData.charinfo.birthdate data.bank = PlayerData.money.bank data.jobLabel = PlayerData.job.label data.jobName = PlayerData.job.name data.gradeLabel = PlayerData.job.grade.name local licenses = AwaitCallback("gkstablet:server:license:getLicenses") or {} debugprint("Loaded character licenses:", licenses) for licenseKey, license in pairs(licenses) do local key = nil if type(license) == "table" then key = license.label or license.type or license.name elseif type(licenseKey) == "string" and license then key = licenseKey elseif type(license) == "string" then key = license end if key then data.charLicenses[key] = true else debugprint("Unknown license key:", license) end end end return data end AddEventHandler('onResourceStart', function(resourceName) if GetCurrentResourceName() ~= resourceName then return end -- Player may already be loaded after script restart Wait(1000) local PlayerData = QB.Functions.GetPlayerData() if PlayerData and PlayerData.citizenid then debugprint("QB Player already loaded on resource start, triggering tablet initialization") TriggerEvent('gkstablet:client:onCharacterSelected') end end) function GetPlayerJob() local PlayerData = QB.Functions.GetPlayerData() return PlayerData and PlayerData.job or nil end RegisterNetEvent('QBCore:Client:OnJobUpdate', function(JobInfo) TriggerEvent('gkstablet:client:onJobUpdate', JobInfo) end)