EXIT
Login for OTK
Здравствуйте, мои маленькие любители редактора!
Сегодня, дедушка Wass расскажет вам о вейпоинтах, что это такое, с чем их едят и почему они нахрен не упали скриптерам являются наиважнейшим инструментом любого картодела.
Вейпоинт (Waypoint), это английское слово, обозначающее сочетание слов «Путь» и «Точка».
Т.е. дословный перевод – Путь к точке назначения.
В принципе, это абсолютно верно отражает суть вейпоинтов.
Вейпоинт представляет собой команду которая сообщает юниту о том, куда ему пойти и что там сделать.
Любой вейпоинт имеет три состояния –ожидаемый, выполняющийся и выполненный.
Об ожидаемом чуть позднее, сначала поговорим о выполняющихся и выполненных.
Выполняющийся вейпоинт – активный вейпоинт группы по которому она следует.

В данном руководстве в понятии «группа» может быть и один юнит, т.к. вейпоинты оперируют группами в целом, а любой отдельный юнит в редакторе, который не состоит в группе, имеет свою группу, даже если она никак не обозначена.





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



Давайте по порядку.
  1. Выбрать тип – позволяет выбрать тип вейпоинта.
  2. Порядок маршрутных точек – позволяет назначить номер точке.
  3. Описание – та надпись что будет гореть на вейпоинте для игрока
  4. Режим боя, поведение, построение, скорость – я не рассматриваю, т.к. к сути вейпоинтов это имеет достаточно поверхностное отношение и призвано менять поведение группы которая движется по вейпоинтам при их активации.
  5. Радиус размещения – устанавливает рандомное размещение вейпоинта в зоне.
  6. Радиус завершения – устанавливает расстояние активации вейпоинта.
  7. Перерыв – время активации вейпоинта с момента выполнения условия его завершения.
  8. Условие – сердце вейпоинта. Пока оно не станет true во всех отношениях – ничего дальше работать не будет.
  9. При активации – команды выполняемые при активации вейпоинта.
  10. Скрипт – специальная строка для тех баранов что забыли команду exec… назначения скриптового файла который выполнится, если тип вейпоинта «ПО СКРИПТУ»
  11. Опции отображения- определяют, будет ли вейпоинт отображаться на карте… но обычно это нахрен никому не надо.
  12. Эффекты – звуки, надписи и прочая хренотень что будет срабатывать при активации вейпоинта.

Ну, вот в общем-то и все. Больше ничего там и нет. Впрочем, для работы этого хватит чуть более чем полностью.
Теперь разбираем поподробнее выпадающие меню.

Тип вейпоинта:

ПЕРЕМЕЩЕНИЕ – тупо перемещение из точки «А» в точку «Б». Когда юнит достигнет точки «Б», вейпоинт станет true и что произойдет дальше ведомо одному аллаху и картоделу.

Пример миссии. Юнит бежит по вейпоинту, когда он достигает его конца, вейпоинт становится true, т.е. из выполняемых, переходит в выполненные. Об этом нам сообщает подсказка, появление которой прописано в поле активации вейпоинта.

УНИЧТОЖИТЬ – юнит будет пытаться уничтожить заданную цель. Такой вейпоинт обычно выставляется на конкретном юните, которого надо убить. Причем не имеет значения, дружественная ли цель для юнита, он спокойно расстреляет и своих и чужих. Удобно для демонстрации геноцидов гражданских. Однако, есть один нюанс – юнит будет выбирать ему удобную позицию для атаки, поэтому если вам не нужно чтобы он бегал вокруг цели кругами, поставьте ему ограниченную скорость. Впрочем это нихрена не гарантия, пути ботов неисповедимы. После уничтожения цели, юниту назначается следующий вейпоинт.

Пример миссии. Юнит делает несколько шагов и расстреливает гражданского. После этого, он расстреливает Вас

ЗАБРАТЬСЯ – юнит сядет в технику, на которой стоит этот вейпоинт. Сядет он на самое старшее свободное место, которое обеспечивает технике малейшую работоспособность.
Например, если свободно место водителя, он сядет туда, если есть свободное место стрелка – сядет стрелком. Если этих мест свободных нет, то он сядет в грузовой отсек техники.

Пример миссии. Один юнит садится пассажиром в УАЗ, другой водителем в пустой УАЗ.

