Skip to content

Конфиг точки (триггера)

Полезный совет

Давайте названия файлам с конфигами точек, начиная с цифры, соответсвующей началу отсчёта ID точек.

Например:

в этом файле будут ID с 1 по 499:
1_myTriggers.json

в этом файле будут ID с 500 по 999
500_myOtherTriggers.json

в этом файле будут ID с 1000 по 1999 и т.д.
1000_myMoreTriggers.json

pointId

pointId - Уникальный идентификатор точки, не должен повторяться никогда. Можно использовать любое целое число.

ID точек не обязательно должны идти друг за другом, можно делать их как угодно, не выходя за пределы максимального значения int в dayz: 2147483647.

Пример: "pointId": 5899,

isDebugEnabled

isDebugEnabled - Включить/выключить дебаг для этой точки. Будет выводиться много информации в лог-файл, которая обычно помогает в отладке и настройке конкретной точки.

Пример: "isDebugEnabled": 1,

isDisabled

isDisabled - Отключение триггера. Если необходимо, что бы триггер был изначально отключен, можно использовать этот параметр.

ВНИМАНИЕ!

Если триггер отключен по каким-либо причинам, то он перестанет как-либо взаимодействовать с игроком.

Не отображаются нотификации, не работает установка и удаление маппинга, кроме маппинга, который задаётся на старте, не работает спавн.

Пример: "isDisabled": 1,

showVisualisation

showVisualisation - отображение визуализации триггеров. При включении этого параметра будет визуально отображаться полупрозрачная фигура, соответсвующая размерам триггера. Очень удобно для отладки.

Для отображения визуализации необходим мод @MPG_spawn_zone

Пример: "showVisualisation": 1,

notificationTitle

notificationTitle - Название точки (для логов и для отображения в заголовке нотификации).

Пример: "notificationTitle": "Точка 3",

notificationTextEnter

ВНИМАНИЕ

Текст нотификации при входе в триггер будет выводиться игроку всегда, когда он входит в триггер если точка не выключена. Этот текст не зависит от настроек спавна и служить только для нотификации.

notificationTextEnter - Текст нотификации при входе в триггер.

Если не нужно отображать нотификацию, то просто оставляем её пустой.

Примеры:

Обычная нотификация:
"notificationTextEnter": "Вы вошли в точку 3. Тут вас ждут все подряд!",

Отключение нотификации:
"notificationTextEnter": "",`

notificationTextExit

notificationTextExit - Текст нотификации при выходе из триггера.

Если не нужно отображать нотификацию, то просто оставляем её пустой.

Примеры:

Обычная нотификация:
"notificationTextExit": "Вы покинули точку 3. Надеемся на своих двоих!",

Отключение нотификации:
"notificationTextExit": "",`

notificationTextSpawn

notificationTextSpawn - Текст нотификации при появлении живности.

Если не нужно отображать нотификацию, то просто оставляем её пустой.

Эта нотификация может быть выведена в виде текста с правильным склонением слов в соответствии с числом спавна. Нотификация приходит всем игрокам, находящимся в зоне действия триггера.

Принцип формирования теста для такой нотификации:

  • Части текста разделаются символом точка с запятой ;.
  • В первой части можно использовать плейсхолдеры %1, %2, %3, %4, %5.
    • Плейсхолдер %1 будет заменён на цифру с количеством созданных живностей или предметов лута.
    • Плейсхолдеры %2, %3, %4, %5 будут заменены на слова в нужном склонении.
    • Слово для склонения формируется из начальной части и окончания, разделителем выступает вертикальная линия |.

Принцип формирования достаточно прост:

  • "волк||а|ов" => (1, 2, 5) => волк, волка, волков.
  • "ми|шка|шки|шек" => (101, 503, 10000) => мишка, мишки, мишек.

Примеры:

Обычная нотификация:
"notificationTextSpawn": "Осторожно, рядом кто-то появился!",

----------------------------------------------
Нотификация с количеством созданных медведей:
"notificationTextSpawn": "Где-то рядом %2 %1 %3.;появил|ся|ось|ось;медвед|ь|я|ей",

Будет вывдено для игрока:
Где-то рядом появился 1 медведь
Где-то рядом появилось 3 медведя
Где-то рядом появилось 20 медведей
----------------------------------------------

