Suty
Report System

Configuration

Configuration

config.lua at the resource root. Unencrypted and freely editable.

Globals

Config.Framework = 'qbx'                    -- 'qbx' | 'qb' | 'esx'
Config.Locale    = 'es'                     -- 'es' | 'en'

Config.Command       = 'calladmin'          -- player + admin command name
Config.AllowedGroups = { 'admin', 'god', 'mod' }    -- ACE groups for admin actions

Config.MaxSubjectLength      = 100
Config.MaxDescriptionLength  = 1000
Config.MaxMessageLength      = 500          -- per chat reply

Config.ReportCooldown   = 60                -- seconds between reports per player
Config.MaxHistoryResults = 50               -- pagination

Config.Logo = 'https://r2.fivemanage.com/.../hoodlife.png'    -- shown in the admin queue UI

Revive integration

Config.ReviveMethod = 'suty-ems'            -- 'qb-ambulancejob' | 'qbx_medical' | 'suty-ems' | 'wasabi_ambulance' | 'custom'

For 'custom':

Config.ReviveCustom = {
    type     = 'export',                    -- 'export' or 'event'
    resource = 'my-resource',
    name     = 'revivePlayer',              -- export function or event name
}

Admin badge HUD

Persistent counter showing pending reports — visible only to admins with notifications on.

Config.AdminBadge = 'circle'                -- 'minimal' | 'icon' | 'circle' | 'topbar' | false
Style Look
'minimal' Pulsing red dot + number + "reports" label (top-right)
'icon' Headset icon with red counter bubble (top-right)
'circle' Floating red circle, just the number (top-right)
'topbar' Centered pill at top: pulsing dot + "pending reports"
false Disabled

Screenshot attachments

Config.Screenshot         = true            -- show the screenshot button in the report dialog
Config.ScreenshotWebhook  = 'https://discord.com/api/webhooks/...'

Requires screenshot-basic resource. The image is uploaded to your Discord webhook and the message link is attached to the report.

Admin-online gate

Config.RequireAdminOnline = true            -- if no admins online, refuse new reports + show Discord link
Config.NoAdminDiscordUrl  = 'https://discord.com/channels/SERVER/CHANNEL'

When all admins are offline, the dialog shows the Discord URL instead of accepting the report. Helps avoid stale queues.

Voice notes

Config.VoiceMaxDurationMs = 30000           -- max ms per recording (30s default)
Config.VoiceMaxBytes      = 150 * 1024      -- hard cap (~120KB for 30s @ opus 24kbps)
Config.VoiceRateLimitSec  = 2               -- min seconds between voice notes from same sender
Config.VoiceCacheMaxBytes = 50 * 1024 * 1024  -- 50 MB total cache safety valve

Voice notes are opus-encoded base64 blobs stored in memory for the report's lifetime. Cleared on resolve / discard.