НАЙТИ И УНИЧТОЖИТЬ – юнит прибежит в район вейпоинта и будет бегать некоторое время в его округе в поисках врагов. Если кого найдет – убьет, не найдет – побежит даль-ше.
Количество пробегов на качество поиска явно не влияет, поскольку далеко от точки вей-поинта он отклоняться не желает, но тем не менее удобно использовать в качестве поис-ковых патрулей, которые прочесывают отдельные районы.

Пример миссии. Юнит прибегает, некоторое время бегает, потом убегает по следующему вейпоинту.

ПРИСОЕДЕНИТЬСЯ – юнит «А» прибежит к другому юниту «Б» и присоединится к его группе, т.е. поступит под командование юнита «Б». После этого, любые последующие вейпоинты назначенные юниту «А» не будут иметь смысла, т.к. им теперь будет управлять юнит «Б».

Пример миссии. Солдат бежит к вам и присоединяется к вашей группе.

ПРИСОЕДЕНИТЬСЯ И ВОЗГЛАВИТЬ – юнит «А» подходит к юниту «Б» и становится его ко-мандиром. После чего выполняются только вейпоинты юнита «А».

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

ВЫСАДИТЬСЯ – юнит покинет занимаемое транспортное средство, которым он управляет. Если юнит в машине не один, то из машины выйдут все юниты его группы. Не важно где они были до этого, в грузовом отсеке, стрелком, командиром, водителем…

Пример миссии. Машина с тремя солдатами подъезжает и двое выходят. Остается внутри только тот, который не в общей группе с первыми двумя.

ЗАЦИКЛИТЬ – юнит будет ходить исполняя последний приказ от начала до конца и в об-ратном направлении. Этот вейпоинт выставляется после какого либо другого, потому что чтобы зацикливать какое-то действие, оно должно быть предварительно назначено. Данный вейпоинт не завершается сам, он завершается только смертью юнита или особым условием предварительно описанным в вейпоинте. Крайне необходимый вейпоинт для создания патрулей.

Пример миссии. Юнит ходит из точки «А» в точку «Б» непрерывно.

ЗАГРУЗИТЬ – если к группе привязан транспорт, то в этой точке группа сядет в этот транс-порт. Равно, так же можно сделать и другой финт ушами, а именно заставить группу дож-даться транспортное средство, присоеденить его к группе и потом загрузив туда бойцов – двинуться дальше. По большому счету, этот вейпоинт, аналог команды Ordergetin.

Пример миссии. Группа ждет грузовик, садится и уезжает. Вейпоинты группы «ЗАГРУЗИТЬ» и грузовика «ПРИСОЕДЕНИТЬСЯ» - синхронизированы. Т.е. могут стать true только в том случае, если и тот и другой будут подпадать под условия выполнения одновременно.

ВЫГРУЗИТЬ – пехота покидает технику к которой предписана. Однако экипаж техники остается сидеть и действует далее согласно приказам командира группы. Например эффектно это выглядит когда бронетехника высаживает пехоту перед грядущим боестолкновением и продвигается за отделением в полной готовности поддержать огнем.

Пример миссии. БТР высаживает народ и все продолжают двигаться дальше, к следующему вей-поинту. Зачистка в чистом виде

РАЗГРУЗИТЬ ТРАНСПОРТ– Группа бойцов, перевозимая в грузовом отсеке, покинет транспорт который не состоит в одной группе с пассажирами.

Пример миссии. Группа покидает грузовик и он уезжает

ОСТАНОВИТЬСЯ – ну данный вейпоинт служит для того, чтобы заставить бойцов тупо стоять на своем месте. Группа не будет отступать. Этот вейпоинт не завершается сам по себе.

Пример миссии. Группа удерживает позицию. Впрочем тут можно было бы и без примера, один хрен нечего показывать

ЧАСОВОЙ – группа будет стоять на позиции пока не заметит и не уничтожит противника. После этого проследует к дальнейшему вейпоинту.

Пример миссии. Группа видит противника, убивает его и после этого уходит с позиции.

ЗАЩИЩАТЬ – данный вейпоинт требует применения триггера «Защищается силами …» Если его выставить, то группа проследует к такому триггеру и будет его оборонять. Если есть несколько групп с таким вейпоинтом, то проследует ближайшая и если она будет уничтожена, то за ней проследует следующая группа на защиту триггера. Если триггеров несколько, то приоритет будет иметь тот что установлен в редакторе первым. Впрочем, если групп несколько, они поделят триггеры между собой. Иногда бывает так что группы наперегонки бегут к триггерам и защищать остается только одна из них, вторая, которая не успела достигнуть триггера – останавливается на месте.

