Skip to content

Categorías de chat

Categorías de chat

Las categorías son las pestañas en la entrada del chat. Cada una es un canal separado con sus propios colores, etiquetas, permisos, reglas de entrega e insignias de identidad. Se definen en shared/config/categories.lua como config.chatCategories.

La pestaña de Comandos integrada

Una categoría de tipo command se inyecta siempre como la primera pestaña al ejecutarse (desde shared/main.lua) — no necesitas definirla tú mismo:

shared/main.lua
table.insert(config.chatCategories, 1, {
    label = "CATEGORY_COMMANDS_LABEL",
    type = "command",
    icon = "terminal",
    placeholder = "CATEGORY_COMMANDS_PLACEHOLDER",
})

Cualquier cosa escrita en esta pestaña se ejecuta como un comando. Con config.allowNoSlashCommands = true, un nombre de comando conocido funciona con o sin una barra diagonal al principio (escribir me hi ejecuta /me hi).

Qué viene activado por defecto

De serie, solo la categoría de Admin está activa en config.chatCategories. Se incluyen en el archivo ejemplos listos para usar para OOC (Global), OOC (Local/más cercano), Policía, EMS y Banda, pero están comentados; descoméntalos y ajústalos según necesites.

Categoría type Cómo se restringe el acceso
Comandos command Siempre presente (auto-inyectada)
Admin admin Permisos ACE command / admin / adminchat
OOC (Global) ooc Abierto a todo el mundo (ejemplo)
OOC (Local) oocclosest Proximidad — distance en metros (ejemplo)
Policía pdchat jobs = { police = {...grades} } (ejemplo)
EMS emschat jobs = { ambulance = true } (ejemplo)
Banda gang gangs = { ... } (ejemplo)

Categoría predeterminada

config.defaultChatCategory decide qué pestaña está enfocada cuando se abre el chat:

shared/config/general.lua
config.defaultChatCategory = "command"

Comandos con barra vs. sin barra

shared/config/general.lua
--- true  = los comandos funcionan CON y SIN barra diagonal al principio ("me hi" ejecuta /me)
--- false = los comandos solo se activan con una barra diagonal al principio ("/me hi")
config.allowNoSlashCommands = true

Parámetros de categoría

Cada categoría admite una gran variedad de campos. Un ejemplo resumido:

shared/config/categories.lua
{
    label = "CATEGORY_ADMIN_LABEL",  -- clave de traducción para el nombre de la pestaña
    type = "admin",                  -- identificador único para esta categoría
    icon = "shield-alt",             -- icono de FontAwesome
    webhookKey = "chatMessage",      -- webhook de registros de Discord (ver Registro en Discord)
    placeholder = "CATEGORY_ADMIN_PLACEHOLDER",
    permissions = { "command", "admin", "adminchat" }, -- perms ACE requeridos
    maxLength = 500,                 -- longitud máxima del mensaje
    tags = {                         -- etiqueta(s) fija(s) mostrada(s) antes del mensaje
        { tag = "Admin", textColor = { 51, 51, 51 }, bgColor = { 255, 105, 97 } },
    },
    color = { 255, 105, 97 },        -- color de texto predeterminado del mensaje
    showPlayerName = { active = true, censored = false, showWearingMask = true },
    showPlayerId   = { active = false, type = "serverId" },
    showPlayerJob  = { active = false, showLabel = true, showGrade = false },
    discordTag     = { active = false, maxShow = 1, roles = { ... } },
    showHour       = { active = true },
}

Referencia completa de campos (todos opcionales a menos que se indique lo contrario):

Campo Tipo Descripción
label string Clave de traducción para el nombre visible de la pestaña
type string Requerido. Identificador único para la categoría
icon string Nombre del icono de FontAwesome
webhookKey string Clave del webhook de Discord para registrar los mensajes de esta categoría
command string / string[] Comando(s) de chat que se enrutan a esta categoría
placeholder string Clave de traducción para el texto de marcador de posición (placeholder)
distance number Distancia máxima de entrega en metros; omitir para global
maxLength number Longitud máxima en caracteres del mensaje
permissions string[] Permisos ACE requeridos para ver/usar la categoría
jobs table Trabajos requeridos — true = todos los rangos, number[] = rangos específicos
gangs table Bandas requeridas — misma estructura que jobs
tags table[] Etiquetas fijas mostradas antes de los mensajes (tag, textColor, bgColor)
color RGB Color de texto predeterminado del mensaje { r, g, b }
showPlayerName table active, censored, bgColor, textColor, showWearingMask
showPlayerId table active, type = "serverId", colores
showPlayerJob table active, showLabel, showGrade, colores, anulaciones por trabajo
discordTag table active, maxShow, roles[] (Rol de Discord → etiqueta)
showHour table active, colores — añade la hora del mensaje al final

La censura de nombres muestra un nombre enmascarado (p. ej., J*** D**). Si un jugador lleva una máscara, su nombre se oculta como Desconocido a menos que showWearingMask = true — la comprobación de la máscara la gestiona config.noneMask en general.lua.