Configuration · origen_reports
Shared configuration lives in config.lua. Discord webhooks are server-only and live in svconfig.lua.
Config.Framework, Config.Inventory, Config.Clothing and Config.Ambulance are auto-detected in init.lua. Do not set them in the config file.
General
| Variable | Default | Description |
|---|---|---|
Config.Debug | false | Prints debug output to the console |
Config.Language | 'en' | Resource language — 'es' or 'en' |
Config.maxActiveReports | 1 | Maximum number of open reports a player can have at the same time |
Config.anonymousStaffMessages | true | Hides the staff member's name in the messages the player receives |
Config.notificationPosition | 'top-right' | Position of the in-UI notifications. top-left, top-center, top-right, center-left, center, center-right, bottom-left, bottom-center, bottom-right |
Config.uiSounds | true | Hover, click and transition sounds in the interface |
maxActiveReports and anonymousStaffMessages are only seed values. On the first start they are written to the origen_reports_config table, and from then on the database wins. Change them from the admin panel, or delete their rows in origen_reports_config to re-seed from config.lua.
Commands
| Key | Default command | Description |
|---|---|---|
userpannel | /report | Opens the player panel to create and follow reports |
adminpannel | /adminreport | Opens the staff panel. Only staff members get a response |
Config.Commands = {
['userpannel'] = {
name = 'report',
helpKey = 'commands.user_help',
},
['adminpannel'] = {
name = 'adminreport',
helpKey = 'commands.admin_help',
},
}| Field | Type | Description |
|---|---|---|
name | string | Chat command name, without the slash |
helpKey | string | Locale key used as the command suggestion text |
Staff access
Permissions that grant staff access. See Installation for how each entry is resolved against ACE and the framework.
Config.StaffFullAccess = {
'superadmin',
'admin',
'god'
}
Config.StaffBasicAccess = {
'mod',
'moderator',
}| Variable | Description |
|---|---|
Config.StaffFullAccess | Permissions that grant full access: every quick action and the admin panel |
Config.StaffBasicAccess | Permissions that grant basic access: the default basic permission set |
If a player matches both lists, full access wins.
Report types
Categories the player picks when creating a report.
Config.reportTypes = {
{ id = 1, labelKey = 'report_types.support_general', icon = 'help' },
{ id = 2, labelKey = 'report_types.report_player', icon = 'user' },
{ id = 3, labelKey = 'report_types.report_bug', icon = 'bug' },
}| Field | Type | Description |
|---|---|---|
id | number | Unique identifier of the type |
labelKey | string | Locale key of the label. Use label instead to set a literal text |
icon | string | Icon shown in the UI. Default 'help' |
Report types are seeded into origen_reports_types on the first start, only when the table is empty. Afterwards they are managed from the admin panel and changes to config.lua are ignored.
Teleport points
Destinations available in the teleport quick action.
Config.teleportPoints = {
{ id = 1, nameKey = 'teleports.mrpd', coords = { x = 425.2, y = -980.5, z = 30.7 } },
{ id = 2, nameKey = 'teleports.hospital_pillbox', coords = { x = 295.8, y = -584.3, z = 43.3 } },
{ id = 3, nameKey = 'teleports.legion_square', coords = { x = 192.4, y = -939.2, z = 30.7 } },
}| Field | Type | Description |
|---|---|---|
id | number | Unique identifier of the point |
nameKey | string | Locale key of the name. Use name instead to set a literal text |
coords | table | { x, y, z } destination coordinates |
Same as report types: they are seeded into origen_reports_teleports only when the table is empty, and managed from the admin panel afterwards.
Live screen sharing
Settings of the video quick action. The reported player streams their screen to the staff member handling the ticket over WebRTC.
Config.videoStream = {
frameRate = 24,
width = 1280,
height = 720,
bitrateKbps = 1500,
notifyTarget = false,
maxStaffPerTarget = 1,
iceServers = {
{ urls = 'stun:stun.l.google.com:19302' },
},
}| Field | Default | Description |
|---|---|---|
frameRate | 24 | Frames per second (5-60). Higher values cost more CPU/GPU on the streaming player |
width | 1280 | Max width of the video track (320-3840) |
height | 720 | Max height of the video track (180-2160) |
bitrateKbps | 1500 | Max bitrate per stream in kbps (250-12000) |
notifyTarget | false | Notifies the player when a staff member starts watching their screen |
maxStaffPerTarget | 1 | Max number of staff members watching the same player at once |
iceServers | Google STUN | ICE servers used to negotiate the peer connection |
STUN alone fails behind symmetric NAT, so some players will never connect. For full coverage add your own TURN server:
iceServers = {
{ urls = 'stun:stun.l.google.com:19302' },
{ urls = 'turn:turn.example.com:3478', username = 'user', credential = 'pass' },
},Nearby players
List of players shown under the quick actions of a claimed ticket.
Config.nearbyPlayers = {
radius = 30.0,
maxResults = 20,
refreshInterval = 0,
showIp = false,
}| Field | Default | Description |
|---|---|---|
radius | 30.0 | Meters around the reported player, not the staff member (1-500) |
maxResults | 20 | Max players returned per query |
refreshInterval | 0 | Auto refresh while the section is open, in milliseconds. 0 disables it and leaves only the manual refresh button |
showIp | false | Includes the connection endpoint (IP) in the identifiers. Only staff with full access ever receives it |
Webhooks
svconfig.lua holds every Discord webhook. Set enabled = false to disable all logs.
| Key | Logged when |
|---|---|
report-created | A player creates a report |
report-claimed | A staff member claims a report |
report-resolved | A report is resolved |
report-released | A staff member releases a claimed report |
staff-duty | A staff member goes on or off duty |
admin-config-general | General settings change from the admin panel |
admin-config-tp-add / -update / -delete | A teleport point is created, edited or removed |
admin-config-type-add / -update / -delete | A report type is created, edited or removed |
admin-group-add / -update / -delete | A staff group is created, edited or removed |
admin-add-staff / admin-remove-staff / admin-update-staff | A staff member is added, removed or edited |
quick-bring · quick-goto · quick-bringback · quick-back · quick-teleport | Teleport quick actions |
quick-inventory · quick-giveitems | Inventory quick actions |
quick-revive · quick-ropa · quick-bucket | Revive, clothing and routing bucket quick actions |
quick-espectar · quick-video · quick-nearby | Spectate, live screen sharing and nearby players |
quick-screenshot-request · quick-screenshot-result | A screenshot is requested and its result |
screenshot-upload | Not a log: the webhook screenshot-basic uploads captures to |
Any key left as YOUR_WEBHOOK_URL or empty is skipped silently.