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.
Languages
Section titled “Languages”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.cfgName 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.cfg —
nuggs: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:
-
Copy
locales/en.luatolocales/<code>.lua—fr,de,pt-BR, anything. -
Change the table key on the first line to match:
Locales["fr"] = {. -
Translate the values, leaving the keys and the
%splaceholders alone. -
Set
Config.Locale = "fr"inconfig.lua. -
Restart. The startup banner’s
localesline 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.
After an update
Section titled “After an update”config.lua is yours and is never overwritten, so an update cannot add new
options to it. Config.Version — 1 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.
