NX CreativeNX CreativeDocs
Scriptsnx_computer

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: nil

Framework-backend cash account name. nil uses stock naming per framework.

Config.Banking.BankAccountstringdefault: nil

Framework-backend bank account name. nil uses stock naming per framework.

Config.Banking.MinTransfernumberdefault: 1

Smallest transfer, request, or scheduled payment.

Config.Banking.MaxTransfernumberdefault: 1000000

Largest single transfer, request, or scheduled payment.

Config.Banking.TransferMemoMaxLennumberdefault: 140

Memo character cap. 0 disables memos.

Config.Banking.MaxTransfersPerMinutenumberdefault: 6

Per-account outbound burst cap. Guards against a compromised client sweeping an account. The scheduled-payment watcher is exempt. 0 disables it.

Config.Banking.DailyTransferCapnumberdefault: 5000000

Per-account outbound total over a trailing 24 hours, in fiat.

Config.Banking.SchedulePollIntervalMsnumberdefault: 60000

Framework-backend standing-payment watcher cadence in milliseconds, clamped between 15 seconds and 10 minutes.

Config.Banking.Adaptertabledefault: nil

Custom 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.Externaltable

SDK 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: true

Master toggle. false makes every registration call be ignored.

Config.Apps.External.Allowarraydefault: nil

Resource 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: 24

Ceiling on the number of registered external apps.

Config.Apps.Storetable

NX 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: true

Master 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.5

ox_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: true

Whether a placed laptop can be picked back up.

Config.PlaceDistancenumberdefault: 5.0

Maximum placement distance in meters.

Config.PreviewAlphanumberdefault: 100

Opacity of the ghost placement preview.

Config.PickupMaxDistancenumberdefault: 5.0

Server-side pickup range check. An anti-harvest guard, so keep it small.

Features

Exchange

Crypto and stock trading.

Config.Exchange.TradeFeeBpsnumberdefault: 25

Trade fee in basis points. 25 equals 0.25 percent.

Config.Exchange.MaxSlippageBpsnumberdefault: 200

Maximum drift in basis points between the displayed quote and the fill price. 200 equals 2 percent. 0 disables the check.

Config.Exchange.StaleQuoteMsnumberdefault: 30000

A protected fill whose quote is older than this many milliseconds is rejected.

Config.Exchange.OrderPollIntervalMsnumberdefault: 15000

Limit-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: 1000000

Absolute 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.0

Payout multiplier for a standard Blackjack win.

Config.Casino.Payouts.Blackjacknumberdefault: 2.5

Payout multiplier for a natural blackjack.

Config.Casino.Payouts.BlackjackPushnumberdefault: 1.0

Payout multiplier for a push, returning the stake.

Config.Casino.HiLo.HouseEdgenumberdefault: 0.05

House hold per call. Expected value stays at 0.95 at any streak length.

Config.Casino.HiLo.MaxPerGuessMultipliernumberdefault: 20.0

Cap on the multiplier offered for a single call.

Config.Casino.VideoPokerPaytabletable

Map 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.RoulettePayoutstable

Map 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: true

Master 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: 30

Seconds between delivery-ready checks.

Config.Darknet.ListingFeenumberdefault: 0

Flat fee to create a player-run listing.

Config.Darknet.MinPricenumberdefault: 250

Minimum price for a player-run listing.

Config.Darknet.MaxPricenumberdefault: 500000

Maximum price for a player-run listing.

Config.Darknet.PayInCrypto.Enabledbooleandefault: true

Charge 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.Pickuptable

Courier 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.Catalogarray

Array 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: true

Master toggle for the marketplace app.

Config.VehicleMarket.ListingFeenumberdefault: 0

Flat fee charged to the seller to create a listing.

Config.VehicleMarket.TaxPercentnumberdefault: 0

Percentage deducted from the sale price on a successful purchase.

Config.VehicleMarket.MinPricenumberdefault: 1000

Minimum allowed listing price.

Config.VehicleMarket.MaxPricenumberdefault: 2500000

Maximum allowed listing price.

Jobs hub

Config.JobsHub.Enabledbooleandefault: true

Master toggle for the jobs app.

Config.JobsHub.ApplicationWebhooksbooleandefault: false

Discord 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.Jobsarray

Array 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: true

Master toggle for the website builder.

Config.SiteBuilder.AllowedRankstable

Rank 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: 3

Minimum slug length.

Config.SiteBuilder.Slug.MaxLengthnumberdefault: 32

Maximum slug length.

Config.SiteBuilder.Slug.Reservedarray

Slugs 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: 60

Maximum content blocks per site.

Config.SiteBuilder.Limits.MaxJobsnumberdefault: 20

Maximum job openings per site.

Config.SiteBuilder.Limits.MaxProductsnumberdefault: 50

Maximum products per site.

Config.SiteBuilder.Limits.MaxInquiriesShownnumberdefault: 200

Maximum inquiries shown to a site owner.

Config.SiteBuilder.Limits.MaxReviewsShownnumberdefault: 200

