Antes de empezar#
Pause Menu Creator apenas tiene requisitos. El menú en sí funciona en un servidor vacío; lo único que necesita de ti es un driver de MySQL, para que los temas que crees y los lugares que guarden tus jugadores tengan dónde almacenarse.
Requisito | Estado | Notas |
|---|---|---|
| Necesario para guardar | Almacena tus temas y los lugares guardados de los jugadores. Sin uno, el menú se sigue abriendo y muestra los temas incluidos, pero no se puede guardar nada. |
Framework | Opcional |
|
Notificaciones | Opcional |
|
Todo lo opcional se detecta mirando lo que ya está en ejecución:
Capa | Orden de detección |
|---|---|
Framework |
|
Base de datos |
|
Notificaciones |
|
Cada integración opcional se degrada sin hacer ruido: si falta el framework, se ocultan las filas que habría rellenado en lugar de imprimir $0, y nada da error. Integraciones tiene los detalles y cómo fijar una a mano.
Descargar Pause Menu Creator#
Después de comprar Pause Menu Creator, el recurso queda vinculado automáticamente a tu cuenta de CFX Portal.
Inicia sesión en CFX Portal con la misma cuenta que usaste al finalizar la compra, abre Granted Assets y descarga Pause Menu Creator.
Tras extraer la descarga, deberías tener la siguiente carpeta:
qs-pausemenu/
├── shared/config.lua -- the configuration
├── custom/ -- framework adapters, notifications, blip hook (editable)
├── locales/ -- 41 languages (editable)
├── database/sql.sql -- the schema, if you want to import it by hand
├── images/ -- your logos, headers and avatars
├── videos/ -- your background clips (WebM)
├── stream/ -- reads blip names from the game
├── client/ · server/ -- the resource itself
└── web/ -- the interface, already builtLa carpeta debe llamarse
qs-pausemenu. Tus imágenes y vídeos se sirven desdehttps://cfx-nui-qs-pausemenu/, el hook de blips que incluyen otros recursos es@qs-pausemenu/custom/blip_hook.lua, y cada export se llama comoexports['qs-pausemenu']; una copia renombrada deja de coincidir con los tres.
Instalar el recurso#
Mueve la carpeta qs-pausemenu al directorio resources de tu servidor. Puede estar en cualquier lugar dentro de él, incluida una carpeta de categoría:
resources/
└── [qs]/
└── qs-pausemenu/Después abre tu server.cfg y asegúrate de que el driver de base de datos y tu framework arrancan antes de Pause Menu Creator:
ensure oxmysql
# Framework (one of them)
ensure es_extended
# ensure qb-core
# ensure qbx_core
# ensure qs-core
# Optional notifications
ensure ox_lib
ensure qs-pausemenuEl orden de carga importa para la base de datos, que se busca una sola vez al arrancar. Un framework que arranca tarde es menos problema: con Config.Framework = 'auto', la detección se vuelve a intentar unos segundos después y se cambia al adaptador correcto.
La base de datos#
No hay ningún archivo SQL que tengas que importar. Pause Menu Creator crea sus tres tablas al arrancar con CREATE TABLE IF NOT EXISTS, así que nunca toca datos que ya existan. database/sql.sql contiene las mismas sentencias en SQL plano, para quien quiera tener las tablas creadas antes de que el servidor se haya ejecutado nunca.
Tabla | Contiene |
|---|---|
| Los temas que guardaste desde el creador, uno por fila. |
| Qué tema está activo para todo el servidor. |
| Los lugares que cada jugador guardó en el mapa, asociados a su personaje. |
Los ocho temas incluidos no están en la base de datos. Vienen dentro de la interfaz, así que el menú puede dibujarse antes de haber hablado con el servidor; por eso tampoco hay nada que precargar. Las instalaciones que guardaban los lugares en el antiguo formato de dos columnas se migran automáticamente al nuevo en el primer arranque; la consola indica cuántos se migraron.
Dar acceso al creador#
El creador decide lo que ve cada jugador, así que /pausecreator está protegido por una comprobación de permisos. Cualquiera de estas vías es suficiente:
Funciona en cualquier servidor, con o sin framework. Concede el ace command.pausecreator (el valor de Config.Creator.permission) en server.cfg, ya sea a un grupo o a un jugador:
# To your admin group
add_ace group.admin command.pausecreator allow
add_principal identifier.license:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx group.admin
# Or to one player directly
add_ace identifier.license:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx command.pausecreator allowCualquier jugador de uno de los grupos indicados en Config.Creator.adminGroups tiene acceso. La comprobación pasa por custom/, así que usa los propios grupos de tu framework: grupos de ESX y permisos de QBCore y Qbox.
Config.Creator = {
command = 'pausecreator',
permission = 'command.pausecreator',
adminGroups = {
'admin',
'superadmin',
'god',
},
}Configurar el recurso#
El archivo de configuración es corto a propósito. El aspecto del menú (cada módulo, color, fuente, página y botón) se define en el creador, dentro del juego. Los archivos son para la parte técnica:
Archivo | Contenido |
|---|---|
| El idioma, el framework, los comandos, el comportamiento de ESC, el nombre y los enlaces del servidor, las acciones, el almacenamiento, la foto del jugador, los lugares guardados y el mapa realista. |
| Un adaptador por framework, la función de notificación y la comprobación de grupos del creador. Puedes modificarlos. |
| Lo incluyen tus otros recursos para que la leyenda del mapa conozca los nombres de sus blips. |
| Las 41 traducciones de las notificaciones y del creador. |
| Tus archivos multimedia. Todo lo que pongas aquí aparece como opción en el creador. |
Los valores que conviene revisar primero:
Config.Language = 'en' -- one of the 41 files in locales/
Config.Framework = 'auto' -- 'auto' | 'qs' | 'esx' | 'qb' | 'standalone'
Config.Menu.replacePauseMenu = true -- take over ESC
Config.Menu.command = 'pausemenu' -- opens it without the ESC hook
Config.Menu.defaultTheme = 'launch' -- what players get before you set one live
Config.Server = {
name = 'Quasar Roleplay', -- empty uses sv_hostname
discord = 'discord.gg/quasar-store',
website = 'quasar-store.com',
}Cada sección del archivo, con sus valores por defecto:
Config.Menu: apertura, ESC y datos en directo
Config.Menu = {
replacePauseMenu = true, -- ESC opens this menu instead of GTA's
command = 'pausemenu', -- opens it directly, skipping the ESC hook
extraKey = '', -- an extra key that also opens it ('' = none)
freezePlayer = false, -- freeze the character while it is open
blurBackground = true, -- blur the game behind it
enableControlsWhenFocus = false,-- let the game keep reading keys
updateInterval = 200, -- ms between live data updates
showGameBlips = true, -- mirror the game's blips onto the map
readBlipNames = true, -- read each blip's real name from the game
defaultTheme = 'launch', -- launch, onyx, aurora, carbon, cyberpunk,
-- ivory, hackerman, velvet
}updateInterval es el ajuste que decide entre fluidez y bajo coste: indica cada cuánto llegan a la página la posición, el dinero y el estado del jugador mientras el menú está abierto. Una actualización que no cambia nada nunca se envía, así que un jugador leyendo el menú sin moverse apenas cuesta nada.
Config.BlipNames: nombres de respaldo para la leyenda del mapa
Config.BlipNames = {
-- [357] = 'Garage',
-- [71] = 'Barber',
-- [73] = 'Clothing Store',
}Un nombre por id de sprite de blip, que solo se usa para un blip cuyo nombre real no se pudo encontrar de otra forma. Uso → Nombres de blips explica el orden en que se buscan los nombres.
Config.Actions: lo que pueden hacer los botones
Config.Actions = {
-- Commands a menu button may never run, whatever a theme says.
blockedCommands = { 'quit', 'connect', 'restart', 'stop', 'start', 'refresh' },
-- 'quit' drops the player from the server, 'event' fires disconnectEvent
-- so your own script can save and disconnect them.
disconnect = 'quit',
disconnectEvent = 'qs-pausemenu:client:disconnect',
disconnectReason = 'You left the server.', -- shown after 'quit'
-- Page of GTA's own pause menu that "Open GTA's settings" opens. 42 is Settings.
gtaSettingsComponent = 42,
}Config.Database: el driver y los nombres de las tablas
Config.Database = {
driver = 'auto', -- 'auto' | 'oxmysql' | 'mysql-async'
themesTable = 'qs_pausemenu_themes',
settingsTable = 'qs_pausemenu_settings',
blipsTable = 'qs_pausemenu_blips',
}
Config.MaxThemes = 50 -- how many saved themes the server will holdConfig.Mugshot: la foto del jugador
Config.Mugshot = {
enabled = true,
transparent = true, -- cut out against nothing, instead of the mugshot backdrop
refresh = 120000, -- ms between retakes; it is also retaken on a model change
}Config.Places: lugares que los jugadores guardan en el mapa
Config.Places = {
limit = 30, -- per player
icons = { 'pin', 'star', 'home', 'car', 'wallet', 'briefcase',
'heart', 'gem', 'fire', 'shield', 'cart', 'key' },
colors = { '#38bdf8', '#22c55e', '#fbbf24', '#fb7185',
'#a78bfa', '#f472b6', '#f97316', '#e2e8f0' },
}El servidor solo acepta iconos y colores de estas listas, así que un jugador no puede guardar nada que el panel no ofreciera.
Config.RealisticMap: el mapa 3D
Config.RealisticMap = {
enabled = true, -- the master switch; a theme can only turn it off
height = 900.0, -- camera distance from the ground when it opens
minHeight = 90.0, -- closest the mouse wheel can take it
maxHeight = 3200.0, -- furthest
clearWeather = true, -- clear sky while it is up, the server's weather after
}Config.Language, Config.Framework y Config.Debug
-- ar, bg, bn, ca, cs, da, de, el, en, es, et, fa, fi, fr, he, hi, hr, hu, id,
-- it, ja, ko, lt, lv, ms, nl, no, pl, pt, ro, ru, sk, sl, sv, sw, th, tr, uk,
-- ur, vi, zh
Config.Language = 'en'
Config.Framework = 'auto' -- 'auto' | 'qs' | 'esx' | 'qb' | 'standalone'
Config.Debug = false -- extra console outputVerificar la instalación#
Reinicia tu servidor y lee la consola. Dos líneas te indican que la instalación está bien:
[qs-pausemenu] framework loaded: esx
[qs-pausemenu] storage driver: oxmysqlframework loaded indica el adaptador elegido; standalone significa que no se encontró ningún framework. storage driver significa que se pueden guardar temas y lugares; si en su lugar ves no database resource found, arranca oxmysql por encima de este recurso.
Después entra en tu servidor y haz la primera prueba:
Pulsa ESC
Se abre el tema Launch en lugar del menú de pausa de GTA. Su mapa muestra dónde estás y sus botones cambian de página. Pulsa ESC de nuevo para cerrarlo.
Abre el creador
Escribe
/pausecreator. Los ocho temas incluidos aparecen a la izquierda; elige uno y se abre en el lienzo, listo para editar.Activa un tema
Cambia algo, pulsa Save y luego Set live. Todos los jugadores lo reciben la próxima vez que pulsen ESC, sin reconectarse. Uso cubre todo lo que puede hacer el creador.
A partir de aquí, nada del aspecto necesita reiniciar. Los temas se diseñan, se guardan y se activan dentro del juego; solo los cambios en
shared/config.luarequieren reiniciar el recurso.



