Configuration
Configuration
La configuration de BUPA Chat est répartie dans shared/config/*.lua. Tous ces fichiers se trouvent dans escrow_ignore, ils restent donc modifiables après l'achat. Cette page détaille les paramètres généraux, d'affichage, d'emojis, d'emotes et de messages. Les catégories et Discord ont leurs propres pages.
Général — general.lua
Touches, sons, valeurs par défaut et système de masques.
config.chatKey = "T" -- key to open the chat input
config.chatVisibilityKey = "" -- key to cycle visibility mode ("" = unbound)
config.clearCommand = { "clear", "temizle" } -- commands that clear chat history
config.closeOnOutsideClick = true -- click outside closes the input
config.typingSound = true -- keyboard sound while typing
config.allowNoSlashCommands = true -- run commands without a leading slash
config.uiUpdateRate = 24 -- ms update rate for head indicators
config.defaultAddTag = true -- first arg becomes a tag when no tags given
config.showPrintsOnChat = false -- mirror server prints into chat
config.discordTagCacheTime = 60 * 60 -- Discord role cache (seconds)
config.defaultChatCategory = "command" -- tab focused on openLes messages de connexion / déconnexion suivent les convars standard :
config.showJoinMessages = GetConvarInt('chat_showJoins', 1) == 0
config.showQuitMessages = GetConvarInt('chat_showQuits', 1) == 0Source du nom pour le chat administrateur
La catégorie admin peut afficher une source de nom différente de celle du personnage :
config.adminChatName = {
mode = "discord", -- "character" | "steam" | "discord"
discord = {
botToken = "", -- required for "discord" mode
guildId = "",
cacheTime = 600, -- nick cache seconds
fallback = "steam", -- used when a nick can't be resolved
},
}Noms prenant en compte les masques — config.noneMask
config.noneMask liste les éléments de masque (par modèle de ped, collection et index) qui ne doivent pas masquer le nom d'un joueur dans le chat. Lorsqu'il est actif, le nom d'un joueur masqué s'affiche en tant que Inconnu à moins que la catégorie ne définisse showWearingMask = true, ou que le masque porté ne figure dans cette liste blanche.
Affichage — display.lua
Messages privés — config.pm
config.pm = {
active = true,
command = { "pm", "dm" }, -- send a private message
webhookKey = "chatMessage", -- Discord log key
maxLength = 300,
sender = { --[[ tags/color/name/id/job/discordTag/hour for the sender copy ]] },
receiver = { --[[ same shape for the receiver copy ]] },
}L'expéditeur et le destinataire ont chacun un style indépendant (tags, color, showPlayerName, showPlayerId, showPlayerJob, discordTag, showHour).
Texte au-dessus de la tête et affichage de l'ID joueur
config.headTextMaxStack = 4 -- max head texts stacked on one player
config.playerIdDisplay = {
active = false, -- show IDs above heads while chat is open
showOwn = true, -- include your own ID
dist = 5.0, -- max display distance (m)
template = "[{serverId}] {discordId}", -- {serverId}{name}{steamId}{discordId}{fivemId}
headText = { bone = 31086, offset = vector3(0.3, 0.0, 0.0), maxRenderDist = 30.0 },
cssStyle = { color = "#fff", fontSize = "1.8vh", fontWeight = "600" },
}Le template prend en charge les espaces réservés {serverId}, {name}, {steamId}, {discordId}, {fivemId}, les sauts de ligne \n ainsi que le HTML/CSS en ligne.
Emojis — emojis.lua
Le sélecteur d'emojis est entièrement piloté par les données. Chaque catégorie est sous la forme { tab = "<icon emoji>", label = "<HEADER>", list = { ... } } et chaque emoji est { emoji, name, code }.
config.emojis = {
{
tab = "😀", label = "SMILEYS",
list = {
{ emoji = "😀", name = "Grinning", code = ":grinning:" },
{ emoji = "😂", name = "Joy", code = ":joy:" },
-- ...
},
},
-- GESTURES (👍), SYMBOLS (❤️), OBJECTS (🚗)
}Fourni avec quatre groupes — Smileys, Gestes, Symboles et Objets. Ajoutez, supprimez ou réorganisez librement ; code est le shortcode recherchable affiché sous l'aperçu.
Emotes — emotes.lua
Indicateur de frappe — config.chatOpenEmote
Points animés au-dessus de la tête d'un joueur pendant qu'il tape :
config.chatOpenEmote = {
active = true,
texts = { { text = "•", time = 500 }, { text = "••", time = 500 }, { text = "•••", time = 500 } },
cssStyle = { color = "#fff", fontSize = "1.6vh" },
dist = 8.0, -- how far others can see it (m)
}
config.emoteOneAtATime = true -- one active instance of each emote command per playerCommandes d'emote — config.emoteCommands
Fourni avec /me, /do, /dice (/zar) et /rps (/tkm). Chaque emote peut jouer une animation, afficher du texte au-dessus de la tête et éventuellement le refléter dans le chat :
{
command = "me",
desc = "EMOTE_ME_COMMAND_DESC",
webhookKey = "emoteCommand", -- Discord log (optional)
dist = 8.0,
time = 10000, -- head text duration (ms)
template = "{text}", -- {text} {playerName} {playerCensoredName}
cssStyle = { color = "#b6a8ff", fontStyle = "italic" },
sendToChat = { active = true, tags = { { tag = "ME" } }, color = { 182, 168, 255 } },
}Champs additionnels : anim (dict, clip, flag, duration), headText (os/décalage/échelle), params (arguments personnalisés saisis avec des clés d'aide) et msgCb(args) pour une sortie calculée (utilisé par /dice et /rps).
Messages — messages.lua
Diffusions automatiques, messages de bienvenue et style des événements txAdmin — tous désactivés par défaut.
config.autoMessages = {
active = false,
messages = {
{ interval = 3600000, tags = { { tag = "Auto Message" } }, color = { 88, 166, 255 },
args = { "Test message for auto message (1)" } },
},
}
config.welcomeMessages = {
active = false,
messages = { { tags = { { tag = "Welcome" } }, color = { 255, 255, 255 },
args = { "Welcome to the BUPA Test server!" }