Примеры триггеров и миссий

Материал из BestWay wiki
Перейти к: навигация, поиск

Данный раздел предназначен для новичков и желающих им помочь. Всеобщий известный факт: теория хорошо познается на практике, и иногда не знаешь с чего начать.


Новая миссия


Итак, для начала мы должны понять, как внедрить миссию в игру, и собственно, как начать:

Для этого нужно:

Нажимаем клавишу F3 а затем, F9.
Во вкладке Player выбираем сторону, за которую играем. В нашем случае - это сторона Player 0.
Во вкладке Tasks правой кнопкой выбираем add, и добавляем задание (НЕОБЯЗАТЕЛЬНО).
Теперь нам нужно установить хотя-бы одного персонажа с Player 0. Достается он из entity/-human/ger/rifle_w (в нашем случае)
Сохраняем миссию как 0.
И обязательно - сохраненная карта (готовность необязательно).

Теперь открываем папку mods (или создаем) в корне игры, создаем там папку, например, DeutcheCampaign v.0.0.0.1.
Теперь создаем новый текстовой документ и редактируем его.

Пишем следующее:


{mod

	{name "DeutcheCampaign v.0.0.0.1"}              -здесь - точное название нашей папки с миссиями.

	{desc "Тестируем компанию"}                     -здесь - описание миссии - любое.

}


Выбираем СОХРАНИТЬ КАК, и вводим mod.INFO, и на месте ввода нажимаем Enter. (у меня по-другому не сохранялось)
Теперь создаем две папки: localization и resource. Можно ради прикола файл Readme сделать.
Создаем путь: \resource\map\single\4. Туда вставляем папку с картой.
Создаем путь: \localization\mission\single\4. Там создаем файлы блокнота:

campaign.LNG Вписываем:

{tags

	{"title" "DeutcheCampaign"}                     -здесь ваше название кампании (любое)

	{"name" "Dark Night"}                           -здесь название раздела кампании (любое)

}


название карты.LNG Вписываем:

{tags

	{"name" "Брест"}                                -здесь название вашей миссии (любое)

	{"date" "1941"}                                 -дата события

	{"name_big" "Битва у брестской крепости"}       -название миссии при загрузке (любое)

	{"place" "USSR"}                                -местоположение

       {"00" "Мы прибыли. Дальше тебе придется идти самому. Удачи!"} - это если у нас есть описание миссии или диалог.

}


Медицинская помощь


Для начала, выбираем персонажа, и в графе его параметров выбираем ables, находим и выделяем personage.
Присваиваем ему или им тег dead.
Теперь у нас есть два варианта.
Первый - сделать бойца-мазохиста, который будет бросаться под пули и спасать убитых, либо просто дать возможность лечить всем, при наличии в инвентаре морфина.
Мне нравиться второй вариант, т.к. медик не будет как идиот идти на смерть, и вы ничего не сможете с ним сделать (пока он не воскресит, он не уймется)
Поэтому.

3.В Commands:
1.Создаем триггер medhelp
2.Выбираем Сondisions, создаем near, в ней заполняем только это:
near_to - tag=dead, state=dead
1.delay =1
2.action
action = injection
target - tag=dead
state=dead
3.trigger= medhelp

Вот и все! Даем морфин персонажу, наводим курсор на трупа, нажимаем ЛКМ, и все, солдат снова в строю!
Если делать медика-мазохиста, то все остальные так-же будут лечить, но "особенный" будет бежать сломя голову к цели.


Переключение между зонами


  • 1.Нажимаем F2, выбираем Clip (3).

Зону [auto] мы оставляем.

  • Нажимаем ПКМ в поле и выбираем add.

Вводим например startzone. Редактируем территорию. (об этом должно быть написано в других разделах)
Вводим вторую зону, например nextzone.

  • 2.Выбираем F3, triggers.
    • 2.1.Создаем триггер start. В командах выбираем set_clip, в имени - startzone.
      • 2.2.Создаем зону (zone)(5), например 1.
      • 2.3.Теперь создаем триггер nextzone.
  • В поле condition создаем entity. В ней: mid или tag - mid или tag персонажа, а zone - 1.
  • В командах выбираем set_clip, в имени - nextzone.


Десантники-парашютисты


  • 1.Создаем предмет entity/service/paratrooper_attach

Присваиваем ему tag - desant.

  • 2.Создаем любого солдата. В моем случае это немецкий стрелок. Запоминаем его mid.
  • 3.Создаем trigger - paratrooper.
    • 4.Commands:
      • 4.1.linker - selector/tag - desant, entities/mid - mid солдата.
      • 4.2.effect - selector/tag - desant, effect - start
      • 4.3.delay - 3


Сетевой кооператив


