Categorii de chat
Categorii de chat
Categoriile sunt tab-urile din câmpul de introducere a textului din chat. Fiecare este un canal separat cu propriile culori, etichete, permisiuni, reguli de livrare și insigne de identitate. Ele sunt definite în shared/config/categories.lua ca config.chatCategories.
Tab-ul de comenzi încorporat
O categorie command este întotdeauna injectată ca prim tab la rulare (din shared/main.lua) — nu trebuie să o definești tu însuți:
table.insert(config.chatCategories, 1, {
label = "CATEGORY_COMMANDS_LABEL",
type = "command",
icon = "terminal",
placeholder = "CATEGORY_COMMANDS_PLACEHOLDER",
})Tot ce este tastat în acest tab este executat ca o comandă. Cu config.allowNoSlashCommands = true, un nume de comandă cunoscut funcționează cu sau fără bară oblică în față (tastând me hi rulează /me hi).
Ce vine activat din fabrică
Din cutie, doar categoria Admin este activă în config.chatCategories. Exemple gata de utilizat pentru OOC (Global), OOC (Local/cel mai apropiat), Poliție, SMURD (EMS) și Gang sunt incluse în fișier, dar sunt comentate — decomentează-le și ajustează-le după cum este necesar.
| Categorie | type |
Cum este restricționat accesul |
|---|---|---|
| Comenzi | command |
Întotdeauna prezent (auto-injectat) |
| Admin | admin |
Permisiuni ACE command / admin / adminchat |
| OOC (Global) | ooc |
Deschis pentru toată lumea (exemplu) |
| OOC (Local) | oocclosest |
Proximitate — distance în metri (exemplu) |
| Poliție | pdchat |
jobs = { police = {...grades} } (exemplu) |
| SMURD (EMS) | emschat |
jobs = { ambulance = true } (exemplu) |
| Gang | gang |
gangs = { ... } (exemplu) |
Categoria implicită
config.defaultChatCategory decide ce tab este focalizat când se deschide chatul:
config.defaultChatCategory = "command"Comenzi cu bară oblică vs. fără bară oblică
--- true = comenzile funcționează CU și FĂRĂ o bară oblică în față ("me hi" rulează /me)
--- false = comenzile se declanșează doar cu o bară oblică în față ("/me hi")
config.allowNoSlashCommands = trueParametrii categoriei
Fiecare categorie acceptă unset bogat de câmpuri. Un exemplu simplificat:
{
label = "CATEGORY_ADMIN_LABEL", -- cheie de traducere pentru numele tab-ului
type = "admin", -- id unic pentru această categorie
icon = "shield-alt", -- pictogramă FontAwesome
webhookKey = "chatMessage", -- webhook de Jurnal Discord (vezi Jurnale Discord)
placeholder = "CATEGORY_ADMIN_PLACEHOLDER",
permissions = { "command", "admin", "adminchat" }, -- permisiuni ACE necesare
maxLength = 500, -- lungimea maximă a mesajului
tags = { -- etichetă(e) fixă(e) afișată(e) înainte de mesaj
{ tag = "Admin", textColor = { 51, 51, 51 }, bgColor = { 255, 105, 97 } },
},
color = { 255, 105, 97 }, -- culoarea implicită a textului mesajului
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 },
}Referință completă a câmpurilor (toate opționale, cu excepția celor menționate):
| Câmp | Tip | Descriere |
|---|---|---|
label |
string | Cheie de traducere pentru numele afișat al tab-ului |
type |
string | Necesar. Identificator unic pentru categorie |
icon |
string | Numele pictogramei FontAwesome |
webhookKey |
string | Cheia webhook Discord pentru a înregistra mesajele din această categorie |
command |
string / string[] | Comandă(zi) de chat care direcționează în această categorie |
placeholder |
string | Cheie de traducere pentru textul substituent (placeholder) din câmpul de introducere |
distance |
number | Distanța maximă de livrare în metri; omite pentru global |
maxLength |
number | Lungimea maximă în caractere a mesajului |
permissions |
string[] | Permisiuni ACE necesare pentru a vedea/folosi categoria |
jobs |
table | Joburi necesare — true = toate gradele, number[] = grade specifice |
gangs |
table | Ganguri necesare — aceeași structură ca jobs |
tags |
table[] | Etichete fixe afișate înainte de mesaje (tag, textColor, bgColor) |
color |
RGB | Culoarea implicită a textului mesajului { r, g, b } |
showPlayerName |
table | active, censored, bgColor, textColor, showWearingMask |
showPlayerId |
table | active, type = "serverId", culori |
showPlayerJob |
table | active, showLabel, showGrade, culori, suprascrieri per job |
discordTag |
table | active, maxShow, roles[] (Rol Discord → etichetă) |
showHour |
table | active, culori — adaugă ora mesajului |
Cenzurarea numelui afișează un nume mascat (de ex. J*** D**). Dacă un jucător poartă o mască, numele său este ascuns ca Necunoscut (Unknown), cu excepția cazului în care showWearingMask = true — verificarea măștii este gestionată de config.noneMask în general.lua.