Настройка
Основные параметры находятся в config.lua. Два файла моста (bridge) открыты для редактирования, чтобы вы могли адаптировать интеграцию со своим фреймворком. Сам планшет представляет собой обычный HTML в папке html/.
Какой файл за что отвечает
Заголовок раздела «Какой файл за что отвечает»| Файл | За что отвечает | Открыт? |
|---|---|---|
config.lua | Язык, фреймворк, снимки, команда конструктора, живая сетка, доступ к планшету и пропы камер | Да |
bridge/client_bridge.lua | Определение фреймворка, работа игрока, уведомления и текстовые подсказки | Да |
bridge/server_bridge.lua | Определение фреймворка, идентификаторы, работы, используемые предметы, выдача/удаление предметов, уведомления | Да |
items/ | Определения предметов для ox, qb и ESX, а также иконки в items/images/ | Да |
html/ | Планшет: index.html, app.js, app.css, карта (map.js, map.css) и её тайлы в html/tiles/ | Не зашифрован |
locales/*.lua | Все текстовые строки в игре и в планшете | Зашифрован в этой версии |
client/, server/ | Основная логика скрипта | Зашифрован (Escrow) |
Основные настройки — config.lua
Заголовок раздела «Основные настройки — config.lua»| Параметр | Описание | По умолчанию |
|---|---|---|
Config.Locale | Используемый язык интерфейса и уведомлений | 'en' |
Config.Framework | esx, qbcore или auto для автоопределения. На QBox режим auto находит qbcore через слой совместимости; для жёсткой привязки укажите qbcore | 'auto' |
Config.EvidenceEnabled | Включение или отключение фотографий. Если выключено, Пробел в камере и кнопка снимка на сетке ничего не делают | true |
Config.CreatorCommand | Команда для открытия админ-конструктора | 'camcreator' |
Config.CreatorAce | ACE-разрешение, необходимое для конструктора | 'mic_cctvcreator.open' |
Config.LiveGridFPS | Частота обновления сетки в секунду (от 1 до 15; чем выше, тем плавнее картинка и выше нагрузка) | 5 |
Config.BlackScreenBehindUI | Рисует чёрный фон позади планшета, чтобы скрыть переключения между камерами при обновлении сетки | true |
Config.AllowedJobs | Работы, которым разрешено открывать планшет. Пустая таблица означает доступ для всех. Подробнее ниже | {} |
Config.SpawnDistance | На каком расстоянии должен находиться игрок, чтобы заспавнился проп камеры | 60.0 |
Config.BreakableCamera | Можно ли вообще сломать камеры | true |
Config.RepairDistance | Дальность действия ремонтного лазера | 20.0 |
Config.RepairTime | Длительность ремонта в миллисекундах | 5000 |
Кто видит какие камеры
Заголовок раздела «Кто видит какие камеры»С этим стоит определиться до того, как игроки начнут устанавливать камеры.
Config.AllowedJobs пуст (по умолчанию)
Заголовок раздела «Config.AllowedJobs пуст (по умолчанию)»- Любой игрок с предметом
cctv_tabletможет открыть планшет. - Установленная игроком камера является личной: её видит только он сам.
- Владелец может поделиться ею со своей работой — тогда она станет рабочей камерой для всех сотрудников этой фракции — либо задать для неё имя доступа и пароль. Любой, кто введёт эти данные в своём планшете, добавит камеру к себе.
В Config.AllowedJobs указаны работы (например, полиция и шерифы)
Заголовок раздела «В Config.AllowedJobs указаны работы (например, полиция и шерифы)»- Только эти работы могут открыть планшет; всем остальным выводится уведомление об отсутствии доступа.
- Любая установленная игроком камера автоматически становится рабочей камерой для той работы, на которой он находится в момент установки.
Камеры из админ-конструктора
Заголовок раздела «Камеры из админ-конструктора»Всегда являются рабочими камерами и видны всем работам, отмеченным галочкой при создании. Если в конструкторе не отмечена ни одна работа, камеру не увидит никто.
Улики и журнал безопасности
Заголовок раздела «Улики и журнал безопасности»- Снимок с личной камеры виден только тому, кто его сделал. Снимок с рабочей камеры принадлежит всей работе. Любой снимок можно расшарить для своей работы из галереи.
- Записи о взломе/поломке отображаются для всех доступных вам камер — 30 последних событий. Ремонт камеры очищает её журнал.
Снятие камеры
Заголовок раздела «Снятие камеры»Владелец может удалить свою камеру через планшет и получить предмет обратно в инвентарь.
Поломка и ремонт
Заголовок раздела «Поломка и ремонт»Если включён Config.BreakableCamera, камера переходит в статус offline, когда пуля попадает примерно в метре от неё, либо при ударе в ближнем бою, взрыве или наезде автомобиля. В конструкторе отдельные камеры можно сделать неуязвимыми.
Ремкомплект (cctv_repair) включает лазерный луч. Наведите его на сломанную камеру в пределах Config.RepairDistance, нажмите E и подождите Config.RepairTime. Сам ремкомплект при этом не тратится. Backspace или ESC убирает лазер.
Управление
Заголовок раздела «Управление»Установка камеры (из предмета)
| Клавиша | Действие |
|---|---|
| Движение камеры (взгляд) | Перемещает предпросмотр по поверхности, на которую вы смотрите |
| Колёсико мыши | Вращает камеру |
| E | Устанавливает камеру; появится окно ввода названия |
| Правая кнопка мыши / ESC | Отмена |
Режим просмотра камеры
| Клавиша | Действие |
|---|---|
| W / S | Наклон вверх и вниз |
| A / D | Поворот. Настенные и столбовые камеры ограничены 45° в обе стороны; модели 360° вращаются полностью |
| Колёсико мыши | Приближение (зум) |
| Enter | Переключение между обычным режимом, ночным видением и тепловизором |
| Пробел | Сделать снимок для галереи улик |
| Backspace / ESC | Вернуться к планшету |
Админ-конструктор (/camcreator)
Выберите модель (настенная, настенная 360, столбовая, столбовая 360), базовое имя, работы с доступом к просмотру и возможность поломки, после чего перейдите в режим размещения:
| Клавиша | Действие |
|---|---|
| ← / → | Сменить модель |
| Колёсико мыши | Вращать |
| E | Установить; появится окно ввода названия |
| Правая кнопка мыши / ESC | Вернуться в меню конструктора |
Команды и права
Заголовок раздела «Команды и права»| Команда | Кто может использовать | Описание |
|---|---|---|
/camcreator | Игроки с разрешением Config.CreatorAce | Открывает админ-конструктор. Изменить команду можно в Config.CreatorCommand |
Выдайте права в server.cfg строкой add_ace для нужной группы, например разрешив mic_cctvcreator.open группе group.admin. Если вы изменили Config.CreatorAce, выдавайте разрешение на новое имя.
Экспорты
Заголовок раздела «Экспорты»Клиентские экспорты для других ресурсов, которым нужна информация о камерах:
| Экспорт | Аргументы | Возвращает |
|---|---|---|
GetCameraStatus | id камеры | 'online', 'broken' или 'offline', если id неизвестен |
GetCameraIdFromEntity | entity handle | ID камеры для заспавненного пропа камеры или ничего |
IsPlacing | — | true, пока игрок находится в режиме установки камеры |
HideNearbyCamera | coords | Скрывает ближайший проп камеры в радиусе 2 м и возвращает его |
UnhideCamera | prop | Снова показывает проп, скрытый через HideNearbyCamera |
В комплекте одиннадцать языков: en, es, fr, de, it, pt, ar, ja, pl, ru, tr. Укажите нужный код в Config.Locale. И планшет, и внутриигровые уведомления используют один и тот же файл.
В текущей версии файлы в папке locales/ входят в защищённую часть кода, поэтому редактировать их напрямую нельзя. Если вам нужен другой язык или иная формулировка фраз, напишите нам в Discord.
Мост (Bridge)
Заголовок раздела «Мост (Bridge)»| Файл | За что отвечает |
|---|---|
bridge/client_bridge.lua | Определение фреймворка, Bridge.GetPlayerJob, Bridge.Notify, а также Bridge.ShowTextUI / Bridge.HideTextUI для подсказки ремонта |
bridge/server_bridge.lua | Определение фреймворка, Bridge.GetPlayerIdentifier, Bridge.GetPlayerJob, Bridge.RegisterUsableItem, Bridge.AddItem, Bridge.AddItemWithMetadata, Bridge.RemoveItem, Bridge.Notify |
Другой ресурс уведомлений: измените функцию Bridge.Notify в обоих файлах.
Другой Text UI (ox_lib, okok…): отредактируйте Bridge.ShowTextUI и Bridge.HideTextUI в клиентском файле. На QBCore используется стандартный DrawText от QBCore, в остальных случаях — нативная игровая подсказка.
Инвентарь: если запущен ox_inventory, добавление и удаление предметов проходит через него на любом фреймворке. Иначе используются стандартные функции самого фреймворка.
Другой фреймворк: укажите Config.Framework и заполните блок определения, а также функции идентификатора, работы и предметов в обоих файлах. Без фреймворка скрипт переключается на идентификатор license: и считает всех unemployed, однако используемые предметы (включая планшет) регистрируются только на ESX и QBCore (включая QBox через совместимость с QBCore).