Skip to content

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:

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

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

Mit Slash vs. ohne Slash Befehle

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

Kategorie-Parameter

Jede Kategorie unterstützt eine Vielzahl von Feldern. Ein gekürztes Beispiel:

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