Точки пути (Way Points)

Материал из xrWiki
Версия от 11:00, 18 декабря 2019; RedPython (обсуждение | вклад) (Новая страница: «= Система расстановки путей = В точках путей можно задавать флаги, изменяющие поведение п…»)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Система расстановки путей

В точках путей можно задавать флаги, изменяющие поведение персонажа. Флаги задаются прямо в имени waypoint-а, например, для точки с именем wp00:
wp00|flag1|flag2


Флаги точек пути path_walk

  • a=state
    Выбирает состояние тела при перемещении (только из раздела "Ходячие состояния"). Список состояний можно найти в gamedata\scripts\state_lib.script
  • p=percent
    Вероятность остановиться в точке в процентах (0-100). По умолчанию 100, т.е. сталкер никогда не проходит мимо точек остановки.
  • sig=name
    Установить сигнал с именем name сразу по прибытию в точку (до поворота) для последующей его проверки с помощью поля on_signal логической схемы. Если нужно установить сигнал после поворота – используйте соответствующий флажок пути path_look.


Флаги точек пути path_look

  • a=state
    Выбирает состояние тела при стоянии (или сидении) на месте (из разделов "Стоячие и сидячие состояния"). Список состояний можно взять в gamedata\scripts\state_lib.script
  • t=msec
    Время в миллисекундах, которое персонаж должен смотреть в заданную точку. * — бесконечное время. Допустимы значения в диапазоне [1000, 30000], по умолчанию — 5000. Для конечных (терминальных) вершин пути path_walk, у которых не более 1-й соответствующей точки path_look, значение t всегда считается бесконечным и его явно задавать не нужно.
  • sig=name
    После поворота в точку path_look установить сигнал с именем name.
  • syn
    Наличие флажка задержит установку сигнала до тех пор, пока в точку с флажком syn не прибудут все персонажи данной team (team задается в виде текстовой строки в customdata). До тех пор, пока остальные персонажи не прибудут, ожидающей персонаж будет отыгрывать свою idle-анимацию.
  • sigtm=signal
    Устанавливает сигнал при вызове time_callbackstate manager-ом. Соответственно, если t=0, то сигнал будет установлен после отыгрывания init-анимации. Это используется, например, с анимацией press, которая состоит из двух частей: 1 — нажимаем на кнопку, 2 — опускаем руку. В пути path_look можно сделать так:
    wp00|a=press|t=0|sigtm=pressed
    А затем переключить схему:
    on_signal = pressed | другая_схема


Более подробное описание путей на примере логики walker

Файл:logic-setup-walker.png
На карту для каждого walker-а нужно поставить:

  1. Путь path_walk, по которому walker ходит.
  2. Путь path_look, состоящий из точек, в которые walker смотрит.

Walker-ов может быть 1 или больше. Они могут действовать независимо, или взаимодействовать друг с другом.

[walker]

  • team = …
    Имя команды, произвольная текстовая строка. Все walker-ы в одной команде должны иметь один и тот же team. Желательно в team задавать имя уровня и имя места, где стоят walker-ы, например: escape_bridge, escape_factory. Это уменьшит шанс ошибиться и дать разным командам общее имя.
  • path_walk = …
    Имя пути, описанного в п. 1.
  • path_look = …
    Имя пути, описанного в п. 2 (необязательно). Если персонаж должен только ходить по маршруту, path_look можно не задавать. Если персонаж должен стоять на месте, то ему задается одна точка пути path_walk и как минимум одна точка пути path_look.

Правила расстановки флажков в путях рассмотрим на нескольких примерах.

Пример 1

Персонаж патрулирует территорию вокруг двух домиков. Маршрут строится следующим образом:

КАРТИНКА1

Как сделать, чтобы персонаж между определенными точками бежал или крался? Для этого в пути path_walk существуют флажки. У каждого вейпоинта есть имя: wp00, wp01 и т.д. Флажки задаются в имени. Их нужно отделять от самого имени с помощью символа |. Пишется a=anim, где anim – название анимации из пункта 2.4.4. настоящей документации. Если мы напишем a=threat, то персонаж пойдет в состоянии danger, если a=raid, то побежит с оружием наизготовку и т.д.

Заметка

В точках пути path_walk используются анимации только из раздела «Ходячие состояния»!


Пример 2

Чтобы персонаж говорил, перемещаясь по маршруту, нужно определить в каждой точке список тем, на которые он может говорить. Для этого существует поле s = имя_звуковой_схемы (по умолчанию звук отключен). Несколько тем можно перечислять через запятую.


Пример 3

КАРТИНКА 3

В примере 3 используется только поле s, чтобы задать тему разговора, и флажок sc, чтобы показать, что звук проигрывается не разово, а периодически. Остальные параметры (sa, sf, sp, st) задавать не рекомендуется, значения по умолчанию приемлемы для большинства скриптов. Если нужно стартовать звук одновременно с анимацией, лучше воспользоваться полями пути path_look, о котором будет написано ниже. Если персонаж не только ходит по маршруту, но должен также останавливаться и играть анимации, нужно задать ему путь path_look.


Пример 4

Усовершенствуем пример 1, чтобы персонаж, проходя мимо проема между домами, останавливался и заглядывал в него:

КАРТИНКА 4

Что добавилось в этом примере? Путь path_look с двумя точками. Связь между точками этого пути рекомендуется сразу же удалить в редакторе, поскольку она все равно не используется. Далее, в точках путей path_walk и path_look, которые обведены на рисунке пунктирной линией, в редакторе ставим общие флажки. Например, в верхней паре точек ставим флажок 0, а в нижней паре точек — флажок 1.

Теперь персонаж будет останавливаться в точках path_walk, помеченных флажком, и смотреть в точку path_look, помеченную тем же самым флажком. Если точка path_walk не помечена флажком, персонаж проходит ее не останавливаясь. Одной точке path_walk может соответствовать несколько точек path_look. Тогда персонаж случайным образом выберет одну из подходящих точек.

По аналогии с path_walk, в точках пути path_look можно использовать различные флажки, меняющие поведение:

  • p = … — вероятность, с которой персонаж посмотрит именно в эту точку. Значения p всех подходящих точек суммируются, т.е. если у одной точки p = 100, а у другой 300, то персонаж посмотрит в первую с вероятностью 25% (т.е. 100 из 400).
    Во избежание путаницы, рекомендуется задавать p так, чтобы их сумма составляла 100. По умолчанию у всех точек p = 100.
  • t = … — время, на которое персонаж задержится в этой точке (по умолчанию 5000 мсек).

Пример 5

В этом примере, проходя через точку wp00, персонаж с вероятностью 30% посмотрит в точку wp00 в течение 5 секунд, и с вероятностью 70% посмотрит в точку wp01 в течении 10 секунд.

По умолчанию при остановках персонаж играет анимацию idle, если он не в состоянии crouch, либо анимацию hide, если он в состоянии crouch.

Если требуется другая анимация, можно ее указать с помощью флажка:

  • a = имя_анимации (по умолчанию idle).
    Если мы напишем a=hide, то персонаж сядет в состоянии danger, если a=guard, то встанет с оружием наизготовку и т.д.
Заметка

В точках пути path_look используются анимации только из раздела «Стоячие и сидячие состояния»!