SCRIPT

Documentación de Menú de pausa

Menú de pausa (sbr-pausemenu)

Que hace

sbr-pausemenu sustituye el menú de pausa de GTA por una interfaz propia a pantalla completa, pensada para servidores de rol con qb-core. Al pulsar la tecla de pausa se abre un menú con varias pestañas y, si el jugador va a pie, una cámara en vivo orbita alrededor de su personaje en el centro de la pantalla.

Lo que ofrece:

Requisitos

RequisitoDetalle
Frameworkqb-core. No es compatible con ESX ni con Qbox sin cambios: el servidor llama a exports['qb-core']:GetPlayer y GetCoreObject, y lee PlayerData, SetJob y QBCore.Shared.Vehicles
Lua5.4 (lua54 'yes')
Base de datosMySQL o MariaDB mediante oxmysql
Dependencias declaradas en el fxmanifest.luaoxmysql, ox_lib, qb-core (sin ellas el recurso no arranca)

El recurso usa además tablas y recursos de terceros. No están declarados como dependencias: si faltan, el menú abre igualmente. Esto es lo que ocurre sin cada uno:

IntegraciónPara qué se usaQué pasa si no está
player_vehicles (tabla estándar de qb-core)Lista de vehículos del jugadorSin la tabla no hay lista de vehículos; la pestaña Vehículos no carga datos
sbr-garagesTraduce el id de garaje a su nombreSolo oculta el nombre amigable: se muestra el id del garaje
jg-hudEl interruptor HUD llama a su export toggleHud (con pcall)El interruptor HUD no hace nada; el resto del menú funciona
santabria-npclifeVolumen de las voces de NPC (GetNpcVolumen y SetNpcVolumen, con pcall)Solo oculta un widget: la fila "Voces de los NPC" no aparece en Ajustes
santabria-intranetExport RequestSession del portal webEl callback existe en el cliente, pero ningún botón de la interfaz incluida lo dispara (ver Preguntas frecuentes). Sin el recurso solo avisaría "El portal web no está disponible"
sbr-masteryLa pestaña Maestría carga https://cfx-nui-sbr-mastery/web/index.html?embed=1 en un iframe y el cliente llama a sus callbacksSolo la pestaña Maestría: se queda en "Cargando maestría…" y avisa de que el sistema no está disponible. El resto del menú funciona
ov-battlepassResumen del pase y botón "Abrir el pase" (export GetSnapshot, evento ovbp:client:open)Se oculta el acceso al pase y la pestaña Pase muestra "No hay ninguna temporada activa"
pvp-staffCatálogo de modos, cola, estadísticas (pvp_stats), torneo (/torneo), salir de la cola (/leavepvp), imágenes de modos (cfx-nui-pvp-staff/html/images/) y el evento paintball:server:joinModeSin el recurso la pestaña PVP muestra "Los minijuegos no están disponibles ahora mismo"; sin las imágenes solo se ocultan las ilustraciones. Con ELO y ranking vacíos
Tablas intranet_short_links, intranet_store_credit, santabria_perks, opcrime_players, opcrime_orgsEnlaces de la barra inferior, saldo de tienda, chip VIP y datos de clanCada una está aislada con pcall: la sección afectada sale vacía o a 0 y se imprime un aviso en consola una sola vez. El menú abre igual
Videos de empleos (videoFile)html/js/widgets/jobs.js busca el video en https://santabriarp.com/videos/<videoFile>Solo afecta a trabajos que definan videoFile; sin él se usa YouTube, luego image y luego un fondo vacío. Los trabajos incluidos no definen videoFile
Fotos y reproductor de YouTubeLos trabajos incluidos tienen un campo youtube (miniatura de i.ytimg.com y reproductor youtube-nocookie.com)Si el cliente no tiene acceso a YouTube, la tarjeta se queda sin imagen y la ficha sin vídeo; el botón de tomar el trabajo sigue funcionando

Nada de lo anterior impide que el recurso arranque. Lo único que rompe el arranque son oxmysql, ox_lib y qb-core. Que los vehículos y el saldo salgan bien depende de que existan las tablas indicadas.

