RX Reports V1 Configuration

RX Reports V1 keeps its behaviour in config.lua and its admin access rules in permission.lua. The defaults are tuned for a normal production server; change only the sections that need to match yours.

Restart ripex-reportsystem after changing the configuration so the server and every connected client receive the same values.

Framework and locale

These settings decide which framework integration is loaded and which language the interface uses.

SettingDefaultBehaviour
Framework'qb'Selects QBCore ('qb') or ESX ('esx') integrations.
Locale'en'Active interface locale.
Config.Framework = 'qb' -- 'qb' or 'esx'
Config.Locale = 'en'

The selected framework must already be started before RX Reports. Do not use a framework value outside of qb or esx. The resource ships with English as the supported runtime locale.

Report form

Categories and priorities control the choices a player sees while filling in a report.

ArrayDefault choices
CategoriesCheating/Hacking, Harassment, Bug Abuse, Other
PrioritiesLow, Medium, High
Config.Categories = {
    { label = 'Cheating/Hacking', value = 'cheating' },
    { label = 'Harassment', value = 'harassment' },
    { label = 'Bug Abuse', value = 'bug' },
    { label = 'Other', value = 'other' }
}

Config.Priorities = {
    { label = 'Low', value = 'low' },
    { label = 'Medium', value = 'medium' },
    { label = 'High', value = 'high' }
}

The value keys are stored and used internally, so change the labels freely but keep the values stable once the system is live. For example, you can rename Cheating/Hacking to Rule breach while preserving the cheating value. This prevents old reports and UI filters from becoming inconsistent.

Commands

Two commands are configurable. The remaining player commands are provided by the resource and cannot be renamed.

CommandWho uses itPurpose
/<OpenReport>Every playerOpens the report form.
/<OpenAdmin>Authorized staffOpens the staff dashboard.
/feedbackReporting playerOpens their pending rating after a report is closed.
/acceptchat, /declinechatReporting playerResponds to a staff live-chat request.
Config.Commands = {
    OpenReport = 'report',
    OpenAdmin = 'reports'
}

Pick command names that do not already exist on your server. A duplicate command silently overrides the other resource and makes the conflict hard to trace.

Staff notifications

Each notification can be switched off independently without disabling the rest of the workflow.

SettingDefaultBehaviour
newReporttrueNotifies staff when a new report is submitted.
reportClaimedtrueNotifies staff when a report is claimed.
reportClosedtrueNotifies staff when a report is closed.
Config.Notifications = {
    newReport = true,
    reportClaimed = true,
    reportClosed = true
}

Turn off a notification only if your staff already receives the same status from another reliable channel; otherwise report ownership can become unclear during busy periods.

Admin permission model

Admin access is resolved differently for each framework, so configure the list that matches yours.

FrameworkPermission checkFile
QBCoreMatches the player’s Rockstar license against Config.AdminLicenses.permission.lua
ESXMatches the player’s ESX group against Config.AdminGroups.config.lua
Config.AdminGroups = {
    'god',
    'admin',
    'mod',
    'administrator',
    'superadmin'
}

Config.AdminLicenses = {
    'license:replace-with-your-admin-license'
}

Config.PreventAdminBlock = true prevents staff from blocking themselves or other staff. Keep this enabled on normal production servers.

Config.Permissions.Admin and Config.Permissions.Mod are labels used by the resource’s permission layer. Keep them aligned with your staff naming, but do not treat them as a replacement for the framework-specific checks above.

Screenshot evidence

Screenshots are captured on the player’s side and uploaded before the report is stored.

SettingDefaultBehaviour
MaxPerReport3Maximum screenshots a player can attach to one report.
MaxFileSize2Interface-side size limit in MB.
Quality0.8Capture quality from 0.1 to 1.0.
Format'jpg'Screenshot format: 'jpg' or 'png'.
Config.Screenshots = {
    MaxPerReport = 3,
    MaxFileSize = 2,
    Quality = 0.8,
    Format = 'jpg'
}

The resource uploads captures through screenshot-basic to the screenshot_webhook convar from server.cfg. JPG at 0.7 to 0.8 is the practical default; PNG files are larger and should only be used when image clarity matters more than upload size.

Notification integration

type selects which notification resource receives the messages RX Reports sends.

TypeIntegration
defaultQBCore or ESX notifications, based on Config.Framework.
customTriggers customEvent with the field names from format.
okokokokNotify export.
mythicmythic_notify export.
codemcodem-notification export.
qsqs-notify export.
Config.NotificationSystem = {
    type = 'default', -- default, custom, okok, mythic, codem, qs
    customEvent = 'custom:notification',
    format = {
        title = 'title',
        message = 'message',
        type = 'type'
    }
}

Choose custom only when the named event already exists on your server. For every other non-default option, make sure that notification resource starts before RX Reports.

Report limits and feedback

These sections protect staff from spam and collect a rating once a report is resolved.

Report limits

SettingDefaultBehaviour
EnabledtrueEnables per-player report limits.
MaxReportsPerDay5Maximum reports a player can submit per day.
MaxReportsPerHour2Maximum reports a player can submit per hour.
ExemptAdminstrueExcludes authorized staff from both limits.
Config.ReportLimits = {
    Enabled = true,
    MaxReportsPerDay = 5,
    MaxReportsPerHour = 2,
    ExemptAdmins = true
}

Use a daily limit that fits your player count. Low hourly limits can block legitimate players during a large incident, so 2 per hour and 5 per day are sensible starting values.

Feedback

SettingDefaultBehaviour
enabledtrueOffers a rating after a report is closed.
timeout300Time the pending rating stays available, in seconds.
minRating1Lowest accepted score.
maxRating5Highest accepted score.
Config.Feedback = {
    enabled = true,
    timeout = 300,
    minRating = 1,
    maxRating = 5
}

Feedback becomes available only after a report is closed. Keep the timeout long enough that a player who was mid-roleplay can still reach /feedback before it expires.

Data retention and admin notes

Cleanup and note retention decide how long report data stays in the database.

Database cleanup

SettingDefaultBehaviour
AutomaticCleanuptrueEnables scheduled data cleanup.
CleanupInterval24Frequency of the cleanup task in hours.
DefaultDays30Age threshold used when no day count is supplied to a cleanup command.
Config.DatabaseCleanup = {
    AutomaticCleanup = true,
    CleanupInterval = 24,
    DefaultDays = 30,
    Commands = {
        Reports = 'cleanreports',
        History = 'cleanhistory'
    }
}
CommandBehaviour
cleanreports [days]Removes old report data; console or authorized staff only.
cleanhistory [days]Removes old player history; console or authorized staff only.

Cleanup commands permanently remove data, so test them on a development database first.

Admin notes

SettingDefaultBehaviour
EnabledtrueShows private staff notes on report records.
MaxLength500Maximum characters per note.
DeleteAfterDays30Removes notes after this many days; set 0 to keep them indefinitely.
Config.AdminNotes = {
    Enabled = true,
    MaxLength = 500,
    DeleteAfterDays = 30
}

Start with 30 days and adjust only after considering your moderation, privacy, and storage policy.

Debug mode

Debug output is disabled by default and is only useful while diagnosing a specific problem.

Config.Debug = false

Enable it temporarily while diagnosing a missing permission, webhook, notification, or framework event, then turn it off again to keep console output useful.