На этот раз я вам поведаю, как работать с path_* или путями, тобиш
мы будем учить людей/монстров ходить по определенному маршруту. Для этого
нам понадобится создать простую карту типа BOX и поместить в нее любой
character (можно и монстра, но некоторые из них ограничены - не могут прыгать
и смотреть на объекты, говорить и т.п.).
Я вставил в свою карту MOUSE2/char/char_campbell и планирую над ним
слегка поиздеваться, дело в том, что с помощью path мы можем заставить
нашего подопытного кролика делать следующие вещи (тобиш описываю типы path):
- path_anim: Проиграть определенную анимацию (например,
стоять, говорить, бежать, получать боль (или допустим у Импа есть анимация
- кушать (в игре он ел толстого зомби))), анимация которую должен проиграть
char должна содержаться в параметре "anim";
- path_attack: Атаковать кого-то, выбираем имя противника
в параметре "enemy" и соответственно когда дойдет очередь до выполнения
этого path наш подопытный начнет разыскивать и в последствии замочит выбранного
врага;
- path_conversation: Подопытный смотрит на определенный
объект и воспроизводит определенный звук (желательно речь :D), в параметре
"snd_dialog" выставляем имя звука с диалогом, в параметре "focus" пишем
имя entity на кого пялиться;
- path_conversation_listen: Наш подопытный будет смотреть
на определенный entity, который воспроизводит речь и будет ждать пока он
закончит, в параметре "focus" пишем имя того кого мы собственно внимательно
слушаем, интересная вещь - мы можем выбрать анимацию (параметром "anim"),
которую мы будем воспроизводить пока слушаем entity, тобиш мы например
можем вписать анимацию боли и получиться что нас колбасит от разговора
с кем-то :);
- path_corner: Самый нужный path, именно к нему мы будем
идти. Из цепи таких path мы можем сделать путь, по которому будет идти
наш подопытный (очень полезно при создании сингл карт - делаем, чтоб реалистично
топтались NPC, а не в тупую стояли как вкопанные);
- path_cycleanim: Тоже самое, что и path_anim но только
анимация будет проигрываться бесконечно, и прекращаться по истечении определенного
количества времени (параметр "wait"), или до тех пор пока не обратиться
к нему триггер;
- path_default: Недоразумение в мире path, любое его использование
приводит к ошибке;
- path_headanim: Проигрывает анимацию головы во время ходьбы
(например, наш подопытный с кем-то говорит на ходу);
- path_hide: Скрывает нашего подопытного (например, он
проделает определенные действия по path и уже не нужен - тобиш будет скрыт,
а если и понадобится, то триггером можно его обратно проявить, или path_show);
- path_jump: Прыгает к следующему path (тобиш тому, кто
позначен в параметре "target");
- path_lookat: Смотрит на определенный entity (параметром
"focus"), выставленное количество времени (параметром "wait"), или пока
к нему не обратится триггер;
- path_show: Проявляет нашего подопытного (например, если
он был скрыт path_hide или имел параметр "hide" - "1");
- path_talk: Заставляет подопытного поговорить с нами;
- path_talk_primary: Заставляет подопытного сказать нам
его главную анимацию речи;
- path_talk_secondary: Заставляет подопытного сказать
нам его второстепенную анимацию речи;
- path_talk_triggered: Заставляет подопытного сказать
нам его затриггеренную анимацию речи;
- path_turn: Поворачивает подопытного на определенный
угол (параметр "angle");
- path_wait: Просто определенное количество времени простоять
без действия (параметр "wait");
- path_waitforheadanim: Ждать анимации головы после использования
path_headanim, параметром "focus" указываем на кого смотрим;
- path_waitfortrigger: Ждать обращения триггера к подопытному,
после обращения триггера продолжит свой путь по path;
Также существует отдельный ряд path для управления setry
(такой чупик - за нами ходит, охраняет, указывает путь):
- path_sentry_ignore_player: Перестает следовать за игроком
и идет на свой следующий path;
- path_sentry_lead_player: Начинает следовать за игроком
и идет на свой следующий path
- path_sentry_light_off: Выключает фонарик;
- path_sentry_light_on: Включает фонарик;
- path_sentry_shutdown: Завершить работу, до следующей
активации триггером;
- path_sentry_unlock_door: Подходит к данному path и воспроизводит
анимацию открытия двери, в параметре "trigger" нужно выставить target_lock
объект, открывающий дверь.
Кажись все, ну а теперь самое главное - как ими пользоваться?
Очень просто. Они действуют по типу цепи - мы у нашего подопытного указываем
параметр "target" и в его значении пишем имя первого path нашей цепи, потом
указываем параметр "target" уже у нашего первого path и в значении указываем
имя следующего и так далее до посинения, можно также поставить в loop,
выставив в параметре "target" последнего path имя первого path, ошибки
не будет.
Теперь об ошибках - они будут и в больших количествах, если наш подопытный
не может сделать определенный вид действия, например, прыгать, говорить,
практически все могут выполнить path_corner.
И на последок разберемся с еще одной вещью - у каждого типа path есть
свои немаловажные подпараметры (как, например, сила в path_jump) и их нужно
обязательно выставить (если они нужны), во избежание глюков, также хочу
сказать что есть несколько общих параметров у всех path (параметр - описание):
skip - пропустить данный path и перейти к следующему, если
к подопытному заговорят или будет услышан выстрел;
no_talk - не разрешать говорить с подопытным пока не закончит
делать path действие;
no_cower - не разрешать NPC прикрываться как девчонка
когда будет услышан выстрел;
trigger - объект, который нужно затриггерить когда будет
закончено path действие;
target - имя следующего path из цепи.
Также хочу сказать, что у любого character есть параметр "wander",
если его активировать, то он будет посещать path случайно. Все, думаю более
подробно освещать тему path не нужно, поскольку все и так понятно. Если
что-то не получается то вы можете всегда скачать мою тестовую карту с path
и посмотреть что вы сделали не так: test_path.rar