Instalacion

  1. Descarga el recurso desde el Portal de Cfx.re (assets comprados) con la cuenta Cfx.re con la que hiciste la compra. Viene protegido con Asset Escrow de Cfx.re: solo funciona en servidores cuya clave de licencia pertenece a esa cuenta.
  2. Copia la carpeta en resources. La carpeta debe llamarse exactamente sbr-pausemenu: el JavaScript de la interfaz llama a https://sbr-pausemenu/<evento> con ese nombre fijo, y si la renombras los botones y ajustes dejan de responder.
  3. Asegura que oxmysql, ox_lib y qb-core arrancan antes. Añade en server.cfg:
   ensure sbr-pausemenu
  1. Si usas las integraciones opcionales (jg-hud, sbr-mastery, pvp-staff, ov-battlepass, etc.), instálalas y arráncalas; no hace falta cambiar nada en este recurso.
  2. Da el permiso de administración (ver Comandos y permisos) al grupo que publicará noticias.
  3. Inicia el servidor y abre el menú en el juego.

No hay archivo .sql. Con MySQL.ready el recurso crea solo, si no existen:

server/services/lobby.lua y server/services/vehicle.lua solo leen tablas de otros sistemas (pvp_stats, opcrime_*, santabria_perks, intranet_short_links, player_vehicles) y no las crean.

Convars y ACE: lee sv_maxClients (máximo de jugadores, 64 por defecto) y sv_projectName (nombre del servidor). Los comandos de noticias exigen el ACE group.admin.

Archivos editables y cifrados: el bloque escrow_ignore deja sin cifrar shared/config.lua y toda la carpeta html/ (interfaz web). El resto va cifrado. Importante: shared/jobs_config.lua NO está en escrow_ignore, por lo que va cifrado y el comprador no puede editarlo.

Configuracion

Las opciones editables están en shared/config.lua (tabla Hub.Config):

ClaveValor por defectoPara qué sirve
serverName'Otra Vida RP'Nombre de respaldo del servidor si no existe el convar sv_projectName
serverLogoUrl''Reservada: ningún archivo del recurso la lee actualmente
trackedJobs7 entradas: police, ambulance, mechanic, taxi, lawyer, judge, news (cada una con key, label e icon)Trabajos que se cuentan como "servicios en turno" en Inicio y Servidor
newsCategories{ 'event', 'update', 'fix', 'warning', 'staff', 'economy' }Categorías válidas para /noticia
vehicleCacheTTL30000Milisegundos que se guarda en caché la lista de vehículos de cada jugador
defaultSettingsshow_blips, show_hud, show_minimap, show_compass, show_voice en true y theme = 'dark'Ajustes de un jugador que aún no tiene fila guardada

Cómo personalizarlo:

shared/jobs_config.lua (no editable): define la tabla Config.Jobs con los empleos del Centro de Empleos y varios datos sueltos (Config.NPCCoords, NPCModel, BlipSprite, BlipColor, BlipName, BlipScale, que ningún archivo del recurso utiliza). Incluye 9 empleos preconfigurados: Taxista, Camionero (dos entradas), Constructor, Camionero de Grúa, Operador de Montacargas, Limpiador de Ventanas, Recolector de Basura y Minero. Cada empleo tiene título, empresa, icono, salario, estado, categoría (industria, transporte, servicios, construccion, naturaleza), descripción, requisitos, beneficios, ubicación, coordenadas, vídeo de YouTube opcional y la forma de tomarlo: applyType = instant (asigna el trabajo con SetJob, con jobName y jobGrade), waypoint (solo marca la ruta), command (ejecuta un comando del cliente) o link (enlace de postulación). Limitación: al ir cifrado, el comprador no puede añadir, quitar ni modificar empleos, ni cambiar los nombres jobName que deben existir en su qb-core. Si un jobName no existe en tu servidor, el jugador recibe el aviso de que el trabajo no está registrado.

Comandos y permisos

ElementoDetalle
Tecla ESCAPE y tecla PAbren y cierran el menú (RegisterKeyMapping de hub_open y hub_open2, nombre "Menú de pausa Otra Vida"). El jugador puede reasignarlas en los ajustes de teclado de FiveM
/hubAbre o cierra el menú
ESC dentro del menúCierra el menú (el recurso bloquea el menú de pausa nativo y el control 200)
`/noticia categoria Título \Cuerpo`Publica una noticia. Solo con el ACE group.admin
/noticia_borrar idOculta una noticia (active = 0, la fila no se borra). Solo con el ACE group.admin

