Las tres ventanas#
Radial Menu tiene tres interfaces, y conviene saber cuál es cuál desde el principio:
Ventana | Se abre con | Para qué sirve |
|---|---|---|
La rueda |
| El menú en sí, para todos los jugadores. |
Ajustes del jugador |
| Los colores, la forma, la disposición, el tamaño, la posición y los atajos de comandos propios de cada jugador. |
El editor |
| Solo administradores: el menú, las acciones con nombre, el aspecto del servidor y lo que los jugadores pueden cambiar. |
El menú puede venir de dos sitios:
config/menu.luao el editor. Mientras el interruptor Override active del editor esté activado, su menú sustituye por completo al archivo; desactívalo y se vuelve a usar el archivo. En ningún caso se pierde nada.
Usar la rueda#
Tecla | Hace |
|---|---|
| Abre la rueda. El comando también la cierra. Nada se abre sobre el menú de pausa. |
Clic en una sección | Abre sus botones en lugar de los actuales. |
| Vuelve un nivel atrás. Un clic derecho en el nivel superior cierra la rueda. |
Back · Home | Bajo el centro: sube un nivel o va directamente arriba. |
| Cierra la rueda. Las teclas son |
Engranaje | Cierra la rueda y abre los ajustes del jugador. |
Al pasar el ratón sobre un botón se muestra su nombre completo en el centro. El anillo interior contiene Config.InnerRingMaxItems botones (seis por defecto) y el exterior dos más. Lo que pase de ahí se agrupa en un botón More items al final, que abre el resto: una sección larga nunca se queda sin espacio. La disposición stack muestra el mismo menú como una cuadrícula de fichas, con Back, Home, el engranaje y ✕ encima.
La mayoría de los botones cierran primero la rueda y luego se ejecutan, para que lo que abran reciba el ratón. Los botones configurados para mantener la rueda abierta se ejecutan con ella aún en pantalla; así funcionan los de puertas, ventanillas y ropa, para que un jugador pueda pulsar varios seguidos.
Con qué se abre un servidor nuevo#
config/menu.lua incluye un menú completo construido en torno a los recursos de Quasar y comandos habituales. Cada sección solo se muestra a los jugadores a los que afecta:
Sección | Se muestra cuando | Contiene |
|---|---|---|
Character | Siempre | Recargar y guardar la skin, cambiar de personaje, eliminar props atascados, trabajos, tarjetas SIM y la sección Clothing. |
Customization | Siempre | Configurar el HUD. |
Apartments | Dentro de un apartamento de | Decorar, fijar los puntos del apartamento. |
Garages |
| Crear garajes de coches, barcos y aviones, borrar un garaje ( |
Clothing shops · Labs · Housing |
| Crear o borrar tiendas de ropa, crear un laboratorio de drogas, abrir el creador de viviendas. |
Laboratory | Dentro de un laboratorio de | Menú del laboratorio, decoración. |
Mechanic |
| Reparar, embargar y limpiar vehículos, el menú de mecánico. |
Motorhome | Dentro o cerca de una furgoneta de | Decorar, fijar puntos, acampar, dar llaves. |
Casino |
| El menú del casino. |
Admin | El state bag | Menú de administración, creadores de crafteo, tiendas, hospitales y mecánicos, reparar, embargar, limpiar, cambiar de ropa. |
Vehicle | En un vehículo o mirando hacia uno | Doors, Windows, Seats, Engine, Flip; consulta abajo. |
Races | Siempre | Menú de carreras, nitro, drift. |
Ambulance |
| El menú de ambulancia. |
Cada etiqueta se traduce desde locales/<lang>.json, así que el menú por defecto habla el idioma de tu servidor. Los comandos y eventos de los botones pertenecen a otros recursos: conserva las secciones de los scripts que uses y borra el resto.
La sección Vehicle#
Funciona sobre el vehículo en el que está sentado el jugador, o el que tiene justo delante, hasta seis metros. Cada botón solo se muestra cuando ese vehículo realmente lo tiene: no hay puertas traseras en un cupé ni ventanillas en una moto:
Botón | Hace |
|---|---|
Doors | Conductor, acompañante, trasera izquierda, trasera derecha, capó y maletero, cada una abierta o cerrada. Toggle all las cierra cuando la mitad o más están abiertas, y las abre en caso contrario. |
Windows | Las cuatro ventanillas bajadas o subidas, con el mismo Toggle all. |
Seats | Mueve al jugador a un asiento libre, desde dentro del vehículo y por debajo de 100 km/h. |
Engine | Enciende o apaga el motor. Solo desde el asiento del conductor. |
Flip | Vuelve a poner sobre sus ruedas un vehículo volcado, desde dentro. |
Todos son eventos de cliente que cualquier botón puede disparar, puerta a puerta, extras incluidos. Comandos y exports los enumera.
Construir el menú en config/menu.lua#
El menú es un árbol con dos tipos de nodo. Una categoría es una sección: abre un submenú y contiene ítems. Un ítem es un botón que ejecuta una acción. Las categorías pueden contener categorías, con tanta profundidad como quieras.
{
label = 'Garage',
icon = 'Warehouse', -- any icon from lucide.dev/icons
type = 'category',
id = 'garage', -- optional: lets other resources attach to it
items = {
{
label = 'Open garage',
icon = 'Car',
type = 'item',
action = function()
ExecuteCommand('garage') -- a command
-- TriggerEvent('my:event') -- or a client event
-- TriggerServerEvent('my:ev') -- or a server event
end,
},
},
},Campo | En | Qué hace |
|---|---|---|
| Ambos | El texto bajo el botón. |
| Ambos | Un nombre de icono de Lucide como |
| Ambos |
|
| Categoría | Opcional. El nombre que usan otros recursos para poner sus propias secciones dentro de esta. |
| Categoría | Sus hijos. Una categoría cuyos hijos están todos ocultos también se oculta. |
| Ítem | La función que se ejecuta al hacer clic. Un error dentro de ella se muestra al jugador como notificación en lugar de romper el menú. |
| Ítem |
|
| Ambos | Solo para estos trabajos, a partir de este grado. |
| Ambos | Solo para esta banda, a partir de este grado. |
| Ambos | Una función que devuelve |
Trabajos, bandas y grados#
job = 'police' -- one job
jobGrade = 2 -- ...at grade 2 or higher
job = { 'police', 'ambulance' } -- any of these jobs
job = { police = { grade = 1 }, ambulance = { grade = 3 } } -- a minimum grade per job
gang = 'ballas' -- one gang
gangGrade = 1 -- ...at grade 1 or higherLos grados son mínimos. Un nodo con trabajo y banda necesita ambos. La rueda se reconstruye cuando cambia el trabajo o la banda de un jugador, así que un ascenso se ve la próxima vez que la abra, incluso mientras está abierta. En un servidor sin framework no hay trabajos ni bandas, así que los nodos restringidos permanecen ocultos.
Condiciones con canInteract#
{
label = 'Lockpick',
icon = 'KeyRound',
type = 'item',
canInteract = function()
return not IsPedInAnyVehicle(PlayerPedId(), false)
and RadialBridge.HasItem('lockpick')
end,
action = function()
TriggerEvent('lockpick:client:use')
end,
},canInteract se ejecuta cada vez que se abre la rueda, para cada nodo que la tenga. Mantenla ligera: nada de llamadas a la base de datos ni bucles largos. Usa job y gang para todo lo que puedan expresar, y consulta a RadialBridge en lugar de al framework, para que el menú funcione con cualquiera de ellos; Integraciones enumera lo que responde.
Traducir tus etiquetas#
label = t('garages', 'Garages'), -- locales/<lang>.json → "menu": { "garages": ... }, or the fallbackt() lee la clave del bloque menu del idioma activo y muestra el texto alternativo cuando falta. Si tu servidor usa un solo idioma, las cadenas simples funcionan igual de bien. Reinicia el recurso después de editar el archivo.
El editor del juego#
/radialedit construye el mismo árbol sin tocar Lua. Tiene cuatro pestañas, y Save guarda la pestaña en la que estás en la base de datos y la envía a todos los jugadores al instante, sin reinicios ni reconexiones.
Pestaña | Qué haces ahí |
|---|---|
Menu | El árbol: añade categorías e ítems, reordénalos, duplícalos y bórralos, y edita la etiqueta, el icono, el ID, la acción, las condiciones y las restricciones de cada uno. |
Actions | Eventos con nombre que defines una vez y luego eliges de un desplegable en cualquier botón. |
Appearance | El aspecto del servidor, con vista previa en directo: el punto de partida de todos los jugadores. |
Permissions | Lo que los jugadores pueden cambiar por sí mismos. |
La pestaña Menu#
Empieza con Import from menu.lua: carga config/menu.lua en el árbol, así editas el menú que ya tienes en lugar de empezar de cero. Se traen las etiquetas, los iconos, los ID, los trabajos y las bandas, y también los botones cuya acción es una sola línea ExecuteCommand, TriggerEvent o TriggerServerEvent. Un botón cuya acción hace más que eso se marca con un aviso y necesita que elijas una acción a mano.
Override active decide si se usa el árbol. Desactivado, el árbol solo se guarda y los jugadores mantienen el menú de config/menu.lua. Activado, sustituye al archivo para todos.
Selecciona un nodo del árbol para editarlo a la derecha:
Campo | Qué hace |
|---|---|
Label · Icon | El texto y el icono. El selector de iconos busca en el conjunto completo de Lucide, de unos 1.700 iconos. |
ID | Único en todo el árbol: Save rechaza los duplicados y los nombra. Otros recursos enganchan sus secciones a una categoría mediante este ID. |
Action | Solo ítems. Registered action elige una de la biblioteca, Custom event acepta un tipo y un nombre de evento, No action deja el botón inactivo. Close the radial after running es el interruptor |
Conditions | Marca tantas de la biblioteca como quieras. Todas las condiciones marcadas deben cumplirse para que el nodo se muestre; si no hay ninguna marcada, se muestra siempre. |
Restrictions | Trabajo (un nombre, o varios separados por comas para cualquiera de ellos) con un grado mínimo de trabajo, y una banda con un grado mínimo de banda. |
Tipos de evento#
Un evento personalizado, una acción registrada y un ítem de export usan los mismos cuatro tipos:
Tipo | Ejecuta |
|---|---|
| Un evento de cliente en el juego del jugador. |
| Un evento de servidor, enviado por ese jugador. |
| Un comando, como si el jugador lo escribiera. Escríbelo sin la barra; se admiten argumentos: |
| Un comando de servidor de QBCore, mediante |
La pestaña Actions#
Una acción es un nombre para un evento: un ID, una etiqueta, un tipo y el evento o comando. Añade tantas como necesites y guarda: se unen al desplegable Registered action y llegan al juego de todos los jugadores al instante. Los ID deben ser únicos; Save nombra la fila que no lo es.
Appearance y Permissions#
Appearance contiene los mismos controles que los ajustes propios del jugador, descritos más abajo; lo que guardes aquí es el aspecto con el que parte cada jugador. Permissions decide qué partes pueden cambiar los jugadores:
Interruptor | Abarca |
|---|---|
Allow players to change colors and shapes | Colores, forma, disposición y la animación de apertura. |
Allow players to reposition radial | Tamaño y posición en pantalla. |
Allow players to add custom items | La pestaña Custom Items de los ajustes del jugador. |
Un grupo bloqueado se aplica, no solo se oculta: guardara lo que guardara antes un jugador, la rueda usa los valores del servidor para él. Appearance y Permissions se guardan juntos, desde cualquiera de las dos pestañas.
Acciones y condiciones#
Los desplegables del editor se rellenan con una biblioteca que incluye estas acciones:
ID | Hace |
|---|---|
| Cierra la rueda. |
| Abre ox_inventory o qb-inventory. |
| Alterna qb-phone. |
| Ejecuta |
|
|
Y 36 condiciones:
Grupo | Condiciones |
|---|---|
Jugador | A pie, apuntando con un arma, disparando, en ragdoll, escalando, nadando, cayendo, saltando, tumbado, corriendo, esprintando, en modo sigilo, arma desenfundada, en el agua, totalmente sumergido, muerto o abatido, esposado. |
Vehículo | En cualquier vehículo, es el conductor, es un pasajero, motor encendido, es un coche, moto, barco, avión, helicóptero o bicicleta. |
Mundo | Tiempo despejado, lloviendo, nevando, de día (6:00–20:59), de noche (21:00–5:59). |
Trabajo | De servicio; fuerzas del orden ( |
custom/registry.lua añade una serie de ejemplos que puedes conservar, cambiar o borrar: curar por completo, reparar el vehículo actual y alternar el cinturón como acciones; jefe de policía, policía o sheriff, 500 $ en efectivo, llevar una ganzúa o una radio, tener las llaves del coche actual y estar cerca de la comisaría de Mission Row como condiciones. Las entradas de la biblioteca nunca aparecen solas en la rueda: no hacen nada hasta que un administrador las asigna a un botón. Cómo escribir las tuyas se explica en Integraciones.
Ajustes del jugador#
/radialsettings (o el engranaje del centro de la rueda) abre el panel propio de cada jugador, con una vista previa en directo a la izquierda y dos pestañas:
Pestaña | Qué contiene |
|---|---|
Appearance | Temas predefinidos; degradados de fondo y de borde (lineales o radiales, con cualquier ángulo y cualquier número de paradas de color); borde activado o desactivado; colores de brillo, icono y texto; opacidad de botones y fondo; sombra con color, desplazamiento y desenfoque; las ocho formas (hexágono, círculo, squircle, cuadrado, octógono, chaflán, pentágono, rombo); disposición radial o stack; la animación de apertura; tamaño del menú del 25 % al 200 %; y posición, con nueve preajustes o arrastrando a cualquier punto de la pantalla. |
Custom Items | Los atajos propios del jugador: una etiqueta, un icono y un comando. Aparecen al final del nivel superior de la rueda y ejecutan el comando como si se escribiera. |
Save Settings guarda las elecciones en el PC del jugador. Reset to Defaults restaura el aspecto original y conserva los atajos. Los botones de tema son Config.ColorPresets en config/main.lua: se incluyen nueve, y puedes añadir los tuyos copiando un bloque.
El aspecto de un jugador solo se aplica donde Permissions lo permite. Las partes bloqueadas aparecen en gris en su panel con un aviso, y la rueda muestra los valores del servidor para ellas.
De dónde sale el aspecto#
Hasta que un administrador guarda Appearance en el editor, la rueda usa
Config.Shape,Config.LayoutModeyConfig.CarouselAnimationcon los colores incluidos.Una vez guardado, el Appearance del editor es el aspecto del servidor para todos, y llega al instante a los jugadores conectados.
Encima de eso, los ajustes propios de cada jugador, para lo que Permissions deje abierto.
Ropa#
Character → Clothing alterna once ranuras: sombrero, gafas, máscara, orejas, reloj, pulsera, camiseta, pantalones, zapatos, cuello y chaleco. La primera pulsación quita la prenda con una breve animación; la segunda devuelve exactamente lo que había: el mismo modelo y la misma textura. Detener o reiniciar el recurso vuelve a ponerlo todo.
Pon Config.Clothing.Emotes = false para cambiar de ropa al instante, sin la animación. Las ranuras, las animaciones y lo que significa "quitada" para los modelos freemode masculino y femenino están en custom/clothing.lua.



