Перейти к содержимому

Настройка

Основные параметры находятся в 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.LocaleИспользуемый язык интерфейса и уведомлений'en'
Config.Frameworkesx, qbcore или auto для автоопределения. На QBox режим auto находит qbcore через слой совместимости; для жёсткой привязки укажите qbcore'auto'
Config.EvidenceEnabledВключение или отключение фотографий. Если выключено, Пробел в камере и кнопка снимка на сетке ничего не делаютtrue
Config.CreatorCommandКоманда для открытия админ-конструктора'camcreator'
Config.CreatorAceACE-разрешение, необходимое для конструктора'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

С этим стоит определиться до того, как игроки начнут устанавливать камеры.

  • Любой игрок с предметом 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, выдавайте разрешение на новое имя.


Клиентские экспорты для других ресурсов, которым нужна информация о камерах:

ЭкспортАргументыВозвращает
GetCameraStatusid камеры'online', 'broken' или 'offline', если id неизвестен
GetCameraIdFromEntityentity handleID камеры для заспавненного пропа камеры или ничего
IsPlacing—true, пока игрок находится в режиме установки камеры
HideNearbyCameracoordsСкрывает ближайший проп камеры в радиусе 2 м и возвращает его
UnhideCamerapropСнова показывает проп, скрытый через HideNearbyCamera

В комплекте одиннадцать языков: en, es, fr, de, it, pt, ar, ja, pl, ru, tr. Укажите нужный код в Config.Locale. И планшет, и внутриигровые уведомления используют один и тот же файл.

В текущей версии файлы в папке locales/ входят в защищённую часть кода, поэтому редактировать их напрямую нельзя. Если вам нужен другой язык или иная формулировка фраз, напишите нам в Discord.


ФайлЗа что отвечает
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).