Configuration
Every owner-editable option in config.lua and config_server.lua for nx_phone, with defaults, types and purpose.
Most settings live in config.lua. It is not escrowed, so your edits
survive updates. That file is also sent to every player who connects, so
API keys, webhooks and TURN secrets go in config_server.lua, which stays
on the server. See config_server.lua at the end of
this page.
Every app has an Enabled switch. Turning one off hides its icon on
every phone.
Quick setup
Core
Config.Frameworkstringdefault: 'auto'Framework integration. 'auto' detects ESX, QBCore and QBox. Set 'esx', 'qbcore', 'qbox' or 'standalone' to choose one.
Config.Localestringdefault: 'en'Language for the phone's text. English is the only language that ships.
Config.Debugbooleandefault: falseExtra logging and developer test commands. Leave it false on a live server.
Config.Targetstringdefault: 'auto'The target script for the payphone, carrier counter and dropped-phone options. 'auto' uses the first one started of ox_target and qb-target, or name one of them.
Items
Config.Itemstringdefault: 'nx_phone'The ox_inventory item that opens the phone.
Config.SimItemstringdefault: 'nx_sim'The ox_inventory item that carries a phone number.
Phone numbers
Config.Sim.NumberFormatstringdefault: 'XXX-XXXX'Shape of a new number. Each X is a random digit.
Config.Sim.DefaultCarrierstringdefault: 'Badger'Carrier name shown on the lock screen.
Config.Sim.ReclaimDaysnumberdefault: 14Days before a suspended number goes back into the pool.
Opening the phone
Config.OpenKeystringdefault: 'F1'Default key that opens and closes the phone. Players can rebind it in GTA's key bindings. '' turns the keybind off.
Config.Commandstringdefault: 'phone'Chat command that opens the phone. '' turns it off.
Config.WalkWhileOpenbooleandefault: truePlayers can walk and sprint with W, A, S and D while using the phone with the cursor. Typing in a text field pauses it.
Lock screen
Config.Biometricbooleandefault: trueAllow Face ID unlock. Only the phone's owner can use it.
Config.MaxAccountsPerCharacternumberdefault: 3How many accounts one character may add to a phone.
Config.Auth.SessionTtlSecondsnumberdefault: 28800How long an unlock lasts, in seconds (8 hours).
Config.Auth.LockOnClosebooleandefault: trueLock the phone every time it is put away, so the next open asks for the passcode.
Config.Auth.RequirePinbooleandefault: falsetrue makes a new phone set a passcode before it opens.
Config.Auth.PinMinLengthnumberdefault: 4Shortest passcode a player may choose.
Config.Auth.PinMaxLengthnumberdefault: 6Longest passcode a player may choose.
Apps
Config.Apps.Idstabledefault: all 34 built-in appsApps that exist on every phone. Remove an id to hide that app from every phone.
The shipped list:
Ids = { 'calls', 'messages', 'camera', 'gallery', 'maps', 'cards', 'notes', 'clock',
'weather', 'calculator', 'exchange', 'contacts', 'recorder', 'browser', 'music',
'mail', 'beacon', 'garage', 'home', 'shift', 'companies', 'airwave', 'facetime',
'depot', 'yapp', 'ember', 'cipher', 'bulletin', 'stall', 'trace', 'gloss',
'glimpse', 'flick', 'settings' },calls is the Phone app, gallery is Photos, cards is Wallet, music
is Waveform and beacon is Find My. To give an app to some jobs or gangs
only, see Restricting an app to a job.
Config.Apps.Disabledtabledefault: {}Turn apps off without removing them from the list, for example { camera = true }. SDK app ids work too.
Notifications
A phone shows notifications only from apps installed on it. A removed app stays silent, and its old notifications come back if it is installed again.
Config.Notifications.RetentionDaysnumberdefault: 30How long a notification stays on the phone.
Config.Notifications.NearbyRangenumberdefault: 15.0Metres within which other players hear a phone ring or buzz in someone's pocket. 0 means only the holder hears it.
Config.Notifications.NearbyVehicleRangenumberdefault: 3.0The same range while the holder sits in a closed vehicle.
Placement
Where the phone sits on screen. Players move and resize it in Settings, and their choice is saved per character.
Config.Placement.Presetstringdefault: 'right'Starting position for a player who never moved the phone: 'right', 'centre' or 'left'.
Config.Placement.Sizenumberdefault: 1.0Starting size, from 0.7 to 1.15.
Config.Placement.Margintabledefault: { x = 40, y = 24 }Pixels from the side and bottom edge of the screen.
Config.Placement.PeekNotificationsbooleandefault: trueA put-away phone rises a little to show a new notification.
Config.Placement.PeekSecondsnumberdefault: 4How long a notification peek stays up.
Battery
Percentage points. A phone at 0% will not open until it is charged.
Config.Battery.DrainPerHourIdlenumberdefault: 2Drain while the phone is closed in a pocket. Only while the player is online.
Config.Battery.DrainPerMinuteActivenumberdefault: 0.5Drain while the screen is on. About three hours of use per charge.
Config.Battery.ChargePerMinuteInVehiclenumberdefault: 2Charge while the phone is open in a vehicle with the engine running.
Calls
Voice runs on pma-voice call channels.
Config.Calls.RingSecondsnumberdefault: 30A call not answered within this time is a missed call.
Config.Calls.MaxMinutesnumberdefault: 120A call is hung up after this many minutes.
Config.Calls.PeekOnIncomingbooleandefault: trueA put-away phone shows the incoming call. The player presses the phone key to use it.
Config.Calls.Voice.ChannelBasenumberdefault: 700000Calls use pma-voice channels 700001 to 799999. Keep other scripts' channels out of that range.
Config.Calls.Voice.MuteStrategystringdefault: 'targets''targets': a muted player still hears the other side. 'leave': muting drops the audio both ways.
Config.Calls.Voice.Speakerphonebooleandefault: truePeople standing nearby hear the other side of a call on speaker.
Config.Calls.Voice.SpeakerRadiusnumberdefault: 15.0Speakerphone range in metres.
Config.Calls.Voice.SpeakerTalkbooleandefault: trueOn speaker, the other side also hears the people near the holder, unless the holder is muted.
Config.Calls.Servicestabledefault: 911Service numbers that ring every on-duty player with one of the listed jobs. The first to answer takes the call.
Each entry:
Services = {
{ number = '911', label = 'Emergency', jobs = { 'police', 'ambulance' }, emergency = true },
-- { number = '555-0110', label = 'Detectives', jobs = { 'police' }, minGrade = 2, requireDuty = false },
},number,label: the number players dial and the name shown on both phones and in Recents.jobs: the framework job names that ring.emergency = true: the line can be called without a SIM and without unlocking the phone, and the caller ID is always shown.minGrade(optional): only players at this job grade or higher ring.requireDuty(optional, defaulttrue): setfalseto ring off-duty players too.
Another resource can take over who rings for a line with
SetServiceRouter.
A business's number belongs in Companies instead: it rings the employees who are open and gets a shared text inbox. Never put the same number in both lists.
Companies
The Companies app is a directory of your city's businesses. Players see which are open, then call, text or set a GPS route to one. A call rings the company's employees on duty and the first to answer takes it. Texts land in a shared company inbox: every employee on duty sees every customer thread and replies as the company. Every company with a job gets a phone number that never changes, or the one you set.
Companies come from three places. For each field, the first one that sets it wins:
- Your entries in
Config.Companies.List. - Other resources, through
RegisterCompany. - Your framework's jobs, when
FrameworkJobsis on.
Config.Companies.Enabledbooleandefault: trueTurn the Companies app on or off. Off also hides its icon.
Config.Companies.OpenRulestringdefault: 'toggle''toggle': a company is open while an employee on duty has tapped Open in the app. 'duty': it is open while any employee is on duty.
Config.Companies.RingWhenClosedbooleandefault: trueA call to a closed company still rings its employees on duty. With nobody on duty the caller hears that the company is unavailable.
Config.Companies.InboxNeedsDutybooleandefault: trueEmployees read and answer customer texts only while on duty.
Config.Companies.AutoReplybooleandefault: trueA call nobody took, or a text to a closed company, gets one automatic text back.
Config.Companies.AutoReplyMinutesnumberdefault: 10At most one automatic text per customer per company in this many minutes.
Config.Companies.NumberPrefixstringdefault: '555-'A company without a number gets this prefix plus four digits from 3000 to 9999. The same company always gets the same number. Keep it clear of Config.Callbox.NumberPrefix.
Config.Companies.FrameworkJobsbooleandefault: trueAlso list every framework job that has no entry in List. Hide the ones that are not businesses with Hidden and HiddenTypes.
Config.Companies.Listtabledefault: five example companiesOne entry per company.
List = {
{ job = 'mechanic', label = 'LS Customs', number = '555-0100', location = vector3(-347.3, -133.4, 39.0) },
{ job = 'taxi', label = 'Downtown Cab Co.', location = vector3(903.5, -170.6, 74.1) },
{ job = 'cardealer', label = 'Premium Deluxe Motorsport', icon = 'mechanic', location = vector3(-56.7, -1096.6, 26.4) },
{ job = 'reporter', label = 'Weazel News', icon = 'news', location = vector3(-598.9, -929.9, 23.9) },
{ job = 'airport', label = 'LSIA', location = vector3(-1037.6, -2737.6, 20.2) },
-- A place without a job: shown and routed to, never called or texted.
-- { id = 'pillbox', label = 'Pillbox Hill Medical', icon = 'ambulance', alwaysOpen = true, location = vector3(298.6, -584.5, 43.3) },
},job: the framework job whose employees answer. A place without a job takes anidinstead (letters, digits,_and-). It is shown and routed to, but has no number.label: the name shown, up to 32 characters. Without it, the framework's label for the job is used.number: a fixed phone number. Without it the company gets one fromNumberPrefix.location: avector3. Directions sets the GPS here.icon: a built-in emblem (police,sheriff,ambulance,mechanic,taxi,realestate,news,lawyer) or anhttps://ornui://image. Common job names get a matching emblem by themselves; the rest show their first letter.description: up to 160 characters.alwaysOpen = true: always open, for a place that needs no staff.call = false,message = false: no calls, or no texts.minGrade: the lowest job grade that answers calls and texts and can open the company.hidden = true: keep it out of the directory.
Carrier counter
A counter with a map blip where players buy a SIM with a new number, or
a replacement for their main number. A replacement moves the number to a
new card, and the old card stops working wherever it is. Contacts,
messages, Recents and voicemail stay with the number. Payment is taken
from the bank, then cash. The option needs a target script
(Config.Target).
Config.Carrier.Enabledbooleandefault: trueTurn the carrier counters on or off.
Config.Carrier.NewSimPricenumberdefault: 250Price of a SIM with a new number. The number is issued on its first use. 0 is free.
Config.Carrier.ReplaceMainPricenumberdefault: 500Price of a replacement SIM for the player's main number. 0 is free.
Config.Carrier.Rangenumberdefault: 2.0Metres from a counter.
Config.Carrier.Bliptable | falsedefault: { Sprite = 459, Colour = 3, Scale = 0.75 }The map blip at every counter. false shows none.
Config.Carrier.Storestabledefault: {}Counter spots. None ship, so add your own.
Stores = {
{ label = 'Badger', coords = vector3(1137.4, -469.6, 66.7) },
},Voicemail and Recorder
Recordings are stored on your media backend (config_server.lua). Without one, both features are off and the phone says so.
Config.Voicemail.Enabledbooleandefault: trueTurn voicemail on or off.
Config.Voicemail.MaxSecondsnumberdefault: 30Longest message a caller can leave.
Config.Voicemail.GreetingMaxSecondsnumberdefault: 20Longest custom greeting.
Config.Voicemail.MaxPerNumbernumberdefault: 30A full mailbox takes no new messages.
Config.Voicemail.MaxPerCallernumberdefault: 5Unheard messages one caller can leave in one mailbox.
Config.Voicemail.RetentionDaysnumberdefault: 30Older messages are deleted. 0 keeps them.
Config.Voicemail.ExpirySecondsnumberdefault: 120How long after the call a caller has to leave the message.
Config.Recorder.Enabledbooleandefault: trueTurn the Recorder app's voice memos on or off.
Config.Recorder.MaxSecondsnumberdefault: 180Longest memo.
Config.Recorder.MaxPerDevicenumberdefault: 50Memos one phone can keep.
Config.Recorder.Bystanders.Enabledbooleandefault: trueMix nearby players' voices into a memo. Only players who have already allowed their microphone join, and nobody is asked mid-recording.
Config.Recorder.Bystanders.Rangestring | numberdefault: 'voice''voice' uses each speaker's own pma-voice range. A number sets a range in metres.
Config.Recorder.Bystanders.MaxPeersnumberdefault: 6Most nearby voices mixed into one memo.
Config.Recorder.Bystanders.AllowDirectbooleandefault: falseNearby voices go through your TURN server. Without one, memos record only the holder. true removes that need, but direct links show nearby players each other's IP addresses.
Camera and Photos
Photos and videos are stored on your media backend. Without one, the camera still works but cannot save.
Config.Camera.Enabledbooleandefault: trueTurn the Camera app on or off.
Config.Camera.PhotoWidthnumberdefault: 1080Photo width in pixels. Portrait photos are 3:4; held sideways the two sides swap.
Config.Camera.PhotoQualitynumberdefault: 0.9Photo quality, from 0.5 to 1.
Config.Camera.VideoWidthnumberdefault: 720Video width in pixels. Portrait videos are 9:16.
Config.Camera.VideoMaxSecondsnumberdefault: 30Longest video.
Config.Camera.VideoBitratenumberdefault: 2000000Highest video bitrate in bits per second. It is lowered automatically so the longest video fits the upload cap.
Config.Camera.Fovtabledefault: { wide = 70.0, normal = 50.0, tele = 25.0 }Field of view for each zoom step.
Config.Camera.FocusKeystringdefault: 'LMENU'Left Alt by default. With the phone open it switches between walking and using the cursor; in the camera it switches between aiming and the cursor. '' turns it off.
Config.Camera.AimSpeednumberdefault: 8.0Degrees the camera turns per unit of mouse movement while aiming, at 1x zoom.
Config.Camera.Landscapebooleandefault: trueShow the Rotate button, so players can hold the phone sideways for landscape photos and video.
Config.Gallery.Enabledbooleandefault: trueTurn the Photos app on or off.
Config.Gallery.MaxItemsnumberdefault: 500Photos and videos one phone can keep. Recently Deleted counts.
Config.Gallery.TrashDaysnumberdefault: 30Days in Recently Deleted before an item is gone for good.
Config.Gallery.PhotoMaxKBnumberdefault: 3072Largest photo file.
Config.Gallery.VideoMaxKBnumberdefault: 12288Largest video file. MaxUploadKB in config_server.lua also caps it.
Utilities
Config.Clock.Enabledbooleandefault: trueTurn the Clock app on or off.
Config.Clock.MaxAlarmsnumberdefault: 20Alarms one phone can keep.
Config.Clock.SnoozeMinutesnumberdefault: 9How long Snooze waits.
Config.Clock.RingSecondsnumberdefault: 60An unanswered alarm or timer stops after this.
Config.Notes.Enabledbooleandefault: trueTurn the Notes app on or off.
Config.Notes.MaxNotesnumberdefault: 500Notes one phone can keep. Recently Deleted counts.
Config.Notes.MaxCharsnumberdefault: 20000Longest note, in characters.
Config.Notes.TrashDaysnumberdefault: 30Days a deleted note stays in Recently Deleted.
Config.Weather.Enabledbooleandefault: trueTurn the Weather app on or off.
Config.Weather.Sourcestringdefault: 'auto''auto' reads nx_fourseasons when it runs and the game's weather otherwise. 'fourseasons' or 'game' picks one.
Config.Maps.Enabledbooleandefault: trueTurn the Maps app on or off.
Config.Maps.TrackMsnumberdefault: 1000How often, in milliseconds, the map moves your dot while Maps is open.
Config.Wallet.Enabledbooleandefault: trueTurn the Wallet app on or off.
Config.Wallet.Send.Enabledbooleandefault: trueLet players send money to a phone number. The money goes to the number's registered owner.
Config.Wallet.Send.Minnumberdefault: 1Smallest send, in whole dollars.
Config.Wallet.Send.Maxnumberdefault: 50000Largest single send.
Config.Wallet.Send.DailyMaxnumberdefault: 200000Total one character may send per day.
Config.Wallet.Historynumberdefault: 20Transactions shown per card.
With nx_realbanking 1.11.0 or later, Wallet also shows the company
accounts a player may use, with the company's number, balance and
history. Players allowed to make transfers can send money from them, and
the recipient sees the company's name. The bank checks the player's
rights on every read and send.
Config.Exchange.Enabledbooleandefault: trueTurn the Exchange app on or off. It shows prices only; trading stays on nx_computer.
Config.Exchange.PollSecondsnumberdefault: 10Price refresh interval while the app is open.
Drop it, lose it, find it
Config.Drop.Enabledbooleandefault: truePhones can be put on the ground and picked up. The /placephone command also needs this.
Config.Drop.OnDownbooleandefault: trueA player who goes down drops the phone they hold or carry.
Config.Drop.DownChancenumberdefault: 100Percent chance that a downed player drops their phone.
Config.Drop.Commandstringdefault: 'dropphone'Chat command that puts the phone on the ground. '' turns it off.
Config.Drop.AnyoneCanPickUpbooleandefault: truefalse lets only the phone's owner pick it up.
Config.Drop.PickupDistancenumberdefault: 2.0Pick-up distance in metres.
Config.Drop.RingRangenumberdefault: 25.0Metres within which a ringing phone on the ground can be heard.
Config.Drop.KeepHoursnumberdefault: 0Hours before a phone left on the ground is removed. 0 keeps it.
Config.Drop.ScreenUpPitchnumberdefault: -90.0Tilt that lays the prop flat with the screen up. Use 90.0 if dropped phones land face down.
Config.Drop.PickupPromptbooleandefault: trueShow a pick-up prompt next to a phone on the ground, as well as the target option.
Config.Drop.PickupKeynumberdefault: 38Control that picks the phone up (38 is E).
Config.Drop.PickupKeyLabelstringdefault: 'E'What the prompt calls that key.
Config.Beacon.Enabledbooleandefault: trueTurn Find My on or off.
Config.Beacon.TrackSecondsnumberdefault: 20How often a carried phone's position is saved.
Config.Beacon.SoundSecondsnumberdefault: 30How long Play Sound rings.
Config.Beacon.ShowBlipbooleandefault: truePut a blip on the map for a located phone.
Browser, Waveform, Mail and Setup
Config.Browser.Enabledbooleandefault: trueTurn the Browser app on or off.
Config.Browser.Homestringdefault: 'search.lc'The page a new tab opens.
Config.Browser.MaxBookmarksnumberdefault: 50Bookmarks per phone.
Config.Browser.Historynumberdefault: 100Pages kept in History per phone.
Config.Browser.ImageHoststabledefault: {}Hosts that site images may load from, for example { 'r2.fivemanage.com' }. An empty list allows no remote images.
Config.Browser.Sitestabledefault: { news = true, weather = true, directory = true, bank = true, help = true }The built-in .lc sites. Set one to false to hide it.
Config.Browser.Headlinestabledefault: {}Stories on news.lc, each { title, body }. With nx_computer, the laptop's city news is added.
Config.Browser.Directorytabledefault: {}Extra business entries on lifeinvader.lc.
Directory = {
{ name = 'Pizza Planet', description = 'Hot pizza, fast', number = '555-0142', site = 'pizza.lc' },
},Config.Music.Enabledbooleandefault: trueTurn the Waveform music app on or off.
Config.Music.AllowCustomUrlsbooleandefault: truePlayers may add their own track links.
Config.Music.AllowedHoststabledefault: {}Hosts (and their subdomains) that players' own links may use. An empty list accepts any https link, but then only the stations in Playlists play out loud, because out loud makes every nearby player's game fetch the link and shows their IP to that host.
Config.Music.MaxTracksnumberdefault: 200Tracks one phone can add.
Config.Music.OutLoud.Enabledbooleandefault: truePlayers can play music through the speaker for people nearby.
Config.Music.OutLoud.Rangenumberdefault: 20.0Out-loud range in metres.
Config.Music.OutLoud.MaxVolumenumberdefault: 0.8Highest out-loud volume, 0 to 1.
Config.Music.DuckDuringCallsnumberdefault: 0.15Music volume during a call. 0 pauses it.
Config.Music.Playliststabledefault: {}Stations every phone has. Tracks are direct audio links (mp3, ogg, m4a or webm).
Playlists = {
{ id = 'nx', name = 'NX Radio', tracks = {
{ title = 'Song', artist = 'Band', url = 'https://cdn.example.com/song.mp3', artwork = '' },
} },
},Config.Mail.Enabledbooleandefault: trueTurn the Mail app on or off.
Config.Mail.Domainstringdefault: 'auto'Addresses are username@Domain. 'auto' uses the nx_mail_domain convar, else your sv_projectName as a .com. With nx_computer running, the laptop's domain wins.
Config.Mail.LegacyDomainstabledefault: { 'lsmail.lc' }Old domains that still deliver.
Config.Mail.MaxPerBoxnumberdefault: 500Mails one mailbox keeps.
Config.Mail.MaxBodynumberdefault: 8000Longest mail body, in characters.
Config.Setup.Enabledbooleandefault: trueA new phone runs the setup screens on first boot.
Config.Setup.Languagestabledefault: { 'en' }Languages offered on the first setup screen.
The screen
Players standing close to someone can read the phone in their hand.
Config.Screen.Enabledbooleandefault: trueShow phone screens to people nearby.
Config.Screen.Rangenumberdefault: 4.0Metres within which players can read a phone in someone's hand.
Config.Screen.MaxVisiblenumberdefault: 6Most phone screens one player's game draws at once, nearest first.
Config.Screen.PublishMsnumberdefault: 1000How often, in milliseconds, an open screen is sent to people watching it.
Config.Screen.Selfbooleandefault: trueYour own screen shows on the phone in your hand in third person.
Config.Screen.Modestringdefault: 'picture''picture' shows a live picture of the real screen. 'text' shows a large-text view instead.
Config.Screen.PictureFpsnumberdefault: 4Pictures per second while someone watches.
Config.Screen.Quadtabledefault: tuned for nx_phone_handsetWhere the screen sits on the phone prop, in local metres: Offset, Width, Height, Lift, Normal, Up and LandscapeUp. Only change it if you swap Config.Prop.Model.
Config.Screen.StandBy.Enabledbooleandefault: trueA phone placed on a surface shows StandBy.
Config.Screen.StandBy.Commandstringdefault: 'placephone'Chat command that lays your phone on the surface in front of you. '' turns it off.
Config.Screen.StandBy.Rangenumberdefault: 6.0Metres within which a phone on a surface can be read.
Config.Screen.Protector.Itemstringdefault: 'nx_phone_protector'The privacy screen item. Using it fits it to the phone in hand. '' turns privacy screens off.
Config.Screen.Protector.Anglenumberdefault: 30.0Degrees off straight-on where a protected screen goes dark.
Garage, Home, Shift and Airwave
These apps read your other scripts through adapters in bridge/. Those
files are not escrowed, so you can adjust them.
Config.Garage.Enabledbooleandefault: trueTurn the Garage app on or off.
Config.Garage.Adapterstringdefault: 'auto''auto' uses the first one started of jg-advancedgarages, cd_garage, qs-advancedgarages, okokGarage, mGarage, qbx_garages, qb-garages, esx and qb. Or name one of them.
Config.Garage.Keysstringdefault: 'auto'Key script used for a valet car: 'auto', 'none', or a key script by name (qbx_vehiclekeys, qb-vehiclekeys, wasabi_carlock and others).
Config.Garage.Valet.Enabledbooleandefault: falseBring a stored vehicle to the nearest road. Not available with qs-advancedgarages or okokGarage.
Config.Garage.Valet.Pricenumberdefault: 250Valet price, taken from the bank and then cash. 0 is free.
Config.Home.Enabledbooleandefault: trueTurn the Home app on or off.
Config.Home.Adapterstringdefault: 'auto''auto' uses the first one started of qbx_properties, ps-housing, qs-housing, bcs_housing, loaf_housing, nolag_properties, vms_housing, esx_property and qb-houses. Or name one. 'none' turns it off.
Config.Home.Doorbell.Enabledbooleandefault: trueA doorbell ring notifies every online owner and key holder of the property.
Config.Home.Doorbell.Cooldownnumberdefault: 20Seconds before the same door rings the phones again.
Config.Home.Doorbell.AnswerSecondsnumberdefault: 120How long Let them in works after a ring.
Config.Home.Doorbell.Rangenumberdefault: 12.0A housing script's ring must come from within this many metres of the door.
Config.Shift.Enabledbooleandefault: trueTurn the Shift job app on or off.
Config.Shift.Dutystringdefault: 'auto''auto' uses the Qbox, QBCore or ESX duty state. 'none' removes the duty switch, and everyone with the job gets alerts.
Config.Shift.OffDutyPrefixstringdefault: 'off'For ESX without a duty flag: 'police' and 'offpolice' count as on and off duty when that job exists.
Config.Shift.Dispatch.Enabledbooleandefault: trueThe dispatch inbox in Shift.
Config.Shift.Dispatch.KeepHoursnumberdefault: 12Alerts older than this drop out of the inbox.
Config.Shift.Dispatch.MaxPerJobnumberdefault: 200Alerts kept per job. The oldest go first.
Config.Shift.Dispatch.Mirrorbooleandefault: trueCopy alerts from ps-dispatch, cd_dispatch, qs-dispatch, rcore_dispatch and core_dispatch.
Config.Shift.Societystringdefault: 'auto'Where the society balance comes from: 'auto', 'none', or one banking script by name (see bridge/jobs.lua).
Config.Shift.SocietyMinGradestring | numberdefault: 'boss'Who sees the society balance: 'boss' for the job's boss grades, or a grade number.
Config.Shift.Emblemstabledefault: {}The emblem shown for a job. Map a job to a built-in emblem (police, sheriff, ambulance, mechanic, taxi, realestate, news, lawyer), to your own square image, or to false for the plain Shift icon.
Emblems = {
bcso = 'sheriff',
burgershot = 'nui://my_assets/burgershot.png',
},Common job names match a built-in emblem without an entry. Jobs with no emblem show their first letter.
Config.Shift.MultiJob.Enabledbooleandefault: trueCharacters can hold several jobs, work one at a time and switch in Shift.
Config.Shift.MultiJob.Providerstringdefault: 'auto''auto', 'nx' (built in), 'qbox', 'ps-multijob' or 'core_multijob'.
Config.Shift.MultiJob.MaxJobsnumberdefault: 3Jobs one character can hold.
Config.Shift.MultiJob.SwitchCooldownnumberdefault: 60Seconds between two job switches.
Config.Shift.MultiJob.Fallbackstringdefault: 'unemployed'Job a player is set to when they leave their active job.
Config.Shift.MultiJob.ExportResourcestabledefault: { 'nx_employeemanagement' }Resources allowed to call the multijob exports (AddJob, RemoveJob, GetJobs, GetJobMembers, GetJobNames).
Config.Airwave.Enabledbooleandefault: trueTurn the Airwave radio app on or off.
Config.Airwave.Adapterstringdefault: 'auto'Voice backend: 'auto', 'pma-voice', 'saltychat' or 'yaca-voice'.
Config.Airwave.MaxChannelnumberdefault: 500Highest channel number.
Config.Airwave.Decimalsnumberdefault: 2Channel precision: 100.25 needs 2. At most 3.
Config.Airwave.RequireItemstringdefault: ''Item needed to use Airwave, for example 'radio'. '' needs none.
Config.Airwave.SweepSecondsnumberdefault: 10How often players on a channel are re-checked for the item and job.
Config.Airwave.OnDutyOnlybooleandefault: falseRestricted channels need the job on duty, where the framework has duty.
Config.Airwave.EnforceInVoicebooleandefault: falseAlso enforce Restricted inside pma-voice. pma-voice keeps one check per channel, so this replaces another radio script's checks on those channels. Leave it off when another radio script runs; the app enforces Restricted either way.
Config.Airwave.Restrictedtabledefault: channels 1 to 10 for police and ambulanceChannels only some jobs may join. Whole numbers cover their decimals.
Restricted = {
{ from = 1, to = 10, jobs = { 'police', 'ambulance' } },
-- { from = 11, to = 12, jobs = { police = 2 } }, -- with a minimum grade
},FaceTime, Depot, SDK and privacy
Config.FaceTime.Enabledbooleandefault: trueTurn FaceTime video calls on or off.
Config.FaceTime.MaxMembersnumberdefault: 4People in one video call. Every phone sends to every other one.
Config.FaceTime.RingSecondsnumberdefault: 30How long a video call rings before it counts as missed.
Config.FaceTime.Videotabledefault: { Width = 480, Height = 640, Fps = 20 }What each phone sends, in portrait.
Config.FaceTime.MaxKbpsnumberdefault: 600Upper limit per person you send to. It is lowered automatically in bigger calls.
Config.FaceTime.ChannelBasenumberdefault: 800000Video calls use pma-voice channels 800001 to 899999. Keep it clear of Config.Calls.Voice.
Config.Depot.Enabledbooleandefault: trueTurn Depot, the app store, on or off.
Config.Depot.Lockedtabledefault: { 'calls', 'messages', 'contacts', 'camera', 'settings', 'depot', 'facetime' }Apps every phone has and nobody can remove.
Config.Depot.Defaulttabledefault: { 'gallery', 'maps', 'clock', 'notes', 'weather', 'calculator', 'mail', 'browser', 'music', 'cards', 'beacon', 'yapp', 'companies', 'home' }Apps a new phone comes with. The rest wait in Depot.
Config.Depot.AddToExistingtabledefault: { 'home', 'companies' }Apps put once on phones that already exist, so a new default app reaches old phones too. Players can still remove them.
Config.SDK.Enabledbooleandefault: trueLet other resources add apps with RegisterApp. See the SDK page.
Config.Privacy.StreamerModebooleandefault: falseStreamer Mode default for new phones. Players switch it in Settings, Privacy.
Social and city apps
Config.Yapp.Enabledbooleandefault: trueTurn the Yapp social app on or off.
Config.Yapp.GovJobstabledefault: { 'police', 'ambulance', 'government' }Jobs that get the government badge automatically.
Config.Yapp.ReservedHandlestabledefault: { 'admin', 'lspd', 'police', 'ems', 'gov', 'weazel', 'yapp' }Handles only GovJobs may take.
Config.Yapp.HandleCooldownDaysnumberdefault: 30Days before a profile can change its handle again.
Config.Yapp.HandleHoldDaysnumberdefault: 14Days an old handle stays held after a change.
Config.Yapp.EditWindowSecnumberdefault: 300Seconds a post can be edited after posting.
Config.Yapp.MaxEditsnumberdefault: 2Edits allowed per post.
Config.Yapp.TrendMinutesnumberdefault: 5Minutes between trending recalculations.
Config.Yapp.WordBlacklisttabledefault: {}Lowercase words refused in posts, names, bios and handles.
Config.Ember.Enabledbooleandefault: trueTurn the Ember dating app on or off.
Config.Ember.MinAgenumberdefault: 18Youngest age a profile can have. Never below 18.
Config.Ember.MaxAgenumberdefault: 99Oldest age a profile can have.
Config.Ember.MinBionumberdefault: 10Shortest bio, in characters.
Config.Ember.MaxBionumberdefault: 300Longest bio, in characters (at most 300).
Config.Ember.MinPhotosnumberdefault: 1Fewest photos per profile, taken from the player's own Photos.
Config.Ember.MaxPhotosnumberdefault: 6Most photos per profile (at most 6).
Config.Ember.InactiveDaysnumberdefault: 7Profiles unused this long leave everyone's deck.
Config.Ember.DeckBatchnumberdefault: 10Cards sent to the phone at a time.
Config.Ember.MaxMessagenumberdefault: 500Characters per chat message.
Config.Ember.LikesPer10Minnumberdefault: 60Likes per 10 minutes, per account and per character.
Config.Ember.MessagesPerMinutenumberdefault: 30Messages per minute, per account and per character.
Config.Ember.Genderstabledefault: { 'woman', 'man', 'nonbinary' }Gender ids (a-z, 0-9). A new id needs a phone.ember.gender.id label in the locale file.
Config.Cipher.Enabledbooleandefault: trueTurn Cipher, the anonymous chat rooms, on or off. Players appear only under an alias.
Config.Cipher.AllowCustomAliasbooleandefault: truePlayers may pick their own alias (3 to 20 characters, unique).
Config.Cipher.MaxRoomsPerAccountnumberdefault: 5Rooms one account can own.
Config.Cipher.MaxJoinedRoomsnumberdefault: 20Rooms one account can be in. Starter rooms are not counted.
Config.Cipher.MaxMembersnumberdefault: 50Members per room. Starter rooms have no cap.
Config.Cipher.RetentionDaysnumberdefault: 14Messages older than this are deleted.
Config.Cipher.NotifyCooldownSecondsnumberdefault: 30At most one banner per room per phone in this time.
Config.Cipher.SeedRoomstabledefault: { { key = 'underground', name = 'The Underground' } }Starter rooms every player joins automatically. Keep each key the same once the server is live.
Config.Bulletin.Enabledbooleandefault: trueTurn the Bulletin news app on or off. With nx_computer running, Bulletin is the front page of the laptop's Newsroom, and the laptop's settings decide who writes.
Config.Bulletin.Jobstabledefault: { reporter = 0, weazel = 0 }Jobs that can write articles, each with its lowest grade. Standalone only.
Config.Bulletin.EditorGradenumberdefault: 2From this grade, a writer can edit anyone's article and send Breaking news. Standalone only.
Config.Bulletin.BreakingCooldownMinnumberdefault: 10One Breaking alert per this many minutes, across the server.
Config.Bulletin.BreakingHoursnumberdefault: 6How long the front page shows the Breaking banner.
Config.Bulletin.Categoriestabledefault: { 'city', 'crime', 'business', 'sport', 'weather', 'opinion' }Article categories.
Config.Stall.Enabledbooleandefault: trueTurn the Stall classifieds app on or off. With nx_computer running, Stall shows the laptop's classifieds board and uses its limits.
Config.Stall.ExpiryDaysnumberdefault: 14A listing comes down after this many days.
Config.Stall.MaxActivenumberdefault: 10Live listings per account.
Config.Stall.PostCooldownSecnumberdefault: 30Wait between two posts.
Config.Stall.PostCostnumberdefault: 0Charged per post, from the bank and then cash. 0 is free.
Config.Stall.MaxPhotosnumberdefault: 4Photos per listing (0 to 4).
Config.Trace.Enabledbooleandefault: trueTurn Trace, the person and vehicle lookup, on or off.
Config.Trace.VisiblePersontabledefault: { 'number', 'job' }What a person search shows. Any of number, job, grade, gender and age.
Config.Trace.VisibleVehicletabledefault: { 'model', 'color', 'owner' }What a plate search shows. Any of model, color and owner (name only).
Config.Trace.SearchCostnumberdefault: 1000Charged per search, from the bank and then cash, whether anything is found or not. 0 is free.
Call Screening and robocalls
Config.Screening.Enabledbooleandefault: truePlayers can turn on Call Screening in Settings. A caller who is not in their contacts states who they are before the phone rings.
Config.Screening.Defaultstringdefault: 'off'Setting for new phones: 'off', 'ask' (the caller types a reason first) or 'silence' (straight to voicemail).
Config.Screening.ReasonSecondsnumberdefault: 20Time the caller has to answer.
Config.Screening.MaxReasonnumberdefault: 120Characters in a typed reason.
Config.Screening.VoiceClipbooleandefault: trueCallers may also record a short clip. Needs the media backend.
Config.Screening.ClipSecondsnumberdefault: 10Longest voice clip.
Config.Screening.SpamReportsnumberdefault: 3Different accounts that must report a number before it shows Spam Risk.
Config.Screening.SpamDaysnumberdefault: 14Reports older than this stop counting.
Config.Robocalls.Enabledbooleandefault: trueThe robodialer in Cipher: pay to call many numbers with a recorded pitch. A victim who presses 1 is connected to the campaign's own number.
Config.Robocalls.Jobstabledefault: {}Only these jobs may run campaigns. An empty list allows anyone.
Config.Robocalls.PricePerCallnumberdefault: 25Paid up front for every number dialled.
Config.Robocalls.MoneyAccountstringdefault: 'black_money''cash', 'bank' or 'black_money'. Falls back to cash where there is no black money.
Config.Robocalls.MaxTargetsnumberdefault: 20Numbers one campaign dials.
Config.Robocalls.CallGapSecondsnumberdefault: 20Seconds between two calls of one campaign.
Config.Robocalls.VictimCooldownMinutesnumberdefault: 30A number gets at most one robocall in this time.
Config.Robocalls.CampaignCooldownMinutesnumberdefault: 30Wait between two campaigns of one character.
Config.Robocalls.MaxPitchnumberdefault: 200Characters in a pitch.
Config.Robocalls.PitchClipSecondsnumberdefault: 20Longest recorded pitch. Needs the media backend.
Gloss, Glimpse and Flick
Config.Gloss.Enabledbooleandefault: trueTurn the Gloss photo app on or off.
Config.Gloss.MaxPhotosnumberdefault: 10Photos per post.
Config.Gloss.MaxCaptionnumberdefault: 500Characters in a caption.
Config.Gloss.MaxCommentnumberdefault: 300Characters in a comment.
Config.Gloss.StoryHoursnumberdefault: 24A story disappears after this.
Config.Gloss.WordBlacklisttabledefault: {}Lowercase words refused in captions, comments, names and bios.
Config.Glimpse.Enabledbooleandefault: trueTurn the Glimpse snap app on or off.
Config.Glimpse.SnapHoursnumberdefault: 24Opened snaps and chat lines vanish after this unless saved.
Config.Glimpse.StoryHoursnumberdefault: 24A story disappears after this.
Config.Glimpse.StreakHoursnumberdefault: 36A streak breaks when this long passes without a snap both ways.
Config.Glimpse.BestFriendsnumberdefault: 8Size of the best friends list.
Config.Glimpse.Mapbooleandefault: trueThe friend map. Everyone starts hidden and chooses who sees them.
Config.Glimpse.MapUpdateSecondsnumberdefault: 10How often positions on the friend map update.
Config.Flick.Enabledbooleandefault: trueTurn the Flick video app on or off.
Config.Flick.MaxSecondsnumberdefault: 60Longest video.
Config.Flick.MaxCaptionnumberdefault: 300Characters in a caption.
Config.Flick.MaxCommentnumberdefault: 300Characters in a comment.
Config.Flick.Musicbooleandefault: trueA Waveform station track can play over a video (Config.Music.Playlists).
Config.Flick.WordBlacklisttabledefault: {}Lowercase words refused in captions, comments, names and bios.
Payphones
Payphones in the world. Anyone can call out, and each booth keeps a number people can call back. The "Use payphone" option needs ox_target.
Config.Callbox.Enabledbooleandefault: trueTurn payphones on or off.
Config.Callbox.Modelstabledefault: 11 payphone modelsProp models that work as payphones, for example 'prop_phonebox_01a'. The payphone options sit on the booth prop itself, and only on one that stands there: a booth a car knocked down, one a map or another script hides, or one lying on its side offers nothing.
Config.Callbox.PricePerMinutenumberdefault: 5Cash per started minute. 0 is free.
Config.Callbox.FreeNumberstabledefault: { '911' }Numbers that are always free to call.
Config.Callbox.Rangenumberdefault: 2.5Metres. Walking further away hangs up.
Config.Callbox.NumberPrefixstringdefault: '555-2'Booth numbers are this prefix plus three digits.
Config.Callbox.Whitelistbooleandefault: trueOnly known payphone spots in the base map can become booths.
Config.Callbox.ExtraBoothstabledefault: {}Payphones your custom maps add, as vector3 positions, for example vector3(-36.35, -1379.17, 28.33). These only let a booth prop at that spot register when Whitelist is on; they never place a target by themselves. A custom booth model also goes in Models.
Config.Callbox.MaxBoothsPerCharacternumberdefault: 20New booths one character may ever register by using them first. 0 means no cap.
Config.Callbox.RequireReachbooleandefault: trueShow the payphone options only on a booth the player can actually reach, not one buried in a wall or a shelf.
Config.Callbox.Handsettabledefault: the casino phone receiverThe receiver prop held during a payphone call: Model, Bone, Offset and Rotation.
Config.Callbox.Animtabledefault: cellphone@ call poseThe call pose: Dict, DictFemale and Base.
MDT, Live Activities, Tap to Pay and Backups
Config.MDT.Enabledboolean | stringdefault: 'auto'The police MDT companion: seized phones, tower dumps and device traces, always under a warrant. 'auto' turns it on while an allowed MDT resource runs.
Config.MDT.ExportResourcestabledefault: { 'nx_computer' }Resources allowed to call the MDT exports.
Config.MDT.Jobstabledefault: { 'police' }The officer must hold one of these jobs. An empty list skips the check.
Config.MDT.TowerSizenumberdefault: 1000Metres per side of a cell tower square.
Config.MDT.PingRetentionDaysnumberdefault: 7Days tower pings are kept.
Config.MDT.ExtractSecondsnumberdefault: 45Time to read an open phone, or one whose passcode is known.
Config.MDT.CrackMinutesnumberdefault: 20Time to crack a locked phone. 0 turns cracking off.
Config.LiveActivities.Enabledbooleandefault: trueTurn Live Activities on or off.
Config.LiveActivities.MaxPerPlayernumberdefault: 8Live activities at once per player.
Config.LiveActivities.MaxPerOwnernumberdefault: 2Live activities per resource per player.
Config.LiveActivities.MaxOnLocknumberdefault: 3Cards shown on the lock screen.
Config.LiveActivities.DefaultTTLnumberdefault: 3600Seconds before an activity ends by itself, unless it sets its own ttl (at most 8 hours).
Config.LiveActivities.DefaultStalenumberdefault: 600Seconds without an update before a card dims.
Config.TapToPay.Enabledbooleandefault: trueA billing job takes card payments on its phone and the customer confirms on theirs. Needs nx_realbanking; off without it.
Config.TapToPay.Rangenumberdefault: 1.5Metres between the two phones.
Config.TapToPay.Minnumberdefault: 1Smallest payment.
Config.TapToPay.Maxnumberdefault: 25000Largest payment. nx_realbanking's own invoice limits apply too.
Config.TapToPay.ExpireSecondsnumberdefault: 90A charge nobody paid expires after this.
Config.TapToPay.RequireDutybooleandefault: trueThe merchant must be on duty, when the job system reports duty.
Config.TapToPay.RefundHoursnumberdefault: 24How long a payment can be refunded. 0 means no refunds.
Config.TapToPay.RefundMinGradeboolean | numberdefault: falseWho may refund: false for the boss only, or a grade number and up.
Config.TapToPay.DeclineCooldownSecondsnumberdefault: 5After a customer declines, the same charge is not offered to them again for this many seconds.
Config.TapToPay.HistoryHoursnumberdefault: 24Hours of charges shown in the merchant's history.
Config.TapToPay.KeepDaysnumberdefault: 30Days charge records are kept.
Config.TapToPay.ExportResourcestable | nildefault: nilResources allowed to use CreateTerminalCharge and GetTerminalCharge. nil allows any resource.
Config.Backup.Enabledbooleandefault: truePhone backups. A backup is restored during setup of a new or erased phone.
Config.Backup.AutoDefaultbooleandefault: trueNew phones back up automatically unless the owner turns it off.
Config.Backup.AutoEveryHoursnumberdefault: 24Hours between automatic backups.
Config.Backup.MaxBytesnumberdefault: 262144Largest backup, in bytes (256 KB).
Config.Backup.KeepPerDevicenumberdefault: 3Backups kept per phone.
Config.Backup.MaxPerCharacternumberdefault: 10Backups kept per character.
Config.Backup.KeepDaysnumberdefault: 60Older backups are deleted, except each phone's newest.
Config.Backup.ManualCooldownSecondsnumberdefault: 60Wait between two manual backups.
Config.Backup.ExtraPrefstabledefault: {}Extra setting keys to include in backups, for example { 'x.myapp.' } for an SDK app.
Look
Config.Accentstringdefault: '#2b7fff'The accent colour of the phone's interface. Use a hex colour.
The phone in your hand
Config.Prop.Enabledbooleandefault: trueShow a phone prop in the player's hand.
Config.Prop.Modelstringdefault: 'nx_phone_handset'The prop model. nx_phone_handset ships with the resource.
Config.Prop.Bonenumberdefault: 28422Hand bone the prop attaches to. 28422 is the right hand, 60309 the left.
Config.Prop.Offsetvector3default: vector3(0.0, -0.005, 0.0)Small position nudge. The model sits correctly at zero.
Config.Prop.Rotationvector3default: vector3(0.0, 180.0, 0.0)Rotation that turns the screen toward the face.
Config.Prop.OffsetLandscapevector3default: vector3(0.0, -0.005, 0.0)Position nudge while the phone is held sideways for the camera.
Config.Prop.RotationLandscapevector3default: vector3(0.0, 90.0, 0.0)Rotation while the phone is held sideways.
Config.Anims.Holdstringdefault: 'classic'How the phone is held while reading. 'classic' is the cellphone@ hold; 'relaxed' is the lower, looser texting hold with male and female variants.
Config.Anims.Dictstringdefault: 'cellphone@'Animation dictionary for the classic hold. cellphone@female has female variants.
Config.Anims.TextInstringdefault: 'cellphone_text_in'Raising the phone. TextIdle and TextOut set holding and putting it away.
Config.Anims.CallInstringdefault: 'cellphone_call_in'Raising the phone to the ear. CallIdle and CallOut set the call pose and hanging up.
Config.Anims.BlendInnumberdefault: 8.0Blend-in speed. BlendOut (-8.0) is the blend-out speed.
Config.Anims.FlagEnternumberdefault: 1048634Playback flags for raising the phone. FlagIdle and FlagExit cover holding and putting it away. The shipped flags let players walk and aim while holding the phone; change them only if you know GTA's animation flags.
Config.Anims.ReassertMsnumberdefault: 500How often, in milliseconds, the idle pose is re-applied if it blends off.
nx_computer
Config.DependOnComputerboolean | stringdefault: 'auto'Share accounts, mail and the laptop's apps with nx_computer. 'auto' turns it on when nx_computer is running. true always expects it (the self-check warns if it is missing), and false keeps the two separate.
Phone extras
Config.CallBarOnClosebooleandefault: truePutting the phone away during a call lowers it to the bottom of the screen with a call bar.
Config.CreateAccountsbooleandefault: truePlayers may create new accounts in Settings, Accounts, up to MaxAccountsPerCharacter.
Config.PhoneName.BlockedWordstabledefault: {}Words a phone name may not contain, for example { 'admin', 'police' }. Letters and digits are compared.
config_server.lua
This file loads on the server only and never reaches players. Keep every key, token, secret and webhook here.
Media storage
Config.Server.Media.Backendstringdefault: 'fivemanage'Where photos, videos and recordings are stored. 'fivemanage' is the only backend that works today.
Config.Server.Media.MaxUploadKBnumberdefault: 8192Largest single upload, in KB.
Config.Server.Media.RetentionDaysnumberdefault: 0Delete uploads older than this. 0 keeps them.
Config.Server.Media.PresignSecondsnumberdefault: 60How long a phone's upload link stays valid, in seconds.
Config.Server.Media.PresignsPerHournumberdefault: 30Upload links one player may request per hour for voicemail, greetings and memos.
Config.Server.Media.VerifyWindowSecondsnumberdefault: 600How long the server keeps checking that an upload arrived. The storage CDN can take minutes to show a new file.
Config.Server.Media.FiveManage.Urlstringdefault: ''A self-hosted, Fivemanage-compatible server (https only). '' uses the official Fivemanage API. The server must also let your ApiKey look a file up (GET <Url>/file/<id>, returning the file with the metadata the phone sent) and delete it. Without the lookup no photo, video or voice note is ever confirmed: the phone says the storage did not confirm the upload, and the server console names the lookup address.
Config.Server.Media.FiveManage.ApiKeystringdefault: ''Your own Fivemanage API key (Dashboard, Tokens). One API v3 key covers images, video and audio. Leave it empty to keep uploads off.
Config.Server.Media.FiveManage.ImageTokenstringdefault: ''Older v2 key name, used only when ApiKey is empty.
Config.Server.Media.CdnHoststabledefault: {}Hosts uploaded files are served from. An empty list means r2.fivemanage.com plus the host of FiveManage.Url. List a self-hosted server's file host here if it differs. '.example.com' matches any subdomain.
The FiveMerr, S3 and SelfHost blocks in the file are placeholders
for backends that are not supported yet.
Rate limits
Per-player caps. Each entry is { calls, seconds }: how many times one
player may do that within the window.
Config.Server.RateLimits.Defaulttabledefault: { 30, 10 }Any action without its own entry.
Config.Server.RateLimits.Opentabledefault: { 10, 10 }Opening the phone.
Config.Server.RateLimits.Calltabledefault: { 10, 60 }Placing a call.
Config.Server.RateLimits.Messagetabledefault: { 20, 10 }Sending a message.
Config.Server.RateLimits.Mediatabledefault: { 6, 60 }Uploading a photo or video.
Config.Server.RateLimits.Contactstabledefault: { 20, 10 }Adding or editing contacts.
Config.Server.RateLimits.ApiMessagetabledefault: { 60, 10 }The SendMessage export, counted per calling resource, not per player.
FaceTime
Config.Server.FaceTime.Icetabledefault: Google's public STUN serverSTUN and TURN servers handed to the phones in a video call. Sent only to the members of that call.
Config.Server.FaceTime = {
Ice = {
{ urls = 'stun:stun.l.google.com:19302' },
-- { urls = 'turn:turn.example.com:3478', username = 'user', credential = 'secret' },
},
}Config.Server.FaceTime.RelayOnlyboolean | nildefault: nilForce every call through your TURN server so players only see the relay's address. nil turns it on when a TURN server is configured. Needs a TURN entry or TurnSecret, or calls cannot connect.
Config.Server.FaceTime.TurnSecretstringdefault: not setA coturn use-auth-secret. The server then mints short-lived TURN logins per call, which is safer than a fixed username and password that every caller receives.
Config.Server.FaceTime.TurnUrlstabledefault: not setThe TURN server URLs used with TurnSecret, for example { 'turn:turn.example.com:3478' }.
Config.Server.FaceTime.TurnTtlnumberdefault: 3600Seconds a minted TURN login stays valid.
Webhooks
Config.Server.Webhookstabledefault: all ''Discord webhook URLs. '' turns a log off.
Yapp: new posts and reports.Cipher: rooms created and every message (an admin log).Bulletin: articles published or edited.Stall: listings posted or removed.
Installation
Dependencies, inventory items, start order, media storage, app access and first-start checks for nx_phone.
Exports
Server and client exports for controlling the phone, looking up numbers, sending texts and notifications, answering phone numbers, and integrating other resources with nx_phone.