Skip to content

Phone

Setup

The phone needs two libraries the rest of c3r doesn't, plus a couple of optional steps for items and uploads.

Requirements

ResourceWhy
ox_libCallbacks, key bindings. Required
oxmysqlThe database (MariaDB 10.2+ or MySQL 8). Required
A framework (optional)qbx_core, qb-core, es_extended, ox_core or ND_Core. Without one it runs standalone
A voice script (optional)pma-voice, saltychat or mumble-voip, for sound on calls
An inventory (optional)The phone as an item
A Fivemanage token (optional)The camera, voice messages, voice memos and voicemail
OneSync (optional)Speaker, AirShare, hiring and locating a vehicle

Start order

The phone must start after ox_lib, oxmysql, your framework, inventory and voice script:

ensure ox_lib
ensure oxmysql
# ...framework, inventory, voice...
ensure [c3r_core]

Tables are created on first start; there's no SQL to import.

Admin access

add_ace group.admin lwk_phone.admin allow

The phone as an item

On a framework server with a supported inventory, the phone is an item and each item is its own phone: the number is written onto the item and every bit of phone data is keyed by it. Give the item away, or have it taken, and the phone goes with it.

ox_inventory (also used by Qbox, ox_core and ND_Core), in ox_inventory/data/items.lua:

['phone'] = { label = 'Phone', weight = 190, stack = false, consume = 0, client = { export = 'lwk_phone.usePhone' } },

Every other inventory: an item named phone in its item list (qb-core/shared/items.lua, the inventory's own list, or ESX's items table): not stackable, usable, closing the inventory when used.

With several phones in a pocket, using one opens that one. Where the inventory doesn't say which was used, the first is opened. In the config, item.require = false drops the item altogether, and item.unique = false keeps the item but ties the phone to the character.

Photos, video and voice messages

These upload to Fivemanage. Put your API token in config/keys.lua (only the server reads that file), or in server.cfg:

set lwk_phone_fivemanage "your-token"

Without a token the camera says storage isn't set up, and everything else still works.

Pictures, video and voice messages in texts and posts are only accepted from the hosts in upload.hosts (your upload host by default). Without that limit, a player could post a link to their own server and collect the IP address of everyone whose phone shows it.

Logs

Put a Discord webhook in config/keys.lua, or:

set lwk_phone_webhook "https://discord.com/api/webhooks/..."

It logs posts, money transfers, company account deposits and withdrawals, old-phone transfers and admin prunes. Leave it empty to turn logs off.

Updating

Replace the folder, keeping your own copies of the three files you may have edited: config/config.lua, config/keys.lua and web/dist/theme.json. The database looks after itself: tables and columns are added on start and nothing is ever removed, so going back to the previous version is just putting the old folder back.