Documentación de Centro de reportes
ov_report_center
Centro de reportes y soporte para qb-core: los jugadores abren tickets dentro del juego (jugadores, bugs o ayuda), conversan con el staff y el equipo los gestiona desde un panel con roles, prioridades y etiquetas.
Que hace
ov_report_center sustituye al clasico comando de reporte por un sistema de tickets con historial y chat entre el jugador y el staff, sin salir del juego.
- Tickets con categorias en tres grupos: reportes de jugador (VDM, RDM, Fail RP, Powergaming, Metagaming, Combat log, toxicidad, exploit, NVL, Fear RP), bugs (inventario, vehiculo, trabajo, casa o garaje, visual, interaccion, arma, economia) y ayuda (atascado, ayuda general, ayuda con comandos), mas "Otro". Las categorias se editan en el config.
- Chat jugador-staff dentro de cada ticket, con notas internas que el jugador no ve.
- Prioridad automatica (baja, media, alta, urgente) segun la categoria y palabras clave del texto, que el staff puede cambiar.
- Estados del ticket (abierto, en proceso, esperando jugador, resuelto, cerrado) y archivo automatico de los cerrados.
- Panel de staff con tres roles (soporte, moderador y administrador), asignacion de tickets, etiquetas y teletransporte al lugar donde se creo el reporte (moderadores y administradores).
- Datos utiles para el staff: el ticket guarda las coordenadas del jugador al reportar y el jugador reportado (se elige de la lista de conectados).
- Avisos en pantalla al staff cuando llega un reporte nuevo y al jugador cuando hay novedades.
- Limites anti-abuso: maximo de tickets abiertos, espera entre tickets y entre mensajes, y tope de mensajes por ticket.
- Integracion opcional con Discord: aviso por webhook y/o un puente con un bot propio que crea un hilo por reporte y permite al staff responder desde Discord.
Requisitos
- Servidor FiveM con qb-core, Lua 5.4 y base de datos MySQL o MariaDB con
oxmysql. dependenciesdelfxmanifest.lua:qb-core,ox_lib,oxmysql.- No requiere
ox_inventoryni otros recursos. - Opcional: para el puente de Discord con hilos necesitas un bot propio que exponga los endpoints
/reports/create-thread,/reports/post-messagey/reports/close-thread(el recurso le envia los datos conPerformHttpRequest). El bot no se incluye en el recurso. El webhook simple (Config.Discord) no necesita bot. - Opcional: si
Config.Panel.activoestrue, el recurso consulta las tablas de grupos de un panel de administracion externo para decidir el rol del staff; si no tienes ese panel, ponlo enfalsey usa los permisos ACE o los grupos de qb-core.
Instalacion
El recurso viene protegido con Asset Escrow de Cfx.re: se descarga desde el Portal de Cfx.re con la cuenta Cfx.re del comprador y solo funciona en servidores de esa cuenta. Segun su fxmanifest.lua, quedan sin cifrar config.lua y la carpeta web/ (la interfaz), para que puedas editarlos.
- Descarga el recurso desde el Portal de Cfx.re y copia la carpeta
ov_report_centerenresources/. - Base de datos: no hay archivo
.sql. Las tablasovr_tickets,ovr_mensajesyovr_accionesse crean solas al arrancar el recurso (CREATE TABLE IF NOT EXISTS). - Agrega en
server.cfg, despues de las dependencias: ``ensure oxmysql ensure ox_lib ensure qb-core ensure ov_report_center`` - Concede los permisos del staff. Los roles se reconocen por ACE (nombres por defecto) o por grupo de qb-core: ``
add_ace group.admin ov_report_center.admin allow add_ace group.moderador ov_report_center.mod allow add_ace group.soporte ov_report_center.support allow`Cambia los nombres de grupo por los de tu servidor. Los grupos de qb-core y los nombres de ACE por rol se definen enConfig.Roles`. - Convars opcionales del puente con Discord (el recurso las lee con
GetConvar): ``set ovr_bot_key "tu-clave-del-bot" set ovr_bot_url "http://direccion-de-tu-bot:puerto"`Siovr_bot_keyno esta definida, el puente con el bot queda apagado y el recurso lo indica en consola al arrancar.ovr_bot_urles opcional: si falta se usaConfig.Bot.url`. - Revisa
config.lua(sobre todoConfig.Roles,Config.Panel,Config.BotyConfig.Discord) y reinicia el servidor.
Configuracion
Todo en config.lua.
| Clave | Valor por defecto | Para que sirve |
|---|---|---|
Config.Tecla | 'F11' | Tecla para abrir el centro de reportes (el jugador puede cambiarla). |
Config.Comandos | { 'reporte', 'report', 'reportes' } | Comandos para jugadores. |
Config.ComandoStaff | 'reportesadmin' | Comando de la bandeja del staff. |
Config.Roles | tres roles (admin, mod, soporte) | ACE y grupos de qb-core que dan cada rol. Por defecto: ACE ov_report_center.admin / group.admin, ov_report_center.mod, ov_report_center.support. |
Config.Panel.activo | true | Activa la lectura de grupos de un panel de administracion externo. |
Config.Panel.ttl | 45 | Segundos de cache de esos permisos. |
Config.Panel.gruposAdmin / permisoMod / gruposSoporte | { 'owner', 'admin' } / 'reports.close' / {} | Que grupo o permiso del panel externo da cada rol. |
Config.Limites.titulo / descripcion / mensaje / nota | 100 / 1500 / 800 / 400 | Largo maximo de textos. |
Config.Limites.maxAbiertos | 3 | Tickets abiertos a la vez por jugador. |
Config.Limites.esperaEntreTickets | 60 | Segundos entre dos tickets del mismo jugador. |
Config.Limites.esperaEntreMensajes | 2 | Segundos entre mensajes. |
Config.Limites.maxMensajesPorTicket | 300 | Tope de mensajes por ticket. |
Config.Limites.paginas | 25 | Tickets por pagina en la bandeja del staff. |
Config.ArchivarDiasCerrados | 14 | Dias tras los que se archivan los tickets cerrados. |
Config.PuedeReabrirJugadorHoras | 24 | Horas durante las que el jugador puede responder a un ticket ya cerrado (lo reabre). |
Config.Categorias | 22 categorias | Lista editable (id, etiqueta, tipo). |
Config.PrioridadAuto | palabras clave por nivel | Texto que sube la prioridad automaticamente. |
Config.PrioridadPorCategoria | exploit = urgente, bug_economia = alta, vdm/rdm/combat_log/toxicidad = alta | Prioridad minima por categoria. |
Config.Etiquetas | verificado, falso, duplicado, requiere_admin, espera_evidencia, escalado, investigando | Etiquetas que el staff puede aplicar. |
Config.Discord | activo = false, webhook = '' | Webhook simple de Discord para avisar de reportes nuevos. |
Config.NombreServidor | 'Otra Vida RP' | Nombre que muestra la interfaz; cambialo por el de tu servidor. |
Config.Bot | activo = true, url = 'http://127.0.0.1:3005', claveConvar, urlConvar, canales, menciones, archivarMinutos = 1440 | Puente con el bot de Discord. Los identificadores de canales y menciones que trae el archivo son de ejemplo y debes sustituirlos por los de tu Discord, o poner activo = false. |
Comandos y permisos
Jugadores
| Comando / tecla | Efecto |
|---|---|
/reporte, /report, /reportes o F11 | Abre el centro de reportes. |
Staff
| Comando | Efecto |
|---|---|
/reportesadmin | Abre el mismo centro; si el jugador tiene un rol de staff, ve ademas la bandeja de gestion. |
Roles y que puede hacer cada uno (segun el codigo):
| Accion | Soporte | Moderador | Admin |
|---|---|---|---|
| Ver tickets, responder y dejar notas internas, asignarse un ticket | Si | Si | Si |
| Pasar a "en proceso" o "esperando jugador" | Si | Si | Si |
| Resolver o cerrar un ticket | No | Si | Si |
| Cambiar prioridad y etiquetas | No | Si | Si |
| Ir a la ubicacion del reporte (teletransporte) | No | Si | Si |
| Reabrir un ticket cerrado | No | No | Si |
| Asignar un ticket a otra persona | No | No | Si |
Permisos ACE por defecto: ov_report_center.admin, ov_report_center.mod, ov_report_center.support (y group.admin para administrador). Los nombres de los grupos de qb-core de cada rol estan en Config.Roles.
Convars: ovr_bot_key y ovr_bot_url (puente con el bot de Discord).
Eventos de cliente que usa el recurso (informativo): ovr:aviso (aviso al jugador), ovr:nuevo (aviso al staff) y ovr:teletransportar. El recurso no define exports.
Como se usa
- El jugador pulsa
F11o escribe/reporte. - En "Nuevo reporte" elige la categoria, escribe un titulo (minimo 3 caracteres) y una descripcion (minimo 10). Si es un reporte contra un jugador, lo elige de la lista de conectados y puede indicar el lugar.
- El ticket se registra con un codigo
OVR-AAMMDD-NNNN, con las coordenadas del jugador, y el staff conectado recibe un aviso. - En "Mis reportes" el jugador ve sus tickets, el estado y la conversacion, y puede responder o cerrar el suyo.
- El jugador recibe un aviso cuando el staff responde o cambia el estado. Un ticket cerrado se puede reabrir respondiendo durante
Config.PuedeReabrirJugadorHorashoras.
Para administradores
- Atender reportes: abre
/reportesadmin. La bandeja permite filtrar, abrir un ticket, responder, dejar notas internas, asignarlo, cambiar estado, prioridad y etiquetas, e ir al lugar del reporte (moderador o admin). - Definir quien es staff: concede los permisos ACE de la instalacion o configura los grupos de qb-core en
Config.Roles. Cada accion se vuelve a comprobar en el servidor. - Personalizar categorias: edita
Config.Categorias. Cada categoria tieneid(unico),etiquetaytipo(jugador,bug,ayudauotro); solo las de tipojugadorpermiten elegir a un jugador reportado. - Ajustar la prioridad automatica: agrega palabras clave en
Config.PrioridadAutoo categorias enConfig.PrioridadPorCategoria. - Discord con webhook: pon
Config.Discord.activo = truey el webhook enConfig.Discord.webhook. Se envia un aviso por cada reporte nuevo. - Discord con bot (hilos y respuestas): el recurso envia los reportes al bot; las respuestas del staff desde Discord entran por la ruta HTTP
/staff-replydel propio recurso, autenticada con la claveovr_bot_key. Debes disponer de un bot compatible con esos endpoints. - Historial: las acciones del staff quedan registradas en la tabla
ovr_acciones. - Ver errores: la consola del servidor muestra mensajes con el prefijo
[ov_report_center], por ejemplo cuando el bot responde con un codigo HTTP de error.
Preguntas frecuentes
Necesito importar un archivo SQL? No. Las tablas ovr_* se crean solas.
Funciona sin Discord? Si. Discord es opcional. Con Config.Discord.activo = false y sin la convar ovr_bot_key, todo funciona dentro del juego.
Me aparecen errores de base de datos sobre tablas de otro panel. Pon Config.Panel.activo = false. Esa opcion consulta tablas de grupos de un panel de administracion externo; los roles seguiran funcionando por ACE y por los grupos de Config.Roles.
Como cambio el limite de tickets abiertos? Config.Limites.maxAbiertos en config.lua.
Puedo traducirlo a otro idioma o cambiar el nombre del servidor? El nombre sale de Config.NombreServidor; los textos de la interfaz estan en web/ y las categorias en el config, todo sin cifrar. Algunos mensajes de error se generan en el servidor y estan en espanol.
Puedo tener mas de un administrador de reportes? Si, cualquier numero de jugadores con el permiso ACE o el grupo correspondiente.
Actualizaciones y soporte
Las versiones nuevas aparecen en el Portal de Cfx.re y en la tienda. Antes de actualizar, guarda una copia de tu config.lua. Para soporte, abre un ticket en el Discord de la tienda: [enlace de soporte]. Indica la version del recurso (1.0.0 en el manifest actual), tu configuracion de Discord (sin claves) y el error de la consola.
