Настройка
Почти всё находится в config.lua. Остальное — тексты, данные и тонкий слой, который общается с вашим фреймворком.
Какой файл за что отвечает
Заголовок раздела «Какой файл за что отвечает»| Файл | За что отвечает | Можно править |
|---|---|---|
config.lua | Фреймворк, язык, кто может красить, предметы, названия команд, маркеры мастерских | Да |
locales/*.lua | Каждое уведомление и подсказка в чате, по файлу на язык | Да |
locales/main.lua | Функция, выбирающая текст для Config.Locale | Да |
bridge/server.lua | Определение фреймворка, уведомления, проверка администратора, работы, используемые предметы, удаление предметов | Да |
bridge/client.lua | Определение фреймворка и уведомления на стороне игрока | Да |
items/ox.lua, items/qb.lua, items/sql.sql | Готовые определения предметов, которые нужно скопировать в ваш инвентарь | Да |
permissions.json | Steam ID, которым разрешено открывать меню. Записывается командами give и remove | Да |
vehicle_original_colors.json | Цвет каждой окрашенной машины до первой покраски, по модели и номерному знаку | Да |
html/ui.html, html/style.css, html/script.js | Меню: заголовок, образцы и внешний вид | — |
data/, stream/ | Определения красок и текстуры рамп для цветов с 223 по 242 | Не трогайте |
client/main.lua, server/main.lua | Логика | Под escrow |
Общие настройки
Заголовок раздела «Общие настройки»| Параметр | Что делает | По умолчанию |
|---|---|---|
Config.Framework | "auto", "esx" или "qbcore". Auto использует тот из es_extended и qb-core, который запущен; QBox считается qb-core через слой совместимости с QBCore. При принудительной настройке для QBox используйте "qbcore" | "auto" |
Config.Locale | Язык всех сообщений. См. раздел «Языки» ниже | "es" |
Config.PermissionFile | Название JSON-файла, в котором хранится список прав | "permissions.json" |
Кто может открывать меню
Заголовок раздела «Кто может открывать меню»| Параметр | Что делает | По умолчанию |
|---|---|---|
Config.Permissions | Использовать список прав из permissions.json | true |
Config.UseJobs | Разрешить открывать меню также работам из Config.AuthorizedJobs | true |
Config.AuthorizedJobs | Названия работ, которым разрешено, когда включён UseJobs | mechanic, police |
Два переключателя сочетаются так:
Permissions | UseJobs | Кто может открыть меню |
|---|---|---|
| вкл. | вкл. | Игроки из списка и все, чья работа указана в AuthorizedJobs |
| вкл. | выкл. | Только игроки из списка |
| выкл. | вкл. или выкл. | Все |
Список привязан к идентификатору Steam. Игрока без Steam добавить нельзя; команда give ответит, что не смогла получить его идентификатор Steam.
Предметы
Заголовок раздела «Предметы»| Параметр | Что делает | По умолчанию |
|---|---|---|
Config.UseItems | Зарегистрировать 82 предмета-краски и предмет сброса как используемые | true |
Config.ItemsRequirePermission | Применять к предметам-краскам те же правила, что и к меню. Если выключено, воспользоваться может любой, у кого предмет в руках | false |
Предмет сброса никогда не запрашивает права. Названия предметов и расположение их определений указаны в разделе Установка.
Команды
Заголовок раздела «Команды»Каждое название задаётся в config.lua без слэша.
| Параметр | По умолчанию | Кто | Что делает |
|---|---|---|---|
Config.Chameleon | /chameleon | Любой, кому разрешено правилами выше | Открывает меню. Нужно находиться в транспорте |
Config.ChameleonReset | /chameleonreset | Любой | Возвращает машине, в которой вы сидите, исходный цвет |
Config.ChameleonGive | /chameleongive [ID] | Администраторы | Добавляет Steam ID этого игрока в список прав |
Config.ChameleonRemove | /chameleonremove [ID] | Администраторы | Убирает его из списка |
«Администратор» — это группа admin или superadmin на ESX и право admin или god на QBCore. Обе проверки находятся в bridge/server.lua, если у вас они называются иначе.
Маркеры мастерских
Заголовок раздела «Маркеры мастерских»Config.Locations — это список; добавляйте сколько угодно записей. В каждой есть:
| Поле | Что делает | Значение в поставке |
|---|---|---|
coords | Где находится маркер | Две примерные точки рядом с Burton |
radius | На каком расстоянии (в метрах) нужно быть, чтобы появилась подсказка | 3.0 |
markerType | Рисуемый маркер FiveM | 1 (кольцо на земле) |
markerColor | Красный, зелёный, синий и альфа-канал | Красный у одного, зелёный у другого, альфа 100 |
markerScale | Его размер | 2.0 × 2.0 × 1.0 |
notification | Текст подсказки внутри радиуса | Press ~INPUT_CONTEXT~ to open the Chameleon menu |
Маркер рисуется с расстояния 10 метров. Подсказка появляется только внутри radius и в транспорте; затем E открывает меню с той же проверкой прав, что и у команды.
Текст notification находится в config.lua, а не в локалях, поэтому переводите его там.
html/ui.html содержит образцы — по одному на каждый ID цвета от 161 до 242 — и заголовок меню «Chameleon Paintings», который прописан прямо на странице и не берётся из локалей. html/style.css задаёт каждому образцу цвет предпросмотра.
В locales/ поставляются девять: en, es, fr, de, it, pt, pl, ru и tr. Установите в Config.Locale один из этих кодов.
Чтобы добавить новый:
- Скопируйте
locales/en.luaв новый файл, напримерlocales/nl.lua. - Измените код языка в начале нового файла на
nlи переведите текст. - Добавьте
locales/nl.luaи вclient_scripts, и вserver_scriptsвfxmanifest.lua, рядом с другими файлами локалей. - Установите
Config.Locale = "nl", затем выполнитеrefreshи перезапустите ресурс.
Отсутствующий ключ отображается как Translation [key] does not exist и ничего не ломает, поэтому недоделанный файл легко заметить.
Два файла в bridge/ — единственные места, где ресурс обращается к вашему фреймворку.
| Файл | Что делает |
|---|---|
bridge/server.lua | Находит фреймворк, отправляет уведомления (esx:showNotification или QBCore:Notify), решает, кто администратор, читает работу игрока, регистрирует используемые предметы и удаляет предмет после использования |
bridge/client.lua | Находит фреймворк на стороне игрока и показывает уведомления (ESX.ShowNotification или QBCore.Functions.Notify) |
Если фреймворк не найден, уведомления откатываются на сообщения в чате.
Адаптация. Чтобы использовать собственный скрипт уведомлений, замените тело Bridge.Notify в обоих файлах. Для собственной системы администраторов измените Bridge.IsAdmin. Для фреймворка, который не является ESX, QBCore или QBox, заполните каждую функцию Bridge. в bridge/server.lua — определение фреймворка, Notify, IsAdmin, GetPlayerJob, RegisterUsableItem и RemoveItem — и больше ресурсу ничего не потребуется.