Configuration
All configuration lives in shared/config.lua. This file is not escrow-locked — you can edit it freely.
Debug
Config.Debug = false| Key | Type | Default | What it does |
|---|---|---|---|
Config.Debug | boolean | false | Enables verbose console logging and bypasses admin permission checks. Disable in production. |
Commands
Config.Commands = {
Player = 'report',
Admin = 'reports',
}| Key | Type | Default | What it does |
|---|---|---|---|
Config.Commands.Player | string | 'report' | The command players type to open the report UI. |
Config.Commands.Admin | string | 'reports' | The command admins type to open the admin panel. |
Keybind
Config.Keybind = {
Enable = false,
Key = 'F6',
Description = 'Open player report',
}| Key | Type | Default | What it does |
|---|---|---|---|
Config.Keybind.Enable | boolean | false | If true, registers a keybind that opens the player report UI. |
Config.Keybind.Key | string | 'F6' | The default keybind key. Players can rebind this in their FiveM settings. |
Config.Keybind.Description | string | 'Open player report' | Label shown in the FiveM keybind settings menu. |
Categories
Config.Categories = {
'Fail RP',
'RDM',
'VDM',
'Cheating',
'Exploiting',
'Harassment',
'Other',
}The full list of report categories shown to players. Add, remove, or rename entries freely. Each entry is a plain string.
Urgent Categories
Config.UrgentCategories = {
['RDM'] = true,
['VDM'] = true,
['Cheating'] = true,
}Categories listed here are flagged as urgent when a report is submitted. Urgent reports trigger an error-type admin notification (red) instead of info (blue) and are labelled URGENT in the admin panel. The key must exactly match a string in Config.Categories.
Cooldown
Config.Cooldown = 30| Key | Type | Default | What it does |
|---|---|---|---|
Config.Cooldown | number | 30 | Seconds a player must wait between reports. Keyed to their identifier so it survives reconnects. Set to 0 to disable. |
Max Open Reports
Config.MaxOpen = 100| Key | Type | Default | What it does |
|---|---|---|---|
Config.MaxOpen | number | 100 | Maximum number of reports loaded in the admin panel at once. Oldest reports beyond this limit are not shown. |
Retention
Config.RetentionDays = 30| Key | Type | Default | What it does |
|---|---|---|---|
Config.RetentionDays | number | 30 | Reports older than this many days are automatically deleted on resource start and every 6 hours. Set to 0 to keep reports forever. |
Discord Webhook
Config.Webhook = ''
Config.Brand = '#8290F8'| Key | Type | Default | What it does |
|---|---|---|---|
Config.Webhook | string | '' | Discord webhook URL. Leave empty to disable webhook notifications. |
Config.Brand | string | '#8290F8' | Hex color used for the embed side-bar in Discord notifications. |
Admin Ping
Config.PingAdmins = true| Key | Type | Default | What it does |
|---|---|---|---|
Config.PingAdmins | boolean | true | If true, all online admins receive an in-game notification and their panel live-refreshes when a new report is filed. |
Actions
Config.Actions = {
Resolve = true,
Bring = true,
Goto = true,
Spectate = true,
}Controls which moderation actions are available in the admin panel. Set any to false to hide and disable that action.
| Key | Type | Default | What it does |
|---|---|---|---|
Config.Actions.Resolve | boolean | true | Mark a report as resolved. |
Config.Actions.Bring | boolean | true | Teleport the reporter to the admin's position. |
Config.Actions.Goto | boolean | true | Teleport the admin to the reporter's position. |
Config.Actions.Spectate | boolean | true | Spectate the reporter in third-person (press E to exit). |
Admin Permissions
Config.Admin = {
Mode = 'both',
AcePermission = 'pyra.reports',
FrameworkGroups = { 'admin', 'superadmin', 'god' },
}| Key | Type | Default | What it does |
|---|---|---|---|
Config.Admin.Mode | string | 'both' | How admin status is determined. 'ace' = ACE permissions only. 'framework' = framework groups only. 'both' = either check passes. |
Config.Admin.AcePermission | string | 'pyra.reports' | The ACE permission node checked when Mode is 'ace' or 'both'. |
Config.Admin.FrameworkGroups | table | { 'admin', 'superadmin', 'god' } | Framework job/group names that grant admin access when Mode is 'framework' or 'both'. |
Validation
Config.Validate = {
DescMax = 600,
MaxFieldLen = 64,
}| Key | Type | Default | What it does |
|---|---|---|---|
Config.Validate.DescMax | number | 600 | Maximum character length for the report description field. |
Config.Validate.MaxFieldLen | number | 64 | Maximum character length for the title and location fields. |
Locale
Config.Locale = {
submitted = 'Report submitted — staff have been notified.',
cooldown = 'You are reporting too fast. Please wait a moment.',
noPerm = 'You do not have permission to do that.',
newReport = 'New report filed',
resolved = 'Report marked as resolved.',
invalid = 'Your report is missing required details.',
disabled = 'That action is disabled.',
targetOff = 'That player is not online.',
tpedByStaff = 'You were teleported by staff.',
}All player-facing and admin-facing strings. Edit any value to translate or customise the messages.
| Key | Shown when |
|---|---|
submitted | Player successfully submits a report. |
cooldown | Player tries to report too soon after their last report. |
noPerm | A non-admin tries to use an admin action. |
newReport | Title of the admin notification and Discord embed for a new report. |
resolved | Admin resolves a report. |
invalid | Report submission fails validation. |
disabled | Admin tries to use an action that is set to false in Config.Actions. |
targetOff | Admin tries Bring/Goto/Spectate but the reporter is offline. |
tpedByStaff | Shown to a player when an admin uses Bring on them. |