Отключение нотификации:
"notificationTextSpawn": "",`

notificationTextWin

notificationTextWin - Текст нотификации при убийстве всех живностей, который были заспавнены.

Если не нужно отображать нотификацию, то просто оставляем её пустой.

Пример: "notificationTextWin": "Замечательно! Вы убили всех медведей!",

notificationTime

notificationTime - Время отображения нотификации в секундах.

Пример: "notificationTime": 8,

notificationIcon

notificationIcon - Иконка нотификации.

Может быть любой доступной иконкой как путь к картинке, так и название иконки при условии, что оно зарегистрировано в игре.

Примеры:

"notificationIcon": "set:dayz_inventory image:electricity",
"notificationIcon": "set:dayz_inventory image:woodcrate",
"notificationIcon": "set:dayz_gui image:iconSkull",

triggerDependencies

triggerDependencies - ID триггеров, от которых зависит этот триггер.

Если поле заполнено, то текущий триггер не сработает до тех пор, пока не сработает триггер, указанный как зависимость.

Примеры:

Зависимостей от других триггеров нет:
"triggerDependencies": [],


Текущий триггер сработает только если сработали триггеры с ID 1 2 и 3
"triggerDependencies": [1, 2, 3],

triggerDependenciesAnyOf

triggerDependenciesAnyOf - Текущий триггер сработает, если сработал один из указанных в параметре triggerDependencies триггеров.

Это может пригодиться, например для реализации нескольких входов на определённую территорию, когда любой из входов должен приводить к активации других триггеров.

Пример: "triggerDependenciesAnyOf": 1,

triggersToEnableOnEnter

triggersToEnableOnEnter - Список ID триггеров, которые буду активированы, если игрок вошёл в текущий триггер.

Примеры:

Не настроено:
"triggersToEnableOnEnter": [],

При входе в текущий триггер включатся триггеры с ID 5 8 и 10:
"triggersToEnableOnEnter": [5, 8, 10],

triggersToEnableOnFirstSpawn

triggersToEnableOnFirstSpawn - Список ID триггеров, которые буду активированы, если произошёл первый спавн живности в текущем триггере.

Примеры:

Не настроено:
"triggersToEnableOnFirstSpawn": [],

При первом спавне живности в текущем триггере включатся триггеры с ID 4 и 5:
"triggersToEnableOnFirstSpawn": [4, 5],

triggersToEnableOnWin

triggersToEnableOnWin - Список ID триггеров, которые буду активированы, если вся живность в текущем триггере была убита. Т.е. при победе всех в текущем триггере.

Не настроено:
"triggersToEnableOnWin": [],

При победе в текущем триггере включатся триггеры с ID 2 и 6:
"triggersToEnableOnWin": [2, 6],

triggersToEnableOnLeave

triggersToEnableOnLeave - Список ID триггеров, которые буду активированы, если все игроки покинули зону действия текущего триггера.

Не настроено:
"triggersToEnableOnLeave": [],

При покидании зоны действия текущего триггера последним игроком включатся триггеры с ID 7 и 5:
"triggersToEnableOnLeave": [7,5],

triggerPosition

triggerPosition - Координаты расположения триггера на карте.

Полезная информация о расположении триггеров

  • Если задать высоту 0.0, то триггер появится на земле.
  • Триггер можно вращать только в горизонтальной плоскости.

Важно!

Не располагайте триггеры так, что бы они располагались друг в друге (матрёшкой) или значительно пересекались между собой. Это приведёт к значительному увеличению нагрузки на сервер из-за того, что дейз не может адекватно расчитать нахождение игрока в тригеере.

Допустимые варианты написания координат:

Мод при прочтении координат сам попытается привести их в нужный для работы вид.

"triggerPosition": "2081.737549 194.911041 5404.941895",
"triggerPosition": "2081.737549, 194.911041, 5404.941895",
"triggerPosition": "2081.737549,194.911041 5404.941895",

Но лучше стараться писать координаты через пробелы, это немного ускорит их обработку.

Примеры:

Триггер на змеле:
"triggerPosition": "2081.7 0 5404.9",

Триггер на заданной высоте:
"triggerPosition": "2081.7 194.9 5404.9",

Повеернуть триггер на 45 градусов (актуально для кубических триггеров):
"triggerPosition": "2081.7 0 5404.9|45 0 0",

triggerDebugColor

triggerDebugColor - цвет отображаемой дебаг области триггера.

Значение по умолчанию: blue

Доступные значения:

  • blue - голубой
  • green - зелёный
  • red - красный
  • yellow - жёлтый

Пример: "triggerDebugColor": "red",

triggerRadius

triggerRadius - Радиус триггера в метрах.

Важно

Не устанавливайте очень большие радиусы (500 и более метров), это может привести к увеличению нагрузки на сервер, когда много игроков зайдёт в такой триггер.

Можно задать диапазон значений через чёрточку, тогда при каждом рестарте сервера будет взято случайное число между указанными.

Примеры:

радиус триггера 20 метров
"triggerRadius": "20.0",

радиус триггера от 5.5 до 20 метров
"triggerRadius": "5.5-20.0",

triggerHeight

triggerHeight - Высота триггера в метрах.

Если высота задана, то триггер будет в виде цилиндра или куба, иначе триггер будет в виде сферы.

Можно задать диапазон значений через чёрточку, тогда будет взято случайное число между указанными.

Примеры:

высота триггера не задана - сфера
"triggerHeight": "0",

высота триггера 15 метров
"triggerHeight": "15.0",

высота триггера от 2.5 до 5.6 метров
"triggerHeight": "2.5-5.6",

triggerWidthX

triggerWidthX - Длина кубического триггера по оси X в метрах.

Внимание!

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

Можно задать диапазон значений через чёрточку, тогда будет взято случайное число между указанными.

Примеры:

длина не задана - сфера или цилиндр
"triggerWidthX": "0",

длина по оси X 18 местров
"triggerWidthX": "18.0",

длина по оси X от 18 до 22 метров
"triggerWidthX": "18.0-22",

triggerWidthY

triggerWidthY - Длина кубического триггера по оси Y в метрах. Условно можно назвать её шириной триггера, но это только условность.

Внимание!

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

Если задана длина и ширина триггера, то параметр triggerRadius будет игнорироваться, а сам триггер станет кубическим.

Можно задать диапазон значений через чёрточку, тогда будет взято случайное число между указанными.

Примеры:

длина не задана - сфера или цилиндр
"triggerWidthY": "0",

длина по оси Y 18 местров
"triggerWidthY": "18.0",

длина по оси Y от 18 до 22 метров
"triggerWidthY": "18.0-22",

triggerFirstDelay

triggerFirstDelay - Задержка первого срабатывания триггера после старта сервера в секундах.

Рекомендации

Рекомендуется ставить задержку не менее 180-300 секунд так у игроков будет немного времени на то, что бы покинуть опасную зону триггера, а серверу будет немного легче работать т.к. первые минуты после рестарта ему совсем непросто приходится.

Примеры:

10 секунд
"triggerFirstDelay": "10",

от 10 до 500 секунд
"triggerFirstDelay": "10-500",

от 300 до 900 секунд
"triggerFirstDelay": "300-900",

triggerCooldown

triggerCooldown - Задержка перед следующим срабатыванием триггера в секундах.

Можно задать диапазон значений через чёрточку, тогда каждый раз, когда сработает спавн, будет взято случайное число между указанными. Таким образом можно сделать переспавн достаточно трудно предсказуемым для игрока.

Примеры:

10 секунд
"triggerCooldown": "10",

от 40 до 60 минут
"triggerCooldown": "2400-3600",

от 5 до 30 секунд
"triggerCooldown": "5-30",

triggerSafeDistance

triggerSafeDistance - Минимальная дистанция от игрока в метрах, на которой будет спавниться живность или лут при входе в триггер.

Важно

  • Параметр учитывается только при входе в триггер.
  • Если значение этого параметра больше, чем spawnRadius плюс 1 метр, или spawnRadius не задан, оно не будет учитываться. Это сделано для того, что бы сервер не упал в попытках заспавнить живность на заведомо недостижимых координатах.

Этот параметр полезен для того, что бы у игрока был шанс принять меры после того, как произойдёт спавн.

Пример: "triggerSafeDistance": 10,

triggerEnterDelay

triggerEnterDelay - Задержка в секундах между входом в триггер и спавном. Срабатывает только на первого, кто войдёт в триггер.

Пример: "triggerEnterDelay": 10,

triggerCleanupImmersive 1.3

triggerCleanupImmersive - Включение иммерсивного удаления живых существ при включенном параметре triggerCleanupOnLeave или triggerCleanupOnLunchTime.

Животное или зомби сначала будут "убиты", а через две секунды после этого труп исчезнет. Задержка в две секунды нужна для того, что бы корректно отработала анимация смерти.

Пример: "triggerCleanupImmersive": 1,

triggerCleanupOnLeave

triggerCleanupOnLeave - Удаление всей живности и лута, который были заспавнены, при покидании последним игроком зоны действия триггера.

Для очистки триггера необходимо указать время задержки triggerCleanupDelay

Пример: "triggerCleanupOnLeave": 1,

triggerCleanupOnLunchTime

triggerCleanupOnLunchTime - Удаление всей живности и лута, который были заспавнены, если работа триггера отключается по расписанию, указанному в triggerWorkingTime.

Для очистки триггера необходимо указать время задержки triggerCleanupDelay

Пример: "triggerCleanupOnLunchTime": 1,

triggerCleanupDelay

triggerCleanupDelay - Задержка в секундах перед удалением всей живности и лута, которые были заспавнены.

Лут, который подобрал игрок, удаляться не будет!

Задержка работает только тогда, когда включен параметр triggerCleanupOnLeave или triggerCleanupOnLunchTime.

Пример: "triggerCleanupDelay": 15,

triggerInactiveResetDelay 1.4

triggerInactiveResetDelay - Задержка в секундах перед сбросом триггера при его неактивности.

Для чего этот параметр?

  • Этот параметр нужен для тех ситуаций, когда игрок случайно зацепил триггер и просто ушёл по своим делам.
  • Особенно полезно будет его включать в местах, где спавнится много животных или зомби.

Установка этого параметра в значение больше нуля позволит сбросить триггер при условии, когда животные или зомби, которые заспавнились, не получили урон в течение времени, указанного в параметре.

Триггер перейдёт в состояние, которое у него было в момент старта сервера, а все животные и зомби будут удалены.

Задержка работает только тогда, когда включен параметр triggerCleanupOnLeave или triggerCleanupOnLunchTime.

Пример: "triggerInactiveResetDelay": 240,

triggerWorkingTime

triggerWorkingTime - Расписание работы триггера по игровому времени.

Примеры:

Триггер будет работать круглосуточно
"triggerWorkingTime": "0-24",

Триггер будет срабатывать только с 8 до 18 часов по игровому времени.
"triggerWorkingTime": "8-18",

triggerDisableOnWin

triggerDisableOnWin - Деактивировать работу триггера после убийства всей живности (после победы).

Пример: "triggerDisableOnWin": 1,

triggerDisableOnLeave

triggerDisableOnLeave - Деактивировать работу триггера после покидания последним игроком зоны действия триггера.

Пример: "triggerDisableOnLeave": 1,

spawnPositions

spawnPositions - Координаты спавна живности.

Полезные советы

  • Если высоту задать как 0.0, живность будет заспавнена на земле
  • Через разделитель | можно указать поворот живности или лута при спавне, например `"2055.367920 0.0 5386.645996|45 0 0"
  • Указывать координаты можно в таком же формате, как и для triggerPosition

