
RARX Phone · Configuration
Configuration
Every rarx_phone config file explained - apps, features, keys, branding, coverage, AirShare, music, GIFs, logs, uploads, convars and languages.
- Qbox
- QBCore
- ESX
- v2.0.0
rarx_phone
How the configuration works#
Everything a server owner can change without touching code lives in the config/ folder of the resource. The files are loaded in this order (see fxmanifest.lua):
| File | Loaded on | What it contains |
|---|---|---|
config/config.lua |
client + server | Core options: item, numbers, calls, messages, uploads, per-app limits, sounds, wallpapers, accents. |
config/integraciones.lua |
client + server | Banking, garage and housing integrations (resources, exports and database columns). |
config/apps.lua |
client + server | The app list (Apps), which RPC module belongs to which app (AppDomains) and app overrides (Config.Apps). |
config/widgets.lua |
client + server | Widget catalogue. |
config/compat.lua |
client + server | lb-phone compatibility layer (Config.Compat). |
config/funciones.lua |
client + server | Feature switches (Config.Features) and keys/commands (Config.Keys). |
config/marca.lua |
client + server | Branding (Config.Brand), icon packs, new-phone defaults (Config.Defaults) and text overrides (Config.Locale.Overrides). |
config/cobertura.lua |
client + server | Cell-tower coverage (Config.Coverage). |
config/airshare.lua |
client + server | Share-nearby (Config.AirShare). |
config/music.lua |
client + server | Music library and limits. |
config/extra/*.lua |
client + server | Additional modules: camera, car mode, garage, mail, social, accounts, Find Device, shortcuts, health, map POIs, and more. |
config/logs.lua |
server only | Logs per action (Discord, ox_lib or FiveManage) and public feed channels (Config.Logs). |
config/gifs.lua |
server only | GIF provider and API key for Messages (Config.Gifs). |
Startup validation#
After the config files load, the resource checks the whole configuration on start. If a value is invalid, it prints a yellow warning in the server console and falls back to the default value (it never stops the resource):
[rarx_phone] config: Config.Messages.MaxLength = 'lots' no es válido (debe ser un número); se usa 1000
[rarx_phone] config: Apps 'bank': dock = 9 debe ser 1, 2, 3 o 4; se quita del dockIf no warning appears, your configuration is valid. After changing any file in config/, run ensure rarx_phone (or restart the server).
Apps (config/apps.lua)#
Everything app-related is done in Config.Apps, without editing the Apps list itself.
Disable an app#
Config.Apps.Disabled = { 'crypto', 'blackmarket' }A disabled app:
- does not appear on the home screen, dock, app drawer, search, store, multitasking, notification settings or the admin panel;
- cannot be opened (not even from a link, notification or widget);
- has its server requests rejected (
err_app_blocked). Modules shared by several apps (for examplemedia, used by Gallery, Voice Memos, Camera and Messages) are only blocked when none of those apps is available.
settings cannot be disabled: the validator warns and keeps it enabled. The core apps (phone, messages, store, widgets) can be disabled, but think twice: without phone nobody can take calls, and without store nobody can install apps.
You can also disable an app with its feature switch (for example Config.Features.Crypto = false) or with enabled = false in Overrides.
Rename an app#
Config.Apps.Overrides = {
dating = { name = 'Tinder' },
music = { name = { es = 'Música RRX', en = 'RRX Music' } },
news = { name = { default = 'Weazel', en = 'Weazel News' } },
}nameas a string: the same name in every language.nameas a per-language table: each language uses its own name;defaultis used for languages not listed. If a language is missing and there is nodefault, that language keeps its normal translation.
The name overrides the app_<id> translation key on the server, so it is shown everywhere: home screen, dock, drawer, search, store, multitasking, notifications (banner, notification centre, lock screen and closed-phone alerts), settings and the app title. It takes priority over the translation; Config.Locale.Overrides can still override a specific key.
The label field in the Apps list is only an internal fallback label. Use name to change the visible name.
Change the icon#
Config.Apps.Overrides = {
dating = { icon = 'https://cdn.example.com/tinder.png' },
bank = { icon = 'nui://my_banking/html/icon.png' },
music = { icon = 'images/apps/my-music.png' },
mail = { icon = { default = 'images/apps/mail.png', white = 'images/apps/mail-white.png' } },
}- Must start with
https://,http://,nui://orimages/(a path inside the resource'sui/folder;images/apps/x.pngisui/images/apps/x.png). - As a table, the icon can change with the player's icon pack (
realist,white,black);defaultis used for packs not listed. - If the image fails to load, the placeholder with the app's initial is shown.
- Recommended: a square PNG of 180x180 or larger, without rounded corners (the phone adds them).
Position on the home screen and dock#
Config.Apps.Overrides = {
camera = { dock = false, slot = 5 },
bank = { dock = 4 },
}dock= 1, 2, 3 or 4 (dock slot).falseremoves it from the dock. If two apps share a slot, the validator warns.slot= default position on the home grid (lower = earlier).falseremoves the position (goes to the end).- This is only the default order: if a player rearranges their home screen, their order wins.
Installed by default or store only#
Config.Apps.Overrides = {
darkchat = { default = false },
blackmarket = { default = false, store = false },
}default = false: new phones do not include it; the player installs it from the store. Players who already customised their apps keep what they had.store = false: it does not appear in the store unless already installed and cannot be installed from it (if the player already has it, they can keep using and uninstall it). Useful for apps handed out by an admin or a job.fija = true: always installed and cannot be uninstalled.
Restrict by job, grade, item or ACE permission#
Config.Apps.Overrides = {
services = { requires = { jobs = { 'police', 'ambulance' } } },
fines = { requires = { jobs = { police = 2, sheriff = 0 }, onDuty = true } },
darkchat = { requires = { items = { 'burner_phone', 'laptop' } } },
news = { requires = { ace = 'rarxphone.news' } },
}jobs: a list of jobs, or a table ofjob = minimum grade.onDuty = true: must also be on duty.items: the player must carry any of these items.ace: an ACE permission fromserver.cfg(add_ace group.admin rarxphone.news allow).- When combined, all conditions must be met.
- Players who do not qualify do not see the app and the server rejects their requests. The check is cached for 5 seconds per player, so after dropping the item or changing job, access is lost within a few seconds (the icon disappears the next time the phone is opened).
- This is independent of the admin panel app locks (block for everyone or per job), which keep working as usual.
Apps for specific phone models#
Config.Apps.Overrides = {
fans = { models = { 'ifruit26', 'ifruitzfold' } },
}Models: phone, ifruitduo, ifruit26, ifruitzfold or any item from Config.Item.Names. It is compared with the item used to open the phone. If the model is unknown (for example with Config.Item.Require = false), the app is shown.
App fields reference#
These fields can be set in Config.Apps.Overrides.<id> or directly on the entry in the Apps list.
| Field | Values | Default | What it does |
|---|---|---|---|
enabled |
true / false |
true |
false disables the app completely. |
name |
string or { es = '', en = '', default = '' } |
none | Visible name (overrides the translation). |
icon |
URL/path or per-pack table | pack icon | Icon. |
dock |
1-4 or false |
from the list | Dock slot. |
slot |
number or false |
from the list | Default order on the home screen. |
default |
true / false |
from the list | Installed on new phones. |
store |
true / false |
true |
Can be installed from the store. |
fija |
true / false |
from the list | Always installed, cannot be removed. |
requires |
{ jobs, onDuty, items, ace } |
none | Who can use it. |
models |
list of models | none | Which models show it. |
label |
string | id | Internal fallback label. |
Full example:
Config.Apps.Disabled = { 'crypto' }
Config.Apps.Overrides = {
dating = { name = { es = 'Tinder', en = 'Tinder' }, icon = 'https://cdn.example.com/tinder.png', slot = 3 },
fines = { requires = { jobs = { police = 0 } }, default = false },
blackmarket = { default = false, store = false, requires = { items = { 'burner_phone' } } },
fans = { models = { 'ifruit26', 'ifruitzfold' } },
}App IDs#
phone, messages, rrx (Lenz), camera, store, widgets, gallery, settings, notes, calendar, map, weather, music, news, bank, ads, services, vehicles (Garage), mail, taxi, go, invoices, fines, clock, findmy (Find Device), dating (Flechazo), calculator, properties, browser, voicememo, crypto, darkchat, blackmarket, fans (Privé), birdy, shortcuts, health.
AppDomains (also in config/apps.lua) maps each RPC module to its app (bank to bank, rides to taxi and go, and so on). You do not need to touch it unless you add new apps.
Feature switches (config/funciones.lua)#
Each switch in Config.Features set to false turns that feature off on the server (requests are rejected with err_feature_off, or the related apps are disabled) and hides it in the interface. true leaves the feature as is.
Some switches are linked to older keys in config/config.lua (for example Crypto = Config.Crypto.Enabled == true), so you can change either one. On start, the value in Config.Features wins and is copied back to the old key.
| Switch | Default | Linked to | What it turns off |
|---|---|---|---|
Calls |
true |
none | Making calls. Emergency numbers from Config.Calls.Emergency still work. |
VideoCalls |
true |
Config.Calls.AllowVideo |
Video calls. |
Voicemail |
true |
Config.Voicemail.Enabled |
Leaving voicemail messages. |
CallRecording |
true |
Config.Calls.AllowRecording |
Recording calls. |
VoiceFilter |
true |
Config.Calls.AllowVoiceFilter |
Voice filter during calls. |
Ringer3D |
true |
Config.Ringer3D.Enabled |
Other players hearing your ringtone. |
WebRTC |
true |
Config.WebRTC.Enabled |
WebRTC video (when off, video uses frame streaming). |
Pin |
true |
none | Unlock passcode. Off: no new PINs can be set and existing ones do not lock the phone. |
FaceId |
true |
none | Face unlock. Face Unlock requires a PIN, so Pin = false also leaves it unusable. |
Battery |
true |
none | true = whatever the admin panel says (battery is off by default, Config.Battery.Enabled); false = always off. |
Coverage |
true |
none | Coverage (towers plus admin-panel zones). false = always 4 bars, nothing is blocked for lack of signal. |
AirShare |
true |
none | Share-nearby. false = share buttons go straight to Messages again. |
Flashlight |
true |
none | Flashlight. |
Camera |
true |
none | The Camera app. |
Video |
true |
none | Recording and uploading video (photos and audio still work). |
Uploads |
true |
none | All media uploads: photos, video, voice memos and voice messages. |
Browser |
true |
Config.Browser.Enabled |
Browser app. |
BrowserSearch |
true |
none | Searching in the browser (URLs and bookmarks still work). |
Crypto |
true |
Config.Crypto.Enabled |
Crypto app. |
BlackMarket |
true |
Config.BlackMarket.Enabled |
Black Market app. |
Ads |
true |
none | Ads app. |
Bills |
true |
none | Invoices and Fines apps. |
News |
true |
none | News app. |
Mail |
true |
none | Mail app. |
Music |
true |
none | Music app. |
DarkChat |
true |
Config.DarkChat.Enabled |
DarkChat app. |
RRX |
true |
Config.RRX.Enabled |
Lenz app (internal id rrx). |
RRXLive |
true |
Config.RRX.Live.Enabled |
Lenz live streams. |
Fans |
true |
none | Privé app. |
Dating |
true |
none | Flechazo (dating) app. |
Taxi |
true |
none | Taxi app. |
Go |
true |
none | GO app. |
Services |
true |
none | Services app. |
Vehicles |
true |
none | Garage app. |
Valet |
true |
Config.Valet.Enabled |
Requesting your car via valet from Garage. |
Properties |
true |
none | Properties app (and its door/key buttons). |
Admin |
true |
none | The phone admin panel (command, admin and moderation requests). |
Shop |
true |
Config.Shop.Enabled |
Physical phone shop. |
Recovery |
true |
Config.Recovery.Enabled |
Line recovery at the shop. |
CustomNumbers |
true |
Config.Numbers.Enabled |
Requesting custom numbers. |
ExternalWidgets |
true |
none | Widgets filled by other resources (SetWidgetData); with false, widgets with fuente = 'fuera' disappear from the catalogue. |
ExternalApps |
true |
none | Apps from other resources (AddCustomApp returns false, 'disabled'). |
Other switches that live elsewhere: Config.ServerNotifications.Enabled, Config.Filter.Enabled, Config.Notifications.Outside, Config.Animation.Enabled, Config.Music.AllowCustomUrl, Config.Bank.Offline, Config.Crypto.Transfer, Config.Messages.AllowDelete.
When a switch is off, its controls are also hidden in the interface, for example: Pin and FaceId hide the passcode and face sections in Settings and the setup wizard (a phone that already has a code keeps "Turn off passcode"); Flashlight and Camera hide their buttons in Control Centre and on the lock screen; Video hides the Video mode in Camera; VideoCalls hides every video call button; Voicemail hides the Voicemail tab; Battery and Coverage hide the status-bar indicators; CustomNumbers hides the custom number entry in Settings.
Keys and commands (config/funciones.lua)#
Config.Keys is linked to the older keys (Config.Command, Config.Keybind, Config.Calls.KeyAnswer, Config.Calls.KeyHangup, Config.Admin.Command); changing a value here copies it to the old one.
| Key | Default | What it does |
|---|---|---|
Command |
'rarxphone' |
Command that opens/closes the phone. false = no command (and no key). No spaces. |
Open |
'F1' |
Default key to open the phone (each player can rebind it in FiveM Settings > Key Bindings). false = no key. |
Answer |
'RETURN' |
Answer a call. |
Hangup |
'BACK' |
Decline / hang up. |
Preview |
'F3' |
Key for the preview mode. false = no key. |
AdminCommand |
'telefonoadmin' |
Admin panel command. false = no command. Forced off when Config.Features.Admin = false. |
Key names are FiveM key names (F1 to F12, M, RETURN, BACK, PAGEUP, and so on). FiveM remembers the key each player already bound, so changing the default only affects players who never changed it.
Config.Keys = {
Command = Config.Command,
Open = Config.Keybind,
Answer = Config.Calls.KeyAnswer,
Hangup = Config.Calls.KeyHangup,
Preview = 'F3',
AdminCommand = Config.Admin.Command,
}The camera keys (Config.Camera.Keys) are documented under Camera.
Branding and texts (config/marca.lua)#
Brand#
| Key | Default | What it does |
|---|---|---|
Config.Brand.Carrier |
Config.Carrier ('RRX MOVIL') |
Carrier name (Andromeda status bar and Settings > General). '' = no carrier. |
Config.Brand.Models |
phone = 'iFruit 17', ifruitduo = 'iFruit Duo', ifruit26 = 'iFruit S26', ifruitzfold = 'iFruit Z Fold' |
Commercial name of each model (Settings > General > Model). |
Config.Brand.System |
ios = 'iFruitOS 26', android = 'Andromeda 16' |
Operating system name (Settings > General). |
Icon packs#
Config.IconPacks = { 'realist', 'white', 'black' } lists the icon packs players can choose. realist gives each app its own colours. If you remove one, it disappears from Settings and players using it switch to the first pack in the list.
New-phone defaults#
Config.Defaults applies to phones that never saved settings and to any setting the player has not changed. It never overrides what a player already chose.
| Key | Default | Values |
|---|---|---|
Wallpaper |
'default' |
An id from Config.Wallpapers, or an https:// / nui:// URL. |
LockWallpaper |
'default' |
Same as above. |
Accent |
'rarx' |
An id from Config.Accents. |
IconPack |
'realist' |
One of Config.IconPacks. |
Theme |
'light' |
'light', 'dark' or 'auto' (dark from 20:00 to 07:00 in-game time). |
TwelveHour |
false |
true = 12-hour clock. |
Ringtone |
'ring1' |
An id from Config.Sounds.Ringtones. |
Alert |
'aviso1' |
An id from Config.Sounds.Alerts. |
The default language is Config.DefaultLanguage in config/config.lua. The phone clock follows the in-game (GTA) clock; there is no separate time zone.
Overriding any text#
Config.Locale.Overrides overrides any key from locales/<language>.json. It is applied on the server before the language is sent to the client, so it changes both the interface and server-generated texts (notifications, errors).
Config.Locale.Overrides = {
['*'] = { ui_set_carrier = 'Carrier' },
es = { app_dating = 'Ligoteo', err_feature_off = 'Esto no está disponible en este servidor.' },
en = { app_dating = 'Hookup' },
}'*'= all languages; the specific language is applied afterwards.- Look up key names in
locales/es.json(or any other locale file). Keep any%splaceholders the original text has. - Languages not listed in
Config.Languages, or values that are not strings, are ignored with a warning.
Core options (config/config.lua)#
All of these are validated on start (type and range); out-of-range values print a warning and fall back to the default.
General#
| Key | Default | What it does |
|---|---|---|
Config.Debug |
convar rarx_phone_debug |
Console debug output (set rarx_phone_debug 1). |
Config.Framework |
'auto' |
'auto', 'qbx', 'qb' or 'esx' (also accepts qbx_core, qb-core, es_extended). |
Config.EsxIdentifier |
nil |
Unused, kept for compatibility. On ESX the character is always identified by xPlayer.identifier. |
Config.Notify |
'rarx_notify' |
Notification resource used outside the phone. |
Config.Currency |
'$' |
Currency symbol across the interface. |
Config.DefaultLanguage |
'es' |
Language of new phones (must be in Languages). |
Config.Languages |
es, en, fr, de, pt, pt-BR, it, nl, pl, tr, ar |
Available languages (each needs locales/<code>.json). |
Config.DateLocales / Config.DateLocale |
per language / 'es-ES' |
Date format per language, and the fallback. |
Config.Carrier |
'RRX MOVIL' |
Carrier name (see Config.Brand.Carrier). |
Config.FineAccount |
'BPOLICE' |
Banking account that receives fine payments. |
Config.CloseOnDeath |
true |
Close the phone when the player dies. |
Config.CloseWhenSwimming |
true |
Close the phone when swimming. |
Config.AllowInVehicle |
true |
Allow using the phone in a vehicle. |
Animation and prop#
| Key | Default | What it does |
|---|---|---|
Config.Animation.Enabled |
true |
Hand animation and phone prop. |
Config.Animation.Prop |
`prop_amb_phone` |
Prop model. |
Config.Animation.PropBone |
28422 |
Bone the prop is attached to. |
Config.Animation.PropOffset / PropRotation |
vector3(0.0, 0.0, 0.0) |
Prop offset and rotation. |
Config.Animation.PropDistance |
120.0 |
Distance at which other players see the phone in your hand. |
Config.Animation.PropByModel |
{} |
Different prop per phone model. |
Item and phone numbers#
| Key | Default | What it does |
|---|---|---|
Config.Item.Require |
true |
The player must carry the item to use the phone. |
Config.Item.Unique |
true |
Each item is a different phone (stored in metadata). |
Config.Item.Name |
'phone' |
Main phone item. |
Config.Item.Names |
phone, ifruitduo, ifruit26, ifruitzfold, rrxphone |
Items that count as phones (and define the model). |
Config.Item.Inventory |
'auto' |
Inventory system (rarx, ox, qb, esx). |
Config.Item.MetaNumber / MetaFormatted / MetaName / MetaId |
rrxPhoneNumber / rrxFormattedNumber / rrxPhoneName / rrxPhoneId |
Metadata field names on the item. |
Config.PhoneNumber.Format |
'({3}) {3}-{4}' |
Display format (digit groups). 10 digits. |
Config.PhoneNumber.Length |
7 (1-12) |
Digits after the prefix. Prefix length + Length must equal the digits in Format. |
Config.PhoneNumber.Prefixes |
205, 907, 480, 520, 602 |
Prefixes used when generating numbers. |
Shop, line recovery and custom numbers#
| Key | Default | What it does |
|---|---|---|
Config.Shop.Enabled |
true |
Physical phone shop (locations are placed from the admin panel). |
Config.Shop.PhonePrice |
1500 |
Price of a phone. |
Config.Shop.Ped |
model = 's_m_m_highsec_01', scenario = 'WORLD_HUMAN_CLIPBOARD' |
Shop ped. |
Config.Shop.Blip |
sprite = 606, color = 3, scale = 0.7 |
Shop blip. |
Config.Recovery.Enabled |
true |
Recover a lost line at the shop. |
Config.Recovery.Price / Range |
5000 / 3.0 |
Recovery price and interaction range. |
Config.Numbers.Enabled |
true |
Allow custom number requests. |
Config.Numbers.Price |
25000 |
Price of a custom number. |
Config.Numbers.KeepPrefix |
true |
Custom numbers keep the prefix. |
Config.Numbers.Reserved |
list of numbers | Numbers that cannot be requested. |
Notifications and storage#
| Key | Default | What it does |
|---|---|---|
Config.Notifications.Outside |
true |
Show alerts while the phone is closed. |
Config.Notifications.Side |
'right' |
'left' or 'right'. |
Config.Notifications.Seconds |
6 (1-120) |
Banner duration. |
Config.Notifications.Max |
3 (1-20) |
Banners shown at once. |
Config.Notifications.AutoWake / WakeEvery |
true / 20 |
Wake the screen on alerts (minimum seconds between wakes). |
Config.ServerNotifications.Enabled |
false |
Show notifications from other resources as phone notifications. |
Config.ServerNotifications.Replace / Sound / Types / Cooldown |
true / false / nil / 1500 |
Options for the above. |
Config.Storage.Capacity |
0 |
Storage in MB (0 = calculated). |
Config.Storage.Weights |
photo 2400, video 18000, memo 900, note 4, message 1 |
Weight per data type for the storage bar. |
Config.Storage.Slack |
120 |
MB added on top of the calculated capacity. |
Calls#
| Key | Default | Range / values |
|---|---|---|
Config.Calls.RingTimeout |
30 s |
5-600 |
Config.Calls.MaxDuration |
3600 s |
30-86400 |
Config.Calls.MaxParticipants |
5 |
2-32 |
Config.Calls.SpeakerRadius |
3.0 m |
0-100 |
Config.Calls.AllowVideo / AllowRecording / AllowVoiceFilter |
true |
see feature switches |
Config.Calls.Voice |
'auto' |
'auto' detects pma-voice, saltychat, tokovoip_script or mumble-voip. Can be forced to 'pma-voice', 'saltychat', 'tokovoip', 'mumble-voip' or 'none'. See Voice. |
Config.Calls.Emergency |
911/112/police to police, 061/ambulance to ambulance, mechanic to mechanic |
Emergency aliases (number to job). |
Config.Voicemail.Window / MaxSeconds |
120 / 30 |
Voicemail window and maximum message length (seconds). |
Config.Alarms.Max / RingSeconds |
10 / 30 |
Alarms per phone and how long they ring. |
Video calls and WebRTC#
| Key | Default | Range |
|---|---|---|
Config.Calls.Video.Fps |
20 |
1-60 |
Config.Calls.Video.Width |
540 |
64-1920 |
Config.Calls.Video.Quality |
0.7 |
0.05-1 |
Config.Calls.Video.KBPorSegundo |
1024 |
8-100000 |
Config.Calls.Video.MaxConcurrent |
8 |
0-1000 |
Config.Calls.Video.AutoLog |
false |
|
Config.WebRTC.Enabled |
true |
|
Config.WebRTC.Turn |
'cloudflare' |
TURN provider (credentials via convars). |
Config.WebRTC.TurnTtl |
86400 |
60-31536000 |
Config.WebRTC.IceServers |
Google STUN servers | List of { urls = '...' }. |
Config.WebRTC.Timeout |
6 |
1-120 |
Config.WebRTC.MaxKbit |
2500 |
16-100000 |
Config.Calls.Video.* is the frame-streaming video used as a fallback without WebRTC and for group calls. Higher values mean better image and more server bandwidth.
Ringtone heard by others (Ringer3D)#
| Key | Default |
|---|---|
Enabled |
true |
Radius / MaxVolume / Rolloff |
12.0 / 0.6 / 1.6 |
VehicleMuffle / Hysteresis |
0.45 / 2.0 |
Calls / Alarms / Notifications |
true / true / true |
AlarmEvery / AlarmCooldown / AlarmRepeat |
1500 / 20000 / 120000 ms |
NotificationRadius / NotificationCooldown |
8.0 / 5000 |
ServerTick / ClientTick |
300 / 250 ms |
Messages, mail and content#
| Key | Default |
|---|---|
Config.Messages.MaxLength |
1000 characters |
Config.Messages.EditWindow / DeleteWindow |
900 / 3600 s |
Config.Messages.AllowDelete |
true |
Config.Messages.PageSize / MaxGroupMembers |
30 / 32 |
Config.Messages.SystemNumber |
'900100' |
Config.Mail.Domain / MaxLength / MaxRecipients / MaxAttachments |
rrx.net / 4000 / 10 / 6 |
Config.Notes.Max / MaxLength |
300 / 20000 |
Config.Calendar.Max |
300 |
Config.VoiceMemos.Max |
200 |
Config.Maps.MaxPlaces |
100 |
Config.Contacts.ShareRange |
5.0 m |
Config.Filter.Enabled / Words / Mask |
true / {} / '***' |
Config.Filter.ReservedNames |
names that cannot be used as usernames (admin, staff, police, and so on) |
Uploads, Face Unlock and rate limits#
| Key | Default | What it does |
|---|---|---|
Config.Uploader.Resource |
'rarx_uploader' |
Upload resource used as a fallback (see Uploads). |
Config.Uploader.MaxImageChars / MaxVideoChars / MaxAudioChars |
10000000 / 10000000 / 4000000 |
Maximum base64 characters (about 7.5 / 7.5 / 3 MB). |
Config.Uploader.PerMinute |
8 |
Uploads per minute. |
Config.Uploader.TicketSeconds |
120 |
Validity of an upload authorisation. |
Config.Uploader.MaxPhotos / MaxAlbums / TrashDays |
500 / 50 / 30 |
Gallery limits. |
Config.Camera.MaxVideoSeconds |
60 (5-600) |
Seconds per camera video. Quality drops automatically to fit MaxVideoChars. |
Config.FaceId.BlockCovered |
true |
Face Unlock fails if the character wears a mask or bandana and asks for the passcode. |
Config.FaceId.AllowedMasks |
{} |
Mask numbers that do not cover the face. |
Config.FaceId.CoveringHelmets |
{} |
Helmets (prop 0) that do cover the face. |
Config.FaceId.Fingerprint |
{ ifruitduo = true } |
Models with fingerprint unlock, not affected by masks. |
Config.RpcLimit.PerSecond / Burst |
25 / 60 |
Requests per second and maximum burst per player. Above that the phone answers err_too_fast. PerSecond = 0 disables it. |
Battery#
| Key | Default |
|---|---|
Config.Battery.Enabled |
false (the admin panel can enable it) |
Config.Battery.DrainSeconds / DrainSecondsIdle |
55 / 100 |
Config.Battery.ChargePerTick / ChargeMinutes |
5 / 20 |
Social and entertainment#
| Key | Default |
|---|---|
Config.RRX.* (Lenz) |
Enabled true, UsernameMin 3, UsernameMax 20, MaxCaption 2200, MaxComment 500, MaxMediaPerPost 10, StoryHours 24, FeedPageSize 12, CostToVerify false |
Config.RRX.Live.* |
Enabled true, Fps 6, Width 480, Quality 0.65, MaxConcurrent 3, MaxViewers 20, ChatLines 60 |
Config.Fans.* (Privé) |
Commission 0.20, MinPrice 0, MaxPrice 50000, MinTip 10, MaxTip 100000, PageSize 20, ImageHosts, MaxImageBytes 8 MB, CommissionAccount nil |
Config.Dating.* (Flechazo) |
DailyLikes 20, MaxPhotos 6, VipPrice 5000, VipDays 30, VipLabel 'FLECHAZO VIP', Genders |
Config.DarkChat.* |
Enabled true, CodeLength 6, MaxMembers 24, MaxRooms 8, InviteRadius 3.0, BurnOptions { 0, 5, 30, 60, 1440 } |
Config.News.* |
Publishers (jobs/businesses allowed to publish), MaxPerDay 6, MaxLength 8000 |
Config.Ads.* |
Days 7, MaxPerPhone 5, Cost 0, MaxPhotos 6, MaxTags 5, TagLength 20, PageSize 24, RenewHours 24, MaxSaved 200, Categories |
Config.Music.AllowCustomUrl |
true |
Browser#
| Key | Default | What it does |
|---|---|---|
Config.Browser.Enabled |
true |
Browser app. |
Config.Browser.Home |
'' |
Home page. |
Config.Browser.Sites / Bookmarks |
{} |
Built-in sites and default bookmarks. |
Config.Browser.CX |
prefilled ID | Google Programmable Search Engine ID. Replace with your own. |
Config.Browser.SafeSearch |
true |
Safe search. |
Config.Browser.SearchEngine |
Google search URL | Search URL prefix. |
Config.Browser.BlockedDomains / BlockedWords |
adult sites / adult terms | Blocked domains and search words. |
Money, jobs and transport#
| Key | Default |
|---|---|
Config.Bank.MaxTransfer / MaxDaily / MaxWeekly |
500000 / 2000000 / 8000000 |
Config.Bank.Offline |
true (allow transfers to offline players) |
Config.Bills.MaxAmount / Cooldown / FinesToIssuer |
1000000 / 5 s / false |
Config.Bills.Issuers |
invoice = { anyJob = true }, fine = { jobs = { 'police', 'sheriff' } } |
Config.Bills.Accounts |
{} |
Config.Crypto.* |
Mode 'both' (real, custom, both), Currency 'usd', Refresh 300, Fee 0.02, MaxPerTrade 500000, MinTrade 1, MaxDailyBuy/MaxDailySell 2000000, Slippage 0.03, MaxStale 1800, MaxJump 0.5, Transfer true, ApiKey '' |
Config.Crypto.Coins / Names / Symbols / Colors |
six real coins with in-game names, symbols and colours |
Config.Crypto.Custom / CustomTick |
one custom coin (RRX Coin) / 60 s |
Config.Market.* |
MaxItems 6, MaxStock 50, Commission 0.05, Blocked, CommissionAccount '' |
Config.BlackMarket.* |
Days 3, MaxPerPhone 6, MaxItems 6, MaxStock 50, Commission 0.1, DropRadius 5.0, DropMinutes 60, PickupMinutes 1440, Blocked, CommissionAccount '' |
Config.Rides.* |
MinDistance 100, DriverCut 0.85, Timeout 5, StuckMinutes 30, CheckRadius false |
Config.Rides.Taxi |
base 150, perKm 45, employer = { businesses = { 'taxi' } } |
Config.Rides.Go |
base 300, perKm 90, employer false |
Config.Services.* |
Cooldown 60 s, AlertMinutes 30, MaxMessage 300, List (police, ambulance, mechanic) |
Config.AppRules.Unemployed / NoGang |
'unemployed' / 'none' |
Valet#
| Key | Default |
|---|---|
Enabled / Price |
true / 0 |
MinDistance / Distance |
70.0 / 140.0 |
TicketSeconds / Cooldown |
60 / 120 |
PedModel / DrivingStyle / Speed |
's_m_y_valet_01' / 786603 / 18.0 |
ArriveDistance / StuckSeconds / MaxSeconds / TeleportDistance |
12.0 / 25 / 150 / 30.0 |
AllowCancel / RefundOnCancel |
true / false |
AllowOutside / OutsideMinDistance |
false / 250.0 |
Garage |
resource = 'rarx_garages' with its take-out and store callbacks |
Wallpapers, accents, sounds and stickers#
| Key | Format | Notes |
|---|---|---|
Config.Wallpapers |
{ id, label, url, light? } |
url relative to ui/ or https://. light = true if the wallpaper is bright (dark text). Entries without id, label or url are ignored with a warning. |
Config.Accents |
{ id, label, acc = '#RRGGBB', rgb = 'r, g, b', soft?, pale?, deep? } |
Colours players can pick. |
Config.Sounds.Ringtones |
{ id, label, file } |
file in ui/sounds/. |
Config.Sounds.Alerts |
{ id, label, file } |
file = false = silent. |
Config.Sounds.Ringback / Hangup |
{ sound, set, loops? } |
Native GTA sounds when calling and hanging up. |
Config.StickerPacks |
{ slug, title, cover, stickers = { { emoji } or { url } } } |
Sticker packs in Messages. |
Config.Music.Stations |
{ id, name, url = 'https://...', genre?, image? } |
Fixed radio stations (in addition to those from the admin panel). |
Config.Wallpapers = {
{ id = 'default', label = 'Cloud 8', url = 'images/wallpapers/cloud8.jpg' },
{ id = 'light', label = 'Claro', url = 'images/wallpapers/light.svg', light = true },
-- add your own: a path inside ui/ or an https:// URL
{ id = 'city', label = 'City', url = 'https://cdn.example.com/city.jpg' },
}Admin and moderation#
| Key | Default | What it does |
|---|---|---|
Config.Admin.Command |
'telefonoadmin' |
Admin panel command (see Config.Keys.AdminCommand). |
Config.Admin.Ace |
'rarxphone.admin' |
ACE permission for admins. |
Config.Admin.Export |
{ resource = 'rarx_admin', method = 'CheckAdmin' } |
Export used to check admin rights. |
Config.Admin.Licenses |
{} |
Licenses always treated as admins. |
Config.Moderation.BanApps |
rrx, birdy, fans, darkchat, dating, news, ads, blackmarket |
Apps affected by a phone ban. |
Config.Moderation.ReadableWhileBanned |
{} |
Apps that stay readable while banned. |
Config.Logs.Webhook / Name / What |
'' / 'RARX' / per type |
Legacy general logging. Leave the webhook empty and use config/logs.lua. |
Database#
| Key | Default | What it does |
|---|---|---|
Config.Database.AutoInstall |
true |
Creates missing tables on start and applies pending migrations from sql/migrations/. false disables it (you must import the SQL manually; the console tells you what is missing). |
The convar set rarx_phone_auto_sql 0 also disables it, and set rarx_phone_migrate 1 forces migrations even when it is false.
Integrations (config/integraciones.lua)#
Banking#
| Key | Default | What it does |
|---|---|---|
resource |
'rarx_banking' |
Banking resource. |
accounts |
'GetAccountsInfoByCitizenId' |
Export that lists a character's accounts. |
charge |
'PayFromDefaultAcc' |
Export that charges the default account. |
deposit |
'ReceiveToDefaultAcc' |
Export that pays into the default account. |
Garage#
| Key | Default | What it does |
|---|---|---|
resource |
'rarx_garages' |
Garage resource (also used by valet). |
table |
'player_vehicles' |
Owned vehicles table. |
columns |
owner = 'citizenid', plate, fakeplate, model = 'vehicle', label = 'vehicle_label', mods, garage, state, fuel, engine, body, depotPrice = 'depotprice' |
Column name for each field. |
states |
{ [0] = 'out', [1] = 'stored', [2] = 'impounded' } |
Value of the state column mapped to the phone state. |
ByFramework.esx |
table = 'owned_vehicles', owner = 'owner', model = 'vehicle', garage = 'parking', state = 'stored', states = { [0] = 'out', [1] = 'stored' } |
Profile per framework. |
If the detected framework (or the one forced in Config.Framework) has a profile and the garage still uses the Qbox/QBCore values (player_vehicles + citizenid), the profile is used. If you changed table or columns.owner, your values are respected.
Housing#
| Key | Default |
|---|---|
resource |
'rarx_housing' |
ownedHouses / getHouse / hasKey |
'getOwnedHouses' / 'getHouse' / 'hasKey' |
table |
'rarx_housing' |
columns |
id, owner, name, data, positions, holders |
Resource requirements#
ox_libandoxmysql: required.- Optional (features that depend on them switch off on their own if missing):
rarx_banking,rarx_garages,rarx_housing,rarx_inventory/ox_inventory,rarx_uploader,rarx_business,rarx_map(map tiles),pma-voice,qbx_vehiclekeys.
Widgets (config/widgets.lua)#
Widgets.Catalogo lists the widgets players can add. Each entry is { id, label, fuente }, where fuente = 'propio' means the phone fills it and fuente = 'fuera' means another resource fills it with SetWidgetData (hidden when Config.Features.ExternalWidgets = false).
Shipped widgets: servidor (server status), weather (clock and weather), bank, trabajo (job and shift, external), emergencias (emergency call), multas (fines and invoices), garaje (garage), negocio (business, external), facciones (factions on duty), ruta (GPS route), radio (external), anuncios (ads), battery, activity (pending items). config/extra/atajos.lua adds atajos (shortcuts) and salud (health).
lb-phone compatibility (config/compat.lua)#
rarx_phone provides lb-phone, so resources written for lb-phone keep working.
| Key | Default | What it does |
|---|---|---|
LbExports |
true |
Expose the lb-phone export names. |
LbEvents |
true |
Also fire the lb-phone event names. |
ResetCommand |
'resetphonesecurity' |
Admin command /resetphonesecurity <player id>: removes PIN and face unlock from that player's phone. |
VerifyCommand |
'toggleverified' |
Admin command /toggleverified <app> <username> [1/0/2]: verifies a social account (2 = gold, Birdy only). |
PasswordCommand |
'changepassword' |
Admin command /changepassword <app> <username> <password> (set in config/extra/cuentas.lua). |
EmergencyApp / EmergencyTitle / EmergencyContent |
'settings' / 'Alerta de emergencia' / 'Aviso de emergencia.' |
Defaults for emergency alerts sent through the lb-phone API. |
MailSender / MailSubject / MailMaxActions |
'Sistema' / 'Aviso del sistema' / 4 |
Defaults for mails sent through the lb-phone API. |
AppNames |
lb-phone app name to rarx_phone app id | For example twitter to birdy, instagram to rrx, garage to vehicles. |
LbChecks |
lb-phone check name to rarx_phone action | For example postBirdy to birdy:post, buyCrypto to crypto:buy. |
Set any command to '' (or false) to not register it. All three commands require phone admin rights (or the server console).
Coverage (config/cobertura.lua)#
Config.Coverage simulates cell towers. Far from towers, in tunnels or in dead spots, players can lose signal and cannot call or send messages.
Bars (0-4) are calculated on the client every Interval ms, only if the player moved more than MoveDistance metres (and at least every 5 checks even when standing still). The status bar of every model shows this value.
Calculation order:
Config.Features.Coverage = false: always 4.- Admin panel zones: mode
on= signal only inside the zones;off= no signal inside the zones;noneor no zones = no effect. If the zones say "no signal", it is 0 bars regardless. - Towers: 2D distance to the nearest tower in
TowerList, usingRange. WithTowers = false(or an empty list) it stays at 4. - Client modifiers: inside an interior, subtract
Interiorbars; underground (not in an interior and with ground more thanUnderground.Depthmetres above), subtractUnderground.Bars. MinBarsraises the result to that minimum.- Hard limits that beat
MinBars:BelowZ(below that height, 0 bars) andDeadSpots.
| Key | Default | What it does |
|---|---|---|
Towers |
true |
Use the towers. |
TowerList |
110 towers across the map | List of { x, y, z } (vector3 also accepted). |
Range |
{ [4] = 250.0, [3] = 500.0, [2] = 750.0, [1] = 1500.0 } |
Maximum distance for each number of bars. Farther = 0. |
MinBars |
0 |
Minimum bars. |
Interval / MoveDistance |
3000 ms / 5.0 m |
How often to check and how far to move before recalculating. |
Interior |
0 |
Bars lost inside an interior. |
Underground |
{ Enabled = false, Depth = 8.0, Bars = 2 } |
Tunnel and underground detection. |
BelowZ |
nil |
Height below which there is no signal. |
DeadSpots |
{} |
Spheres { x, y, z, radius, bars }: inside, at most bars. Without z it is a cylinder. |
Block |
calls:start, calls:invite, messages:send, messages:sendMoney, contacts:sendCard |
Actions the server rejects with err_no_signal at 0 bars. Emergency numbers always go through. |
Debug |
false |
Draws towers and their ranges in-game (for setup only). |
Config.Coverage = {
Towers = true,
MinBars = 1, -- never fully lose signal by distance
Interior = 1, -- lose one bar inside interiors
Underground = { Enabled = true, Depth = 8.0, Bars = 2 },
DeadSpots = {
{ x = 1000.0, y = -2000.0, z = 30.0, radius = 80.0, bars = 0 },
},
-- ...
}The server recalculates the bars for every blocked action using the ped position on the server (towers, zones, DeadSpots, BelowZ) and keeps the minimum of that and what the client reported (the client can only lower it: interiors and tunnels). Players without signal cannot be called (err_call_unreachable, as with airplane mode); messages sent to them are still delivered. Everything else (notes, gallery, map and other apps) works without signal.
Exports: client exports.rarx_phone:SetServiceBars(n | false) (also exports['lb-phone']:SetServiceBars) forces the displayed bars (the server still calculates its own, so forcing 4 does not allow calls in a dead zone; forcing 0 does cut them) and GetServiceBars(); server exports.rarx_phone:GetServiceBars(src).
AirShare (config/airshare.lua)#
Share with the player next to you (AirShare on iFruitOS, nearby share on Andromeda). The share button appears in Gallery (photos and videos, several at once), Notes, Voice Memos, Map (saved place, marked point or your location) and Contacts (a contact or your own card). A sheet lists nearby people (contact name if saved, otherwise their phone name) and "Share with apps" (Messages) below. The receiver gets a card to accept or decline; if their phone is closed they get an outside alert and the card appears when they open it (until it expires). Accepted items are saved in their Gallery, Notes, Voice Memos, Map places or Contacts.
| Key | Default | What it does |
|---|---|---|
Range |
7.5 m |
Maximum distance (1-50), measured on the server. |
Expire |
60 s |
Time to accept (10-600). |
Cooldown |
2500 ms |
Minimum time between sends from the same player. |
MaxPending |
3 |
Maximum pending sends for one receiver. |
MaxPhotos |
10 |
Photos per send (1-50). |
Types |
all true |
photos, note, memo, place, contact: set false to disable a type. |
Config.AirShare = {
Range = 7.5,
Expire = 60,
Cooldown = 2500,
MaxPending = 3,
MaxPhotos = 10,
Types = { photos = true, note = true, memo = true, place = true, contact = true },
}Security: distance and routing bucket are checked with server coordinates; the receiver must have the phone on; content is loaded from the sender's own data by id, never from the client; URLs are re-checked against allowed hosts; a contact can only be shared if it is your number or in your contacts; if the receiver has blocked you, the send stays pending without notifying them. The receiver's limits (Config.Notes.Max, Config.VoiceMemos.Max, Config.Maps.MaxPlaces, full gallery) are respected. Pending sends live in memory and are cleared when they expire, are answered or cancelled, or either player disconnects.
Music (config/music.lua)#
| Key | Default | What it does |
|---|---|---|
Config.Music.Songs |
{} |
Songs in the Music library: { title, url = 'https://...', artist?, album?, cover?, genre?, duration?, id? }. Without id, one is generated from artist and title; if you change those, players' playlists lose the song. |
Config.Music.Albums |
{} |
Optional cover and year per album: { title, artist?, cover?, year? }. Songs without cover use the album's. |
Config.Music.Artists |
{} |
Optional artist photo: { name, image? }. |
Config.Music.MaxPlaylists / MaxPlaylistSongs |
50 / 200 |
Playlists per character and songs per playlist. |
Config.Music.MaxSongs / MaxImport |
300 / 100 |
Saved songs per character and songs per import. |
Config.Music.AllowYoutube / Oembed |
true / true |
Allow YouTube links and fetch title/cover metadata. |
Config.Music.Hosts |
nil |
Allowed audio hosts. |
Config.Music.SaveCooldown / ImportCooldown |
1000 / 30000 ms |
Rate limits. |
Config.Music.Songs = {
{ title = 'Night Drive', artist = 'Example Artist', album = 'Example Album',
url = 'https://cdn.example.com/night-drive.mp3', cover = 'https://cdn.example.com/cover.jpg' },
}
Config.Music.Albums = {
{ title = 'Example Album', artist = 'Example Artist', cover = 'https://cdn.example.com/cover.jpg', year = 2026 },
}GIFs in Messages (config/gifs.lua)#
Server-only file: the API key never reaches the client. The interface asks the server for GIFs and the server makes the HTTP request with the key.
| Key | Default | What it does |
|---|---|---|
Provider |
'tenor' |
'tenor' (Google API v2), 'giphy' or 'none'. |
ApiKey |
'' |
API key. Prefer leaving it empty and using the convar. |
ApiKeyConvar |
'rarxphone_gifs_key' |
Convar read when ApiKey is empty. |
ClientKey |
'rarx_phone' |
Tenor client_key (only identifies the integration). |
ContentFilter |
'medium' |
'off', 'low', 'medium', 'high' (mapped to Giphy ratings r, pg-13, pg, g). |
Locale |
'es_ES' |
Search language (Giphy uses the first two letters). |
Limit |
24 |
Results per page (4-50). |
CacheSeconds / CacheMax |
600 / 200 |
In-memory search cache (0 = no cache) and maximum cached searches. |
RateLimitMs |
700 |
Minimum wait between requests from one player. |
MaxPerMinute |
120 |
API requests per minute server-wide (cached results do not count). |
Timeout |
6000 |
Milliseconds before the request is considered failed. |
Hosts |
Tenor and Giphy media hosts | Allowed image hosts for gif messages (exact names, no wildcards). |
set rarxphone_gifs_key "YOUR_GIF_API_KEY"- Without a provider or key, the GIF button does not appear in Messages.
- The server only returns results from
Hosts, and thegifmessage type is checked against the general media host allowlist orConfig.Gifs.Hosts. The GIF host list only applies to thegiftype: photos, videos or voice notes with Tenor/Giphy links are still rejected. - Keys: Tenor from Google Cloud Console ("Tenor API", free); Giphy from developers.giphy.com (the beta key has an hourly limit, so raise
CacheSeconds).
Logs and Discord channels (config/logs.lua)#
config/logs.lua is loaded only on the server, so webhooks and keys never reach the client. It has its own validator that prints warnings the same way ([rarx_phone] config: Config.Logs...).
As shipped, nothing is sent (no webhooks). Filling Default is enough to get every log in one channel.
Options#
| Key | Default | What it does |
|---|---|---|
Enabled |
true |
Master switch for logs (does not affect Feeds). |
Service |
'discord' |
'discord' (webhooks), 'ox_lib' (lib.logger, needs set ox:logger and its key), 'fivemanage' (FiveManage logs API) or 'none'. |
Default |
'' |
General webhook, used by every category without its own. |
Name / Avatar |
'RARX' / '' |
Sender name and image (https) in Discord. |
IncludeIdentifiers |
true |
Adds license, Discord (<@id>), Steam (with profile link), FiveM. The IP is never included. |
IncludeContent / ContentMax |
true / 500 |
Include written text (messages, mails, posts) and truncate it (0-1800). |
Dataset |
'' |
FiveManage dataset (X-Fivemanage-Dataset header). |
Categories.<cat> |
{ Enabled = true, Webhook = '' } |
Enable/disable each category and give it its own webhook. calls = false or calls = 'https://...' also work. |
Colors.<cat> |
see file | Embed colour per category ('#RRGGBB' or number); warning and error for logs with that level. |
RateLimit |
Requests 5, Window 2000, QueueMax 200, Retries 3 |
Requests per webhook per window (ms), queue size per webhook and retries on 5xx or network errors. |
Feeds |
see below | Public feed channels. |
Config.Logs.Service = 'discord'
Config.Logs.Default = 'YOUR_WEBHOOK_URL'
Config.Logs.Categories = {
money = { Enabled = true, Webhook = 'YOUR_MONEY_WEBHOOK_URL' },
darkchat = { Enabled = false, Webhook = '' },
-- other categories use Default
}Webhook selection order for a category: category convar, Categories.<cat>.Webhook, rarx_phone_logs_webhook convar, Default, legacy Config.Logs.Webhook.
Categories#
| Category | What is logged |
|---|---|
calls |
End of each call (target, status, duration, video, hidden, emergency), voicemails (with audio link) and call recordings. |
messages |
Every message sent (text, photo, audio, location, contact, money; with attachments) and groups created. |
mail |
Mail accounts created and mails sent (recipients, subject, body, attachments). |
social |
Lenz (account, post, story, comment, DM, live), Privé (post, message), Birdy (post and reply) and news published. |
darkchat |
Aliases, rooms created/closed, joins, invites and messages (with the alias and the real player). |
uploads |
Files uploaded (type, size, link), authorised direct uploads and photos/videos saved to Gallery. |
money |
Transfers, money via Messages, invoices and fines issued and paid, crypto (buy, sell, send), Privé (unlocks and tips). |
admin |
Admin panel changes, moderation, Birdy (reports, deletions, verification) and valet. |
market |
Ads published and purchases; black market (listings, purchases, cancelled deals). |
dating |
Profile saved, new matches, messages and VIP purchased. |
services |
Service alerts (police, EMS, ...), Taxi/GO rides. |
phones |
Number assigned to a new character, number requests and approvals, phones bought and lines recovered, lines reassigned by an admin. |
Each Discord log is an embed with the action title, player (name and ID), character, CID, number, target, amount, action-specific fields, content in a code block, media links (the first image is shown), identifiers, category colour and time.
Discord limits and safety#
- Requests go through a queue per webhook with a sliding window (5 every 2 s by default). Up to 10 embeds are grouped per message (max 6000 characters).
- On 429, the
retry_afterfrom Discord is honoured and the same batch is resent first. - 5xx or network errors: retried with increasing delay (
RateLimit.Retriestimes). 401/403/404 (deleted webhook): that webhook is skipped until restart and a warning is printed once. - If the queue fills up, the oldest logs are dropped with a warning.
- No pings:
allowed_mentionsis empty and@everyone,@hereand<@...>in player text are neutralised. - The console never prints webhook URLs or keys.
Feed channels#
Config.Logs.Feeds copies public posts to Discord as a feed:
| Channel | What it posts |
|---|---|
rrx |
Lenz posts from non-private accounts (text, author with avatar, image). |
birdy |
Birdy posts (not replies) from non-protected accounts. If you already use Config.Birdy.Webhook or the rarx_phone_birdy_webhook convar, leave this empty to avoid double posting. |
ads |
Ads (title, text, price, category, phone, image). |
news |
News (headline, text, category, author, image). |
Each channel is { Enabled, Webhook, Name, Avatar, Color }. Feeds.Enabled = false turns them all off. Feeds work even if Logs.Enabled is false or Service is not discord.
Testing#
In the server console: rarxphone_logs shows the service, active categories, channels and queue state; rarxphone_logs test sends a test log to every active category and channel.
Extra modules (config/extra/)#
Every .lua file in config/extra/ is loaded automatically on both client and server.
Software update check (actualizacion.lua)#
| Key | Default | What it does |
|---|---|---|
Config.Update.Url |
'' |
URL of a JSON file { "version": "2.1.0", "date": "2026-11-20", "notes": { "es": "...", "en": "..." }, "url": "https://..." }. Empty = no check. |
Config.Update.CheckMinutes |
360 |
How often the server checks. |
Config.Update.Console |
true |
Print a notice in the console. |
The server checks on start and every CheckMinutes, and shows the result in Settings > General > Software Update (only admins see the download link). The installed version is the one in fxmanifest.lua.
Shortcuts and Health (atajos.lua)#
| Key | Default | What it does |
|---|---|---|
Config.Atajos.MaxAtajos / MaxAutomatizaciones / MaxAcciones |
40 / 20 / 12 |
Shortcuts, automations, and actions per shortcut. |
Config.Atajos.RadioLugar / RadioMinimo / RadioMaximo |
60.0 / 20.0 / 400.0 |
Default, minimum and maximum radius of location triggers (m). |
Config.Atajos.Cada / CadaReposo / CadaServicio |
1000 / 5000 / 5000 ms |
Automation check intervals. |
Config.Salud.Activa |
true |
Health app tracking. |
Config.Salud.Cada / EnvioCada |
1000 ms / 60 s |
Sampling and save interval. |
Config.Salud.ZancadaAndando / ZancadaCorriendo |
0.75 / 1.1 |
Stride length (m) walking and running, used to count steps. |
Config.Salud.MetaPasos |
6000 |
Daily step goal. |
Config.Salud.Herido / Critico |
35 / 15 |
Health thresholds for injured / critical. |
Config.Salud.AvisoCada |
120 s |
Minimum time between health alerts. |
Config.Salud.Dias |
7 |
Days of history. |
Birdy (birdy.lua)#
| Key | Default |
|---|---|
Config.Birdy.Promote |
Enabled true, Packages (2500 for 100 views, 6000 for 300, 15000 for 1000), MaxActivePerAccount 3, ViewCooldownMinutes 30, EveryPosts 6, AllowCompanyAccounts true, DepositTo '', BankLabel 'Birdy Ads' |
Config.Birdy.DMs |
Enabled true, MaxLength 1000, PageSize 30, RespectPhoneBlocks true |
Config.Birdy.Bells |
Enabled true, MaxPerAccount 200 |
Config.Birdy.Push |
post = true, dm = true |
Promoted posts are inserted every EveryPosts posts in the feed.
Camera (camara.lua)#
| Key | Default | Range |
|---|---|---|
Config.Camera.WideAngle |
true |
|
Config.Camera.MaxZoom |
4 |
1-10 |
Config.Camera.Fov.Wide / Normal / Tele |
100.0 / 70.0 / 20.0 |
70-130 / 20-100 / 5-70 |
Config.Camera.Landscape.Enabled |
true |
|
Config.Camera.Landscape.PropOffset / PropRotation |
vector3(0.0, 0.0, 0.0) / vector3(0.0, 90.0, 0.0) |
|
Config.Camera.Roll.Enabled / Speed / Max |
true / 60.0 / 45.0 |
1-720 / 1-180 |
Config.Camera.Freeze.Enabled / MaxDistance / MaxSeconds |
true / 10.0 / 60 |
1-500 / 0-3600 |
Config.Camera.Sensitivity / Smoothing |
1.0 / 18.0 |
0.1-5 / 0-60 |
Config.Camera.MaxLookUp / MaxLookDown |
70.0 / 70.0 |
0-89 |
Config.Camera.Walkable / AllowRunning |
true / false |
|
Config.Camera.Vehicle.Enabled / MaxTurn / SelfieArm |
true / 120.0 / 0.38 |
0-180 / 0.15-1.5 |
Config.Camera.Keys.RollLeft / RollRight / Freeze / Landscape |
'Z' / 'C' / 'X' / false |
Car mode (coche.lua)#
| Key | Default | What it does |
|---|---|---|
Config.Car.Enabled |
true |
In-car phone screen. |
Config.Car.AllowLocked |
true |
Allow it when the phone is locked. |
Config.Car.DefaultMode |
'ask' |
'auto', 'ask' or 'never'. |
Config.Car.Passenger |
true |
Also for passengers. |
Config.Car.Position / Scale / OffsetX / OffsetY |
'bottom' / 1.0 / 0 / 0 |
On-screen placement. |
Config.Car.OfferSeconds |
12 |
How long the offer prompt stays. |
Config.Car.RouteEvery |
4000 ms |
Route refresh interval. |
Config.Car.RadioOff |
true |
Turn off the vehicle radio. |
Config.Car.BlockedClasses |
{ 13, 14, 15, 16, 21 } |
Vehicle classes where it is not offered (cycles, boats, helicopters, planes, trains). |
Config.Car.QuickReplies |
{} |
Quick replies. |
Config.Car.Keys |
Toggle 'F7', Next 'PAGEUP', Prev 'PAGEDOWN', PlayPause 'END', Screen 'INSERT' |
Keys. |
Shared music and walkie-talkie (compartir.lua)#
Config.Compartir.Musica (play music out loud for nearby players and in vehicles):
| Key | Default |
|---|---|
Enabled / Altavoz / AltavozPorDefecto |
true / true / false (speaker allowed / speaker on by default) |
Radius / Hysteresis |
15.0 (2-200) / 3.0 |
MaxVolume / VolumenMinimo / ZonaPlena / Rolloff |
1.0 / 0.5 / 0.3 (0-0.9, full-volume share of the radius) / 1.4 |
VehicleMuffle / VehicleVolume / SoloDentroDelCoche |
0.35 / 0.8 / false (only inside the car) |
CooldownInicio / CooldownSync / InicioPorMinuto |
1500 / 300 ms / 10 starts per minute |
UnEmisorPorZona |
30.0 (one speaker per this radius) |
SoloCatalogo / Hosts |
false (only library songs) / nil |
Coche / Cerca |
true / true (share in car / nearby) |
ServerTick / ClientTick / SinLatidoMs |
500 / 250 / 20000 ms |
ZonasBloqueadas |
{} (zones where it is not allowed) |
Config.Compartir.Walkie: Enabled true, Tecla 'J' (push-to-talk key), InvitacionSegundos 30, MaxHablaSegundos 30, MaxMinutos 0 (0 = no session limit), Volumen 0.9.
Mail and breaking news (correo.lua)#
| Key | Default |
|---|---|
Config.Mail.UndoSeconds |
8 (0-60) |
Config.Mail.Drafts |
Enabled true, Max 50 |
Config.Mail.Schedule |
Enabled true, Clock 'game' ('game', 'real' or 'both'), MsPerGameMinute 2000, MinMinutes 1, MaxHours 72, MaxPending 10 |
Config.Mail.AttachmentTypes |
note, audio, location all true |
Config.Mail.NoteMaxLength |
4000 |
Config.News.Breaking |
Enabled true, Publishers nil, MaxPerHour 2, MaxPerHourGlobal 6, Notify true, IgnoreDoNotDisturb true, HighlightMinutes 120 |
Config.News.ShareToBirdy |
true |
App accounts (cuentas.lua)#
Password-protected accounts for social apps.
| Key | Default |
|---|---|
Config.Cuentas.Enabled |
true |
Config.Cuentas.Apps |
rrx, birdy, mail, darkchat |
Config.Cuentas.MinLength / MaxLength |
4 / 64 (password length) |
Config.Cuentas.MaxAttempts / LockSeconds |
5 / 300 |
Config.Cuentas.AccountMaxAttempts |
15 |
Config.Cuentas.MaxSessionsPerCharacter |
5 |
Config.Cuentas.Orgs |
Enabled true, Apps { rrx, birdy }, MaxPerCharacter 3, MaxMembers 25 (shared organisation accounts) |
Config.Compat.PasswordCommand |
'changepassword' |
Gallery (galeria.lua)#
| Key | Default |
|---|---|
Config.Gallery.SharedAlbums |
true |
Config.Gallery.SharedMaxAlbums / SharedMaxMembers |
20 / 20 |
Config.Gallery.ImportUrl |
true (import images from an https:// URL) |
Config.Gallery.ImportHosts |
nil (allowed hosts for imports) |
Garage and company (garaje.lua)#
| Key | Default | What it does |
|---|---|---|
Config.Garage.RemoteLock / LockDistance / LockCooldown |
true / 40.0 / 1500 |
Lock/unlock from the phone. |
Config.Garage.KeySystems |
qbx_vehiclekeys, rarx_garages, qb-vehiclekeys, wasabi_carlock, MrNewbVehicleKeys, Renewed-Vehiclekeys, qs-vehiclekeys, vehicles_keys, cd_garage | Key resources checked, in order. onlyGrant = true means it can only grant access, never deny it. |
Config.Garage.OwnerAlwaysHasKeys |
false |
Owners always count as having keys. |
Config.Garage.LocateAlarm |
Enabled true, Seconds 10, Cooldown 15000, Radius 150.0, Horn true, Lights true |
Locate-vehicle alarm. |
Config.Garage.Photos |
Enabled true, Cooldown 3000 |
Vehicle photos. |
Config.Garage.ImpoundFee |
300 |
Impound fee. |
Config.Garage.Impound |
garages true, history true, police true, dataColumn 'impound_data' |
Impound features. |
Config.Company.Enabled |
true |
Company/job management. |
Config.Company.Accounts |
police = 'BPOLICE', ambulance = 'BEMS' |
Job to bank account. |
Config.Company.AccountPrefix / OnlyMappedAccounts |
'' / true |
Account name for unmapped jobs is prefix + job; with OnlyMappedAccounts only mapped jobs get an account. |
Config.Company.MoneyAccount / MaxAmount |
'bank' / 10000000 |
|
Config.Company.HireDistance |
false |
Maximum distance to hire (false = any). |
Config.Company.QuickReplies / MaxReply |
five Spanish replies / 200 |
Quick replies for company messages. |
Map points of interest (mapa.lua)#
Config.MapPois.Enabled = true. Config.MapPois.Categories defines categories (police, medical, mechanic, gas, shop, food, bank, gov) as { id, icon, color, label } (label can be per language). Config.MapPois.Points lists places as { name, category, x, y, icon? }.
Config.MapPois.Points = {
{ name = 'Mission Row Police Station', category = 'police', x = 428.2, y = -981.5 },
{ name = 'International Airport', category = 'gov', x = -1037.0, y = -2737.0, icon = 'plane' },
}Find Device, SOS, location sharing and low power (sistema2.lua)#
| Key | Default |
|---|---|
Config.Sistema2.FindMy |
Enabled true, Tick 15, ScanEvery 60, SaveEvery 60, SaveDistance 25.0, RingSeconds 30, RingSound 'Ringtone6.mp3', RingVolume 1.0, RingRadius 25.0, RingCooldown 15, LostMessageMax 160, InventoryHooks true, PinAttempts 5, PinWait 120 |
Config.Sistema2.Sos |
Enabled true, Number '911', Services { 'police', 'ambulance' }, LiveMinutes 10, LiveEvery 5, Cooldown 60 |
Config.Sistema2.Live |
Enabled true, Every 5, TomorrowHour 8, MaxActive 5, MaxTargets 32 (live location sharing) |
Config.Sistema2.Battery |
LowPowerFactor 1.6, Warnings { 20, 10 } (low battery warnings at these percentages) |
Social extras (social.lua)#
| Key | Default |
|---|---|
Config.RRX.Live.CoHost / InviteSeconds |
true / 60 |
Config.RRX.Stories |
CloseFriends true, MaxCloseFriends 150, Highlights true, MaxHighlights 12, MaxHighlightItems 40 |
Config.Dating.Rewind |
Enabled true, VipOnly true, PerDay 0 |
Config.Dating.SuperLike |
Enabled true, VipOnly true, PerDay 3 |
Config.DarkChat.RoomPasswords |
true |
Config.DarkChat.AutoRooms |
{} |
Voice (tecnico.lua)#
| System | Calls | Speaker | Voice filters and muting nearby players |
|---|---|---|---|
| pma-voice | server setPlayerCall |
yes, adds nearby players to the channel | yes (Mumble submix) |
| mumble-voip | client addPlayerToCall / removePlayerFromCall |
no | yes (Mumble submix) |
| saltychat | server AddPlayerToCall / RemovePlayerFromCall |
yes, SetPhoneSpeaker |
no |
| tokovoip_script | client addPlayerToRadio / removePlayerFromRadio |
no | no |
-- Change these only if your voice resource uses a different name
Config.Calls.VoiceResources = {
pma = 'pma-voice',
mumble = 'mumble-voip',
salty = 'saltychat',
toko = 'tokovoip_script',
}The phone's call volume setting only applies with pma-voice. The console command rarxphone_voz <id> prints the detected system.
Uploads (tecnico.lua)#
Config.Uploader.Method |
How it uploads | Key |
|---|---|---|
'fivemanage' (default) |
The interface asks the server for a signed URL and uploads directly to FiveManage; on failure the server uploads via Config.Uploader.Resource (if started) or directly to FiveManage. |
convar rarx_phone_fivemanage_key (or rarx_uploader_key, fivemanage:key) |
'resource' |
Always through the server, with the UploadMedia export of Config.Uploader.Resource. |
that resource's key |
'custom' |
Always through the server (proxy): the client sends the file to the server, which POSTs it to Config.Uploader.Custom.Url. |
in a convar, never in the file |
Config.Uploader.Custom:
| Field | Default | What it is |
|---|---|---|
Url |
'' |
https://... endpoint that receives the POST. |
Field / Fields |
'file' / nil |
File field name. Fields = { image = 'image', video = 'video', audio = 'audio' } changes it per type. |
Body |
'multipart' |
'multipart' (binary form-data) or 'base64json' (JSON { [Field] = base64, filename, mime }). |
Headers |
{ Authorization = 'convar:rarx_phone_upload_key' } |
Headers. A 'convar:NAME' value is read on the server with GetConvar. |
ResponsePath |
'url' |
Path to the URL in the JSON response: 'data.url', 'files[0].link', and so on. |
Extra |
nil |
Extra text fields added to the body. |
Timeout |
45 |
Seconds. |
MediaHosts |
{} |
Hosts added to the media allowlist (the Url host is added automatically). |
Config.Uploader.Method = 'custom'
Config.Uploader.Custom = {
Url = 'https://upload.example.com/api/upload',
Field = 'file',
Body = 'multipart',
Headers = {
-- never put the key in plain text: config files are downloaded by every client
Authorization = 'convar:rarx_phone_upload_key',
},
ResponsePath = 'data.url',
Timeout = 45,
MediaHosts = {},
}Service numbers and transfer (tecnico.lua)#
Config.ServiceNumbers = { Enabled = true, Speech = true, AnswerDelay = 1200, MaxDuration = 600 }. Config.Transfer.Enabled = true enables Settings > General > "Transfer to another phone".
Utilities (utilidades.lua)#
| Key | Default |
|---|---|
Config.Browser.MaxTabs / HistoryMax |
8 / 200 |
Config.WorldClock.Enabled |
true |
Config.WorldClock.Base |
'America/Los_Angeles' (base time zone for the world clock) |
Config.WorldClock.Cities |
New York, London, Madrid, Tokyo, Sydney ({ name, zone }, name can be per language) |
Config.StoreInfo.Developer |
'iFruit Inc.' |
Config.StoreInfo.Apps |
age ratings and developer per app (darkchat/blackmarket 18+, fans 18+, dating/crypto 17+) |
Convars#
Set these in server.cfg with set (never setr, so they stay on the server). Convars take priority over the config files.
| Convar | What it does |
|---|---|
rarx_phone_debug |
1 = debug output in the console. |
rarx_phone_auto_sql |
0 = disable automatic database install. |
rarx_phone_migrate |
1 = force migrations even with AutoInstall = false. |
rarx_phone_preview |
1 = enable preview mode. |
rarx_phone_fivemanage_key |
FiveManage key for uploads (falls back to rarx_uploader_key, then fivemanage:key). |
rarx_phone_upload_key |
Key for custom uploads (read through convar: headers). |
rarx_phone_turn_token_id / rarx_phone_turn_api_token |
Cloudflare TURN credentials for WebRTC. |
rarxphone_gifs_key |
GIF provider API key. |
rarx_phone_logs_webhook |
General log webhook (like Config.Logs.Default). |
rarx_phone_logs_webhook_<category> |
Webhook for one category, for example rarx_phone_logs_webhook_money. |
rarx_phone_feed_<channel> |
Webhook for a feed channel, for example rarx_phone_feed_birdy. |
rarx_phone_fivemanage_logs_key |
FiveManage key for logs (falls back to fivemanage:key). Never printed. |
rarx_phone_birdy_webhook |
Birdy webhook. |
set rarx_phone_fivemanage_key "YOUR_FIVEMANAGE_KEY"
set rarx_phone_logs_webhook "YOUR_WEBHOOK_URL"
set rarx_phone_turn_token_id "YOUR_TURN_TOKEN_ID"
set rarx_phone_turn_api_token "YOUR_TURN_API_TOKEN"
set rarxphone_gifs_key "YOUR_GIF_API_KEY"Languages#
Translations live in locales/<code>.json. Shipped languages: es, en, fr, de, pt, pt-BR, it, nl, pl, tr, ar.
Config.Languageslists which languages players can pick; each needs its JSON file.Config.DefaultLanguagemust be one of them (otherwise the first in the list is used).Config.DateLocalessets the date format per language.- To change individual texts without editing the JSON files, use
Config.Locale.Overrides.
Validated values reference#
Values checked on start. Anything missing or invalid falls back to the default shown.
| Key | Type | Default | Allowed |
|---|---|---|---|
Config.Ads.Cost |
number | 0 |
0 - 1e12 |
Config.Ads.Days |
number | 7 |
0.01 - 3650 |
Config.Ads.MaxPerPhone |
integer | 5 |
1 - 10000 |
Config.Ads.MaxPhotos |
integer | 6 |
1 - 20 |
Config.Ads.MaxTags / TagLength |
integer | 5 / 20 |
0 - 20 / 2 - 40 |
Config.Ads.PageSize |
integer | 24 |
6 - 60 |
Config.Ads.RenewHours / MaxSaved |
number / integer | 24 / 200 |
0 - 8760 / 1 - 10000 |
Config.Alarms.Max |
integer | 10 |
1 - 1000 |
Config.Alarms.RingSeconds |
number | 30 |
1 - 3600 |
Config.Bank.MaxTransfer / MaxDaily / MaxWeekly |
number | 500000 / 2000000 / 8000000 |
0 - 1e15 |
Config.Battery.DrainSeconds / DrainSecondsIdle |
number | 55 / 100 |
1 - 86400 |
Config.Battery.ChargePerTick / ChargeMinutes |
number | 5 / 20 |
1 - 100 / 1 - 1440 |
Config.Bills.MaxAmount / Cooldown |
number | 1000000 / 5 |
0 - 1e15 / 0 - 86400 |
Config.BlackMarket.Days |
number | 3 |
0.01 - 3650 |
Config.BlackMarket.MaxPerPhone / MaxItems / MaxStock |
integer | 6 / 6 / 50 |
1 - 1000 / 1 - 100 / 1 - 1000000 |
Config.BlackMarket.Commission |
number | 0.1 |
0 - 1 |
Config.BlackMarket.DropRadius / DropMinutes / PickupMinutes |
number | 5.0 / 60 / 1440 |
0 - 1000 / 0 - 525600 / 0 - 525600 |
Config.Calendar.Max |
integer | 300 |
1 - 100000 |
Config.Calls.RingTimeout / MaxDuration |
number | 30 / 3600 |
5 - 600 / 30 - 86400 |
Config.Calls.MaxParticipants |
integer | 5 |
2 - 32 |
Config.Calls.SpeakerRadius |
number | 3.0 |
0 - 100 |
Config.Calls.Video.Fps / Width / Quality |
number | 20 / 540 / 0.7 |
1 - 60 / 64 - 1920 / 0.05 - 1 |
Config.Calls.Video.KBPorSegundo / MaxConcurrent |
number | 1024 / 8 |
8 - 100000 / 0 - 1000 |
Config.Calls.Voice |
text | 'auto' |
auto, pma-voice, pma, mumble-voip, mumble, saltychat, salty, tokovoip, tokovoip_script, toko, none |
Config.Camera.MaxVideoSeconds |
integer | 60 |
5 - 600 |
Config.Contacts.ShareRange |
number | 5.0 |
0 - 1000 |
Config.Crypto.Mode |
text | 'both' |
real, custom, both |
Config.Crypto.Refresh / CustomTick |
number | 300 / 60 |
10 - 86400 / 1 - 86400 |
Config.Crypto.Fee / Slippage |
number | 0.02 / 0.03 |
0 - 1 |
Config.Crypto.MaxPerTrade / MinTrade |
number | 500000 / 1 |
0 - 1e15 |
Config.Crypto.MaxDailyBuy / MaxDailySell |
number | 2000000 |
0 - 1e15 |
Config.Crypto.MaxStale / MaxJump |
number | 1800 / 0.5 |
10 - 31536000 / 0 - 100 |
Config.DarkChat.CodeLength / MaxMembers / MaxRooms |
integer | 6 / 24 / 8 |
3 - 32 / 2 - 1000 / 1 - 1000 |
Config.DarkChat.InviteRadius |
number | 3.0 |
0 - 100 |
Config.Dating.DailyLikes / MaxPhotos |
integer | 20 / 6 |
0 - 100000 / 1 - 50 |
Config.Dating.VipPrice / VipDays |
number | 5000 / 30 |
0 - 1e12 / 1 - 3650 |
Config.Fans.Commission |
number | 0.2 |
0 - 1 |
Config.Fans.MinPrice / MaxPrice |
number | 0 / 50000 |
0 - 1e12 |
Config.Fans.MinTip / MaxTip |
number | 10 / 100000 |
0 - 1e12 |
Config.Fans.PageSize / MaxImageBytes |
integer | 20 / 8388608 |
1 - 500 / 1024 - 1e10 |
Config.Framework |
text | 'auto' |
auto, qbx, qbx_core, qb, qb-core, esx, es_extended |
Config.Gallery.SharedMaxAlbums / SharedMaxMembers |
integer | 20 / 20 |
0 - 1000 / 1 - 200 |
Config.Garage.LockDistance / LockCooldown / ImpoundFee |
number | 40.0 / 1500 / 300 |
1 - 10000 / 0 - 600000 / 0 - 1e12 |
Config.Mail.MaxLength / MaxRecipients / MaxAttachments |
integer | 4000 / 10 / 6 |
1 - 1000000 / 1 - 1000 / 0 - 100 |
Config.Mail.UndoSeconds / NoteMaxLength / Drafts.Max |
integer | 8 / 4000 / 50 |
0 - 60 / 100 - 100000 / 1 - 10000 |
Config.Maps.MaxPlaces |
integer | 100 |
1 - 100000 |
Config.Market.MaxItems / MaxStock |
integer | 6 / 50 |
1 - 100 / 1 - 1000000 |
Config.Market.Commission |
number | 0.05 |
0 - 1 |
Config.Messages.MaxLength / PageSize / MaxGroupMembers |
integer | 1000 / 30 / 32 |
1 - 100000 / 5 - 500 / 2 - 1000 |
Config.Messages.EditWindow / DeleteWindow |
number | 900 / 3600 |
0 - 31536000 |
Config.Music.MaxPlaylists / MaxPlaylistSongs |
integer | 50 / 200 |
1 - 1000 / 1 - 5000 |
Config.Music.MaxSongs / MaxImport |
integer | 300 / 100 |
0 - 5000 / 1 - 200 |
Config.News.MaxPerDay / MaxLength |
integer | 6 / 8000 |
0 - 100000 / 1 - 10000000 |
Config.Notes.Max / MaxLength |
integer | 300 / 20000 |
1 - 100000 / 1 - 10000000 |
Config.Notifications.Seconds / Max / WakeEvery |
number | 6 / 3 / 20 |
1 - 120 / 1 - 20 / 0 - 86400 |
Config.Notifications.Side |
text | 'right' |
left, right |
Config.Numbers.Price / Recovery.Price / Shop.PhonePrice |
number | 25000 / 5000 / 1500 |
0 - 1e12 |
Config.PhoneNumber.Length |
integer | 7 |
1 - 12 |
Config.Recovery.Range |
number | 3.0 |
0.1 - 100 |
Config.Rides.MinDistance / DriverCut |
number | 100 / 0.85 |
0 - 100000 / 0 - 1 |
Config.Rides.Timeout / StuckMinutes |
number | 5 / 30 |
0 - 1440 / 1 - 10080 |
Config.RpcLimit.PerSecond / Burst |
number | 25 / 60 |
0 - 1000 / 1 - 10000 |
Config.RRX.UsernameMin / UsernameMax |
integer | 3 / 20 |
1 - 64 |
Config.RRX.MaxCaption / MaxComment / MaxMediaPerPost |
integer | 2200 / 500 / 10 |
1 - 100000 / 1 - 100000 / 1 - 50 |
Config.RRX.StoryHours / FeedPageSize |
number | 24 / 12 |
1 - 8760 / 1 - 200 |
Config.RRX.Live.Fps / Width / Quality |
number | 6 / 480 / 0.65 |
1 - 60 / 64 - 1920 / 0.05 - 1 |
Config.RRX.Live.MaxConcurrent / MaxViewers / ChatLines |
integer | 3 / 20 / 60 |
0 - 1000 / 1 - 10000 / 1 - 1000 |
Config.Ringer3D.Radius / MaxVolume / Rolloff |
number | 12.0 / 0.6 / 1.6 |
0 - 200 / 0 - 1 / 0.01 - 10 |
Config.Ringer3D.ServerTick / ClientTick |
number | 300 / 250 |
50 - 10000 |
Config.ServerNotifications.Cooldown |
number | 1500 |
0 - 3600000 |
Config.Services.Cooldown / AlertMinutes / MaxMessage |
number | 60 / 30 / 300 |
0 - 86400 / 1 - 10080 / 1 - 100000 |
Config.Storage.Capacity / Slack |
number | 0 / 120 |
0 - 1000000 |
Config.Uploader.MaxImageChars / MaxVideoChars / MaxAudioChars |
integer | 10000000 / 10000000 / 4000000 |
1000 - 1000000000 |
Config.Uploader.PerMinute / MaxPhotos / MaxAlbums |
integer | 8 / 500 / 50 |
1 - 1000 / 1 - 1000000 / 1 - 10000 |
Config.Uploader.TicketSeconds / TrashDays |
number | 120 / 30 |
5 - 86400 / 0 - 3650 |
Config.Valet.Price / Distance / TicketSeconds |
number | 0 / 140.0 / 60 |
0 - 1e12 / 0 - 100000 / 1 - 86400 |
Config.VoiceMemos.Max |
integer | 200 |
1 - 100000 |
Config.Voicemail.Window / MaxSeconds |
number | 120 / 30 |
0 - 86400 / 1 - 600 |
Config.WebRTC.TurnTtl / Timeout / MaxKbit |
number | 86400 / 6 / 2500 |
60 - 31536000 / 1 - 120 / 16 - 100000 |
Lists that must not be empty: Config.Item.Names, Config.PhoneNumber.Prefixes, Config.Languages. The validator also warns when a prefix length plus Config.PhoneNumber.Length does not match the digits in Config.PhoneNumber.Format, when UsernameMin is greater than UsernameMax, and when a Privé minimum is greater than its maximum.
