Skip to content

Configuration

Everything is in config.lua, and it is not encrypted. Every option is documented in full in Config reference, in the same order.

Setting What it does
Config.Framework "auto", or force "esx" / "qbcore" / "qbox"
Config.Appearance Which driver the creator uses, and whether to publish to playerskins
Config.Brand Crest wording, tagline, watermark, and the monogram shield’s colours
Config.Theme Fonts, colour palette and UI scale
Config.ThemePresets Ready-made palettes Config.Theme.preset can name
Config.InfoPanels Text behind the SERVER INFO / STORE / DISCORD / SUPPORT buttons
Config.Identity Name length, age range, height range
Config.Slots Character slots every account gets for free
Config.MaxSlots Hard ceiling. Nothing goes past it
Config.Prefix Identifier prefix. Leave as char unless you are starting fresh
Config.CanDelete Whether players may delete their own characters
Config.Membership Tiers: labels, colours, slot bonuses, Discord roles and ACEs
Config.Store The STORE screen: packages, prices, store URL, Tebex sync
Config.DiscordAPI Bot token, guild and role → perk mapping
Config.Scene Ped and camera positions for both screens, plus the backdrop
Config.Spawns Arrival points, their artwork and coords
Config.Housing Property cards on the arrival rail
Config.Animations Line-up poses, one per character slot
Config.Heritage Named parent-face presets for the HERITAGE BLEND dropdown
Config.Outfits The four suggested outfits on IDENTITY, per sex
Config.OutfitSlots Starter outfit slots, which keys they save, where they publish
Config.Tattoos Real GTA V tattoos (ped decorations), grouped by body zone
Config.TattooSets Starter tattoo presets
Config.TattooPreview What the character wears while the TATTOOS step is open
Config.EyeColors The hex painted on each eye-colour swatch
Config.Creator The creation steps and every control in them
Config.Default Appearance a brand new character starts from
Config.RandomKeys Which keys RANDOMIZE is allowed to touch
Config.ExtraDeleteTables Tables the delete sweep would otherwise miss
Config.Locale The language: any file in locales/, including one you wrote yourself, or "auto" to read server.cfg
Config.StarterItems What a brand new character spawns holding, one block per framework
Config.QB QBCore/Qbox only: nationality, licence key

Secrets go in server.cfg, never in config.lua

Section titled “Secrets go in server.cfg, never in config.lua”

config.lua is a shared script, so every client downloads a copy. Every option that needs a secret reads a convar instead:

set nuggs_tebex_secret "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
set nuggs_discord_token "your-bot-token"
set nuggs_discord_server "your-server-id-or-invite-link"

The language is not one of them — it is a plain setting in section 1 of config.lua. See below.

The language is one setting, at the top of config.lua. It is the fourth line of section 1, GENERAL:

Config.Locale = "en" -- any file in locales/, or "auto" to read server.cfg

Name any file in locales/ and that is the language the whole resource speaks — server messages, chat lines and the character screen alike. Case does not matter and - and _ are the same, so "FR" and "pt_br" both work.

Set it to "auto" instead and the language is read from server.cfgnuggs:locale, then esx:locale, then qb:locale — which is worth using if your other resources already take their language from there. Everything else behaves identically; the server replicates whatever it resolves so the character screen agrees with it.

The locales/ folder is unlocked and is yours. Every word a player sees is in locales/en.lua, and there is no list anywhere of the languages this resource supports: fxmanifest.lua loads locales/*.lua as a glob, so a language exists because a file in that folder wrote one.

To add your own:

  1. Copy locales/en.lua to locales/<code>.luafr, de, pt-BR, anything.

  2. Change the table key on the first line to match: Locales["fr"] = {.

  3. Translate the values, leaving the keys and the %s placeholders alone.

  4. Set Config.Locale = "fr" in config.lua.

  5. Restart. The startup banner’s locales line names the language in use, where it was configured, and every language that loaded:

    locales fr via config.lua - loaded: de, en, fr, pt-BR

locales/*.lua is in escrow_ignore, so your file is unencrypted and editable, and an update only ever replaces the files that ship with the resource — a language you wrote survives. Any key you leave out falls back to English on its own, so a half-finished translation is safe to run. A regional code falls back to its base language (pt-BR finds pt.lua), and a code with no file behind it is named in the console rather than quietly becoming English.

Full detail, including what is deliberately not translatable, is in Adding a language.

config.lua is yours and is never overwritten, so an update cannot add new options to it. Config.Version1 in this release — is compared against the release on start and the console tells you when yours is behind: diff it against config.lua.example and read Changelog. Your locales/ files are left alone by an update in the same way.