Ir al contenido

Personalización

Casi todo está en config.lua. El resto son textos, datos y la fina capa que habla con tu framework.


ArchivoQué decideEditable
config.luaFramework, idioma, quién puede pintar, ítems, nombres de los comandos, marcadores de taller de pinturaSí
locales/*.luaCada notificación y sugerencia de chat, un archivo por idiomaSí
locales/main.luaLa función que elige el texto según Config.LocaleSí
bridge/server.luaDetección del framework, notificaciones, comprobación de admin, trabajos, ítems usables, quitar ítemsSí
bridge/client.luaDetección del framework y notificaciones del lado del jugadorSí
items/ox.lua, items/qb.lua, items/sql.sqlDefiniciones de ítems listas para copiar a tu inventarioSí
permissions.jsonLos Steam IDs que pueden abrir el menú. Lo escriben los comandos de dar y quitarSí
vehicle_original_colors.jsonEl color de cada coche pintado antes de pintarlo por primera vez, por modelo y matrículaSí
html/ui.html, html/style.css, html/script.jsEl menú: su título, sus muestras y su aspecto—
data/, stream/Las definiciones de pintura y las texturas de rampa de los colores 223 a 242Déjalos como están
client/main.lua, server/main.luaLa lógicaCon escrow

OpciónQué hacePor defecto
Config.Framework"auto", "esx" o "qbcore". Auto usa el que esté en marcha de es_extended y qb-core; QBox cuenta como qb-core gracias a su compatibilidad con QBCore. Si lo fijas, QBox usa "qbcore""auto"
Config.LocaleEl idioma de todos los mensajes. Mira Idiomas, más abajo"es"
Config.PermissionFileEl nombre del archivo JSON que guarda la lista de permisos"permissions.json"

OpciónQué hacePor defecto
Config.PermissionsUsa la lista de permisos de permissions.jsontrue
Config.UseJobsDeja que los trabajos de Config.AuthorizedJobs abran también el menútrue
Config.AuthorizedJobsLos nombres de trabajo permitidos cuando UseJobs está activadomechanic, police

Los dos interruptores se combinan así:

PermissionsUseJobsQuién puede abrir el menú
activadoactivadoLos jugadores de la lista y cualquiera cuyo trabajo esté en AuthorizedJobs
activadodesactivadoSolo los jugadores de la lista
desactivadoactivado o desactivadoTodo el mundo

La lista usa como clave el identificador de Steam. Un jugador que no tenga Steam abierto no se puede añadir; el comando de dar permiso responde que no se pudo obtener su identificador de Steam.


OpciónQué hacePor defecto
Config.UseItemsRegistra como usables los 82 ítems de pintura y el ítem de resettrue
Config.ItemsRequirePermissionHace que los ítems de pintura sigan las mismas reglas que el menú. Desactivado, cualquiera que tenga uno puede usarlofalse

El ítem de reset nunca pide permiso. Los nombres de los ítems, y dónde vienen sus definiciones, están en Instalación.


Cada nombre se configura en config.lua, sin la barra.

OpciónPor defectoQuiénQué hace
Config.Chameleon/chameleonCualquiera permitido por las reglas de arribaAbre el menú. Tienes que estar en un vehículo
Config.ChameleonReset/chameleonresetCualquieraDevuelve el coche en el que estás a su color original
Config.ChameleonGive/chameleongive [ID]AdminsAñade el Steam ID de ese jugador a la lista de permisos
Config.ChameleonRemove/chameleonremove [ID]AdminsLo vuelve a quitar

“Admin” significa el grupo admin o superadmin en ESX, y el permiso admin o god en QBCore. Las dos comprobaciones están en bridge/server.lua por si los tuyos se llaman de otra forma.


Config.Locations es una lista; añade tantas entradas como quieras. Cada una tiene:

CampoQué haceValor de serie
coordsDónde está el marcadorDos puntos de ejemplo cerca de Burton
radiusA qué distancia, en metros, tienes que estar para que salga el aviso3.0
markerTypeEl marcador de FiveM que se dibuja1 (un anillo en el suelo)
markerColorRojo, verde, azul y alfaRojo en uno, verde en el otro, alfa 100
markerScaleSu tamaño2.0 × 2.0 × 1.0
notificationEl texto de ayuda que se muestra dentro del radioPress ~INPUT_CONTEXT~ to open the Chameleon menu

El marcador se dibuja a partir de 10 metros. El aviso solo aparece dentro de radius y en un vehículo; entonces E abre el menú, con la misma comprobación de permisos que el comando.

El texto de notification está en config.lua, no en los idiomas, así que tradúcelo ahí.


html/ui.html contiene las muestras (una por cada ID de color del 161 al 242) y el título del menú, “Chameleon Paintings”, que está escrito en la página en lugar de sacarse de los idiomas. html/style.css da a cada muestra su color de vista previa.


Vienen nueve en locales/: en, es, fr, de, it, pt, pl, ru y tr. Pon uno de esos códigos en Config.Locale.

Para añadir uno:

  1. Copia locales/en.lua a un archivo nuevo, por ejemplo locales/nl.lua.
  2. Cambia el código de idioma de arriba del nuevo archivo a nl y traduce el texto.
  3. Añade locales/nl.lua a las dos listas, client_scripts y server_scripts, de fxmanifest.lua, junto a los demás archivos de idioma.
  4. Pon Config.Locale = "nl", luego haz refresh y reinicia el recurso.

Una clave que falte aparece como Translation [key] does not exist en lugar de romper nada, lo que hace fácil detectar un archivo a medio traducir.


Los dos archivos de bridge/ son los únicos sitios en los que el recurso toca tu framework.

ArchivoQué hace
bridge/server.luaEncuentra el framework, envía notificaciones (esx:showNotification o QBCore:Notify), decide quién es admin, lee el trabajo de un jugador, registra los ítems usables y quita un ítem después de usarlo
bridge/client.luaEncuentra el framework del lado del jugador y muestra notificaciones (ESX.ShowNotification o QBCore.Functions.Notify)

Si no se encuentra ningún framework, las notificaciones pasan a ser mensajes de chat.

Adaptarlo. Para usar tu propio script de notificaciones, sustituye el cuerpo de Bridge.Notify en los dos archivos. Para un sistema de admin personalizado, cambia Bridge.IsAdmin. Para un framework que no sea ESX, QBCore ni QBox, rellena cada función Bridge. de bridge/server.lua (detección del framework, Notify, IsAdmin, GetPlayerJob, RegisterUsableItem y RemoveItem) y el recurso no necesita nada más.