bridge/framework/qbcore.lua
-- ==========================================
-- FRAMEWORK BRIDGE — QBCore
-- ==========================================
-- Abstracts QBCore-specific calls so the main script doesn't
-- reference qb-core directly. To support a different framework
-- (ESX, QBox, etc.) duplicate this file and swap the manifest entry.
--
-- Global table: FW
-- ==========================================
FW = {}
local fwName = Config.Setup and Config.Setup.framework or 'qbcore'
print('[fiveous_drones] Framework bridge → ' .. fwName)
-- ==========================================
-- SERVER
-- ==========================================
if IsDuplicityVersion() then
local QBCore = exports['qb-core']:GetCoreObject()
--- Get player citizenid (unique character identifier)
--- @param src number server ID
--- @return string|nil citizenid, or nil if player not loaded
function FW.GetCitizenId(src)
local Player = QBCore.Functions.GetPlayer(src)
if not Player then return nil end
return Player.PlayerData.citizenid
end
--- Get player job table { name, label, grade = { name, level }, ... }
--- @param src number
--- @return table|nil
function FW.GetJob(src)
local Player = QBCore.Functions.GetPlayer(src)
if not Player then return nil end
return Player.PlayerData.job
end
--- Get character info { firstname, lastname, ... }
--- @param src number
--- @return table|nil
function FW.GetCharInfo(src)
local Player = QBCore.Functions.GetPlayer(src)
if not Player then return nil end
return Player.PlayerData.charinfo
end
--- Quick "is player data loaded?" check
--- @param src number
--- @return boolean
function FW.IsPlayerLoaded(src)
return QBCore.Functions.GetPlayer(src) ~= nil
end
--- Send a framework notification to the player
--- @param src number
--- @param msg string
--- @param nType string 'success'|'error'|'info'|'primary'
--- @param duration number ms
function FW.Notify(src, msg, nType, duration)
TriggerClientEvent('QBCore:Notify', src, msg, nType or 'info', duration or 3000)
end
--- Get player money for a specific account ('cash', 'bank', etc.)
--- @param src number
--- @param account string 'cash' | 'bank'
--- @return number
function FW.GetMoney(src, account)
local Player = QBCore.Functions.GetPlayer(src)
if not Player then return 0 end
return Player.PlayerData.money[account] or 0
end
--- Remove money from a player
--- @param src number
--- @param account string 'cash' | 'bank'
--- @param amount number
--- @param reason string|nil
--- @return boolean
function FW.RemoveMoney(src, account, amount, reason)
local Player = QBCore.Functions.GetPlayer(src)
if not Player then return false end
return Player.Functions.RemoveMoney(account, amount, reason)
end
--- Add money to a player
--- @param src number
--- @param account string 'cash' | 'bank'
--- @param amount number
--- @param reason string|nil
--- @return boolean
function FW.AddMoney(src, account, amount, reason)
local Player = QBCore.Functions.GetPlayer(src)
if not Player then return false end
return Player.Functions.AddMoney(account, amount, reason)
end
-- ==========================================
-- CLIENT
-- ==========================================
else
--- Return full player data table (citizenid, charinfo, job, …)
--- @return table
function FW.GetPlayerData()
local QBCore = exports['qb-core']:GetCoreObject()
return QBCore.Functions.GetPlayerData()
end
end
Last updated