Пример:

"spawnPositions": [
  Спавн на этой точке будет точно на той ысоте, которая задана
  "2091.094482 191.329178 5378.864746",

  Спавн на этой точне будет на земле
  "2055.367920 0.0 5386.645996",

  Спавн на этой точке будет на заданной ысоте с поворотом на 45 градусов
  "2077.824463 192.110657 5382.869629|45 0 0",
],

spawnRadius

spawnRadius - Радиус в котором будет заспавнена живность или лут вокруг соответсвующей точки. Указывается в метрах.

Важно

Не указывайте слишком маленький радиус при большом количестве живности, это приведёт к тому, что живность будет спавниться друг в друга и не сможет двигаться некоторое время, а так же приведёт к повышенной нагрузке на сервер.

Если указать 0.0, то спавн будет в конкретной точке.

Если значение больше нуля, то спавн произойдёт в случайной точке, ограниченной заданным радиусом.

Пример: "spawnRadius": 2.0,

spawnMin

spawnMin - Минимальное количество живности или лута для спавна за одно срабатывание триггера.

Можно указать 0, тогда спавн не произойдёт.

Пример: "spawnMin": 2,

spawnMax

spawnMax - Максимальное количество живности или лута для спавна за одно срабатывание триггера.

Лучше не указывать число, менее единицы.

