Veyzz Studio DOCS
Docs / Veyzz Report System

Veyzz Report System

Ticket management and a staff dashboard for FiveM. Players open reports with an automatic screenshot, staff handle them in a live dashboard with chat and quick actions, and everything is logged to Discord.

ESXQBCOREQBOXSTANDALONE
Veyzz Report System: report menu, staff dashboard and live chat
Report menu, live chat and the staff dashboard.

01 Overview

Veyzz Report System (veyzz_reportsystem) replaces chat-based reporting with proper tickets. It detects your framework automatically and also works standalone.

  • Players open /report, pick a category, describe the problem and get a live chat with staff.
  • Staff open /reports (default key F10) to see every ticket in a live feed.
  • Discord receives a log for every important event, with separate webhooks per event type.
Get it

The script is available in the Veyzz Studio store. Log in with your Cfx.re account when buying; the resource is delivered to your account.

02 Requirements

  • A FiveM server artifact with Lua 5.4.
  • Optional: screenshot-basic for screenshots on reports.
  • Optional: oxmysql to store webhook URLs in the database (recommended).
  • Optional: ESX, QBCore or Qbox. The script also works standalone.

03 Installation

  1. Put the veyzz_reportsystem folder into your server's resources directory.
  2. Add it to server.cfg, after screenshot-basic, oxmysql and your framework.
  3. Give your staff access with an ACE permission, or add their framework group to Config.AdminGroups.
  4. Restart the server (or run ensure veyzz_reportsystem).
# server.cfg
ensure oxmysql
ensure screenshot-basic
ensure es_extended        # or qb-core / qbx_core, skip when standalone
ensure veyzz_reportsystem

# staff access
add_ace group.admin ms.reports allow
Database

No SQL import is needed. When oxmysql is running, the table ms_report_webhooks is created automatically on the first start.

04 For players

Players open the report menu with /report. The sidebar has New Report and My Reports.

  • Six categories: player report, suspected cheater, bug / technical, question / help, griefing and other.
  • Title and description (up to 64 and 500 characters). The player's location is attached automatically.
  • Automatic screenshot with the IDs of nearby players drawn above them, so staff can read them in the image.
  • One active report per player at a time and a 30 second cooldown between reports (both configurable).
  • Live chat with the staff member who claims the report, and a 1–5 star rating once it is resolved.

05 For staff

Staff open the dashboard with /reports or the F10 key. Access requires the ACE permission ms.reports or a group listed in Config.AdminGroups.

  • Live feed with search and status filters: pending, claimed and resolved.
  • Claim, release and resolve a ticket, with a closing note on resolve.
  • Chat with the reporter, with canned quick replies you define in Config.QuickReplies.
  • Quick actions: Goto, Bring, Freeze, Revive, Heal and Spectate.
  • Screenshot viewer and one-click copy of identifiers and coordinates.
  • The open UI refreshes itself every few seconds, so new messages and claims appear without reopening it.

06 Discord logging

Each event type can have its own Discord webhook. Leave one empty to disable that log.

EventWhen it fires
NewReportA player submits a new report (includes the verified list of nearby players)
ClaimedStaff claims a ticket
ResolvedA ticket is resolved
ChatMsgEvery message in a report chat
AdminActionsStaff audit log: Goto, Bring, Freeze, Revive, Heal, Spectate and ticket release

Add the webhooks as described in Webhook database.

07 config.lua options

OptionDescription
Frameworkauto, esx, qbcore, qbox or standalone
Localeen. All texts live in locales/en.lua
ReportCommand, AdminCommandCommand names (default report and reports)
KeybindDefault keys: ReportKey (empty) and AdminKey (F10)
AcePermission, AdminGroupsWho counts as staff (default ACE ms.reports)
CooldownSecondsSeconds between new reports per player (default 30)
MaxActiveReportsPerPlayerOpen reports per player at once (default 1, staff are exempt)
AllowSelfReportLet players report themselves, for testing only (default off)
RetentionHours, MaxResolvedHistoryHow long resolved tickets stay in memory (default 48 hours / 100 tickets)
CategoriesReport categories, colours and requiresTarget
Screenshot.EnabledCapture a screenshot on submit
Screenshot.ShowPlayerIdsDraw [ID] above nearby players
Screenshot.NearbyRadiusMeters; players in range are verified by the server (default 50.0)
Screenshot.UploadWebhookOptional Discord webhook used to host the screenshot
Discord.WebhooksOne webhook per event (see above)
QuickRepliesCanned replies for staff
EnableRatingsPlayer rating after resolution (default on)
SoundEnabledNotification sounds in the UI
DebugPrint handler diagnostics to the server console
Tip

Change the report categories to fit your server, for example add a "Refund request" category. Each one has an id, label, sublabel, icon and color.

08 Webhook database

Webhooks are stored in the database, so the URLs never reach players. config.lua is a shared script and is visible to clients.

  • Requires oxmysql. Without it the script falls back to the webhooks in config.lua.
  • The table ms_report_webhooks is created automatically.
  • Webhooks you put in config.lua are imported on the first start. Clear them from the file afterwards.
  • Set Config.Discord.UseDatabase = false to turn the database off completely.

Manage webhooks from the server console, or give an admin group command.msreport_webhook:

msreport_webhook set NewReport https://discord.com/api/webhooks/...
msreport_webhook set AdminActions https://discord.com/api/webhooks/...
msreport_webhook set Default https://discord.com/api/webhooks/...
msreport_webhook remove ChatMsg
msreport_webhook list

Keys: NewReport, Claimed, Resolved, ChatMsg, AdminActions and Default (used when an event has no webhook of its own). Only Discord webhook URLs are accepted and list shows them masked.

ColumnDescription
event_keyEvent name (primary key)
urlDiscord webhook URL
updated_byWho changed it last
updated_atUpdated automatically
Note

Screenshot.UploadWebhook is used by the client to upload screenshots, so it stays in config.lua and is visible to players. Leave it empty to use the screenshot as an embedded image instead.

09 Commands & permissions

CommandWhoWhat it does
/reportPlayersOpen the report menu (ticket creation and active tickets)
/reportsStaff (F10)Open the staff dashboard
msreport_webhookConsole / command.msreport_webhookManage Discord webhooks
# let another group use the webhook command
add_ace group.admin command.msreport_webhook allow

10 FAQ

Does it work without a framework?

Yes. With Config.Framework = 'auto' it binds to ESX, QBCore or Qbox when one is running, and otherwise runs standalone.

Reports have no screenshot. Why?

Screenshots need screenshot-basic to be started before this resource, and Config.Screenshot.Enabled to be on.

Are tickets saved after a restart?

No. Tickets are kept in memory only and are lost when the resource restarts. Discord logs keep the history.

Can I translate it?

The resource is English only. Every UI text and notification is editable in locales/en.lua.

Staff cannot open /reports.

Check that they have the ACE permission ms.reports or are in a group listed in Config.AdminGroups.

Can I use it on more than one server?

One purchase covers one server and its test server. Reselling, leaking or redistributing the files is not allowed (see LICENSE.txt).

11 Changelog

1.0.0

  • Sidebar layout for players, one active report per player by default, full-page chat.
  • Staff dashboard with live feed, claim / release / resolve, quick actions and Discord logging.
  • Strict server-side validation of all events, chat flood guard, Config.Debug.
  • Live refresh of the open UI; screenshots are sent once instead of in every update.
  • New purple Veyzz theme, English only, safer production defaults (30 s cooldown, self-reports off).

12 Support

Questions, bugs or feature requests: open a ticket on our Discord. Please include your server artifact version, framework and the console output.