Пример миссии. Группы разделятся между триггерами.

ГОВОРИТЬ – юнит подходит к другому и стоит, молчит и смотрит. В этот момент в силу должны вступать скрипты. По сути, вейпоинт – обычный вейпоинт перемещения, разве что юнит выставляется на дистанции как для разговора.

Пример миссии. Юнит подходит к игроку. И все

ПО СКРИПТУнаитупейший, на мой взгляд, вейпоинт, который призван помочь тем кто ниасилил команду exec. Вызывает скрипт с именем описанным в соответствующей строке. Вейпоинт не переключится до того момента, пока скрипт не будет завершен и это, пожалуй, единственное сколько либо полезное свойство этой команды. Передавать в скрипт аргументы можно перечислив их после имени скрипта. Активируются только sqs скрипты.

Пример миссии. Пройдите вперед и стартует скрипт из каталога миссии.

ПОДДЕРЖКА – выставляем этот вейпоинт ремонтным грузовикам. Грузовик достигнет точки и будет ожидать вызова с поля боя. Игрок может его вызвать командой 5-1- если ему потребуется помощь.

Пример миссии. Ждем 5-1-3, грузовик подъедет и произведет мелкий и крупный кузовной ремонт с устранением повреждений лакокрасочного покрытия. И даже ГИБДД ждать не придется

ЗАБРАТЬСЯ В БЛИЖАЙШИЙ – новый тип вейпоинта, появился только в Арме, юнит выби-рает ближайшее транспортное средство, садится в него и едет дальше.

Пример миссии. Юнит выбирает из трех машин. Попробуйте отодвинуть подальше ту что он обычно занимает, он сядет в другую.

РАЗОЙТИСЬ – тоже появился недавно, новый тип вейпоинта, при достижении группа начинает страдать херней, прогуливаться, некоторые бойцы присаживаются… Вообщем ведут раздолбайский образ службы. Как раз для имитации безделья на военной базе или в лагере.

Пример миссии. Группа не соблюдает строй и бойцы гуляют как им вздумается. Иногда уходя парочками в неизвестном направлении… О_о

Кроме того, существует еще два типа вейпоинтов, которые применяются только к Game Logic. Спасибо DenVdmj за разъяснение их сути и файлы-примеры.

ИЛИ – Объект Game Logic синхронизируется с вейпоинтами групп и выполняется в том случае, если один из вейпоинтов с которыми он синхронизирован - выполнился.

Пример миссии. Вейпоинт выполняется тогда, когда один из солдат добежит до завершения его собственного вейпоинта.

И – Объект Game Logic синхронизируется с вейпоинтами групп и выполняется в том случае, если все вейпоинты с которыми он синхронизирован - выполнились.

Пример миссии. Вейпоинт выполняется тогда, когда оба солдата добегут до завершения их собственных вейпоинтов.

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



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



После этого, идем в свойства последнего и выбираем в порядке точек:



Жмем «ОК» и получаем следующую картину:



Все, цель достигнута, мир покорен

Описание:
Тут, в общем-то и рассказывать-то не о чем. Описание вейпоинта это та самая надпись в стиле «Уничтожить Ктулху» что горит над вейпоинтом. Если строка не назначена, будет гореть системная надпись типа вейпоинта.






Радиус размещения:

Весьма брутальная фича, подразумевает собой некоторую случайность размещения вейпоинта в зоне размещения. Иными словами, точка вейпоинта будет не точно там где вы ее поставили, а в пределах окружности размещения. То есть, юниты с таким вейпоинтом ВСЕГДА будут идти к разным точкам, выбранным случайно в зоне вейпонта. В примере миссии вы сможете видеть от лица водителя УАЗа, что с каждым перезапуском, точка вейпоинта смещается в случайном направлении.


Радиус завершения:
Далеко не всегда требуется четкое достижения точки вейпоинта вплоть до десяти метров, в осо-бенности если дело связанно с ботами, которые, как общеизвестно, страдают проблемами поиска пути в самый неподходящий момент. Поэтому есть очень полезная фича – радиус завершения. По умочанию, для пехоты он равен 10 метрам, для автомобилей 50 метрам и так далее, чем быстрее техника, тем больше радиус. Однако с этой опцией мы можем это значение менять.



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


