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:
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:
config.defaultChatCategory = "command"Comandi con slash vs senza slash
--- 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 = trueParametri delle categorie
Ogni categoria supporta una ricca serie di campi. Un esempio ridotto:
{
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.