Início › Documentação › Instalação · origen_reports
O recurso inclui um migrador automático. Em cada arranque lê database.sql da raiz do recurso, cria as tabelas em falta e adiciona ou atualiza as colunas em falta, pelo que não é preciso importar SQL manualmente.
Se preferires criar o esquema à mão, executa o seguinte SQL antes de arrancares o recurso:
CREATE TABLE `origen_reports_tickets` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`reporter_identifier` VARCHAR(100) NOT NULL,
`reporter_name` VARCHAR(100) NOT NULL,
`identifiers` LONGTEXT NOT NULL,
`type` VARCHAR(100) NOT NULL,
`description` TEXT NOT NULL,
`status` ENUM('pending','claimed','resolved') NOT NULL DEFAULT 'pending',
`assigned_name` VARCHAR(100) DEFAULT NULL,
`assigned_identifier` VARCHAR(100) DEFAULT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
INDEX `idx_reporter` (`reporter_identifier`),
INDEX `idx_status` (`status`),
INDEX `idx_assigned_identifier` (`assigned_identifier`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `origen_reports_messages` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`report_id` INT UNSIGNED NOT NULL,
`sender` VARCHAR(100) NOT NULL,
`text` TEXT NOT NULL,
`is_staff` TINYINT(1) NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
INDEX `idx_report` (`report_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `origen_reports_types` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`label` VARCHAR(100) NOT NULL,
`icon` VARCHAR(50) NOT NULL DEFAULT 'help',
`sort_order` INT NOT NULL DEFAULT 0,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `origen_reports_teleports` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(100) NOT NULL,
`coords` LONGTEXT NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `origen_reports_config` (
`key` VARCHAR(100) NOT NULL,
`value` LONGTEXT NOT NULL,
PRIMARY KEY (`key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `origen_reports_groups` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
`permissions` LONGTEXT NOT NULL,
`allow_all_items` TINYINT(1) NOT NULL DEFAULT 1,
`allowed_items` LONGTEXT DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `origen_reports_staff` (
`identifier` VARCHAR(100) NOT NULL,
`name` VARCHAR(100) NOT NULL,
`group_id` INT UNSIGNED DEFAULT NULL,
`total_resolved` INT UNSIGNED NOT NULL DEFAULT 0,
`total_duty_seconds` INT UNSIGNED NOT NULL DEFAULT 0,
`last_seen` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`identifier`),
CONSTRAINT `fk_staff_group` FOREIGN KEY (`group_id`) REFERENCES `origen_reports_groups` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;origen_reports_groups tem de existir antes de origen_reports_staff por causa da chave estrangeira fk_staff_group. Mantém a ordem acima se importares o ficheiro à mão.
Adiciona o recurso depois das suas dependências:
ensure ox_lib
ensure oxmysql
ensure screenshot-basic # optional, only for the screenshot quick action
ensure origen_reportsOs recursos de framework, inventário, roupa e ambulância também têm de arrancar antes do origen_reports para que a deteção automática os encontre.
Um jogador passa a ser staff através de um de três níveis de acesso:
| Nível | Como é concedido | Permissões |
|---|---|---|
| Completo | Qualquer permissão incluída em Config.StaffFullAccess |
Todas as ações rápidas e todo o painel de administração |
| Limitado | Adicionado como staff a partir do painel de administração com um grupo atribuído | Exatamente as permissões desse grupo |
| Básico | Qualquer permissão incluída em Config.StaffBasicAccess |
Conjunto básico por omissão (ver abaixo) |
Cada entrada de Config.StaffFullAccess / Config.StaffBasicAccess é verificada, por ordem, com:
<permission> ou group.<permission>.qbx_core — HasPermission / GetPermission.qb-core — Functions.GetPermission.es_extended — xPlayer.getGroup() tem de ser igual à permissão.Para configurações baseadas em ACE, concede os grupos no teu server.cfg:
add_principal identifier.license:xxxxxxxxxxxxxxxx group.admin
add_principal identifier.license:yyyyyyyyyyyyyyyy group.modPermissões por omissão do nível básico:
| Permissão | Concedida |
|---|---|
teleport |
Sim |
inventory |
Sim |
revive |
Sim |
ropa |
Sim |
bucket |
Sim |
screenshot |
Sim |
spectate |
Sim |
giveitems |
Não |
video |
Não |
A partilha de ecrã em direto (video) nunca é concedida por omissão ao staff básico. Cria um grupo no painel de administração com essa permissão ativada e atribui-o aos membros do staff que precisem dela.
Todos os webhooks estão em svconfig.lua. Substitui YOUR_WEBHOOK_URL pelos URL dos teus webhooks do Discord, ou põe enabled = false para desativar por completo o registo de logs.
return {
enabled = true,
webhooks = {
['report-created'] = 'https://discord.com/api/webhooks/...',
['report-claimed'] = 'https://discord.com/api/webhooks/...',
-- ...
['screenshot-upload'] = 'https://discord.com/api/webhooks/...',
}
}screenshot-upload não é um canal de logs: é o webhook para o qual o screenshot-basic envia a captura. A ação rápida de captura de ecrã não faz nada enquanto estiver vazio ou continuar com o valor YOUR_WEBHOOK_URL.
Consulta Configuração para veres a lista completa de chaves de webhook.
Define o idioma do recurso em config.lua. Os ficheiros de tradução estão em locales/.
Config.Language = 'en' -- 'es' | 'en'