Пример: "spawnMax": 2,

spawnCountLimit

spawnCountLimit - Максимальное количество живности или лута, которое будет заспавнено вне зависимости от значений spawnMin и spawnMax.

Если значение больше нуля, то при достижении указанного количества то при срабатывании триггера спавн не будет происходить до тех пор, пока не будет убита живность или уничтожен лут.

Пример: "spawnCountLimit": 30,

spawnLoopInside

spawnLoopInside - Включение или отключение срабатывания триггера, когда игрок находится внутри зоны его действия. Если задать 0, то для повторного срабатывания триггера игрок должен будет выйти за пределы его действия и потом снова войти при условии, что триггер пройдёт просие условия для срабатывания спавна.

Пример: "spawnLoopInside": 1,

spawnList

spawnList - Список класснеймов для спавна.

Мод может спавнить не только живность, но и лут.

Через разделитель | можно указать параметры, влияющие на здоровье и состояние живности или лута.

Принцип установки параметров:

"Класснейм|шанс спавна|лайвтайм|кол-во|здоровье|стадия еды"

Для всех настроек, кроме лайвтайма, параметры следующие:

  • -3 - отключено, будет применено дефолтное, для предмета значение, которое задано экономикой.
  • -2 - полный рандом (от 0 до 100%). Для стадий еды это три состояния Гнилое, Сушеное, Сырое. Для всего остального случайный процент от 100%.
  • -1 - максимальное значение (для состояния еды - сырое, для всего остального 100% значения). По сути это аналог отсутствия параметров.
  • 0-100 - проценты от и до, между которыми будет выбран рандом. от 0 до 100%.

