Skip to content

:bupagift: Chat Categories

Chat Categories

Категории — это вкладки в поле ввода чата. Каждая из них представляет собой отдельный канал со своими собственными цветами, тегами, правами, правилами доставки и значками идентификации. Они определяются в shared/config/categories.lua как config.chatCategories.

Вкладка встроенных команд

Категория command всегда добавляется как первая вкладка при запуске (из shared/main.lua) — вам не нужно определять её самостоятельно:

shared/main.lua
table.insert(config.chatCategories, 1, {
    label = "CATEGORY_COMMANDS_LABEL",
    type = "command",
    icon = "terminal",
    placeholder = "CATEGORY_COMMANDS_PLACEHOLDER",
})

Все, что вводится в этой вкладке, выполняется как команда. При установке config.allowNoSlashCommands = true известная команда работает как с косой чертой, так и без неё (ввод me hi выполняет команду /me hi).

Что включено по умолчанию

По умолчанию в config.chatCategories активна только категория Admin. Готовые к использованию примеры для OOC (Global), OOC (Local/closest), Police, EMS и Gang уже добавлены в файл, но закомментированы — раскомментируйте и настройте их по своему усмотрению.

Категория type Как настраивается доступ
Commands command Всегда присутствует (добавляется автоматически)
Admin admin ACE-права command / admin / adminchat
OOC (Global) ooc Доступно для всех (пример)
OOC (Local) oocclosest Пространственная близость — distance в метрах (пример)
Police pdchat jobs = { police = {...grades} } (пример)
EMS emschat jobs = { ambulance = true } (пример)
Gang gang gangs = { ... } (пример)

Категория по умолчанию

Параметр config.defaultChatCategory определяет, какая вкладка будет активна при открытии чата:

shared/config/general.lua
config.defaultChatCategory = "command"

Команды с косой чертой и без неё

shared/config/general.lua
--- true  = команды работают С косой чертой и БЕЗ неё ("me hi" выполняет /me)
--- false = команды срабатывают только с косой чертой ("/me hi")
config.allowNoSlashCommands = true

Параметры категорий

Каждая категория поддерживает богатый набор полей. Пример сокращенного вида:

shared/config/categories.lua
{
    label = "CATEGORY_ADMIN_LABEL",  -- ключ перевода для названия вкладки
    type = "admin",                  -- уникальный ID для этой категории
    icon = "shield-alt",             -- иконка FontAwesome
    webhookKey = "chatMessage",      -- Discord вебхук для логов (см. Discord Logging)
    placeholder = "CATEGORY_ADMIN_PLACEHOLDER",
    permissions = { "command", "admin", "adminchat" }, -- требуемые ACE-права
    maxLength = 500,                 -- макс. длина сообщения
    tags = {                         -- фиксированный(-ые) тег(-и), отображаемый(-ые) перед сообщением
        { tag = "Admin", textColor = { 51, 51, 51 }, bgColor = { 255, 105, 97 } },
    },
    color = { 255, 105, 97 },        -- цвет текста сообщения по умолчанию
    showPlayerName = { active = true, censored = false, showWearingMask = true },
    showPlayerId   = { active = false, type = "serverId" },
    showPlayerJob  = { active = false, showLabel = true, showGrade = false },
    discordTag     = { active = false, maxShow = 1, roles = { ... } },
    showHour       = { active = true },
}

Полный справочник по полям (все опциональные, если не указано иное):

Поле Тип Описание
label string Ключ перевода для отображаемого названия вкладки
type string Обязательно. Уникальный идентификатор категории
icon string Название иконки FontAwesome
webhookKey string Ключ Discord вебхука для логирования сообщений этой категории
command string / string[] Команда(-ы) чата, направляющая в эту категорию
placeholder string Ключ перевода для текста-подсказки в поле ввода
distance number Максимальная дальность доставки в метрах; опустите для глобального
maxLength number Максимальная длина сообщения в символах
permissions string[] Требуемые ACE-права для просмотра/использования категории
jobs table Требуемые работы — true = все ранги, number[] = конкретные ранги
gangs table Требуемые банды — та же структура, что и у jobs
tags table[] Фиксированные теги перед сообщением (tag, textColor, bgColor)
color RGB Цвет текста сообщения по умолчанию { r, g, b }
showPlayerName table active, censored, bgColor, textColor, showWearingMask
showPlayerId table active, type = "serverId", цвета
showPlayerJob table active, showLabel, showGrade, цвета, переопределения для работ
discordTag table active, maxShow, roles[] (роль Discord → тег)
showHour table active, цвета — добавляет время отправки сообщения

Цензура имен отображает замаскированное имя (например, J*** D**). Если игрок носит маску, его имя скрывается как Unknown, пока не установлено showWearingMask = true — проверка маски управляется параметром config.noneMask в general.lua.