Skip to content

Конфігурація

Конфігурація

Конфігурація BUPA Chat розділена на файли в shared/config/*.lua. Усі ці файли знаходяться в escrow_ignore, тому вони залишаються доступними для редагування після покупки. На цій сторінці розглядаються налаштування загального, відображення, емодзі, емоцій та повідомлень. Категорії та Discord мають власні сторінки.

Загальні — general.lua

Клавіші, звуки, значення за замовчуванням та система масок.

shared/config/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"        -- вкладка у фокусі при відкритті

Повідомлення про вхід / вихід слідують стандартним конварам:

lua
config.showJoinMessages = GetConvarInt('chat_showJoins', 1) == 0
config.showQuitMessages = GetConvarInt('chat_showQuits', 1) == 0

Джерело імені адміністратора в чаті

Категорія admin може відображати джерело імені, відмінне від імені персонажа:

shared/config/general.lua
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

shared/config/display.lua
config.pm = {
    active = true,
    command = { "pm", "dm" },     -- надіслати особисте повідомлення
    webhookKey = "chatMessage",   -- ключ логування Discord
    maxLength = 300,
    sender   = { --[[ теги/колір/ім'я/id/робота/discordTag/година для копії відправника ]] },
    receiver = { --[[ та сама структура для копії отримувача ]] },
}

Відправник та отримувач мають незалежне стилізування (теги, color, showPlayerName, showPlayerId, showPlayerJob, discordTag, showHour).

Текст над головою та відображення ID гравця

shared/config/display.lua
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 }.

shared/config/emojis.lua
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

Анімовані крапки над головою гравця під час введення тексту:

shared/config/emotes.lua
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). Кожна емоція може відтворювати анімацію, виводити текст над головою та за бажанням дублювати в чат:

shared/config/emotes.lua
{
    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 (ка