Для животных и зомби применимы только шанс спавна, здоровье и лайвтайм.

  • Не обязательно прописывать все параметры т.к. по умолчанию все значения равны -3.
  • Не обязательно перед и после разделителя ставить пробел, я ставлю их для наглядности примеров.

Пример:

"spawnList": [
  "ZmbM_ConstrWorkerNormal_Beige",
  "Animal_UrsusArctos",
  -----------------------------------

  У ZmbF_MechanicNormal_Beige шанс спавна 70%
  "ZmbF_MechanicNormal_Beige|0.7",
  -----------------------------------

  У Animal_CanisLupus_Grey шанс спавна 30%
  "Animal_CanisLupus_Grey|0.3",
  -----------------------------------

  Медведь, здоровье от 0, 1 до 1 процента (3-8 hp)
  "Animal_UrsusArctos| 1 | -3 | -3 | 0.1-1",
  -----------------------------------

  Cильно повреждённое, гнилое яблоко
  "Apple| 1 | -3 | -3 | 30-30 | 30-30",
  -----------------------------------

  Полный рандом всех сосояний (кроме лайвтайма)
  "WaterBottle | 1 | -2 | -2 | -2 | -2",
  -----------------------------------

  Шанс спавна 50%, 120 сек лайвтайм, от 9 до 18 патронов,
  от сильно повреждённого, до поношенного,
  последний параметр не стал писать т.к. он не влияет
  "Mag_AK101_30Rnd | 0.5 | 120 | 30-60 | 10-67",
  -----------------------------------

  Тут будет работать только последний параметр т.к. количество неприменимо
  "AKM | 1 | -3 | -2 | -1"
],

spawnQueueDelay 1.4

spawnQueueDelay - Задержка в миллесекундах для спавна каждого элемента из списка spawnList.

Этот параметр нужен для более плавного спавна, особенно если в списке много элементов.