Нажимаем клавишу F3 а затем, F9.
Во вкладке Player выбираем сторону, за которую играем. В нашем случае - это сторона Player 0.
Создаем любых солдат. В моем случае это три советских снайпера. Присваиваем им tag - player. Не забываем о том, что все они должны быть привязаны к игроку Player 0
Создаем trigger - playerspawn.
В командах: delay - 1
И повторяем данные команды столько раз, сколько игроков. В моем случае, надо добавить еще 2.
Пример, как должно быть:
Создаем trigger - playerspawn.
В командах: delay - 1
Создаем trigger - playerspawn.
В командах: delay - 1
Создаем trigger - playerspawn.
В командах: delay - 1


Подкрепления


  • Ставим на карте танк и экипаж (например Т-34 и четыре танкиста). Присваиваем им tag - t34_reinforcemet и hidden.

Сажаем экипаж в танк.

  • Добавляем waypoint в удобную точку на карте, запоминаем номер (например 0).

Нажимаем клавишу F3 а затем, F9.
Находим вкладку reinforcements и заполняем графы scoreTotal и scoreCurrent.
ПКМ добавляем вкладку T34.
Теперь:
image - t34_0 (в моем случае)
count - 5
score - 10
delay - 5
eventEnd - buy_t34
waypoint - 0

Теперь при нажатии на start, у нас появится окошко с т34 справа.

  • Теперь создаем trigger - reiforcements/t34.

В condition: event/mode - work, id - buy_t34. В commands: waypoint/tag - t34_reinforcemet, waypoint - 0.
event/event - buy_t34, mode - reset.
delay - 5
trigger - reiforcements/t34.

Удар Артиллерии


  • 1 Повторяем операцию с подкреплениями, только в image ставим, например, flak 41, а вместо eventEnd - eventStart - strike.
  • 2 Создаем триггер, strike.
    • 2.1 Condition: event - strike.
    • 2.2 Commands: delay - 1;
    • 2.3 loop - 3. Внутри:
      • 2.3.1 music/start - любой звук, fade - 1.
      • 2.3.2 delay 1 2.
    • 2.4 loop - 3. Внутри:
      • 2.4.1 spawn/entity - service/damage/artillery_explosion, waypoint - 0.
      • 2.4.2 delay 1 2.
    • 3 event - strike, mode - reset.
    • 4 trigger - strike.



Подкрепления или удар Артиллерии при условии наличия рации в инвентаре


Опять - же, все тоже самое, только есть пара изменений:

  • 1 В Condition: добавляем inventory.
    • 1.1 selector - radist
    • 1.2 where - all holders
    • 1.3 item - radio_station

+ trigger:

  • 1 Condition: добавляем inventory.
    • 1.1 selector - radist
    • 1.2 where - all holders
    • 1.3 item - radio_station
  • 2 Commands:
    • 2.1 reinforcements/show, name - strike.


Удар Артиллерии при попадании в зону


Начну с того, что этот бред - переделка вышесказанного. Где применяется? Ну например в сценарии, когда проходя по улочкам города, спасая скажем, экипаж танка, на него неожиданно падает удар с воздуха. (ужасно, но что поделать)

  • 1 Первое что нам надо сделать - зону, например, stepkill, а так-же Waipoint, на который приходится удар. В моем случае это - 0. Хочу упомянуть одну штуковину - чем меньше радиус Waipointа, тем точнее удар.
  • 2 Создаем триггер, stepkill.
    • 2.1 Condition: entity/tag - (в моем случае - таг команды), zone - stepkill.
    • 2.2 Commands: delay - 1;
    • 2.3 loop - 3. Внутри:
      • 2.3.1 music/start - любой звук, fade - 1.
      • 2.3.2 delay 1 2.
    • 2.4 loop - 3. Внутри:
      • 2.4.1 spawn/entity - service/damage/artillery_explosion, waypoint - 0.
      • 2.4.2 delay 1 2.


Подрыв динамита с расстояния



  • 1. Устанавливаем рычаг - entities/construction/entourage/dunamite_fuse. Присваиваем ему tag, например det.
  • 2. Находим динамит и присваиваем ему tag, например dyn. Скопировать его с tagом у меня не получалось, так что делайте все сразу.
  • 3. Создаем trigger detonation.
    • 3.1. Conditions: entities/source - advanced.
    • 3.2. ПКМ - selector - +group.
    • 3.3. ПКМ - Select - +tag, tag - det.
    • 3.4. ПКМ - include - +tag, tag - switch.
  • 4.1. Commands: delay - 1.
    • 4.2. effect - selector/tag - dyn, effect - explosion.
    • 4.3. delay - 1.
    • 4.4. entiety_state - selector/tag - det, tag_remove - switch.
  • 5. trigger - detonation.


Солдаты, несущие объекты



Летящий самолет, разбивающийся о землю


Самое простое из того, что можно сделать. Применяется и на джипах, грузовиках, танках и т.п.
Создаем, например, мессершмит и пилота. Сажаем пилота в самолет. Поднимаем самолет вверх.
Создаем waypint, столько сколько нам надо.
На последних двух (можно и на одном) создаем команду actor_component/component - engine, state - broken.

