Pulse Phone docs

Frameworks

3. Step by step for your framework

The phone finds your framework by itself: es_extended, qb-core, qbx_core, ox_core, ND_Core, vrp or TMC's core. You only need Config.Framework in config/config.lua if more than one is running, or for a custom framework.

Your framework at a glance

Framework Found by Items Bank and cash Good to know
ESX Legacy es_extended Added by themselves to ESX's items table (default inventory). On ox_inventory you paste the printed block ESX accounts Company accounts through your society script
QBCore qb-core Added by themselves to QBCore's shared items (qb-, ps-, lj-inventory) QBCore money isboss grades run the company
Qbox qbx_core (its qb-core stand-in counts as Qbox, not a second framework) Paste the printed ox_inventory block Qbox money Uses the Qbox adapter, never the QBCore one
ox_core ox_core Paste the printed ox_inventory block The character's ox_core account; cash is ox_inventory's money No duty flag: everyone counts as on duty
ND Core ND_Core Paste the printed ox_inventory block ND's bank and cash No duty flag; no company accounts
TMC its core resource, recognised by TMC's own core object Every item must be in TMC's item list: the start-up check prints them TMC money Runs through the custom bridge, nothing to set up
vRP 2 vrp See the vRP section vRP wallet and bank vRP 1 and forks are not supported
Standalone nothing above running None needed The phone's own bank For test servers or servers without a framework
Custom Config.Framework = 'custom' Through your bridge Through your bridge See "Custom or in-house framework"

Forcing the framework

Most servers never need this. Force the framework when the start-up line names the wrong one, or when two framework cores are installed and started. Add one line to server.cfg:

server.cfg
setr phone_framework qb
Value Framework
esx ESX Legacy (es_extended)
qb QBCore (qb-core)
qbox Qbox (qbx_core)
ox ox_core
nd ND Core (ND_Core)
vrp vRP 2 (vrp)
tmc TMC (core)
standalone No framework: the phone keeps its own identity and bank
custom Your own bridge (see "Custom or in-house framework" below)
auto Same as leaving the line out: Config.Framework decides
  • It wins over Config.Framework. Restart the phone after you change it.
  • The resource names work too: qbcore, qb-core, qbx_core, es_extended, ox_core. A word it does not know is refused: the start-up check says so and money features stay off.
  • qb on a server that runs qbx_core uses the Qbox adapter. Qbox also answers as QBCore.
  • If the framework you force is not started, phones stay on their "not ready" screen until it is. The phone never switches to another framework by itself.

Multicharacter works on every framework. Config.IdentityScope = 'character' (the default) gives each character its own phone. 'player' gives one phone per account. Pick once: changing it on a live server leaves every existing phone behind.

Company management (duty, staff, hiring, the company account in the Services app) uses the companies in Config.Services in config/apps.lua. If your job names differ from the defaults (police, ambulance, mechanic, taxi, fire ...), add yours to that company's job list. To choose the boss grades yourself, add bossGrade = <n> to the company.

ESX Legacy

server.cfg
ensure oxmysql
ensure es_extended
# ... your ESX scripts, inventory, banking ...
ensure pma-voice
ensure screenshot-basic
ensure phone
  • Items: with the default ESX inventory there is nothing to do. The phone adds its items to ESX's items table at start-up, and the console says which ones it added. config/items/esx.sql is there if you would rather add them yourself. With another inventory, see section 4.
  • Money: the bank is the ESX bank account, cash is the money account.
  • Character: the phone follows ESX's player identifier, so esx_multicharacter works.
  • Boss: the grade named boss manages the company, unless you set bossGrade.
  • Company accounts: esx_addonaccount / esx_society, or a banking script from section 7.

QBCore

server.cfg
ensure oxmysql
ensure qb-core
# ... qb-inventory and your other qb scripts ...
ensure pma-voice
ensure screenshot-basic
ensure phone
  • Items: nothing to paste. The phone adds the items it needs to QBCore's shared items at start-up, and the console says which ones it added. Copy the pictures from config/items/images/ to qb-inventory/html/images/; the start-up check names any that are missing.
  • Money: bank and cash.
  • Character: the citizenid, so qb-multicharacter works.
  • Boss: grades with isboss = true in your jobs, unless you set bossGrade.
  • Company accounts: Renewed-Banking, qb-banking, or older qb-management.
  • Multijob: with ps-multijob running, the player's other jobs show in Services and one tap makes a job active.

Qbox

server.cfg
ensure oxmysql
ensure qbx_core
ensure ox_inventory
# ... your other Qbox scripts, in Qbox's own order ...
ensure pma-voice
ensure screenshot-basic
ensure phone
  • Items: Qbox uses ox_inventory, which can't take items from another script. Start the server once: the start-up check prints the entries that are missing, ready to paste into ox_inventory/data/items.lua (section 4). Pictures go to ox_inventory/web/images/.
  • Money: bank and cash, through qbx_core.
  • Character: the citizenid.
  • Boss: grades with isboss = true, unless you set bossGrade.
  • Multijob: built in. A player's other jobs show in Services.
  • qbx_core also answers as qb-core. That is normal: the phone treats the two as one framework.