Permiso de ejemplo (el ACE group.admin se obtiene al pertenecer a ese grupo; consulta cómo está definido en tu servidor):

add_principal identifier.license:<licencia> group.admin

Eventos de servidor (los dispara el cliente del propio recurso): sbr-pausemenu:server:open, server:getVehicles, server:saveSettings, server:refreshServerStatus y server:quit (desconecta a quien lo dispara con DropPlayer; no permite echar a otro jugador).

Eventos de cliente: sbr-pausemenu:client:openPayload, lobbyPayload, lobbyLive, serverStatusUpdate y vehiclesPayload.

Callback de ox_lib: sbr-pausemenu:applyJob (asigna el trabajo con SetJob).

Callbacks NUI (llamados desde la interfaz): hub:close, hub:switchChar (ejecuta /switchchar de qb-core), hub:quitServer, hub:toggleBlips, hub:toggleHud, hub:toggleMinimap, hub:setNpcVolume, hub:saveSettings, hub:requestVehicles, hub:setWaypoint, hub:openGtaMap, hub:openGtaSettings, hub:openPortal, hub:openPass, hub:joinMode, hub:leaveMode, hub:openTournament, hub:rotateChar, jobs:apply y los de maestría (mastery:profile, tree, ranking, buyNode, setFocus, respec, togglePerk, setTitle).

Exports: el recurso no declara ningún export propio. Consulta el archivo fxmanifest.lua si necesitas confirmarlo.

Como se usa

Pulsa ESC o P. Arriba tienes los accesos Mapa, Ajustes y Servidor, y las pestañas Inicio, PVP, Personal, Maestría, Empleos y Ranking. A la derecha se muestran tu saldo de tienda, efectivo y banco, y los iconos de Novedades, Pase, Guía, ajustes de GTA y salir.

Para administradores

Preguntas frecuentes

¿Funciona con ESX o Qbox? No sin cambios. El recurso está escrito para qb-core y usa sus exports y la estructura de PlayerData. Como el código de client/ y server/ va cifrado, esas adaptaciones no se pueden hacer por tu cuenta.

Renombré la carpeta y los botones no responden. La carpeta debe llamarse sbr-pausemenu. La interfaz llama a https://sbr-pausemenu/... y ese nombre no se puede cambiar desde la interfaz sin tocar código cifrado.

¿Puedo añadir o editar empleos? No: shared/jobs_config.lua va cifrado y no se puede editar. Es una limitación del recurso. Los trabajos asignan un jobName que debe existir en tu qb-core. Puedes cambiar los textos que muestra la interfaz en html/, pero no los datos de los empleos.

La pestaña Maestría se queda en "Cargando maestría…". Necesita el recurso sbr-mastery iniciado. Sin él solo falla esa pestaña.

No aparecen los enlaces ni el saldo de tienda. Salen de las tablas intranet_short_links e intranet_store_credit, que no crea este recurso. Sin ellas la barra queda vacía y el saldo marca 0.00.

Hay iconos de empleos vacíos y los avisos de noticias salen sin color. La interfaz usa clases de Font Awesome (fas fa-...) para los empleos pero no incluye esa biblioteca, y las categorías de noticias no tienen estilo propio en el CSS. Puedes corregirlo en html/, que no está cifrado.

El botón del portal web no hace nada. El código incluye el callback hub:openPortal, pero la barra superior de la interfaz entregada no tiene el botón del portal (btn-portal-web) y la pestaña Tienda, que sí lo usaría, existe en el código sin acceso desde la barra. Se puede añadir el botón editando html/index.html.

Actualizaciones y soporte

Las actualizaciones se descargan desde el Portal de Cfx.re con la misma cuenta con la que realizaste la compra. Antes de actualizar, haz una copia de tu carpeta html/ y de shared/config.lua si los has personalizado, ya que se reemplazarán. Si necesitas ayuda, indica la versión del recurso (1.0.0), la consola del servidor y los recursos relacionados que tengas instalados. Contacto: [enlace de soporte]