Skip to content

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:

shared/main.lua
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:

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

Comenzi cu bară oblică vs. fără bară oblică

shared/config/general.lua
--- 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 = true

Parametrii categoriei

Fiecare categorie acceptă unset bogat de câmpuri. Un exemplu simplificat:

shared/config/categories.lua
{
    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.