Chat Categories
Chat-Kategorien
Kategorien sind die Tabs in der Chateingabe. Jede davon ist ein eigener Kanal mit eigenen Farben, Tags, Berechtigungen, Zustellungsregeln und Identitäts-Badges. Sie sind in shared/config/categories.lua als config.chatCategories definiert.
Der integrierte Commands-Tab
Eine command Kategorie wird zur Laufzeit immer als erster Tab eingefügt (aus shared/main.lua) — du musst sie nicht selbst definieren:
table.insert(config.chatCategories, 1, {
label = "CATEGORY_COMMANDS_LABEL",
type = "command",
icon = "terminal",
placeholder = "CATEGORY_COMMANDS_PLACEHOLDER",
})Alles, was in diesem Tab eingegeben wird, wird als Befehl ausgeführt. Mit config.allowNoSlashCommands = true funktioniert ein bekannter Befehlsname mit oder ohne führenden Slash (die Eingabe von me hi führt /me hi aus).
Standardmäßig aktiviert
Standardmäßig ist nur die Admin-Kategorie in config.chatCategories aktiv. Einsatzbereite Beispiele für OOC (Global), OOC (Lokal/nächster), Polizei, EMS und Gang sind in der Datei enthalten, aber auskommentiert — einfach auskommentieren und nach Bedarf anpassen.
| Kategorie | type |
Wie der Zugriff geregelt ist |
|---|---|---|
| Commands | command |
Immer vorhanden (wird automatisch eingefügt) |
| Admin | admin |
ACE-Berechtigungen command / admin / adminchat |
| OOC (Global) | ooc |
Für jeden offen (Beispiel) |
| OOC (Lokal) | oocclosest |
Nähe — distance in Metern (Beispiel) |
| Polizei | pdchat |
jobs = { police = {...grades} } (Beispiel) |
| EMS | emschat |
jobs = { ambulance = true } (Beispiel) |
| Gang | gang |
gangs = { ... } (Beispiel) |
Standardkategorie
config.defaultChatCategory bestimmt, welcher Tab fokussiert wird, wenn sich der Chat öffnet:
config.defaultChatCategory = "command"Mit Slash vs. ohne Slash Befehle
--- true = Befehle funktionieren MIT und OHNE führenden Slash ("me hi" führt /me aus)
--- false = Befehle werden nur mit einem führenden Slash ausgelöst ("/me hi")
config.allowNoSlashCommands = trueKategorie-Parameter
Jede Kategorie unterstützt eine Vielzahl von Feldern. Ein gekürztes Beispiel:
{
label = "CATEGORY_ADMIN_LABEL", -- Übersetzungsschlüssel für den Tab-Namen
type = "admin", -- Eindeutige ID für diese Kategorie
icon = "shield-alt", -- FontAwesome-Icon
webhookKey = "chatMessage", -- Discord-Log-Webhook (siehe Discord Logging)
placeholder = "CATEGORY_ADMIN_PLACEHOLDER",
permissions = { "command", "admin", "adminchat" }, -- Erforderliche ACE-Perms
maxLength = 500, -- Maximale Nachrichtenlänge
tags = { -- Feste(s) Tag(s), das/die vor der Nachricht angezeigt wird/werden
{ tag = "Admin", textColor = { 51, 51, 51 }, bgColor = { 255, 105, 97 } },
},
color = { 255, 105, 97 }, -- Standard-Nachrichtentextfarbe
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 },
}Vollständige Feldreferenz (alle optional, sofern nicht anders angegeben):
| Feld | Typ | Beschreibung |
|---|---|---|
label |
string | Übersetzungsschlüssel für den Anzeigenamen des Tabs |
type |
string | Erforderlich. Eindeutige Kennung für die Kategorie |
icon |
string | FontAwesome-Icon-Name |
webhookKey |
string | Discord-Webhook-Schlüssel zum Protokollieren der Nachrichten dieser Kategorie |
command |
string / string[] | Chat-Befehl(e), die in diese Kategorie weiterleiten |
placeholder |
string | Übersetzungsschlüssel für den Eingabe-Platzhalter |
distance |
number | Maximale Zustellungsentfernung in Metern; für global weglassen |
maxLength |
number | Maximale Zeichenlänge der Nachricht |
permissions |
string[] | Erforderliche ACE-Berechtigungen, um die Kategorie zu sehen/zu nutzen |
jobs |
table | Erforderliche Jobs — true = alle Ränge, number[] = spezifische Ränge |
gangs |
table | Erforderliche Gangs — gleiche Struktur wie jobs |
tags |
table[] | Feste Tags, die vor Nachrichten angezeigt werden (tag, textColor, bgColor) |
color |
RGB | Standard-Nachrichtentextfarbe { r, g, b } |
showPlayerName |
table | active, censored, bgColor, textColor, showWearingMask |
showPlayerId |
table | active, type = "serverId", Farben |
showPlayerJob |
table | active, showLabel, showGrade, Farben, jobspezifische Überschreibungen |
discordTag |
table | active, maxShow, roles[] (Discord-Rolle → Tag) |
showHour |
table | active, Farben — fügt die Nachrichtenzeit hinzu |
Die Namenszensur zeigt einen maskierten Namen an (z. B. J*** D**). Wenn ein Spieler eine Maske trägt, wird sein Name als Unbekannt ausgeblendet, es sei denn, showWearingMask = true — die Maskenprüfung wird durch config.noneMask in general.lua gesteuert.