Skip to content

Catégories de chat

Chat Categories

Les catégories correspondent aux onglets dans la zone de saisie du chat. Chacune représente un canal distinct doté de ses propres couleurs, tags, permissions, règles de diffusion et badges d'identité. Elles sont configurées dans shared/config/categories.lua via config.chatCategories.

L'onglet Commandes intégré

Une catégorie de type command est toujours injectée comme premier onglet au démarrage (depuis shared/main.lua) — vous n'avez pas besoin de la définir vous-même :

shared/main.lua
table.insert(config.chatCategories, 1, {
    label = "CATEGORY_COMMANDS_LABEL",
    type = "command",
    icon = "terminal",
    placeholder = "CATEGORY_COMMANDS_PLACEHOLDER",
})

Tout ce qui est saisi dans cet onglet est exécuté en tant que commande. Avec config.allowNoSlashCommands = true, le nom d'une commande connue fonctionne avec ou sans slash au début (saisir me bonjour exécute /me bonjour).

Ce qui est activé par défaut

Par défaut, seule la catégorie Admin est active dans config.chatCategories. Des exemples prêts à l'emploi pour OOC (Global), OOC (Local/le plus proche), Police, EMS et Gang sont inclus dans le fichier mais mis en commentaire — il vous suffit de les décommenter et de les ajuster selon vos besoins.

Catégorie type Comment l'accès est restreint
Commandes command Toujours présent (auto-injecté)
Admin admin Permissions ACE command / admin / adminchat
OOC (Global) ooc Ouvert à tout le monde (exemple)
OOC (Local) oocclosest Proximité — distance en mètres (exemple)
Police pdchat jobs = { police = {...grades} } (exemple)
EMS emschat jobs = { ambulance = true } (exemple)
Gang gang gangs = { ... } (exemple)

Catégorie par défaut

config.defaultChatCategory détermine quel onglet est sélectionné par défaut à l'ouverture du chat :

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

Commandes avec ou sans slash

shared/config/general.lua
--- true  = les commandes fonctionnent AVEC et SANS slash au début ("me bonjour" exécute /me)
--- false = les commandes ne s'activent qu'avec un slash au début ("/me bonjour")
config.allowNoSlashCommands = true

Paramètres des catégories

Chaque catégorie prend en charge un ensemble complet de champs. Voici un exemple épuré :

shared/config/categories.lua
{
    label = "CATEGORY_ADMIN_LABEL",  -- clé de traduction pour le nom de l'onglet
    type = "admin",                  -- identifiant unique pour cette catégorie
    icon = "shield-alt",             -- icône FontAwesome
    webhookKey = "chatMessage",      -- webhook de journalisation Discord (voir Journalisation Discord)
    placeholder = "CATEGORY_ADMIN_PLACEHOLDER",
    permissions = { "command", "admin", "adminchat" }, -- permissions ACE requises
    maxLength = 500,                 -- longueur maximale du message
    tags = {                         -- tag(s) fixe(s) affiché(s) avant le message
        { tag = "Admin", textColor = { 51, 51, 51 }, bgColor = { 255, 105, 97 } },
    },
    color = { 255, 105, 97 },        -- couleur par défaut du texte du message
    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 },
}

Référence complète des champs (tous optionnels sauf indication contraire) :

Champ Type Description
label string Clé de traduction pour le nom affiché de l'onglet
type string Requis. Identifiant unique de la catégorie
icon string Nom de l'icône FontAwesome
webhookKey string Clé du webhook Discord pour consigner les messages de cette catégorie
command string / string[] Commande(s) de chat redirigée(s) vers cette catégorie
placeholder string Clé de traduction pour le texte indicatif de la zone de saisie
distance number Distance maximale de diffusion en mètres ; à omettre pour une portée globale
maxLength number Nombre maximal de caractères par message
permissions string[] Permissions ACE requises pour voir/utiliser la catégorie
jobs table Métiers requis — true = tous les grades, number[] = grades spécifiques
gangs table Gangs requis — même structure que jobs
tags table[] Tags fixes affichés avant les messages (tag, textColor, bgColor)
color RGB Couleur par défaut du texte du message { r, g, b }
showPlayerName table active, censored, bgColor, textColor, showWearingMask
showPlayerId table active, type = "serverId", couleurs
showPlayerJob table active, showLabel, showGrade, couleurs, surcharges par métier
discordTag table active, maxShow, roles[] (rôle Discord → tag)
showHour table active, couleurs — ajoute l'horodatage du message

La censure des noms affiche un nom masqué (ex. : J*** D**). Si un joueur porte un masque, son nom est masqué en tant qu'Inconnu sauf si showWearingMask = true — la vérification du masque est gérée par config.noneMask dans general.lua.