Todo lo que puedes ajustar está en tres archivos: shared/config.lua para el comportamiento, data/channels.lua para los canales y data/commands.lua para la paleta de comandos. Reinicia el recurso después de cada cambio.
General
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
debug | boolean | false | Imprime trazas en consola. También se activa poniendo la convar cuxial_chat_debug en 1. |
proximity | number | 12.0 | Radio en metros de los canales de proximidad: IC, OOC, ME, DO, tiradas e imágenes. |
persistSettings | boolean | true | true guarda los ajustes de cada jugador en base de datos, ligados al personaje. false los deja solo en el PC del jugador. |
Interfaz · ui
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
accent | string (hex) | configurable | Color de acento de la interfaz. |
openKey | string | 'T' | Tecla por defecto que abre el chat. Cada jugador puede cambiarla en los ajustes de teclas de GTA. |
maxMessages | number | 400 | Mensajes que la interfaz guarda en memoria. De 21 a 2000. |
Acciones de rol · actions
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
display | string | 'head' | Dónde se ven /me, /do y las tiradas para quien no lo haya elegido. 'both' = en el chat y sobre la cabeza, 'head' = solo sobre la cabeza, 'chat' = solo en el chat. Cualquier otro valor funciona como 'both'. |
Es solo el valor por defecto del servidor. Cada jugador puede elegir el suyo en los ajustes del chat, y su elección manda.
Burbujas · bubble
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
distance | number | 25.0 | Metros a partir de los que no se dibuja la burbuja. También es el alcance del aviso de «está escribiendo». |
ms | number | 6000 | Milisegundos que vive una burbuja. |
tick | number | 50 | Milisegundos entre refrescos con burbujas a la vista. Menos es más fluido y consume más. |
idle | number | 300 | Milisegundos entre comprobaciones cuando no hay nada que dibujar. |
typingMs | number | 8000 | Milisegundos hasta que caduca el aviso de «está escribiendo». |
typingSelf | boolean | true | true muestra tu propio aviso de escritura. false solo lo ven los demás. |
stack | number | 3 | Máximo de burbujas apiladas por jugador. |
Nombre anónimo · anonymous
Oculta el nombre del jugador mientras lleva máscara.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
enabled | boolean | true | true oculta el nombre con máscara. false muestra siempre el nombre. |
anyMask | boolean | true | true vale cualquier máscara. false solo las de la lista masks. |
masks | number[] | {} | Números de máscara (drawable) que ocultan el nombre. Solo se usa con anyMask = false. |
label | string | 'anonymous_label' | Nombre que se muestra en su lugar. Clave de locale o texto literal. |
channels | table | me, do, dice, ic | Canales en los que se oculta el nombre: true lo oculta, false lo muestra. |
Solo los canales de proximidad pueden ocultar el nombre: ic, ooc, me, do y dice. Los mensajes privados y el canal de organizaciones muestran siempre el nombre real.
Canal de organizaciones · gchat
Un canal común a todas las organizaciones. La variante pública también la lee la policía.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
enabled | boolean | true | false quita los dos comandos. |
command | string | 'gchat' | Comando del canal entre organizaciones. |
publicCommand | string | 'gchatp' | Comando de la variante que también lee la policía. |
policeJobs | string[] | { 'leo' } | Lista de trabajos policiales. Añade los de tu servidor. Cada entrada vale como tipo de trabajo o como nombre de trabajo. |
requireDuty | boolean | true | true = la policía solo lee y escribe estando de servicio. false = siempre. |
policeCanWrite | boolean | true | true = la policía puede escribir en el canal público. false = solo leer. |
fallbackColor | string (hex) | '#8b5cf6' | Color de una organización sin color propio. |
policeColor | string (hex) | '#4f8cff' | Color de los mensajes de la policía y de la etiqueta «Abierto». |
policeLabel | string | 'gchat_police_label' | Etiqueta de la policía. Clave de locale o texto literal. |
Una organización es la banda (gang) del jugador, tal como la informa cuxial_bridge. Todo lo que escribe la policía se envía siempre como público.
Imágenes · images
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
enabled | boolean | false | true registra el comando de imágenes. |
command | string | 'img' | Comando para enviar una imagen. |
channel | string | 'ooc' | Canal por el que sale la imagen. Un id de data/channels.lua. |
hosts | string[] | i.imgur.com, cdn.discordapp.com, media.discordapp.net, media.tenor.com | Dominios permitidos. Cualquier otro enlace se rechaza. |
extensions | string[] | png, jpg, jpeg, gif, webp | Extensiones de archivo permitidas, en minúsculas. |
perMinute | number | 3 | Imágenes por jugador y minuto. |
Solo se aceptan enlaces https de hasta 400 caracteres, y el enlace tiene que acabar en el archivo de imagen. Las imágenes llegan siempre a los jugadores cercanos, sea cual sea el canal.
Registros · logs
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
enabled | boolean | true | false no guarda nada. |
channels | table | ooc, ic, pm, gchat | Canales que se registran. Una tabla vacía registra todos. |
database | boolean | true | true guarda en la tabla cuxial_chat_logs. false envía solo a Discord. |
keepDays | number | 14 | Días que se conservan los registros en base de datos. 0 los guarda para siempre. Los antiguos se borran al arrancar el recurso. |
discord.convar | string | 'cuxial_chat_webhook' | Nombre de la convar de server.cfg con la URL del webhook. Convar vacía = sin Discord. |
discord.batch | number | 15 | Mensajes en cola que provocan un envío inmediato al webhook. |
discord.flushMs | number | 20000 | Milisegundos entre volcados. Vale para el webhook y para la base de datos. |
discord.username | string | 'Chat' | Nombre con el que publica el webhook. |
Canales · data/channels.lua
Cada entrada es un canal: su pestaña, su color y el comando con el que se escribe.
| Campo | Tipo | Qué hace |
|---|---|---|
id | string | Identificador interno. Lo usan el config y los exports. |
label | string | Clave de locale del nombre que sale en la pestaña. |
voice | string | Clave de locale del rótulo que sale en la burbuja. |
color | string (hex) | Color del canal. |
tab | boolean | true le da pestaña propia. false lo muestra solo en la vista general. |
order | number | Posición de la pestaña. |
icon | string | Icono de la burbuja: user, eye, dice, lock, radio, message, shield o megaphone. |
command | string | Comando del canal. Solo se puede escribir directamente en una pestaña si su canal lo tiene. |
sound | boolean | true suena al llegar un mensaje. |
bubble | boolean | true muestra sus mensajes sobre la cabeza del autor. |
mutable | boolean | false impide que los jugadores silencien el canal en sus ajustes. |
Canales incluidos: ic, ooc, me, do, pm, dice, gchat, sancion y system.
No borres ic ni system. Los mensajes sin canal caen en ic y los de otros recursos en system.
Paleta de comandos · data/commands.lua
La lista que el chat sugiere cuando el jugador escribe /. Solo describe los comandos; no los crea.
| Campo | Tipo | Qué hace |
|---|---|---|
name | string | Comando sin la barra. |
help | string | Clave de locale de la descripción. |
channel | string | Canal al que pertenece el comando. Da el color a la sugerencia. |
params | table | Argumentos que se muestran, cada uno con name y, si procede, optional = true. |
Los comandos que anuncian otros recursos se añaden solos a esta lista.
Textos
Todos los textos están en locales/es.json y locales/en.json. El idioma sigue la convar ox:locale.
Cambios habituales
Mostrar las acciones también en el chat
actions = {
display = 'both',
},Ocultar el nombre solo con ciertas máscaras
anonymous = {
enabled = true,
anyMask = false,
masks = { 51, 52, 111 },
label = 'anonymous_label',
channels = {
me = true,
['do'] = true,
dice = true,
ic = false,
},
},Activar las imágenes
images = {
enabled = true,
command = 'img',
channel = 'ooc',
hosts = { 'i.imgur.com' },
extensions = { 'png', 'jpg', 'jpeg', 'gif', 'webp' },
perMinute = 3,
},Cambiar el nombre de los comandos de organizaciones
gchat = {
command = 'org',
publicCommand = 'orgp',
-- deja el resto del bloque como está
},Después de renombrarlos, actualiza las entradas gchat y gchatp de data/commands.lua para que la paleta muestre los nombres nuevos.
Registrar todos los canales solo en Discord
logs = {
enabled = true,
channels = {},
database = false,
keepDays = 14,
discord = {
convar = 'cuxial_chat_webhook',
batch = 15,
flushMs = 20000,
username = 'Chat',
},
},