Configuration
The main config.lua groups, in plain tables. Everything is toggleable.
Everything lives in config.lua, grouped and commented. Change a value, save, restart the resource. This page covers the groups you will touch most.
General
| Option | Default | Description |
|---|---|---|
Config.Locale | 'en' | Language key (see locales/). |
Config.OpenKey | 'T' | Key that opens the chat input (rebindable in FiveM keybinds too). |
Config.SettingsCommand | 'chatsettings' | Command that opens the settings panel. |
Config.MaxMessageLength | 256 | Characters. Longer messages are trimmed. |
Config.MessageHistory | 200 | How many messages the UI keeps in memory. |
Config.FadeOutAfter | 3 | Seconds a message stays before it fades. 0 never fades. |
Identity and framework
| Option | Default | Description |
|---|---|---|
Config.Framework | 'auto' | Auto detects QBCore, QBox, ESX, or standalone. Force it with 'qb', 'qbx', 'esx', or 'standalone' if detection is wrong. |
Config.NameFormat | 'character' | 'character' uses the RP character name, 'steam' uses the platform name. |
Config.ShowPlayerId | true | Show the player's server id next to their name. |
Config.ShowJobBadge | true | Show the player's job next to their name. |
Channels
Config.Channels defines each channel. Global, Local (proximity), OOC, Job, and Staff ship by default. Each entry supports:
| Field | Description |
|---|---|
type | 'global' (everyone), 'proximity' (within range metres), 'job' (same job), 'staff' (passes perm). |
perm | Who may send. false is everyone, an ACE string is staff gated, a job name is job gated. |
color | The channel accent (used for the tab, badge, and Discord embed). |
cooldown | Seconds between messages on this channel. 0 is off. |
shortcut | Slash shortcut, for example g gives /g hello. |
range | For proximity channels, the audible distance in metres. |
Global is the most abused channel. If you need to, set its
permto a staff ACE or a job, or raise itscooldown.
Message style
| Option | Default | Description |
|---|---|---|
Config.MessageStyle | 'badge' | One of badge, chip, label, name, line, none. Players can override this for themselves unless you turn off Config.Theme.allowPlayerCustomize. |
Config.HideDefaultBadge | true | Skip the badge on Global so ordinary chatter stays clean and tagged lines stand out. |
Config.RoleBadges | see file | Extra badge next to the channel for players who hold an ACE (for example OWNER, ADMIN, STAFF). First match wins. |
Roleplay commands
Config.RP controls the roleplay commands (me, do, try, looc, dice). Each is proximity based (only nearby players see it), and each has an enabled flag, a command name, a range, and a color. Config.Float3D controls the floating text above the player's head for /me and /do.
Keybinds
Config.Keybinds gives up to four rebindable command keys. Each slot has a starting key, a command, and a label. A command ending in a space (for example /me ) opens the chat prefilled. A command with no trailing space (for example /dice) runs immediately. Players can reassign each slot in /chatsettings.
Moderation
| Group | What it does |
|---|---|
Config.AntiSpam | Minimum interval between messages, max identical repeats before an auto mute, and mute length. |
Config.Filter | Banned words (censor or block), plus anti advertising that blocks Discord invites, IPs, and links. Use allowDomains to allow specific sites. |
Config.History | Replays the last few Global, OOC, and Staff messages to a player when they join, so a relog does not leave an empty chat. In memory only, so it does not survive a server restart. |
Discord
Set Config.Discord.webhook to mirror channel messages outward to a Discord channel, and to log admin actions. Discord to in game (two way) would need a companion bot. A webhook only sends outward.