Maximum reviews shown on a site.

Config.SiteBuilder.Limits.InquiryBodyMaxnumberdefault: 1500

Character cap on an inquiry body.

Config.SiteBuilder.Limits.ReviewBodyMaxnumberdefault: 600

Character 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.Directorytable

Directory-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: true

Master toggle. false makes every registration call be ignored.

Config.SiteBuilder.Directory.Allowarraydefault: nil

Slug 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: 24

Ceiling 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 * 1024

Ceiling 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: true

Whether the Docs export to PDF rail is enabled, producing a hosted pdf URL. false hides the export button.

Config.Media.RateLimit.Windownumberdefault: 60

Rate-limit window in seconds.

Config.Media.RateLimit.Burstnumberdefault: 8

Uploads allowed per window. 0 turns the limit off.

Config.Media.PageSizenumberdefault: 60

Photos gallery page size.

Config.Media.MaxPerAccountnumberdefault: 500

Maximum stored rows per account. The oldest are pruned on upload.

Filesystem

Explorer, desktop, and Recycle Bin.

Config.Filesystem.MaxItemsnumberdefault: 600

Total items per account including the Recycle Bin. The disk reports full past this.

Config.Filesystem.MaxFileBytesnumberdefault: 16000

Size ceiling per text file in bytes.

Config.Filesystem.MaxCopyNodesnumberdefault: 120

Maximum 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: true

Master 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: 1500

Milliseconds between shots.

Config.Camera.Encodingstringdefault: 'jpg'

Image encoding. One of jpg, png, or webp.

Config.Camera.Gridbooleandefault: true

Whether the rule-of-thirds grid shows by default.

Config.Camera.LookSensitivitynumberdefault: 6.0

Mouse-look speed in photo mode.

Config.Camera.MinFovnumberdefault: 18.0

Maximum zoom-in. Lower is closer.

Config.Camera.MaxFovnumberdefault: 70.0

Zoomed-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.Proptable

Held 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.Filtersarray

Visual 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: true

Master 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.0

Maximum meters from lens to wall before no surface is reported.

Config.Projector.MinThrownumberdefault: 0.8

Closer than this leaves no room for an image.

Config.Projector.ThrowRationumberdefault: 0.55

Image width equals distance times this ratio, clamped, at 16 by 9.

Config.Projector.MinWidthnumberdefault: 0.9

Minimum image width in meters.

Config.Projector.MaxWidthnumberdefault: 6.0

Image width stops growing here.

Config.Projector.WallGapnumberdefault: 0.022

Meters the image floats off the wall, guarding against z-fighting.

Config.Projector.ResWnumberdefault: 1280

Projected image width in pixels.

Config.Projector.ResHnumberdefault: 720

Projected image height in pixels.

Config.Projector.Alphanumberdefault: 240

Image opacity. Below 255 gives a slightly translucent beamer wash.

Config.Projector.FlipImagebooleandefault: false

Flip the image if an odd surface renders it rotated 180 degrees.

Config.Projector.DetectRadiusnumberdefault: 8.0

Maximum laptop to projector distance for the connect option.

Config.Projector.PlaceDistancenumberdefault: 6.0

Item placement distance, mounted against a ceiling.

Config.Projector.Calibration.Enabledbooleandefault: true

Whether the player-facing calibrate option is offered.

Config.Projector.Calibration.MaxVerticalnumberdefault: 0.50

Meters of up and down lens shift.

Config.Projector.Calibration.MaxHorizontalnumberdefault: 0.25

Meters of left and right lens shift.

Config.Projector.Calibration.MinScalenumberdefault: 0.75

Lower bound of the zoom range, times the throw-derived size.

Config.Projector.Calibration.MaxScalenumberdefault: 1.25

Upper bound of the zoom range.

Config.Projector.Calibration.Stepnumberdefault: 0.02

Meters per arrow nudge. Hold Shift for five times the step.

Config.Projector.Calibration.ScaleStepnumberdefault: 0.02

Zoom change per scroll notch.

Config.Projector.Camera.fovnumberdefault: 50.0

Field of view while the projection is focused.

Config.Projector.Camera.marginnumberdefault: 1.18

Framing margin around the projection.

Config.Projector.Camera.distancenumberdefault: nil

Camera distance. nil auto-frames the projection.

Config.Projector.Beam.Enabledbooleandefault: true

Whether the visible light cone renders.

Config.Projector.Beam.Colortabledefault: { r=226, g=233, b=255 }

Base beam color.

Config.Projector.Beam.Brightnessnumberdefault: 0.12

Beam brightness.

Config.Projector.Beam.Hardnessnumberdefault: 0.17

Beam edge hardness.

Config.Projector.Beam.Falloffnumberdefault: 25.0

Beam falloff rate.

Config.Projector.Beam.TintFromScreennumberdefault: 0.7

How far the cone blends toward the average on-screen color.

Config.Projector.Beam.Shaft.Enabledbooleandefault: true

Whether the layered light shaft renders.

