Phone
Configuration
Everything is in config/config.lua, with a comment on each option. Secrets (the upload token and log webhook) go in config/keys.lua, which only the server reads. Framework, inventory, bank, voice and housing differences live in config/bridge/, one file each.
The options most servers touch
| Option | What it does |
|---|---|
locale | Language file from config/locales/ |
framework | auto detects Qbox, QBCore, ESX, ox_core or ND_Core and falls back to standalone |
autoInstallApps | Whether community apps may install themselves on every phone, or always go through the App Store first (the default) |
bank | Which bank script holds company money. auto finds it |
keybind, command, walk, cursorKey | How the phone opens, and whether players can move with it out |
item | The phone item: which inventory, whether it's required, whether each item is its own phone |
numbers | Prefixes and length of phone numbers |
calls | Ring time and voice script |
rtc | STUN/TURN servers for video calls and live streams. Add a TURN server if video fails for players behind strict routers |
map | Leave it alone: San Andreas ships with the phone. On a server with its own map, image is a URL to one picture and bounds are the game coordinates of its edges |
places | Places listed in Maps |
companies | Jobs players can call or message from Services |
garage | Valet and impound fees, and whether impounded vehicles can be released from the phone |
housing | Which housing script is behind Home. auto finds it |
transfer | Bringing data across from an old phone. none switches it off |
music | Songs for Music (direct links to audio files). The app is hidden while the list is empty |
crypto | Made-up coins bought with bank money |
mailDomain | The part after @ in Mail addresses |
licence | The heading on the licence card in Wallet. Empty uses the language file's text |
debug | Prints every request to the server console |
Language
English (en, the default) and French (fr) ship. To add one:
- Copy
config/locales/en.jsontoconfig/locales/<code>.json, e.g.de.json."ui"is the interface,"server"is messages from Lua. - Set
meta.nameto the language's own name andmeta.intlto its locale code (e.g.de-DE). Dates and numbers follow it. - Translate the values, never the keys. Keep
{name},{amount}and%sas they are; where a line has several%s, they stay in the same order.
Missing strings fall back to English, so a half-done translation still works.
Theme
web/dist/theme.json can be edited on a live server without rebuilding. Anything in it is laid over the built-in look; leave a key out to keep the default.
| Key | What it controls |
|---|---|
font | CSS font stack: a system font or the bundled Inter |
iconRadius | Icon corner radius as a fraction of size: 0.225 a rounded square, 0.5 a circle |
island | "pill", or "hole" (a punch hole that widens only for calls, recording and music) |
frames | Frame colours offered in Settings: { "id": "#hex" } |
wallpapers | Wallpapers offered in Settings: { "id": "<any CSS background-image>" } |
colors.light, colors.dark | Colour token overrides, e.g. { "--blue": "#0b8a7a" } |
apps | Per-app name, bg, fg and icon (an image URL), keyed by app id |
defaults | dark, wallpaper, lockWallpaper, frame, apps, dock for a fresh phone |
themes/slate.json is a second look made with nothing but this file. Copy it over theme.json to use it.
Sounds
The ringtones, text tones and effects are in web/dist/sounds/. To replace one, put an .mp3 with the same name there. Players pick ringtones and set volume, Silent Mode and Do Not Disturb in Settings; only the player holding the phone hears it.
Stuck? Ask on Discord
View as Markdown