Транспорт, появляющийся, а затем исчезающий за пределами карты


  • 1. Ставим на карту грузовик и водителей. Даем tag - clon и hidden. Водителей сажаем внутрь.
  • 2. Расставляем waypointы, по которым будет двигаться грузовик, и в последнем waypointе, в commands прописываем delete.
  • 3. Ставим триггер:
    • 3.1 waypoint - 0 (первый waypoint)
    • 3.2 actor_state/mid (мид грузовика), state - normal (можно любой другой)


Постоянно появляющийся, а затем исчезающий грузовик


  • 1. Ставим на карту грузовик и водителей. Даем tag - clon и hidden. Водителей сажаем внутрь.
  • 2. Расставляем waypointы, по которым будет двигаться грузовик, и в последнем waypointе, в commands прописываем delete.
  • 3. Создаем trigger под названиям clone и в строке autoreset ставим галочку.
  • 4.Commands:
    • 4.1 waypoint.
      • Actors/tag - clon.
      • Action/waypoint - 0.
      • Action/clone - On. (галочка)
      • Action/approach teleport & rotate.
    • 4.2 delay/Time - 3. (каждые 3 секунды будет появляться грузовик)
    • 4.3 trigger - clone


Вставка музыки


В корень карты (resource/map) вставляем музыку в формате mp3.
В триггере music, в commands', ставим music, и выбираем нашу музыку.


Разговор с персонажем, при подходе к нему


  • 1.Создаем зону (area). Именуем эту зону как нам необходимо, и делаем диапазон, (radius) на который мы должны наступить. Я лично пользуюсь вторым типом зон (регулируемый). У меня она называется meetsoldier.
  • 2.Создаем персонажа (который будет подходить) и присваиваем ему tag например hero.
  • 3.Создаем trigger. Называем его например meetsoldier.
  • 4.В conditions вставляем entity, где в строке tag вводим hero, а в zone - meetsoldier.
  • 5.В commands: talk/selector - tag говорящего. В talk вводим то, что хочет сказать персонаж.

НЕ ЗАБУДЬТЕ В название карты.LNG ВПИСАТЬ ЭТОТ ДИАЛОГ, КАК УКАЗАНО ВЫШЕ, ЕСЛИ ВЫ ХОТИТЕ СДЕЛАТЬ МИССИЮ!


Расширенный селектор


  • 1.Параметры из advanced selector:

Щелкаем правой клавишей на пустом месте, видим три параметра
group - это сам селектор, т.е. параметры, по которым вызываем юнит
sort - сортировка
amount - задает кол-во


  • 2.Group

select (вызов по основным параметрам)
include (включая дополнительные параметры
exclude (исключая юниты по дополнительным параметрам)


  • 3.Группа параметров select Правой клавишей добавляем в select параметры вызова юнитов:

mid (по миду, просмотр мидов по alt+i)
tag (по тегу, просмотр тегов по alt+t)
zone ( по зоне - все актеры в указанной зоне, предварительно в редакторе зон выставить зону)
zone_ex - позволяет выбирать в зоне entity
squad (не работает)
id (по номерному идентификатору юнита, его можно посмотреть в списке свойств выделенного объекта в редакторе)
inventory_items (юнит с указанными предметами в инвенторе. Например, вызвать всех human с винтовкой мосина в инвентаре)


  • 4.группа параметров include

zone (если необходимо добавить зону в пересечение с основной зоной)
mids
tag
player
relation (юниты, удовлетворяющие политике взаимодействия к указанному в параметре плееру)
prop (удовлетворяющие типу юнитов, выбрать из списка human, creature, car, vehicle, tank)
discovered(обнаруженный)
state(юниты в состоянии, выбрать из списка можно несколько - dead, operatable, moveable, chasiss_work, user_control (т.е. тех, которые находятся под контролем юзера) и другие)
with_item (объекты, в инвентаре с указанным объектом)
broken_components (у юнита сломан компонент, подлежащий починке, указать какой, например, left track)
destroyed_components
movement_type
entity_stuff (юнит вооружен, выбрать из списка чем именно)
cover (в укрытии, предварительно можно назначить имя для конкретного укрытия, в котором вы собираетесь селектить юнита)
team (пренадлежит команде a или b - для мультиплеерных миссий)
order Для exclude список параметров такой же - это объекты, которые вы хотите исключить из селектора


  • 5.После этого выбранные юниты сортируются sort:

shuffle - берет случайные из списка, дополнительно надо задать количество amount
waypoint - выбирает вблизи (nearest) или самый далекие (fathest) от вейпоинта (wpid - номер вейпоинта)
entity - то же, только по отношению к какому-то объекту И из них берется указанное в amount количество. 

Как работает?
Движок выбирает сначала юнитов, попадающих под выборку из пункта select, затем из этих юнитов выбираются те, которые указаны в параметрах include и исключаются , указанные в exclude



Смотри также