Config.Projector.Beam.Shaft.Alphanumberdefault: 10

Per-layer alpha from 0 to 255.

Config.Projector.Beam.Shaft.Layersnumberdefault: 3

Nested planes from full cone down to a hot core.

Config.Projector.Beam.Dust.Enabledbooleandefault: true

Whether 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: 4

Emitters spread along the beam.

Config.Projector.Beam.Dust.Scalenumberdefault: 2.0

Dust emitter scale.

Config.Projector.Fx.Additivebooleandefault: true

Additive blending for the projected image.

Config.Projector.Fx.Floornumberdefault: 0.8

Per-pixel alpha floor. 0 is physically pure, 1 is a flat screen.

Config.Projector.Fx.Blurnumberdefault: 0.6

Lens defocus in pixels.

Config.Projector.Fx.Chromanumberdefault: 0.8

RGB convergence error in pixels.

Config.Projector.Fx.Hotspotbooleandefault: true

Whether the center hotspot renders.

Config.Projector.Fx.Vignettenumberdefault: 0.34

Vignette strength.

Config.Projector.Fx.EdgeFeatherbooleandefault: true

Whether the image edges are feathered.

Config.Projector.Fx.Fringebooleandefault: true

Whether color fringing renders.

Config.Projector.Fx.PixelGridnumberdefault: 0.12

LCD screen-door structure opacity. 0 turns it off.

Config.Projector.Fx.Grainbooleandefault: true

Whether film grain renders.

Config.Projector.Fx.GrainOpacitynumberdefault: 0.12

Grain opacity.

Config.Projector.Fx.Flickerbooleandefault: true

Whether the image shimmers by about 1.5 percent.

Config.Projector.Glow.Pushnumberdefault: 0.27

Meters the wall glow sits in front of the surface.

Config.Projector.Glow.Rangenumberdefault: 2.4

Wall glow radius.

Config.Projector.Glow.Intensitynumberdefault: 1.7

Wall glow brightness.

Config.Projector.SyncForAllbooleandefault: true

Whether bystanders see the projected image, beam, and glow.

Config.Projector.SyncRadiusnumberdefault: 20.0

Meters 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: true

Master 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: 350

Camera 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: true

Master toggle for screen prewarm.

Config.Prewarm.Distancenumberdefault: 12.0

Meters from a placed, closed laptop at which prewarm starts.

Networking

Config.Networking.OpenLaptopForAllbooleandefault: false

true 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: true

Master toggle for the operator stance.

Config.Animation.FreezePedbooleandefault: true

Whether the operator is frozen while posed.

Config.Animation.BlendInnumberdefault: 4

Anim blend-in speed.

Config.Animation.BlendOutnumberdefault: -4

Anim blend-out speed.

Config.Animation.Align.Enabledbooleandefault: true

Whether the operator is aligned to the surface.

Config.Animation.Align.Headingbooleandefault: true

Whether heading is adjusted during alignment.

Config.Animation.Align.Slidebooleandefault: true

Whether the operator slides into position.

Config.Animation.Align.Lateralnumberdefault: 0

Lateral alignment offset.

Config.Animation.Align.PosTolerancenumberdefault: 0.3

Position tolerance in meters before a nudge is applied.

Config.Animation.Align.HeadingToleranceDegnumberdefault: 22

Heading tolerance in degrees before a turn is applied.

Config.Animation.Align.MaxNudgenumberdefault: 0.6

Maximum slide distance in meters.

Config.Animation.Align.SettleMsnumberdefault: 350

Settle time in milliseconds after alignment.

Config.Animation.Bandsarray

Ordered 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: true

Master 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: true

Whether the power-on chime plays from the laptop in 3D so bystanders hear it.

Config.Audio.Soundstable

Map 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: true

Master toggle for the screen glow.

Config.ScreenGlow.DayStartnumberdefault: 7

Hour at which daytime begins. Glow shows outside the daytime window or when inside an interior.

Config.ScreenGlow.DayEndnumberdefault: 19

Hour at which daytime ends.

Config.ScreenGlow.ForceAlwaysbooleandefault: false

true ignores the day and interior gate.

Config.ScreenGlow.Pushnumberdefault: 0.04

Meters the lights sit in front of the screen.

Config.ScreenGlow.Rangenumberdefault: 0.40

Per-light radius in meters.

Config.ScreenGlow.Intensitynumberdefault: 2.2

Per-light brightness.

Config.ScreenGlow.LerpRatenumberdefault: 6.0

Color easing per second. Higher is snappier.

Config.ScreenGlow.Flickernumberdefault: 0.04

Subtle screen flicker. 0 turns it off.

Config.ScreenGlow.Networkedbooleandefault: true

Whether the owner's zone colors broadcast so bystanders see the glow too.

Config.ScreenGlow.SyncRadiusnumberdefault: 14.0

Meters 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.VehicleTablestable

Per-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: nil

Base 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: 50000

Money 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: false

The 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: false

Master 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.

NX Docs