:bupagift: Chat Categories
Chat Categories
Категории — это вкладки в поле ввода чата. Каждая из них представляет собой отдельный канал со своими собственными цветами, тегами, правами, правилами доставки и значками идентификации. Они определяются в shared/config/categories.lua как config.chatCategories.
Вкладка встроенных команд
Категория command всегда добавляется как первая вкладка при запуске (из 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 определяет, какая вкладка будет активна при открытии чата:
config.defaultChatCategory = "command"Команды с косой чертой и без неё
--- true = команды работают С косой чертой и БЕЗ неё ("me hi" выполняет /me)
--- false = команды срабатывают только с косой чертой ("/me hi")
config.allowNoSlashCommands = trueПараметры категорий
Каждая категория поддерживает богатый набор полей. Пример сокращенного вида:
{
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.