Skip to main content

Installation

This guide will walk you through the complete installation process for RoadPhone Pro on your FiveM server.

Requirements

Framework

  • ESX (es_extended)
  • QBCore (qb-core)
  • Qbox (qbx_core)
  • Standalone

Database

  • mysql-async
  • or oxmysql

Dependencies

  • xsound
  • OneSync enabled

Optional

  • ox_inventory / jaksam_inventory (for metadata)
  • Voice system (pma-voice, mumble-voip, etc.)

Step 1: Download & Extract

1

Download RoadPhone Pro

Download the latest version from your purchase location (Tebex/CFX).
2

Extract the resource

Extract the roadphone folder to your server’s resources directory.
resources/
└── [phone]/
└── roadphone/
   ├── bridge/
   ├── client/
   ├── server/
   ├── public/
   ├── API.lua
   ├── config.lua
   └── fxmanifest.lua
3

Ensure the resource

Add the following to your server.cfg:
server.cfg
ensure roadphone
Make sure roadphone starts after your framework (ESX/QBCore/Qbox), database, and inventory resources.

Step 2: Database Setup

Import the SQL file to create the required database tables.
-- Run the SQL file provided in the resource
-- Located at the downloaded folder.
-- Run for ESX: roadphone-esx.sql and for QB & QBOX: roadphone-qb.sql
The SQL file creates tables for:
  • Player data and phone numbers
  • Contacts, messages, notes
  • TweetWave posts and accounts
  • Connect posts and accounts
  • Banking transactions
  • And more…

Step 3: Basic Configuration

Open config.lua and configure the essential settings:

Framework Detection

RoadPhone automatically detects your framework. No manual configuration needed.

Phone Item Requirement

config.lua
-- Set to true if players need a phone item to use the phone
Config.NeedItem = true

-- Phone items (ignored if using jaksam_inventory)
Config.Items = {
    "phone",
    "purple_phone",
    "green_phone",
    "red_phone",
    "blue_phone",
    "black_phone"
}
If Config.NeedItem = false, all players can open the phone without needing an item.

Phone Keybind

config.lua
-- Command name for keybind
Config.PhoneCommand = "TogglePhone"

-- Enable custom keybind registration
Config.RegisterKeyMapping = true

-- Default key (players can rebind in FiveM settings)
Config.OpenKey = 'f1'

Language

config.lua
-- Available: 'en', 'de', 'fr', 'es', 'pt', 'nl', 'pl', 'it', 'tr'
Config.Locale = 'en'

-- Temperature unit
Config.Fahrenheit = false

Step 4: Image Upload Setup

RoadPhone requires an image upload service for camera, profile pictures, and media sharing. Open API.lua and configure your upload service:
Without a valid API key, camera and image upload features will not work.

Step 5: Voice Integration

Configure voice chat integration for phone calls:
config.lua
-- Enable ONE of these based on your voice system
Config.UsePmaVoice = true      -- pma-voice
Config.UseMumbleVoip = false   -- mumble-voip
Config.UseSaltyChat = false    -- saltychat
Config.UseYacaVoice = false    -- yaca
If no voice system is enabled, phone calls will not work.

Step 6: Music Setup

Set your TebexID to enable the Music App.
API.lua
-- In API.lua
Cfg.TebexTransactionID = "your-tebex-id"
If no tebexid is entered. Music will not work.

Step 7: Inventory Item Setup

If Config.NeedItem = true, you need to add phone items to your inventory system.
Add to ox_inventory/data/items.lua:
['phone'] = {
label = 'Phone',
weight = 150,
stack = false,
close = true,
description = 'A smartphone'
},

Step 8: Optional Features

Metadata System (Phone Stealing/Trading)

Enable item-based phone data for advanced features:
config.lua
Config.UseMetadata = true
Config.InventorySystem = 'ox_inventory' -- or 'jaksam'

Metadata System Guide

Learn how to set up and use the metadata system for phone stealing, trading, and multiple phones.

Target System

Enable target interaction for phone-related features:
config.lua
Config.UseTarget = true
Config.TargetSystem = "ox_target" -- or "qb-target"

Billing Integration

Connect with your billing system:
config.lua
-- Enable ONE of these
Config.myBilling = false
Config.okokBilling = false
Config.JaksamBilling = false
Config.codemBilling = false
Config.codemBilling2 = false

Banking Integration

config.lua
Config.okokBanking = false
Config.rxBanking = false

Step 9: Service & Emergency Numbers

Configure emergency services and dispatch:
config.lua
-- Job to phone number mapping for dispatch
Config.Leitstelle = {
    ['police'] = 911,
    ['ambulance'] = 112,
}

-- Jobs that can post news
Config.NewsAppAccess = {
    'police',
    'ambulance',
}

Step 10: Final Steps

1

Restart your server

Restart your FiveM server to apply all changes.
2

Test the phone

Join your server and test the phone:
  • Press the configured key (default: F1) or use the phone item
  • Check that all apps load correctly
  • Test camera functionality
  • Make a test call
3

Give players phones

If Config.NeedItem = true, give players phone items:
-- ESX
xPlayer.addInventoryItem('phone', 1)

-- QBCore
Player.Functions.AddItem('phone', 1)

-- ox_inventory
exports.ox_inventory:AddItem(source, 'phone', 1)

Troubleshooting

Check:
  • Resource is started (ensure roadphone in server.cfg)
  • Framework is loaded before roadphone
  • If NeedItem = true, player has a phone item
  • Keybind is correctly configured
Check:
  • API key is set in API.lua
  • Config.uploadMethod matches your service
  • No firewall blocking outgoing requests
Check:
  • Voice system is correctly configured
  • Both players have phone numbers assigned
  • xsound resource is running
Check:
  • SQL file has been imported
  • mysql-async or oxmysql is running
  • Database credentials are correct in server.cfg
Check:
  • Framework resource starts before roadphone
  • Framework is properly installed
  • Check server console for Bridge initialization messages

Next Steps