ox_core

server.cfg
ensure oxmysql
ensure ox_core
ensure ox_inventory
# ... your other scripts ...
ensure pma-voice
ensure screenshot-basic
ensure phone
  • Items: start the server once: the start-up check prints the entries that are missing, ready to paste into ox_inventory/data/items.lua (section 4). Pictures go to ox_inventory/web/images/.
  • Money: the bank is the character's ox_core account. Cash is the money item in ox_inventory.
  • Character: the charId.
  • Jobs: ox_core groups have no duty flag, so the phone keeps duty itself. Company management (staff, hiring, grades) and valet are not available on ox_core.

ND Core

server.cfg
ensure oxmysql
ensure ox_lib
ensure ND_Core
ensure ox_inventory
# ... your other scripts ...
ensure pma-voice
ensure screenshot-basic
ensure phone
  • Found by itself when ND_Core is started. To force it: setr phone_framework nd.
  • Items: ND uses ox_inventory. Start the server once: the start-up check prints the entries that are missing, ready to paste into ox_inventory/data/items.lua (section 4).
  • Money: the character's ND bank, and ND cash (ox_inventory keeps the money item in step).
  • Character: ND's character id. The phone number shown is ND's own when the character has one.
  • Jobs: the character's ND job and rank. ND has no duty flag, so everyone counts as on duty. Company management, company accounts and valet are not available on ND Core.
  • Garage: owned cars come from ND's nd_vehicles table.

vRP

Only vRP 2 is supported (not vRP 1 or community forks). The phone loads a small extension into vRP from bridge/frameworks/vrp/. Nothing to copy.

server.cfg
ensure oxmysql
ensure vrp
# ... your other scripts ...
ensure pma-voice
ensure screenshot-basic
ensure phone
  • Items: there is no item file for vRP, and vRP 2 cannot make items usable for the phone. Keep Config.Item.required = false (the default), and set Config.Store.box = false so the store hands phones over directly. Players use the charging items with /phonepack and /phonecable; with a vRP inventory those need the player to carry pulse_magpack and pulse_cable, so add both items to your vRP item list, or set Config.Charging.enabled = false.
  • Money: vRP's bank and wallet.
  • Character: vRP's character id.
  • Jobs: company management and valet are not available on vRP. The Garage app stays empty unless you connect a garage script.

TMC

TMC is built in. The phone recognises TMC's core by itself: no extra resource, and no change to config/config.lua (auto, tmc and custom all work).

server.cfg
ensure oxmysql
ensure core
# ... your other scripts ...
ensure pma-voice
ensure screenshot-basic
ensure phone

The start-up check shows Framework: TMC.

  • Items: add the Pulse items to TMC's item list the same way you add any item. The names are phone, pulse_magpack, pulse_magpack_max, pulse_cable, pulse_router, pulse_burner, pulse_buds, pulse_ringlight, pulse_wallet (docs/items/tmc.lua has the entries), and for the store's boxes pulse_phone_box plus one per finish (pulse_phone_box_black ...). The labels, weights and descriptions are in config/items/qb-core.lua, and the pictures in config/items/images/. An item that is not in the list is refused, and the player sees "inventory full": the console then names the item. If you don't want the boxes, set Config.Store.box = false and the store hands the phone over directly.
  • Money: the character's cash and bank.
  • Character: TMC's citizen id.
  • Jobs: the job on duty (or the first one), with its grade and duty state.
  • Had the temporary pulse_tmc connector? Remove ensure pulse_tmc and delete that folder. The console reminds you while it is still running.

Standalone (no framework)

server.cfg
ensure oxmysql
ensure pma-voice
ensure screenshot-basic
ensure phone
  • Items: none needed. Every player has a phone, a Reserve and a cable.
  • Money: the phone keeps its own bank. A new player starts with 5000 (startingBalance in config/apps.lua).
  • Character: the player's Rockstar licence.
  • Jobs, cars and homes: the phone keeps its own. Fill them with the test commands in section 9.

Custom or in-house framework

  1. Set Config.Framework = 'custom' in config/config.lua.
  2. Give the phone a bridge table shaped like developers/custom_framework_bridge.lua: either as Config.Providers.custom in config/config.lua, or from your own resource with exports.phone:RegisterFrameworkBridge(MyBridge).
  3. Only GetCharacterId is required. If you leave out a name, job, licence or vehicle/home list function, the phone acts as if your server has no such data. If you leave out a money or item function, that action is refused: the phone never pays from a bank of its own. The Bank app appears only when your bridge has GetBankBalance.
  4. If your core restarts while the phone keeps running, call exports.phone:FrameworkRestarted() once the core is ready.

bridge/frameworks/custom.lua shows how the phone uses your table. To connect other in-house scripts (a banking or garage script), see developers/custom_provider_template.lua and Exports.