Skip to Content
QBCore docs – powered by Nextra 4
CoreCore Object

Core Object

The Core Object is the backbone of the QBCore framework, providing essential functionality and utilities for managing your server’s gameplay mechanics, player data, and overall resource interactions.

Overview

The Core Object serves as the central hub for:

  • Player management and data access
  • Server-wide configuration
  • Shared data (items, vehicles, jobs)
  • Utility functions
  • Command registration

How to Access the Core Object

Basic Usage

To interact with the Core Object in your scripts, use the following pattern:

local QBCore = exports['qb-core']:GetCoreObject()

As of QBCore version 1.3.0+, you can import only what you need to reduce memory overhead:

-- Import only Functions local QBCore = exports['qb-core']:GetCoreObject({'Functions'}) -- Now available: QBCore.Functions -- Import Functions and Shared data local QBCore = exports['qb-core']:GetCoreObject({'Functions', 'Shared'}) -- Now available: QBCore.Functions, QBCore.Shared

Direct Function Exports

You can also call individual functions directly without importing the full core:

-- Get a player directly local player = exports['qb-core']:GetPlayer(source) -- Check if player has item local hasItem = exports['qb-core']:HasItem(source, 'water_bottle')

Core Features

Functions

A collection of utility functions for common server and player operations.

Players

A table containing all currently connected players with their data.

Shared

Shared data accessible across client and server, including:

  • Items configuration
  • Vehicle data
  • Jobs and gangs
  • Weapon information

Config

The main configuration table for QBCore framework settings.

Commands

A registry for custom server and client commands.

Common Usage Examples

Accessing Player Data

local QBCore = exports['qb-core']:GetCoreObject() RegisterNetEvent('myresource:getPlayerJob', function() local src = source local Player = QBCore.Functions.GetPlayer(src) if Player then local job = Player.PlayerData.job print("Player's job: " .. job.name .. " (Grade: " .. job.grade.level .. ")") -- Trigger client event with job data TriggerClientEvent('myresource:receiveJob', src, job) end end)

Using Shared Data

local QBCore = exports['qb-core']:GetCoreObject({'Shared'}) -- Get item information local waterBottle = QBCore.Shared.Items['water_bottle'] if waterBottle then print("Item: " .. waterBottle.label) print("Weight: " .. waterBottle.weight) print("Useable: " .. tostring(waterBottle.useable)) end -- Check if vehicle exists local vehicle = QBCore.Shared.Vehicles['adder'] if vehicle then print("Vehicle: " .. vehicle.name) print("Brand: " .. vehicle.brand) print("Model: " .. vehicle.model) end

Registering Commands

local QBCore = exports['qb-core']:GetCoreObject() -- Register a command with permission check QBCore.Commands.Add('heal', 'Heal yourself or another player', { {name = 'id', help = 'Player ID (optional)'} }, false, function(source, args) local src = source local targetId = tonumber(args[1]) or src local targetPlayer = QBCore.Functions.GetPlayer(targetId) if targetPlayer then TriggerClientEvent('hospital:client:Revive', targetId) TriggerClientEvent('QBCore:Notify', src, 'Player healed successfully', 'success') else TriggerClientEvent('QBCore:Notify', src, 'Player not found', 'error') end end, 'admin')

Player Management

local QBCore = exports['qb-core']:GetCoreObject() -- Get all online players local players = QBCore.Functions.GetPlayers() for _, playerId in pairs(players) do local Player = QBCore.Functions.GetPlayer(playerId) if Player then print("Online player: " .. Player.PlayerData.name) end end -- Get player by citizen ID local citizenId = 'ABC12345' local Player = QBCore.Functions.GetPlayerByCitizenId(citizenId) if Player then print("Found player: " .. Player.PlayerData.name) end

Money Management

-- Add money to player Player.Functions.AddMoney('cash', 1000, 'admin-reward') -- Remove money from player if Player.Functions.RemoveMoney('bank', 500, 'purchase-item') then print("Purchase successful") else print("Insufficient funds") end -- Get player's money local cashAmount = Player.Functions.GetMoney('cash') local bankAmount = Player.Functions.GetMoney('bank') print("Cash: $" .. cashAmount .. ", Bank: $" .. bankAmount)

Best Practices

1. Cache the Core Object

Always cache the Core Object in a local variable to avoid repeated calls:

-- Good local QBCore = exports['qb-core']:GetCoreObject() -- Avoid this local player = exports['qb-core']:GetCoreObject().Functions.GetPlayer(source)

2. Use Selective Importing

Only import what you need to reduce memory usage:

-- If you only need functions local QBCore = exports['qb-core']:GetCoreObject({'Functions'}) -- If you need both functions and shared data local QBCore = exports['qb-core']:GetCoreObject({'Functions', 'Shared'})

3. Error Handling

Always check if player exists before accessing their data:

local Player = QBCore.Functions.GetPlayer(source) if not Player then print("Player not found") return end -- Safe to use Player.PlayerData now

4. Use Exports for Single Functions

For single function calls, consider using direct exports:

-- Instead of importing full core for one function local player = exports['qb-core']:GetPlayer(source)

Common Patterns

Resource Initialization

-- At the top of your server.lua local QBCore = exports['qb-core']:GetCoreObject() -- Wait for core to be ready CreateThread(function() while not QBCore do Wait(10) QBCore = exports['qb-core']:GetCoreObject() end -- Your resource initialization code here print("Resource initialized with QBCore") end)

Event-Based Player Actions

RegisterNetEvent('myresource:doSomething', function(data) local src = source local Player = QBCore.Functions.GetPlayer(src) if not Player then return end -- Perform actions with player data local job = Player.PlayerData.job.name local money = Player.Functions.GetMoney('cash') -- Continue with your logic end)

Version Compatibility

QBCore VersionCore Object Features
1.0.x - 1.2.xBasic core object access
1.3.x+Selective importing, direct exports
LatestAll features supported

Always check your fxmanifest.lua for your QBCore version to ensure compatibility with the features you’re using.

Last updated on