Skip to content

Categorias de Chat

Chat Categories

As categorias são as abas no input do chat. Cada uma é um canal separado com suas próprias cores, tags, permissões, regras de entrega e distintivos de identidade. Elas são definidas em shared/config/categories.lua como config.chatCategories.

A aba de Comandos integrada

Uma categoria command é sempre injetada como a primeira aba em tempo de execução (a partir de shared/main.lua) — você não precisa defini-la manualmente:

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

Qualquer coisa digitada nesta aba é executada como um comando. Com config.allowNoSlashCommands = true, um nome de comando conhecido funciona com ou sem a barra inicial (digitar me hi executa /me hi).

O que vem ativado por padrão

Por padrão, apenas a categoria Admin está ativa em config.chatCategories. Exemplos prontos para uso em OOC (Global), OOC (Local/mais próximo), Polícia, EMS e Facção estão incluídos no arquivo, mas comentados — basta descomentá-los e ajustá-los conforme necessário.

Categoria type Como o acesso é controlado
Comandos command Sempre presente (auto-injetado)
Admin admin Permissões ACE command / admin / adminchat
OOC (Global) ooc Aberto para todos (exemplo)
OOC (Local) oocclosest Proximidade — distance em metros (exemplo)
Polícia pdchat jobs = { police = {...grades} } (exemplo)
EMS emschat jobs = { ambulance = true } (exemplo)
Facção gang gangs = { ... } (exemplo)

Categoria padrão

config.defaultChatCategory define qual aba fica em foco quando o chat é aberto:

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

Comandos com vs. sem barra

shared/config/general.lua
--- true  = comandos funcionam COM e SEM a barra inicial ("me hi" executa /me)
--- false = comandos são acionados apenas com a barra inicial ("/me hi")
config.allowNoSlashCommands = true

Parâmetros da categoria

Cada categoria suporta um conjunto rico de campos. Um exemplo resumido:

shared/config/categories.lua
{
    label = "CATEGORY_ADMIN_LABEL",  -- chave de tradução para o nome da aba
    type = "admin",                  -- id único para esta categoria
    icon = "shield-alt",             -- Ícone FontAwesome
    webhookKey = "chatMessage",      -- Webhook de log do Discord (consulte Discord Logging)
    placeholder = "CATEGORY_ADMIN_PLACEHOLDER",
    permissions = { "command", "admin", "adminchat" }, -- perms ACE necessárias
    maxLength = 500,                 -- comprimento máximo da mensagem
    tags = {                         -- tag(s) fixa(s) exibida(s) antes da mensagem
        { tag = "Admin", textColor = { 51, 51, 51 }, bgColor = { 255, 105, 97 } },
    },
    color = { 255, 105, 97 },        -- cor padrão do texto da mensagem
    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 },
}

Referência completa de campos (todos opcionais, a menos que indicado o contrário):

Campo Tipo Descrição
label string Chave de tradução para o nome de exibição da aba
type string Obrigatório. Identificador único para a categoria
icon string Nome do ícone FontAwesome
webhookKey string Chave do webhook do Discord para registrar as mensagens desta categoria
command string / string[] Comando(s) de chat que direcionam para esta categoria
placeholder string Chave de tradução para o placeholder de entrada
distance number Distância máxima de entrega em metros; omita para global
maxLength number Comprimento máximo de caracteres da mensagem
permissions string[] Permissões ACE necessárias para ver/usar a categoria
jobs table Empregos necessários — true = todos os cargos, number[] = cargos específicos
gangs table Facções necessárias — mesma estrutura que jobs
tags table[] Tags fixas exibidas antes das mensagens (tag, textColor, bgColor)
color RGB Cor padrão do texto da mensagem { r, g, b }
showPlayerName table active, censored, bgColor, textColor, showWearingMask
showPlayerId table active, type = "serverId", cores
showPlayerJob table active, showLabel, showGrade, cores, substituições por emprego
discordTag table active, maxShow, roles[] (Cargo do Discord → tag)
showHour table active, cores — adiciona o horário da mensagem

A censura de nomes exibe um nome mascarado (ex: J*** D**). Se um jogador estiver usando uma máscara, o nome dele será ocultado como Desconhecido, a menos que showWearingMask = true — a verificação de máscara é controlada por config.noneMask em general.lua.