Skip to content

Chat Categories

Categorie della chat

Le categorie sono le schede nell'input della chat. Ognuna è un canale separato con i propri colori, tag, permessi, regole di consegna e badge identificativi. Sono definite in shared/config/categories.lua come config.chatCategories.

La scheda Comandi integrata

Una categoria di tipo command viene sempre inserita come prima scheda in fase di esecuzione (da shared/main.lua) — non devi definirla tu:

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

Qualsiasi cosa venga digitata in questa scheda viene eseguita come comando. Con config.allowNoSlashCommands = true, il nome di un comando noto funziona con o senza lo slash iniziale (digitando me hi viene eseguito /me hi).

Cosa è abilitato di default

Subito dopo l'installazione, solo la categoria Admin è attiva in config.chatCategories. Esempi pronti all'uso per OOC (Globale), OOC (Locale/più vicino), Polizia, EMS e Gang sono inclusi nel file ma commentati: basta decommentarli e regolarli secondo le necessità.

Categoria type Come viene limitato l'accesso
Comandi command Sempre presente (auto-inserito)
Admin admin Permessi ACE command / admin / adminchat
OOC (Globale) ooc Aperto a tutti (esempio)
OOC (Locale) oocclosest Prossimità — distance in metri (esempio)
Polizia pdchat jobs = { police = {...grades} } (esempio)
EMS emschat jobs = { ambulance = true } (esempio)
Gang gang gangs = { ... } (esempio)

Categoria predefinita

config.defaultChatCategory stabilisce quale scheda è selezionata quando si apre la chat:

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

Comandi con slash vs senza slash

shared/config/general.lua
--- true  = i comandi funzionano CON e SENZA slash iniziale ("me hi" esegue /me)
--- false = i comandi si attivano solo con lo slash iniziale ("/me hi")
config.allowNoSlashCommands = true

Parametri delle categorie

Ogni categoria supporta una ricca serie di campi. Un esempio ridotto:

shared/config/categories.lua
{
    label = "CATEGORY_ADMIN_LABEL",  -- chiave di traduzione per il nome della scheda
    type = "admin",                  -- id univoco per questa categoria
    icon = "shield-alt",             -- icona FontAwesome
    webhookKey = "chatMessage",      -- webhook di log Discord (vedi Discord Logging)
    placeholder = "CATEGORY_ADMIN_PLACEHOLDER",
    permissions = { "command", "admin", "adminchat" }, -- permessi ACE richiesti
    maxLength = 500,                 -- lunghezza massima del messaggio
    tags = {                         -- tag fisso/i mostrato/i prima del messaggio
        { tag = "Admin", textColor = { 51, 51, 51 }, bgColor = { 255, 105, 97 } },
    },
    color = { 255, 105, 97 },        -- colore predefinito del testo del messaggio
    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 },
}

Riferimento completo dei campi (tutti opzionali se non diversamente specificato):

Campo Tipo Descrizione
label string Chiave di traduzione per il nome visualizzato della scheda
type string Obbligatorio. Identificativo univoco per la categoria
icon string Nome dell'icona FontAwesome
webhookKey string Chiave del webhook Discord per registrare i messaggi di questa categoria
command string / string[] Comando/i della chat che indirizzano a questa categoria
placeholder string Chiave di traduzione per il testo segnaposto dell'input
distance number Distanza massima di consegna in metri; omettere per globale
maxLength number Lunghezza massima in caratteri del messaggio
permissions string[] Permessi ACE necessari per vedere/usare la categoria
jobs table Lavori richiesti — true = tutti i gradi, number[] = gradi specifici
gangs table Gang richieste — stessa struttura di jobs
tags table[] Tag fissi mostrati prima dei messaggi (tag, textColor, bgColor)
color RGB Colore predefinito del testo del messaggio { r, g, b }
showPlayerName table active, censored, bgColor, textColor, showWearingMask
showPlayerId table active, type = "serverId", colori
showPlayerJob table active, showLabel, showGrade, colori, override per lavoro
discordTag table active, maxShow, roles[] (ruolo Discord → tag)
showHour table active, colori — aggiunge l'orario del messaggio

La censura del nome mostra un nome mascherato (es. J*** D**). Se un giocatore indossa una maschera, il suo nome viene nascosto come Sconosciuto a meno che showWearingMask = true — il controllo della maschera è gestito da config.noneMask in general.lua.