Перерыв:
Перерыв призван внести в миссию элемент случайности. Кроме того, это отличный способ сделать паузу в процессе следования по вейпоинтам. Перерыв имеет три значения и если мы пользуемся этой опцией, то надо заполнять все три. Минимальное значение, соответствует секундам, минимальное количество которых осталось до перехода к следующему вейпоинту, т.е. сколько минимально секунд пройдет прежде чем вейпоинт выполнится. Среднее значение устанавливает во временном промежутке некий якорь в определенном радиусе от которого будет выпадать случайное количество секунд. Т.е. если мы ставим 5,10,15 – то с большой вероятностью выпадут временные промежутки равные 9,10,11 ну и может +/- 1. Если ставим 5,7,15 – то с большой вероятностью выпадут временные промежутки равные 6,7,8 и т.п. Максимальное значение соответствует тому максимуму времени что пройдет прежде чем вейпоинт активируется. Т.е. устанавливает верхнюю границу временного отсчета. Если нам требуется фиксированное количество секунд до активации вейпоинта, то мы выставляем одинаковое значение во всех полях, например 10,10,10. В этом случае вейпоинт сработает только через 10 секунд с с момента выполнения. Один из самых извращенных ярких примеров использования этой опции – смена эффектов, что вы можете наблюдать в миссии-примере.



Условие:



Условие является сердцем вейпоинта. По умолчанию оно всегда true, это означает что как только группа достигнет точки активации вейпоинта, вейпоинт выполнится и будет произведено переключение к следующему вейпоинту. Однако, мы можем оперировать данным значением и задавать свои условия активации. Например, если мы опишем в init.sqs (init.sqf) глобальную переменную, ну допустим WP_START=false; а в условии вейпоинта напишем WP_START вместо true, то вейпоинт переключится только в том случае, если WP_START станет true. Это мы прописываем в любом другом событии, которое произойдет в нужный нам момент. Например, в триггере, который активируется игроком.



В прилагаемом примере УАЗ имеет два вейпоинта движения с условием в одном из них. Условие представляет собой запрос на наличие игрока в автомобиле – player in car – где «car» имя автомобиля, а «player» - обозначение игрока независимо от имени ему назначенного. Один нюанс который следует учесть – в сетевой игре, переменная player отличается на каждом компьютере. Однако к теме нашего разговора это отношения не имеет.
Таким образом, мы можем управлять активацией вейпоинтов в нужный нам момент. Следует отметить что если выставлен таймаут, который мы рассматривали чуть выше, то вейпоинт активируется после таймаута.
Есть еще один вариант активации вейпоинта, а точнее, вариант его полного выключения из цепи вейпоинтов. Он делается с помощью триггеров типа «Переключатель»
Условие мы прописываем в триггере который синхронизируем с вейпоинтом. Это дает нам интересные возможности. А именно – переключение между вейпоинтами, причем, выключаются все вейпоинты что были до вейпоинта с «переключателем». Т.е. мы можем в любой момент прервать, например, патрулирование и бросить солдат в атаку, что собственно и показано в примерах. Т.е. мы можем в нужный нам момент миссии перейти к нужному нам вейпоинту минуя предыдущие. Если мы будем писать в условии вейпоинта переменные которые должны стать true, у нас такой фокус не пройдет, такое реализуется только через «переключатель».
Однако есть неприятный момент – без переключателя вейпоинт не сработает в принципе и на его месте застынет надпись «ожидание», поэтому используйте переключатели с умом.

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

При активации:
Вторая, наиболее полезная возможность вейпоинтов. В тот момент когда вейпоинт будет активирован, выполнится код который назначен в этой строке. В примерах которыми я сопровождаю данное руководство, там выполняется код подсказки, который сообщает игроку что происходит. Однако ничто не мешает нам записать туда какой угодно код. Например обезоружить игрока, как в этом примере или прописать true для глобальной переменной, вместо того чтобы делать это в триггере. Команды надо прописывать через разделитель строк ;

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


Скрипт:
В этой строке прописывается скрипт который будет вызван при активации данного вейпоинта, если он имеет тип «ПО СКРИПТУ». Данный вейпоинт будет дожидаться завершения скрипта (команды exit в скрипте), после чего переключится на следующий.

Опции отображения:
Если выставлены опции показывать, то вейпоинт будет виден игроку на его тактической карте, которая появляется при нажатии «M» или на брифинге. Крайне мало используемая опция. Отображение может зависить от уровня сложности на которой играет игрок. Можно дать просмотр только новичкам, можно всем, а можно и никому вообще, что стоит по умолчанию изначально. Если в каком либо вейпоинте не проставить опцию отображения, то он будет исключен из числа отображаемых.


