Configuration
कॉन्फ़िगरेशन
BUPA Chat का कॉन्फ़िगरेशन shared/config/*.lua में विभाजित है। ये सभी फ़ाइलें escrow_ignore में हैं, इसलिए ये खरीदने के बाद भी संपादन योग्य रहती हैं। यह पेज सामान्य, डिस्प्ले, इमोजी, इमोट और संदेश सेटिंग्स के बारे में बताता है। श्रेणियों (Categories) और डिस्कॉर्ड (Discord) के अपने अलग पेज हैं।
सामान्य (General) — general.lua
कुंजियाँ, ध्वनियाँ, डिफ़ॉल्ट और मास्क सिस्टम।
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 openजॉइन / क्विट संदेश मानक कॉन्वर्स (convars) का पालन करते हैं:
config.showJoinMessages = GetConvarInt('chat_showJoins', 1) == 0
config.showQuitMessages = GetConvarInt('chat_showQuits', 1) == 0एडमिन चैट नाम स्रोत (Admin chat name source)
admin श्रेणी चरित्र के नाम के बजाय एक अलग नाम स्रोत दिखा सकती है:
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
},
}मास्क-जागरूक नाम (Mask-aware names) — config.noneMask
config.noneMask उन मास्क ड्रेवेबल (पेड मॉडल, कलेक्शन और इंडेक्स द्वारा) को सूचीबद्ध करता है जिन्हें चैट में खिलाड़ी का नाम नहीं छिपाना चाहिए। सक्रिय होने पर, मास्क पहने हुए खिलाड़ी का नाम Unknown के रूप में दिखाया जाता है जब तक कि श्रेणी showWearingMask = true पर सेट न हो, या पहना गया मास्क इस अनुमति-सूची (allow-list) में न हो।
डिस्प्ले (Display) — display.lua
प्राइवेट संदेश (Private messages) — 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 ]] },
}प्रेषक (sender) और प्राप्तकर्ता (receiver) दोनों की अपनी स्वतंत्र स्टाइलिंग होती है (tags, color, showPlayerName, showPlayerId, showPlayerJob, discordTag, `showHour)।
हेड टेक्स्ट और प्लेयर आईडी डिस्प्ले (Head text & player ID display)
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" },
}template प्लेसहोल्डर {serverId}, {name}, {steamId}, {discordId}, {fivemId}, \n लाइन ब्रेक और इनलाइन HTML/CSS का समर्थन करता है।
इमोजी (Emojis) — emojis.lua
इमोजी पिकर पूरी तरह से डेटा-संचालित (data-driven) है। प्रत्येक श्रेणी { tab = "<icon emoji>", label = "<HEADER>", list = { ... } } है और प्रत्येक इमोजी { emoji, name, code } है।
config.emojis = {
{
tab = "😀", label = "SMILEYS",
list = {
{ emoji = "😀", name = "Grinning", code = ":grinning:" },
{ emoji = "😂", name = "Joy", code = ":joy:" },
-- ...
},
},
-- GESTURES (👍), SYMBOLS (❤️), OBJECTS (🚗)
}चार समूहों के साथ आता है — Smileys, Gestures, Symbols और Objects। स्वतंत्र रूप से जोड़ें, हटाएं या पुनर्व्यवस्थित करें; पूर्वावलोकन (preview) के नीचे प्रदर्शित होने वाला code खोज योग्य शॉर्टकोड है।
इमोट्स (Emotes) — emotes.lua
टाइपिंग इंडिकेटर (Typing indicator) — config.chatOpenEmote
टाइप करते समय खिलाड़ी के सिर के ऊपर एनिमेटेड डॉट्स:
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 playerइमोट कमांड (Emote commands) — config.emoteCommands
/me, /do, /dice (/zar) और /rps (/tkm) के साथ आता है। प्रत्येक इमोट एक एनिमेशन चला सकता है, हेड टेक्स्ट रेंडर कर सकता है, और वैकल्पिक रूप से चैट पर मिरर कर सकता है:
{
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 } },
}अतिरिक्त फ़ील्ड: anim (dict, clip, flag, duration), headText (bone/offset/scale), params (सहायता कुंजियों के साथ कस्टम टाइप किए गए तर्क) और गणना किए गए आउटपुट के लिए msgCb(args) (/dice और /rps द्वारा उपयोग किया जाता है)।
संदेश (Messages) — messages.lua
ऑटो ब्रॉडकास्ट, वेलकम मैसेज और txAdmin इवेंट स्टाइलिंग — डिफ़ॉल्ट रूप से सभी बंद हैं।
config.autoMessages = {
active = false,
messages = {
{ interval = 3600000, tags = { { tag = "Auto Message" } }, color = { 88, 166, 255 },
args = { "Test