Например, если должно заспавниться 10 медведей, и параметр установлен в значение 1000б будет спавниться по одному медведю раз в секунду до тех пор, пока не заспавнится 10 медведей.

Важно

Этот параметр не влияет на параметры triggerFirstDelay, triggerCooldown и triggerEnterDelay

Пример:

// 1000 миллесекунд = 1 секунда
"spawnQueueDelay": 1000,

clearDeathAnimals

clearDeathAnimals - Время уничтожения убитых животных, в секундах.

Пример: "clearDeathAnimals": 5,

clearDeathZombies

clearDeathZombies - Время уничтожения убитых зомби, в секундах.

Пример: "clearDeathZombies": 5,

mappingData

mappingData - список для маппинга, который будет добавлен и удалён, если нужно, при работе триггера.

Важно

В данный момент не работает одновременное добавление и удаление при одинаковых событиях. Например, если одновременно включить параметры addOnEnter и removeOnEnter - объекты не будут удалены. Так же объекты не будут удалены, если событие удаления происходит раньше, чем отработает таймер добавления.

Каждый элемент списка представляет отдельный набор параметров и свой список объектов для маппинга.

Объяснение параметров:

  • addOnStartup - Спавнить маппинг при страте сервера.
  • addOnEnter - Спавнить маппинг при первом входе в триггер.
  • addOnFirstSpawn - Спавнить маппинг при первом спавне живности.
  • addOnWin - Спавнить маппинг при убийстве всей живности в триггере.
  • addDelay - Задержка добавления маппинга (сек).
  • removeOnEnter -Удалять маппинг при входе в триггер.
  • removeOnFirstSpawn - Удалять маппинг при первом спавне живности.
  • removeOnWin - Удалять маппинг при убийстве всей живности в триггере.
  • removeDelay - Задержка удаления маппинга (сек).
  • mappingObjects - Маппинг. Структура полностью соответствует ванильному json-спавнеру, а функционал добавления объектов на карту работает так же, как и ванильный, но только для класснеймов (добавить на карту p3d объекты не получится). Это сделано для удобства добавления маппинга, который может быть экспортирован из DayZ-Editor как json.
Маппинг не задан:
"mappingData": [],

Простой маппинг при старте, первом спавне и победе
"mappingData": [
  {
    "addOnStartup": 1,
    "addOnEnter": 0,
    "addOnFirstSpawn": 0,
    "addOnWin": 0,
    "addDelay": 0.0,
    "removeOnEnter": 0,
    "removeOnFirstSpawn": 1,
    "removeOnWin": 0,
    "removeDelay": 0.0,
    "mappingObjects": [
      {
        "name": "Land_Sawmill_Illuminanttower",
        "pos": [
          2185.56005859375,
          208.08099365234376,
          5444.35009765625
        ],
        "ypr": [
          73.99999237060547,
          0.0,
          0.0
        ],
        "scale": 1,
        "enableCEPersistency": 0
      }
    ]
  },
  {
    "addOnStartup": 0,
    "addOnEnter": 0,
    "addOnFirstSpawn": 1,
    "addOnWin": 0,
    "addDelay": 0,
    "removeOnEnter": 0,
    "removeOnFirstSpawn": 0,
    "removeOnWin": 1,
    "removeDelay": 10.0,
    "mappingObjects": [
      {
        "name": "Land_Sawmill_Illuminanttower",
        "pos": [
          2179.174072265625,
          204.95361328125,
          5454.44140625
        ],
        "ypr": [
          73.99999237060547,
          0.0,
          0.0
        ],
        "scale": 1.0,
        "enableCEPersistency": 0
      }
    ]
  },
  {
    "addOnStartup": 0,
    "addOnEnter": 0,
    "addOnFirstSpawn": 0,
    "addOnWin": 1,
    "addDelay": 0.0,
    "removeOnEnter": 0,
    "removeOnFirstSpawn": 0,
    "removeOnWin": 0,
    "removeDelay": 0.0,
    "mappingObjects": [
      {
        "name": "SeaChest",
        "pos": [
          2111.29150390625,
          197.57781982421876,
          5439.36474609375
        ],
        "ypr": [
          0.0,
          0.0,
          0.0
        ],
        "scale": 1.0,
        "enableCEPersistency": 0
      }
    ]
  }
]