Chat Categories
Chat Categories
Kategorie to zakładki w oknie wprowadzania wiadomości na czacie. Każda z nich to osobny kanał z własnymi kolorami, tagami, uprawnieniami, zasadami dostarczania i odznakami identyfikacyjnymi. Są one definiowane w shared/config/categories.lua jako config.chatCategories.
Wbudowana zakładka Komendy
Kategoria command jest zawsze wstrzykiwana jako pierwsza zakładka podczas uruchamiania (z shared/main.lua) — nie definiujesz jej samodzielnie:
table.insert(config.chatCategories, 1, {
label = "CATEGORY_COMMANDS_LABEL",
type = "command",
icon = "terminal",
placeholder = "CATEGORY_COMMANDS_PLACEHOLDER",
})Wszystko wpisane w tej zakładce jest wykonywane jako komenda. Przy config.allowNoSlashCommands = true, znana nazwa komendy działa z ukośnikiem na początku lub bez niego (wpisanie me hi uruchamia /me hi).
Co jest domyślnie włączone
Po wyjęciu z pudełka tylko kategoria Admin jest aktywna w config.chatCategories. Gotowe do użycia przykłady dla OOC (Global), OOC (Lokalny/najbliższy), Policji, EMS i Gangu są zawarte w pliku, ale zostały zakomentowane — odkomentuj je i dostosuj według uznania.
| Kategoria | type |
Jak kontrolowany jest dostęp |
|---|---|---|
| Komendy | command |
Zawsze obecna (automatycznie wstrzykiwana) |
| Admin | admin |
Uprawnienia ACE command / admin / adminchat |
| OOC (Global) | ooc |
Dostępne dla każdego (przykład) |
| OOC (Lokalny) | oocclosest |
Zasięg — distance w metrach (przykład) |
| Policja | pdchat |
jobs = { police = {...grades} } (przykład) |
| EMS | emschat |
jobs = { ambulance = true } (przykład) |
| Gang | gang |
gangs = { ... } (przykład) |
Domyślna kategoria
config.defaultChatCategory decyduje, która zakładka jest domyślnie wybrana po otwarciu czatu:
config.defaultChatCategory = "command"Komendy z ukośnikiem vs. bez ukośnika
--- true = komendy działają Z ukośnikiem i BEZ ukośnika na początku ("me hi" uruchamia /me)
--- false = komendy uruchamiają się tylko z ukośnikiem na początku ("/me hi")
config.allowNoSlashCommands = trueParametry kategorii
Każda kategoria obsługuje bogaty zestaw pól. Okrojony przykład:
{
label = "CATEGORY_ADMIN_LABEL", -- klucz tłumaczenia dla nazwy zakładki
type = "admin", -- unikalne id dla tej kategorii
icon = "shield-alt", -- ikona FontAwesome
webhookKey = "chatMessage", -- webhook logów Discorda (zobacz Logowanie Discord)
placeholder = "CATEGORY_ADMIN_PLACEHOLDER",
permissions = { "command", "admin", "adminchat" }, -- wymagane uprawnienia ACE
maxLength = 500, -- maksymalna długość wiadomości
tags = { -- stały tag(-y) pokazywany przed wiadomością
{ tag = "Admin", textColor = { 51, 51, 51 }, bgColor = { 255, 105, 97 } },
},
color = { 255, 105, 97 }, -- domyślny kolor tekstu wiadomości
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 },
}Pełna dokumentacja pól (wszystkie opcjonalne, chyba że zaznaczono inaczej):
| Pole | Typ | Opis |
|---|---|---|
label |
string | Klucz tłumaczenia dla wyświetlanej nazwy zakładki |
type |
string | Wymagane. Unikalny identyfikator kategorii |
icon |
string | Nazwa ikony FontAwesome |
webhookKey |
string | Klucz webhooka Discorda do logowania wiadomości z tej kategorii |
command |
string / string[] | Komenda(-y) czatu kierująca do tej kategorii |
placeholder |
string | Klucz tłumaczenia dla tekstu zastępczego (placeholder) pola wprowadzania |
distance |
number | Maksymalna odległość dostarczenia w metrach; puste dla globalnej |
maxLength |
number | Maksymalna długość znaków wiadomości |
permissions |
string[] | Wymagane uprawnienia ACE do wyświetlania/używania kategorii |
jobs |
table | Wymagane prace — true = wszystkie stopnie, number[] = konkretne stopnie |
gangs |
table | Wymagane gangi — taka sama struktura jak jobs |
tags |
table[] | Stałe tagi pokazywane przed wiadomościami (tag, textColor, bgColor) |
color |
RGB | Domyślny kolor tekstu wiadomości { r, g, b } |
showPlayerName |
table | active, censored, bgColor, textColor, showWearingMask |
showPlayerId |
table | active, type = "serverId", kolory |
showPlayerJob |
table | active, showLabel, showGrade, kolory, nadpisania dla konkretnych prac |
discordTag |
table | active, maxShow, roles[] (rola Discorda → tag) |
showHour |
table | active, kolory — dodaje godzinę wysłania wiadomości |
Cenzurowanie nazw wyświetla zamaskowaną nazwę (np. J*** D**). Jeśli gracz ma założoną maskę, jego imię jest ukrywane jako Nieznany, chyba że showWearingMask = true — sprawdzanie maski jest obsługiwane przez config.noneMask w pliku general.lua.