Эффекты:
Коротко об эффектах. При активации вейпоинта могут быть выполнены эффекты которые настроены в специальной кнопке в вейпоинте. В основном это звуки, музыка, надписи на экране и прочее. Это полезно в тех случаях, когда человек совершенно не разбирается в скриптах, однако все это с легкостью компенсируется скриптовыми возможностями игры и надобность в подобных «эффектах» полностью отпадает. В любом случае, поскольку эта тема общая так же для триггеров, эффектам будет посвящена отдельная статья.


Почему тру-картоделы не используют вейпоинты.
Вейпоинт представляет собой в файле mission.sqm примерно следующую картину

Иногда вейпоинты способны занимать до 60% главного файла миссии. А чем больше этот файл, тем дольше будет грузиться миссия и тем медленней она будет работать, в основном из-за ожи-даний выполнения различных условий. Любой нужный нам вейпоинт может быть:

  1. Заменен управляющими командами.
  2. Создан скриптово.


Поэтому нет особой логики в том, чтобы забивать миссию десятками а то и сотнями линий.
Вейпоинты ценны тем что позволяют не проверять в скрипте условие достижения, поэтому есть два пути, можно обойтись простой командой и проверять условие достижения точки, а можно выставить вейпоинты и забыть об этом. Однако вейпоинты так же не являются гибким средством чтобы модифицировать миссию на ходу. Более того, выставленные в редакторе вейпоинты игроку – прямой враг нелинейности, которая нынче в моде
Замену управляющими командами мы рассматривать не будем, потому что в основе их лежит лишь команда move и танцы с бубном вокруг нее, мы рассмотрим создание вейпоинтов скриптово.
Если среди читающих есть люди кто только начинает работать с редактором – дальше можете не читать, все равно ничего полезного для новичков там нет в принципе, да и не поймете ничего.
Любой вейпоинт добавляется группе, а не юниту. То есть, в скрипте мы получаем группу в локальную переменную и с этой группой делаем нужные нам непотребства в виде навешивания вейпоинтов.
http://ru.armacomref.wikia.com/wiki/AddWaypoint
_grp addWaypoint [position _target,0];
Любой добавленный группе вейпоинт имеет четкий индекс. Начинается он с 1 и последующие за ним вейпоинты имеют свои индексы 2,3,4 и так далее. Эти индексы используются в командах управления вейпоинтами. Получить индекс текущего вейпоинта группы можно с помощью команды http://ru.armacomref.wikia.com/wiki/CurrentWaypoint
После того как мы создали вейпоинт, можно отредактировать его свойства сле-дующими командами:

Миссия пример – смотрим миссию, скрипт. В принципе все там понятно и доступно.

Синхронизация происходит через
[_group1, 2] synchronizeWaypoint [[_group2, 3],[_group3, 2],]
Так же можно выставить активный вейпоинт через команду
_grp setCurrentWaypoint [_grp, 5]

Можно взять построенные вейпоинты одной группы и скопировать их в качестве вейпоинтов другой группы
http://ru.armacomref.wikia.com/wiki/CopyWaypoints

Удаление вейпоинтов производится с помощью команды
http://ru.armacomref.wikia.com/wiki/DeleteWaypoint
Есть некоторые проблемы связанные с удалением, читайте комментарии на страни-це.


Вот в общем-то и все, на текущий момент. Возможно это руководство будет до-полняться и добавляться информацией, которая, возможно, была мною незаслуженно забыта.

А теперь: Ахтунг!
Любое копирование информации приведенной здесь допускается только при условии указания автора, источника копирования (ссылка на тему Flashpoint.ru), а так же при условии наличия ссылки на сайт OTK Studio.
Любая модификация текста данного информационного пособия на других ресурсах - только с согласия автора.

Комментарии 

 
#1 artem-83 26.12.2010 07:14
Отличный мануал, а продолжение будет? Жду с нетерпением спасибо!
Цитировать
 
 
#2 oorah 02.01.2011 02:56
Спасибо, узнал много нового.
Цитировать
 

Наш баннерour banner

OTK Studio website

Партнерыpartners

Russian largets portal
Internacional news website
Global news website
Ukrainian news website
Portuguese news website
SARMAT news website

Кто на сайтеwho on site

Сейчас 4 гостей онлайн