Configuratie
Configuratie
De configuratie van BUPA Chat is verdeeld over shared/config/*.lua. Al deze bestanden staan in escrow_ignore, zodat ze na aankoop bewerkbaar blijven. Deze pagina behandelt de algemene, weergave-, emoji-, emote- en berichtinstellingen. Categorieën en Discord hebben hun eigen pagina's.
Algemeen — general.lua
Toetsen, geluiden, standaarden en het masksysteem.
config.chatKey = "T" -- toets om de chatinvoer te openen
config.chatVisibilityKey = "" -- toets om door zichtbaarheidsmodi te bladeren ("" = niet toegewezen)
config.clearCommand = { "clear", "temizle" } -- commando's die de chatgeschiedenis wissen
config.closeOnOutsideClick = true -- klik buiten de invoer sluit deze
config.typingSound = true -- geluid van toetsenbord tijdens het typen
config.allowNoSlashCommands = true -- voer commando's uit zonder leidende slash
config.uiUpdateRate = 24 -- ms update-frequentie voor hoofdaanduidingen
config.defaultAddTag = true -- eerste argument wordt een tag wanneer geen tags zijn opgegeven
config.showPrintsOnChat = false -- spiegel server prints in de chat
config.discordTagCacheTime = 60 * 60 -- Discord-rol cache (seconden)
config.defaultChatCategory = "command" -- tabblad waarop wordt gefocust bij openenJoin- / quit-berichten volgen de standaard convars:
config.showJoinMessages = GetConvarInt('chat_showJoins', 1) == 0
config.showQuitMessages = GetConvarInt('chat_showQuits', 1) == 0Bron van admin chatnaam
De admin categorie kan een andere naambron tonen dan de karakternaam:
config.adminChatName = {
mode = "discord", -- "character" | "steam" | "discord"
discord = {
botToken = "", -- vereist voor "discord" modus
guildId = "",
cacheTime = 600, -- nick cache seconden
fallback = "steam", -- wordt gebruikt wanneer een nick niet kan worden achterhaald
},
}Masker-bewuste namen — config.noneMask
config.noneMask bevat een lijst met masker-drawables (op basis van ped-model, collectie en index) die de naam van een speler in de chat niet mogen verbergen. Wanneer actief, wordt de naam van een gemaskerde speler weergegeven als Onbekend, tenzij de categorie showWearingMask = true instelt, of het gedragen masker in deze witte lijst staat.
Weergave — display.lua
Privéberichten — config.pm
config.pm = {
active = true,
command = { "pm", "dm" }, -- stuur een privébericht
webhookKey = "chatMessage", -- Discord log-sleutel
maxLength = 300,
sender = { --[[ tags/kleur/naam/id/job/discordTag/uur voor de kopie van de verzender ]] },
receiver = { --[[zelfde structuur voor de kopie van de ontvanger ]] },
}Verzender en ontvanger hebben elk onafhankelijke styling (tags, color, showPlayerName, showPlayerId, showPlayerJob, discordTag, showHour).
Hoofdtekst & speler-ID weergave
config.headTextMaxStack = 4 -- max hoofdteksten gestapeld op één speler
config.playerIdDisplay = {
active = false, -- toon ID's boven hoofden terwijl de chat open is
showOwn = true, -- inclusief je eigen ID
dist = 5.0, -- maximale weergaveafstand (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" },
}De template ondersteunt de plaatshouders {serverId}, {name}, {steamId}, {discordId}, {fivemId}, \n regeleinden en inline HTML/CSS.
Emojis — emojis.lua
De emojikiezer is volledig datagestuurd. Elke categorie is { tab = "<icon emoji>", label = "<HEADER>", list = { ... } } en elke emoji is { emoji, name, code }.
config.emojis = {
{
tab = "😀", label = "SMILEYS",
list = {
{ emoji = "😀", name = "Grinning", code = ":grinning:" },
{ emoji = "😂", name = "Joy", code = ":joy:" },
-- ...
},
},
-- GEBAREN (👍), SYMBOLEN (❤️), OBJECTEN (🚗)
}Wordt geleverd met vier groepen — Smileys, Gebaren, Symbolen en Objecten. Voeg vrijelijk toe, verwijder of herschik; code is de doorzoekbare shortcode die onder het voorbeeld wordt weergegeven.
Emotes — emotes.lua
Typindicator — config.chatOpenEmote
Geanimeerde stippen boven het hoofd van een speler terwijl deze typen:
config.chatOpenEmote = {
active = true,
texts = { { text = "•", time = 500 }, { text = "••", time = 500 }, { text = "•••", time = 500 } },
cssStyle = { color = "#fff", fontSize = "1.6vh" },
dist = 8.0, -- hoe ver anderen het kunnen zien (m)
}
config.emoteOneAtATime = true -- één actieve instantie van elk emote-commando per spelerEmote-commando's — config.emoteCommands
Wordt geleverd met /me, /do, /dice (/zar) en /rps (/tkm). Elke emote kan een animatie afspelen, hoofdtekst weergeven en optioneel spiegelen naar de chat:
{
command = "me",
desc = "EMOTE_ME_COMMAND_DESC",
webhookKey = "emoteCommand", -- Discord log (optioneel)
dist = 8.0,
time = 10000, -- duur hoofdtekst (ms)
template = "{text}", -- {text} {playerName} {playerCensoredName}
cssStyle = { color = "#b6a8ff", fontStyle = "italic" },
sendToChat = { active = true, tags = { { tag = "ME" } }, color = { 182, 168, 255 } },
}Aanvullende velden: anim (dict, clip, flag, duration), headText (bot/offset/schaal), params (aangepaste getypte argumenten met helpsleutels) en msgCb(args) voor berekende uitvoer (gebruikt door /dice en /rps).
Berichten — messages.lua
Automatische uitzendingen, welkomstberichten en txAdmin-evenementstijlen — alles standaard uitgeschakeld.
config.autoMessages = {
active = false,
messages = {
{ interval = 3600000, tags = { { tag = "Auto Message" } }, color = {