Конфігурація
Конфігурація
Конфігурація BUPA Chat розділена на файли в shared/config/*.lua. Усі ці файли знаходяться в escrow_ignore, тому вони залишаються доступними для редагування після покупки. На цій сторінці розглядаються налаштування загального, відображення, емодзі, емоцій та повідомлень. Категорії та Discord мають власні сторінки.
Загальні — general.lua
Клавіші, звуки, значення за замовчуванням та система масок.
config.chatKey = "T" -- клавіша для відкриття введення чату
config.chatVisibilityKey = "" -- клавіша для перемикання режиму видимості ("" = не призначено)
config.clearCommand = { "clear", "temizle" } -- команди, що очищують історію чату
config.closeOnOutsideClick = true -- клік за межами закриває поле введення
config.typingSound = true -- звук клавіатури під час введення
config.allowNoSlashCommands = true -- виконання команд без початкового слеша
config.uiUpdateRate = 24 -- частота оновлення (мс) для індикаторів над головою
config.defaultAddTag = true -- перший аргумент стає тегом, якщо теги не вказано
config.showPrintsOnChat = false -- дублювання виводу сервера в чат
config.discordTagCacheTime = 60 * 60 -- кеш ролей Discord (секунди)
config.defaultChatCategory = "command" -- вкладка у фокусі при відкриттіПовідомлення про вхід / вихід слідують стандартним конварам:
config.showJoinMessages = GetConvarInt('chat_showJoins', 1) == 0
config.showQuitMessages = GetConvarInt('chat_showQuits', 1) == 0Джерело імені адміністратора в чаті
Категорія admin може відображати джерело імені, відмінне від імені персонажа:
config.adminChatName = {
mode = "discord", -- "character" | "steam" | "discord"
discord = {
botToken = "", -- обов'язково для режиму "discord"
guildId = "",
cacheTime = 600, -- секунди кешу нікнейму
fallback = "steam", -- використовується, коли нікнейм не вдається визначити
},
}Імена з урахуванням масок — config.noneMask
config.noneMask перераховує елементи масок (за моделлю педа, колекцією та індексом), які не повинні приховувати ім'я гравця в чаті. Коли це активно, ім'я маскованого гравця відображається як Невідомо, якщо категорія не встановлює showWearingMask = true або якщо надіта маска є в цьому списку дозволених.
Відображення — display.lua
Особисті повідомлення — config.pm
config.pm = {
active = true,
command = { "pm", "dm" }, -- надіслати особисте повідомлення
webhookKey = "chatMessage", -- ключ логування Discord
maxLength = 300,
sender = { --[[ теги/колір/ім'я/id/робота/discordTag/година для копії відправника ]] },
receiver = { --[[ та сама структура для копії отримувача ]] },
}Відправник та отримувач мають незалежне стилізування (теги, color, showPlayerName, showPlayerId, showPlayerJob, discordTag, showHour).
Текст над головою та відображення ID гравця
config.headTextMaxStack = 4 -- макс. кількість текстів над головою одного гравця
config.playerIdDisplay = {
active = false, -- показувати ID над головами, поки чат відкритий
showOwn = true, -- включати власний ID
dist = 5.0, -- макс. відстань відображення (м)
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.lua
Вибір емодзі повністю базується на даних. Кожна категорія має вигляд { 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 (Об'єкти). Додавайте, видаляйте або змінюйте порядок на власний розсуд; code — це шорткод для пошуку, що відображається під попереднім переглядом.
Емоції (Емоти) — emotes.lua
Індикатор введення — 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, -- на якій відстані інші можуть це бачити (м)
}
config.emoteOneAtATime = true -- один активний екземпляр кожної команди емоцій на гравцяКоманди емоцій — config.emoteCommands
Містить /me, /do, /dice (/zar) та /rps (/tkm). Кожна емоція може відтворювати анімацію, виводити текст над головою та за бажанням дублювати в чат:
{
command = "me",
desc = "EMOTE_ME_COMMAND_DESC",
webhookKey = "emoteCommand", -- Лог Discord (опціонально)
dist = 8.0,
time = 10000, -- тривалість тексту над головою (мс)
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 (кістка/зміщення/масштаб), params (ка