Configuration
Every owner-editable entry in config.lua and config_server.lua. Defaults, types, and purpose.
All settings live in config.lua. The file is in escrow_ignore, so your edits
survive updates. It is ordered by how often an owner touches it: Quick Setup first,
then Features, then Advanced. Server-only secrets live in config_server.lua, a
server script that never downloads to clients. Keep tokens and API keys there.
Quick setup
Core
Config.Frameworkstringdefault: 'esx'Framework integration. One of 'esx', 'qbcore', or 'qbox'. 'qbx' is accepted as an alias of 'qbox'.
Config.Localestringdefault: 'en'Interface language. One of the ten shipped ids: en, fi, de, fr, pt-br, es, tr, nl, it, pl. See locales/README.md for the full list.
Config.Accountstringdefault: 'bank'Account used for trading. One of bank, money, or cash.
Config.LaptopItemstringdefault: 'laptop'Inventory item that places the laptop.
The laptop item must exist in ox_inventory. See Installation.
Config.TableNamestringdefault: 'nx_computer_assets'Database table that stores per-account assets. Change only if you renamed the table.
Banking
Backend for the Banking app and all in-app money movement.
Config.Banking.Backendstringdefault: 'auto'Money backend for the Banking app. One of auto, framework, or realbanking.
'auto'uses nx_realbanking when it is started, otherwise the framework backend. Recommended.'framework'uses the framework's own cash and bank accounts. Works anywhere with no dependencies.'realbanking'bridges to nx_realbanking. Proximity-gated, with a clean not-configured state when absent.
Config.Banking.CashAccountstringdefault: nilFramework-backend cash account name. nil uses stock naming per framework.
Config.Banking.BankAccountstringdefault: nilFramework-backend bank account name. nil uses stock naming per framework.
Config.Banking.MinTransfernumberdefault: 1Smallest transfer, request, or scheduled payment.
Config.Banking.MaxTransfernumberdefault: 1000000Largest single transfer, request, or scheduled payment.
Config.Banking.TransferMemoMaxLennumberdefault: 140Memo character cap. 0 disables memos.
Config.Banking.MaxTransfersPerMinutenumberdefault: 6Per-account outbound burst cap. Guards against a compromised client sweeping an account. The scheduled-payment watcher is exempt. 0 disables it.
Config.Banking.DailyTransferCapnumberdefault: 5000000Per-account outbound total over a trailing 24 hours, in fiat.
Config.Banking.SchedulePollIntervalMsnumberdefault: 60000Framework-backend standing-payment watcher cadence in milliseconds, clamped between 15 seconds and 10 minutes.
Config.Banking.Adaptertabledefault: nilCustom money adapter, used only when Config.Framework is set to a custom value. Provides getCash, getBank, addCash, removeCash, addBank, and removeBank functions. Mutators must be atomic, reject overdraw, and return a boolean success.
Apps
Built-in app ids: banking, finance, markets, jobs, vehicles, darknet, casino, forums, notes, docs, calculator, explorer, settings, email, messages, contacts, browser, terminal, map, photos, store, admin.
Config.Apps.Disabledarraydefault: {}Built-in apps to hide everywhere and refuse to open. Given as an array of ids or a map of id to true.
Config.Apps.ExternaltableSDK for third-party apps. Any resource can publish its own app that renders in a sandboxed frame with a locked-down bridge and no access to banking, crypto, inventory, admin, or identifiers.
Publishing third-party apps from another resource is covered in the SDK guide.
Config.Apps.External.Enabledbooleandefault: trueMaster toggle. false makes every registration call be ignored.
Config.Apps.External.Allowarraydefault: nilResource allowlist. nil or empty lets any resource register. A non-empty list restricts registration to those resources.
Config.Apps.External.Denyarraydefault: {}App ids that can never register.
Config.Apps.External.MaxAppsnumberdefault: 24Ceiling on the number of registered external apps.
Config.Apps.StoretableNX Store. Apps start uninstalled per account and are installed from the Store app. Ids also present in InstallerSites are hidden from the store and found through a website instead. An empty NotPreinstalled, or Enabled set to false, preinstalls everything.
Config.Apps.Store.Enabledbooleandefault: trueMaster toggle for the NX Store app.
Config.Apps.Store.NotPreinstalledarraydefault: { 'banking', 'finance', 'markets', 'docs', 'contacts', 'jobs', 'vehicles', 'forums', 'casino', 'darknet' }Apps that start uninstalled per account.
Config.Apps.Store.InstallerSitestabledefault: { darknet = 'undernet.lc' }Map of app id to the .lc site that serves its installer. These apps are not sold in-store.
Targeting and placement
Config.TargetDistancenumberdefault: 1.5ox_target interaction range in meters.
Config.TargetOpenLabelstringdefault: 'Open Laptop'Label shown on the open-laptop target prompt.
Config.TargetOpenIconstringdefault: 'fa-solid fa-laptop'Font Awesome icon for the open-laptop target prompt.
Config.TargetPickupLabelstringdefault: 'Pick Up Laptop'Label shown on the pickup target prompt.
Config.TargetPickupIconstringdefault: 'fa-solid fa-box'Font Awesome icon for the pickup target prompt.
Config.EnablePickupbooleandefault: trueWhether a placed laptop can be picked back up.
Config.PlaceDistancenumberdefault: 5.0Maximum placement distance in meters.
Config.PreviewAlphanumberdefault: 100Opacity of the ghost placement preview.
Config.PickupMaxDistancenumberdefault: 5.0Server-side pickup range check. An anti-harvest guard, so keep it small.
Features
Exchange
Crypto and stock trading.
Config.Exchange.TradeFeeBpsnumberdefault: 25Trade fee in basis points. 25 equals 0.25 percent.
Config.Exchange.MaxSlippageBpsnumberdefault: 200Maximum drift in basis points between the displayed quote and the fill price. 200 equals 2 percent. 0 disables the check.
Config.Exchange.StaleQuoteMsnumberdefault: 30000A protected fill whose quote is older than this many milliseconds is rejected.
Config.Exchange.OrderPollIntervalMsnumberdefault: 15000Limit-order and price-alert watcher cadence in milliseconds.
Casino
Config.Casino.BlackjackBetsarraydefault: { 10, 25, 50, 100 }Selectable bet amounts for Blackjack.
Config.Casino.HiLoBetsarraydefault: { 10, 25, 50, 100 }Selectable bet amounts for Hi-Lo.
Config.Casino.VideoPokerBetsarraydefault: { 25, 50, 100, 250 }Selectable bet amounts for Video Poker.
Config.Casino.RouletteBetsarraydefault: { 10, 25, 50, 100 }Selectable bet amounts for Roulette.
Config.Casino.MaxPayoutnumberdefault: 1000000Absolute ceiling on a single payout in any game. Hi-Lo multipliers compound with no natural cap, so this clamps the pot. 0 removes the cap.
Config.Casino.Payouts.BlackjackWinnumberdefault: 2.0Payout multiplier for a standard Blackjack win.
Config.Casino.Payouts.Blackjacknumberdefault: 2.5Payout multiplier for a natural blackjack.
Config.Casino.Payouts.BlackjackPushnumberdefault: 1.0Payout multiplier for a push, returning the stake.
Config.Casino.HiLo.HouseEdgenumberdefault: 0.05House hold per call. Expected value stays at 0.95 at any streak length.
Config.Casino.HiLo.MaxPerGuessMultipliernumberdefault: 20.0Cap on the multiplier offered for a single call.
Config.Casino.VideoPokerPaytabletableMap of hand name to payout multiplier. Shape: [handName] = number.
Config.Casino.VideoPokerPaytable = {
['Royal Flush'] = 250,
['Straight Flush'] = 50,
-- Four of a Kind 25, Full House 9, Flush 6, Straight 4,
-- Three of a Kind 3, Two Pair 2, Jacks or Better 1, Nothing 0
}...
Config.Casino.RoulettePayoutstableMap of bet type to payout multiplier. Shape: [betType] = number.
Config.Casino.RoulettePayouts = {
straight = 35,
split = 17,
-- street 11, corner 8, sixline 5, dozen 2, column 2,
-- red 1, black 1, even 1, odd 1, low 1, high 1
}...
Darknet
Darknet and black market.
Config.Darknet.Enabledbooleandefault: trueMaster toggle for the darknet app.
Config.Darknet.AccessItemstringdefault: 'usb'Inventory item required to enter the darknet.
The usb item must exist in ox_inventory. See Installation.
Config.Darknet.DeliveryCheckIntervalnumberdefault: 30Seconds between delivery-ready checks.
Config.Darknet.ListingFeenumberdefault: 0Flat fee to create a player-run listing.
Config.Darknet.MinPricenumberdefault: 250Minimum price for a player-run listing.
Config.Darknet.MaxPricenumberdefault: 500000Maximum price for a player-run listing.
Config.Darknet.PayInCrypto.Enabledbooleandefault: trueCharge darknet purchases from the buyer's coin wallet at the live exchange rate. Catalog prices stay in fiat. false restores classic cash payments.
Config.Darknet.PayInCrypto.Symbolstringdefault: 'BTC'Coin used to settle darknet purchases. Any listed coin: BTC, ETH, XMR, LTC, DOGE, ADA, SOL, DOT, MATIC.
Config.Darknet.PickuptableCourier pickup point for physical orders. The hint fields control the in-world marker that points the player toward the pickup once a delivery is ready.
Config.Darknet.Pickup = {
coords = vector4(-1361.3589, -932.6345, 9.7058, 305.4851),
model = 's_m_m_dockwork_01',
scenario = 'WORLD_HUMAN_CLIPBOARD',
label = 'Collect Delivery',
icon = 'fa-solid fa-box-open',
distance = 2.0,
hintRadius = 120.0,
hintDuration = 300,
hintClearDistance = 3.0,
}Config.Darknet.CatalogarrayArray of products in two shapes. Item products deliver a real inventory item through the courier pickup after a delay. Data-file products land instantly in the buyer's Downloads and are pure flavor. The item fields must reference items that exist in ox_inventory. See Installation.
-- item product: { id, label, item, amount, price, delivery }
{ id = 'lockpick_adv', label = 'Advanced Lockpick', item = 'advanced_lockpick', amount = 1, price = 2500, delivery = 180 },
-- data-file product: { id, label, category = 'datafile', price, description, file = { name, content } }
{ id = 'df_plates', label = 'Scraped Plate Registry', category = 'datafile', price = 3200, description = '...', file = { name = 'plates.csv', content = '...' } },...
Config.Darknet.DataFilesarraydefault: {}Your own purchasable data files, in the same shape as the datafile catalog entries. Kept in a separate list so script updates never touch it. The body may be inline through content or read server-side from a path through contentFile.
Vehicle marketplace
Config.VehicleMarket.Enabledbooleandefault: trueMaster toggle for the marketplace app.
Config.VehicleMarket.ListingFeenumberdefault: 0Flat fee charged to the seller to create a listing.
Config.VehicleMarket.TaxPercentnumberdefault: 0Percentage deducted from the sale price on a successful purchase.
Config.VehicleMarket.MinPricenumberdefault: 1000Minimum allowed listing price.
Config.VehicleMarket.MaxPricenumberdefault: 2500000Maximum allowed listing price.
Jobs hub
Config.JobsHub.Enabledbooleandefault: trueMaster toggle for the jobs app.
Config.JobsHub.ApplicationWebhooksbooleandefault: falseDiscord mirroring of new applications. The in-app flow is intended, where bosses review applications in the Jobs app and each decision emails the applicant. true also posts each new application to that job's webhook.
Config.JobsHub.JobsarrayArray of job definitions. Shipped with police, ems, and mechanic, each with two questions. The webhook fields are empty by default and take a Discord webhook URL.
{
id = 'police',
label = 'Los Santos Police Department',
description = '...',
requirements = '...',
webhook = '',
questions = {
{ id = 'why', label = '...', placeholder = '...', required = true },
},
},...
Website builder
Bosses of any job, per AllowedRanks, can build a public company site addressable by a custom slug such as lscustoms.lc.
Config.SiteBuilder.Enabledbooleandefault: trueMaster toggle for the website builder.
Config.SiteBuilder.AllowedRankstableRank gate. Per-job entries are keyed by grade name or grade level, with a default fallback.
Config.SiteBuilder.AllowedRanks = {
['default'] = { ['boss'] = true, ['chief'] = true, ['manager'] = true },
-- per-job overrides keyed by grade name or grade level
}...
Config.SiteBuilder.Slug.MinLengthnumberdefault: 3Minimum slug length.
Config.SiteBuilder.Slug.MaxLengthnumberdefault: 32Maximum slug length.
Config.SiteBuilder.Slug.ReservedarraySlugs that can never be claimed. Static browser routes are reserved automatically server-side.
Config.SiteBuilder.Slug.Reserved = {
'home', 'manage', 'admin', 'www', 'site', 'sites', 'help', 'support',
-- about, contact, login, logout, browser, search, index, mail, email,
-- newspaper, weather, marketplace, casino, records
}...
Config.SiteBuilder.Limits.MaxBlocksnumberdefault: 60Maximum content blocks per site.
Config.SiteBuilder.Limits.MaxJobsnumberdefault: 20Maximum job openings per site.
Config.SiteBuilder.Limits.MaxProductsnumberdefault: 50Maximum products per site.
Config.SiteBuilder.Limits.MaxInquiriesShownnumberdefault: 200Maximum inquiries shown to a site owner.
Config.SiteBuilder.Limits.MaxReviewsShownnumberdefault: 200Maximum reviews shown on a site.
Config.SiteBuilder.Limits.InquiryBodyMaxnumberdefault: 1500Character cap on an inquiry body.
Config.SiteBuilder.Limits.ReviewBodyMaxnumberdefault: 600Character cap on a review body.
Config.SiteBuilder.AllowedImageHostsarraydefault: { 'cdn.discordapp.com', 'media.discordapp.net', 'i.ibb.co', 'raw.githubusercontent.com' }Extra image hosts allowed in typed image-URL fields. Imgur is always allowed. Published sites load these to visitors, so only add hosts you trust with visitor IPs. Matching is exact host or a leading dot for subdomains.
Config.SiteBuilder.DefaultTheme.palettestringdefault: 'midnight'Legacy palette id.
Config.SiteBuilder.DefaultTheme.accentstringdefault: '#00bcff'Accent color. The accent must be a standard sRGB color value such as hex or rgb(). oklch() is not supported.
Config.SiteBuilder.DefaultTheme.fontstringdefault: 'sora'Default site font.
Config.SiteBuilder.DefaultTheme.kitstringdefault: 'maze'One of the eight design kits.
Config.SiteBuilder.DefaultTheme.densitystringdefault: 'standard'Layout density. One of compact, standard, or spacious.
Config.SiteBuilder.DirectorytableDirectory-site SDK, the browser counterpart of the external apps SDK. Other resources publish .lc browser sites through an export.
Publishing directory sites from another resource is covered in the SDK guide.
Config.SiteBuilder.Directory.Enabledbooleandefault: trueMaster toggle. false makes every registration call be ignored.
Config.SiteBuilder.Directory.Allowarraydefault: nilSlug allowlist. nil or empty lets any slug register. A non-empty list restricts registration to those slugs.
Config.SiteBuilder.Directory.Denyarraydefault: {}Slugs that can never register.
Config.SiteBuilder.Directory.MaxSitesnumberdefault: 24Ceiling on the number of registered directory sites.
Media uploads
Player uploads go through FiveManage at fivemanage.com. The server validates every
upload for size, sniffed type, and rate, then relays it with your API token. The
token is a secret set in config_server.lua.
Config.Media.Providerstringdefault: 'fivemanage'Upload provider. Fixed for 1.0.
Config.Media.MaxImageBytesnumberdefault: 6 * 1024 * 1024Ceiling per decoded image in bytes. FiveManage plan limits still apply.
Config.Media.AllowedTypesarraydefault: { 'png', 'jpg', 'gif', 'webp' }Allowed image types, sniffed from magic bytes and never trusted from the client. jpg covers jpeg.
Config.Media.AllowPdfbooleandefault: trueWhether the Docs export to PDF rail is enabled, producing a hosted pdf URL. false hides the export button.
Config.Media.RateLimit.Windownumberdefault: 60Rate-limit window in seconds.
Config.Media.RateLimit.Burstnumberdefault: 8Uploads allowed per window. 0 turns the limit off.
Config.Media.PageSizenumberdefault: 60Photos gallery page size.
Config.Media.MaxPerAccountnumberdefault: 500Maximum stored rows per account. The oldest are pruned on upload.
Filesystem
Explorer, desktop, and Recycle Bin.
Config.Filesystem.MaxItemsnumberdefault: 600Total items per account including the Recycle Bin. The disk reports full past this.
Config.Filesystem.MaxFileBytesnumberdefault: 16000Size ceiling per text file in bytes.
Config.Filesystem.MaxCopyNodesnumberdefault: 120Maximum nodes one copy or paste may duplicate. Protects the database.
Camera
The camera item opens photo mode and requires the screencapture resource.
Config.Camera.Enabledbooleandefault: trueMaster toggle for photo mode.
Config.Camera.ItemNamestringdefault: 'camera'Inventory item that opens photo mode.
The camera item must exist in ox_inventory. See Installation.
Config.Camera.Cooldownnumberdefault: 1500Milliseconds between shots.
Config.Camera.Encodingstringdefault: 'jpg'Image encoding. One of jpg, png, or webp.
Config.Camera.Gridbooleandefault: trueWhether the rule-of-thirds grid shows by default.
Config.Camera.LookSensitivitynumberdefault: 6.0Mouse-look speed in photo mode.
Config.Camera.MinFovnumberdefault: 18.0Maximum zoom-in. Lower is closer.
Config.Camera.MaxFovnumberdefault: 70.0Zoomed-out default framing.
Config.Camera.Soundtabledefault: { name='Camera_Shoot', set='Phone_SoundSet_Default' }Shutter sound from a frontend soundset.
Config.Camera.RateLimittabledefault: { Burst=20, Window=60 }Server-side upload anti-spam, separate from laptop uploads.
Config.Camera.ProptableHeld prop and idle anim while shooting. The position and rotation are tuned for prop_ing_camera_01 on the right hand and can be retuned with /nxc_cam. Set Prop to false to disable the held prop.
Config.Camera.Prop = {
model = 'prop_ing_camera_01',
bone = 28422,
pos = vector3(0.21, -0.04, -0.04),
rot = vector3(-85, 75, 97),
}Config.Camera.FiltersarrayVisual styles cycled with the F key. Each maps to a GTA timecycle modifier baked into the frame. Shape: { id, name, modifier, strength }, where modifier may be nil.
{ id = 'normal', name = 'Normal', modifier = nil, strength = 0.0 },
{ id = 'mono', name = 'Mono', modifier = 'NG_deathfail_BW_base', strength = 1.00 },
-- sepia, vintage, vivid, noir...
Projector
The holographic projector pairs with the laptop as a third display. It comes from interiors that carry a v_res_mountedprojector or from a placeable item. See Displays for pairing, placement, and calibration.
Config.Projector.Enabledbooleandefault: trueMaster toggle for the projector display.
Config.Projector.Itemstringdefault: 'projector'Placeable projector item. nil or empty limits the feature to world-mapped projectors.
The projector item must exist in ox_inventory. See Installation.
Config.Projector.Modelstringdefault: 'v_res_mountedprojector'Projector prop model.
Config.Projector.LensOffsettabledefault: vector3(0.0, 0.0, -0.78)Lens offset that seeds the raycast deciding where the image lands. Tuned with /nxc_place projector.
Config.Projector.LensForwardtabledefault: vector3(1.0, 0.0, 0.0)Forward direction of the lens raycast.
Config.Projector.BeamOffsettabledefault: vector3(-0.15, 0.18, -0.075)Where the visible beam starts. nil uses the same point as LensOffset.
Config.Projector.MaxThrownumberdefault: 24.0Maximum meters from lens to wall before no surface is reported.
Config.Projector.MinThrownumberdefault: 0.8Closer than this leaves no room for an image.
Config.Projector.ThrowRationumberdefault: 0.55Image width equals distance times this ratio, clamped, at 16 by 9.
Config.Projector.MinWidthnumberdefault: 0.9Minimum image width in meters.
Config.Projector.MaxWidthnumberdefault: 6.0Image width stops growing here.
Config.Projector.WallGapnumberdefault: 0.022Meters the image floats off the wall, guarding against z-fighting.
Config.Projector.ResWnumberdefault: 1280Projected image width in pixels.
Config.Projector.ResHnumberdefault: 720Projected image height in pixels.
Config.Projector.Alphanumberdefault: 240Image opacity. Below 255 gives a slightly translucent beamer wash.
Config.Projector.FlipImagebooleandefault: falseFlip the image if an odd surface renders it rotated 180 degrees.
Config.Projector.DetectRadiusnumberdefault: 8.0Maximum laptop to projector distance for the connect option.
Config.Projector.PlaceDistancenumberdefault: 6.0Item placement distance, mounted against a ceiling.
Config.Projector.Calibration.Enabledbooleandefault: trueWhether the player-facing calibrate option is offered.
Config.Projector.Calibration.MaxVerticalnumberdefault: 0.50Meters of up and down lens shift.
Config.Projector.Calibration.MaxHorizontalnumberdefault: 0.25Meters of left and right lens shift.
Config.Projector.Calibration.MinScalenumberdefault: 0.75Lower bound of the zoom range, times the throw-derived size.
Config.Projector.Calibration.MaxScalenumberdefault: 1.25Upper bound of the zoom range.
Config.Projector.Calibration.Stepnumberdefault: 0.02Meters per arrow nudge. Hold Shift for five times the step.
Config.Projector.Calibration.ScaleStepnumberdefault: 0.02Zoom change per scroll notch.
Config.Projector.Camera.fovnumberdefault: 50.0Field of view while the projection is focused.
Config.Projector.Camera.marginnumberdefault: 1.18Framing margin around the projection.
Config.Projector.Camera.distancenumberdefault: nilCamera distance. nil auto-frames the projection.
Config.Projector.Beam.Enabledbooleandefault: trueWhether the visible light cone renders.
Config.Projector.Beam.Colortabledefault: { r=226, g=233, b=255 }Base beam color.
Config.Projector.Beam.Brightnessnumberdefault: 0.12Beam brightness.
Config.Projector.Beam.Hardnessnumberdefault: 0.17Beam edge hardness.
Config.Projector.Beam.Falloffnumberdefault: 25.0Beam falloff rate.
Config.Projector.Beam.TintFromScreennumberdefault: 0.7How far the cone blends toward the average on-screen color.
Config.Projector.Beam.Shaft.Enabledbooleandefault: trueWhether the layered light shaft renders.
Config.Projector.Beam.Shaft.Alphanumberdefault: 10Per-layer alpha from 0 to 255.
Config.Projector.Beam.Shaft.Layersnumberdefault: 3Nested planes from full cone down to a hot core.
Config.Projector.Beam.Dust.Enabledbooleandefault: trueWhether dust motes render inside the cone.
Config.Projector.Beam.Dust.Effectstringdefault: 'env_dust_motes_int_hvy'Looped particle effect inside the cone.
Config.Projector.Beam.Dust.Pointsnumberdefault: 4Emitters spread along the beam.
Config.Projector.Beam.Dust.Scalenumberdefault: 2.0Dust emitter scale.
Config.Projector.Fx.Additivebooleandefault: trueAdditive blending for the projected image.
Config.Projector.Fx.Floornumberdefault: 0.8Per-pixel alpha floor. 0 is physically pure, 1 is a flat screen.
Config.Projector.Fx.Blurnumberdefault: 0.6Lens defocus in pixels.
Config.Projector.Fx.Chromanumberdefault: 0.8RGB convergence error in pixels.
Config.Projector.Fx.Hotspotbooleandefault: trueWhether the center hotspot renders.
Config.Projector.Fx.Vignettenumberdefault: 0.34Vignette strength.
Config.Projector.Fx.EdgeFeatherbooleandefault: trueWhether the image edges are feathered.
Config.Projector.Fx.Fringebooleandefault: trueWhether color fringing renders.
Config.Projector.Fx.PixelGridnumberdefault: 0.12LCD screen-door structure opacity. 0 turns it off.
Config.Projector.Fx.Grainbooleandefault: trueWhether film grain renders.
Config.Projector.Fx.GrainOpacitynumberdefault: 0.12Grain opacity.
Config.Projector.Fx.Flickerbooleandefault: trueWhether the image shimmers by about 1.5 percent.
Config.Projector.Glow.Pushnumberdefault: 0.27Meters the wall glow sits in front of the surface.
Config.Projector.Glow.Rangenumberdefault: 2.4Wall glow radius.
Config.Projector.Glow.Intensitynumberdefault: 1.7Wall glow brightness.
Config.Projector.SyncForAllbooleandefault: trueWhether bystanders see the projected image, beam, and glow.
Config.Projector.SyncRadiusnumberdefault: 20.0Meters within which bystanders receive projector sync.
Display switcher
With a paired monitor both screens stay live. Alt and 1 selects the laptop, Alt and 2 selects the monitor. See Displays for the paired-monitor workflow.
Config.DisplaySwitch.Enabledbooleandefault: trueMaster toggle for the display switcher.
Config.DisplaySwitch.HintPositionstringdefault: 'bottom-center'ox_lib textUI position. One of bottom-center, top-center, left-center, or right-center.
Config.DisplaySwitch.TransitionMsnumberdefault: 350Camera glide time in milliseconds between displays. Lower is snappier.
Screen prewarm
Boots the OS page in a hidden background while a player stands near a closed laptop, then drops it again with five meters of hysteresis. Not used when OpenLaptopForAll is on.
Config.Prewarm.Enabledbooleandefault: trueMaster toggle for screen prewarm.
Config.Prewarm.Distancenumberdefault: 12.0Meters from a placed, closed laptop at which prewarm starts.
Networking
Config.Networking.OpenLaptopForAllbooleandefault: falsetrue makes an open laptop a networked entity with a synced screen that nearby players see, adding a short warm-up on open. false keeps the open laptop local so the operator's screen opens instantly.
Animation
While a screen is focused the operator is posed for the surface height. Bands are chosen by the height delta, ordered high to low, and the first enabled band that fits wins. Tune live with /nxc_anim.
Config.Animation.Enabledbooleandefault: trueMaster toggle for the operator stance.
Config.Animation.FreezePedbooleandefault: trueWhether the operator is frozen while posed.
Config.Animation.BlendInnumberdefault: 4Anim blend-in speed.
Config.Animation.BlendOutnumberdefault: -4Anim blend-out speed.
Config.Animation.Align.Enabledbooleandefault: trueWhether the operator is aligned to the surface.
Config.Animation.Align.Headingbooleandefault: trueWhether heading is adjusted during alignment.
Config.Animation.Align.Slidebooleandefault: trueWhether the operator slides into position.
Config.Animation.Align.Lateralnumberdefault: 0Lateral alignment offset.
Config.Animation.Align.PosTolerancenumberdefault: 0.3Position tolerance in meters before a nudge is applied.
Config.Animation.Align.HeadingToleranceDegnumberdefault: 22Heading tolerance in degrees before a turn is applied.
Config.Animation.Align.MaxNudgenumberdefault: 0.6Maximum slide distance in meters.
Config.Animation.Align.SettleMsnumberdefault: 350Settle time in milliseconds after alignment.
Config.Animation.BandsarrayOrdered pose bands. Shape: { Id, Enabled, Min, StandOffset, Flag, Dict, Name }, where Min is the height delta at which the band applies and Dict and Name are the anim.
{ Id = 'stand', Enabled = true, Min = 0.64, Dict = 'anim@amb@warehouse@laptop@', Name = 'idle_a' },
{ Id = 'kneel', Enabled = true, Min = 0, Dict = 'amb@medic@standing@kneel@base', Name = 'base' },
-- seated, low, floor (disabled by default)...
Audio
Native GTA soundsets only. Retune by swapping any set and name pair. PlaySoundFrontend has no per-call volume.
Config.Audio.Enabledbooleandefault: trueMaster switch for all UI sounds.
Config.Audio.Keystroketabledefault: { enabled=true, throttleMs=50 }Keystroke tick, throttled so key-repeat does not machine-gun.
Config.Audio.Clicktabledefault: { enabled=true }Left-click tick.
Config.Audio.BootFromEntitybooleandefault: trueWhether the power-on chime plays from the laptop in 3D so bystanders hear it.
Config.Audio.SoundstableMap of sound key to a set and name pair. Shape: [key] = { set, name }.
Config.Audio.Sounds = {
boot = { set = 'GTAO_Exec_SecuroServ_Warehouse_PC_Sounds', name = 'Login' },
notify = { set = 'HUD_MINI_GAME_SOUNDSET', name = 'CONFIRM_BEEP' },
lockout = { set = 'DLC_HEIST_BIOLAB_PREP_HACKING_SOUNDS', name = 'Hack_Failed' },
-- keys: keystroke, click, boot, notify, success, error, close, lockout
}...
Screen glow
A lit screen casts colored light onto the player and desk, tinted per zone by colors sampled from the layout.
Config.ScreenGlow.Enabledbooleandefault: trueMaster toggle for the screen glow.
Config.ScreenGlow.DayStartnumberdefault: 7Hour at which daytime begins. Glow shows outside the daytime window or when inside an interior.
Config.ScreenGlow.DayEndnumberdefault: 19Hour at which daytime ends.
Config.ScreenGlow.ForceAlwaysbooleandefault: falsetrue ignores the day and interior gate.
Config.ScreenGlow.Pushnumberdefault: 0.04Meters the lights sit in front of the screen.
Config.ScreenGlow.Rangenumberdefault: 0.40Per-light radius in meters.
Config.ScreenGlow.Intensitynumberdefault: 2.2Per-light brightness.
Config.ScreenGlow.LerpRatenumberdefault: 6.0Color easing per second. Higher is snappier.
Config.ScreenGlow.Flickernumberdefault: 0.04Subtle screen flicker. 0 turns it off.
Config.ScreenGlow.Networkedbooleandefault: trueWhether the owner's zone colors broadcast so bystanders see the glow too.
Config.ScreenGlow.SyncRadiusnumberdefault: 14.0Meters within which players receive glow updates.
Advanced
Vehicle ownership tables
Where the Vehicle Marketplace reads and writes owned vehicles, per framework. Defaults match stock schemas.
Config.VehicleTablestablePer-framework map of column roles to database column names. Change only if your server uses a non-standard schema.
Config.VehicleTables = {
esx = { table = 'owned_vehicles', ownerColumn = 'owner', plateColumn = 'plate', vehicleColumn = 'vehicle', typeColumn = 'type', storedColumn = 'stored', storedValue = 1 },
qbcore = { table = 'player_vehicles', ownerColumn = 'citizenid', plateColumn = 'plate', modelColumn = 'vehicle', modsColumn = 'mods', stateColumn = 'state', stateValue = 1, garageColumn = 'garage', defaultGarage = 'pillbox' },
-- qbox and qbx match qbcore
}...
Map tiles
Config.MapTileCDNstringdefault: nilBase URL for hosted map tiles. Atlas tiles ship bundled. To offer Satellite or Grid styles, host them on your own CDN or bucket and set the base URL. nil serves Atlas only.
Audit
Config.AuditLargeMoveFiatnumberdefault: 50000Money movements at or above this fiat value are logged at notice severity in the security audit log. Visibility only. It does not block or cap transfers.
Admin access
Config.AllowCommandAceAdminbooleandefault: falseThe admin console requires the nx_computer.admin ace or a framework admin check. true also accepts holders of the broad command ace, which is not recommended.
Debug
Config.Debugbooleandefault: falseMaster switch for the developer tuning tools. Keep false in production. true unlocks the placement, anim, camera, and cable tuning commands plus verbose site-builder logging.
The helper functions at the bottom of config.lua, such as Config.IsAppOptional,
are internal to the resource and are not meant to be edited.
Server secrets (config_server.lua)
config_server.lua loads only on the server and never ships to clients. It extends the
same Config table. Put all secrets and API tokens here.
Config.Media.FiveManageTokenstringdefault: ''FiveManage Images API token, the one secret the media and Photos feature needs. Create your own Images token in the FiveManage dashboard under API keys and paste it here. Leaving it empty keeps uploads disabled with a clean not-set-up state.
Never put this token in config.lua, which downloads to every client. It belongs only in config_server.lua.