Как сделать разговор в редакторе WorldEdit
Гостям скачивать запрещено
Просмотров: 6184
Комментариев: 2
Рейтинг: 4.4 Добавил: Гость
Дата добавления: 21.11.2017
Читать больше про Warcraft III Маппинг

Скриптовые сценки. Диалоги. Озвучка. Области.
Начнем мы с вами со скриптовых сценок. Скажу сразу: запаситесь терпением, потому что у вас (как и у меня) вряд ли получится сделать желаемое с первого раза. В этом нет ничего страшного. Немного практики - и все получится!
За скриптовую сценку отвечает триггер (или триггеры), куда надо вписать все действия камеры, персонажей, декораций. Давайте сделаем небольшой ролик.
Сперва надо расставить специальные маркеры, по которым будет перемещаться камера. Сделать это нетрудно: откройте панель камеры, приведите камеру редактора в нужное положение и нажмите кнопку "добавить камеру". В указанном месте появится полупрозрачный силуэт камеры, соответствующий положению камеры редактора на момент создания. Если положение оказалось неправильным, ничего страшного: камеру можно легко передвинуть с помощью мыши.
В свойствах камеры (открываются по двойному щелчку на выбранной камере) можно задать угол наклона камеры относительно земли, поворот, крен,
расстояние от камеры до земли, поле зрения камеры. Можно дать камере название.
Если вы хотите, чтобы камера в ролике двигалась равномерно (вспомним физику) по прямой траектории, достаточно двух камер (вспомним геометрию, сколько точек нужно для построения прямой?). Но если вы хотите сделать путь камеры извилистым, двумя камерами уже не обойтись.
Итак, вы расставили камеры по карте. Что дальше? Теперь надо создать триггер и прописать в нем все движения камеры. 
Рассмотрим процесс создания этого триггера. Допустим, у вас по карте расставлены три камеры с названиями cam1, cam2, и cam3 соответственно. Нужно провести камеру по всем этим точкам. 
Стоп. Вот и первая развилка на нашем с вами тернистом пути. Дело в том, что в игре есть так называемый, "кинематический режим"(cinematic mode)
(Мы будем для краткости называть его "режим кино"). Когда игра (вернее, камера) переходит в этот режим, интерфейс исчезает, а его место занимает 
панель, где показывается портрет произносящего реплики персонажа и сами реплики. Пока камера находится в "режиме кино", игрок не может 
управлять своими юнитами.
Так вот, управление камерой можно осуществлять как в "режиме кино", так и вне него. "Режим кино" обычно используется для создания 
продолжительных и важных сцен. Если же нужно просто акцентировать внимание игрока на чем-либо, "режим кино" можно не использовать.
Приведу примеры.
1. Добрый герой встречается с героем плохим. Идет длительная перепалка, затем герой светлый (без участия игрока) бросается на героя темного 
и убивает его. В этом случае использование "режима кино" было бы предпочтительнее.
2. Герой идет к ценному артефакту. Когда он находится уже в двадцати шагах от него, камера отъезжает в сторону артефакта и показывает, что 
этот самый артефакт охраняют призраки. Использование "режима кино" в данном случае допустимо, но не рационально.
Сначала попробуем переместить камеру не используя "режим кино". Откройте редактор триггеров. Создайте новый триггер. Теперь начнем его заполнять.

Для начала сделаем, чтобы камера начинала перемещаться сразу после загрузки карты. Так что создайте событие "map initialization".

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

тип действия (верхний раскрывающийся список) - камера.
действие (нижний раскрывающийся список) - apply camera object (timed).
Теперь настроим действие. Щелкните по выделенным красным параметру (напомню, что "красные" параметры являются обязательными) "camera object", в появившемся окне нажмите "выбрать" и щелкните по камере, с которой вы планируете начать движение. 
Следующий параметр указывает, какой игрок будет лицезреть передвижение камеры. Это пока не трогайте.
Последний параметр указывает, сколько времени камера потратит на перемещение от своего прежнего положения до нового.
Поскольку у нас три камеры, создайте действия (не триггеры, а именно действия!) для них всех.
Очень важный момент: если в ролике участвует более 2 камер, после каждого действия, активизирующего камеру, нужно вставить такое действие:

тип: все

действие: wait

Действие wait используется для создания задержки, например между другими действиями. В данном случае оно необходимо. 
Если ролик состоит более чем из двух маркеров, а действия wait отсутствуют, камера полетит от первого маркера сразу к последнему.
Время задержки указывайте такое же, как и у действия, запускающего предшествующую камеру. После последнего действия действие wait не нужно.
Сохраните карту и запустите её (ctrl-F9). Работает? Отлично. Не работает? Возможно, вы что-то упустили, перечитайте вышеприведенные действия.
А теперь попробуем сделать то же самое, только с использованием "режима кино". Придется немного подредактировать cозданный нами триггер. А именно:
Первым (по порядку) действием триггера должно быть такое действие:
тип: спецэффекты
действие: cinematic mode
У действия cinematic mode два параметра. Первый включает или отключает "режим кино". Второй указывает, для каких именно игроков будет
включен\отключен "режим кино".
Теперь надо убрать с экрана интерфейс (миникарту и панель приказов персонажам). Делается это созданием следующего действия:

тип: спецэффекты

действие: letterbox mode on

Действие Letterbox mode on имеет два параметра: первый показывает, всем ли игрокам нужно отключить интерфейс, второй указывает,
сколько времени займет исчезновение интерфейса (он исчезает с эффектом fade to black, то есть постепенное исчезновение). Если
хотите, чтобы интерфейс исчез мгновенно, задайте второй параметр: 0.00 секунд.
Затем должны следовать действия с камерами, которые мы уже создали. А в конце триггера надо создать почти такие же два действия, как и в начале, но:
В действии "cinematic mode" задайте первый параметр - "откл."
А вместо действия "letterbox mode on" выберите "letterbox mode off".
Совет: если вам нужно, чтобы "режим кино" был включен какое-то определенное время, вместо действия "cinematic mode" выберите 
действие "cinematic mode (timed)" и задайте необходимое время.
Вот, собственно и все. Как видите, стоит пару раз попробовать - и все становится довольно простым.
Однако, возникает вопрос: неужели в ролике все персонажи будут намертво прикованы к земле? Конечно, нет. Давайте научим их перемещаться
и выполнять другие действия. Начнем с перемещения.
Переместить юнит можно несколькими способами. Если нужно быстро переместить юнит из одной точки в другую (фактически, телепортировать),
используйте такое действие:

тип действия: боевая единица

действие: move unit (instantly)

У данного действия есть 2 параметра. С помощью первого указывается юнит, подлежащий транспортировке. А вот со вторым все
чуть сложнее. Вторым параметром задаются координаты точки, куда переместится юнит. Стандартное значение - "center of
playable map area" (центр карты). Щелкните по тексту второго параметра и откройте раскрывающийся список. Как видите,
вариантов много. Можно перебросить бойца в центр какой-либо области (работа с областями - ниже), в случайную точку области,
в точку с координатами, к предмету, к другому юниту. Но давайте воспользуемся вариантом с координатами. Выберите
в раскр. списке функцию "point with offset". 
Чтобы узнать координаты точки, наведите курсор на нужную точку карты и посмотрите в левый нижний угол окна редактора. 
Там - три числа. Первое и второе - искомые координаты (x, y), третье число - высота точки над землей.
Итак, с перемещением разобрались. Теперь давайте заставим юнита сделать какое-нибудь другое действие.
Для этого используются все действия категории "боевая единица", название которых начинается на "issue order...".
С помощью этих действий можно приказать юниту сделать любое действие: начать собирать ресурсы, построить здание, атаковать,
применить способность или заклинание, и.т.д. Например, елси хотите переместить юнит, выберите действие 
"Issue order targeting a point" и укажите точку назначения. Только в этом случае юнит не переместится туда мгновенно,
а будет со своей скоростью двигаться к точке.
Настройка действия довольно проста. Например, выберите действие "issue order targeting a unit". Первый параметр
показывает действующее лицо, второй - его действия, третий - юнита, который пострадает (а может и не пострадает) от этих действий.
Описывать все параметры действия бессмысленно - это займет очень много времени. Поэкспериментируйте с параметрами действия, 
чтобы найти нужное вам. 

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

тип: спецэффекты

действие: transmission from unit

Это действие имеет много параметров. Разберем их все по порядку:

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

с помощью второго параметра задается персонаж, который будет говорить

в третьем параметре указывается имя персонажа (которое будет указываться перед его словами).

с помощью четвертого параметра к реплике персонажа можно привязать звуковой файл (но об этом позже)

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

шестой параметр - вместо "добавить" выберите "установить значение", иначе возникнут несостыковки текста и звука

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

восьмой не трогаем.

Вот мы и разобрали состав необходимого действия. По сравнению с предыдущими оно довольно громоздкое, но ничего трудного в нем нет.
Попробуйте сделать триггер с подобным действием. В качестве события укажите "map initialization". Когда будете создавать действие
"transmission from unit", юнита выберите обычным способом: нажмите на слово "unit", затем щелкните кнопку "выбрать" и укажите нужного юнита на карте.
Когда закончите, протестируйте полученный триггер. Если все работает - двигаемся дальше.
Реплики персонажей можно включать и в "режиме кино". Разница в отображении слов персонажа. Если "режим кино" не используется,
текст будет появляться над портретом персонажа и будет выглядеть так: "имя персонажа" : "текст".
Если же "режим кино" включен и интерфейс убран с экрана, то в левом нижнем углу экрана будет анимированный портрет персонажа, 
произносящего спич, чуть правее - его имя (указанное в действии "transmission from unit" ), ниже - текст.
Как и в манипуляциях с камерой, использовать "режим кино" лучше всего для длительных диалогов. Если нужно вывести на экран одинокую
реплику, можно обойтись без "режима кино". 
Если вы хотите, чтобы диалог показывался в "режиме кино", вставьте в триггер действия, необходимые для запуска режима (в правильном
порядке).
Персонажи на наших с вами картах отныне умеют говорить, но для большей атмосферности нужно заставить их не просто демонстрировать нам
свои высказывания, но и произносить их вслух. Это - наша следующая остановка.
Чтобы открыть редактор звука, нажмите F5. Как вы видите, окно редактора звука разделено на две части: в левой - стандартные игровые звуки, 
в правой - звуки, импортированные в карту. Также можно экспортировать звук и сохранить его как обычный звуковой файл. 
Если вы хотите добавить на карту свой звук, нажмите ctrl-i и выберите wav или mp3 файл. Чтобы сделать его доступным для использования на карте,
щелкните по импортированному звуку правой кнопкой мыши и выберите действие "использовать, как звук". Редактор звука создаст звуковую 
переменную. Она появится в правой части окна. Имя переменной присваивается автоматически - оно совпадает с названием файла. Если хотите 
изменить название, щелкните по переменной правой кнопкой мыши и выберите "изменить звуковую переменную".
Импортируйте пару своих звуков. Теперь давайте приделаем их к реплике персонажа. Откройте триггер, где есть действие "transmission from unit".
Нажмите на слова "нет звука", в появившемся окне откройте раскрывающийся список. В нем должны быть все созданные звуковые переменные.
Выберите нужную и жмите OK. Готово. Запустите карту. При реплике персонажа теперь должен проигрываться указанный вами звук.
Если вы хотите использовать звук, как фоновую музыку, создайте новый триггер. В качестве события укажите стандартный "map initialization".
Действие, запускающее музыку простое по составу. Вот его вид:

тип действия: звук

действие: play sound

Действие Play sound имеет всего один параметр - звук, который будет проигрываться. Нужный звук задается так же, как и в речи персонажа.

Отныне обитатели нашей с вами карты умеют говорить, гробовой тишины больше не будет. Мы с вами овладели почти всем необходимым для создания
полноценной сингловой карты/карты для кампании. Осталось совсем немного.
Теперь перейдем к достаточно важной детали - областям. 
Для чего нужны области? В основном, для триггеров. Вот например, как создать триггер, запускающий скриптовую сценку в тот момент, когда управляемый игроком
персонаж наступает на какую-то определенную точку? С помощью области. Использование областей позволяет добавить в игру интерактивности. 
Например, стены города. Неприступные железные ворота. Игрок подходит поближе - ворота открыватся - добро пожаловать! И это лишь один из
многочисленных примеров.
Создать область легко. Обратите взгляд на панель инструментов и выберите вкладку "панель областей". Нажмите кнопку с квадратом и с
помощью мыши создайте область. Область может быть только прямоугольной формы. Свежеиспеченная область незамедлительно
появится в списке областей ниже. В редакторе область выглядит, как сиреневый прямоугольник. В игре область невидима.
Области можно присвоить название - для этого откройте панель областей, нажмите на нужную область правой кнопкой мыши и выберите
"изменить свойства области". В появившемся окне можно задать название, изменить величину области, а также привязать к ней погодный эффект.
Теперь главный вопрос - как сделать, чтобы триггер запускался при входе персонажа в область?
Организовать это несложно. В качестве основы возьмем триггер, где вы прописывали движения камеры (если он у вас сохранился). Удалите событие 
"map initialization" - оно нам больше не понадобится. Создайте новое событие:

тип события: боевая единица

событие: unit enters region (если хотите, чтобы реакция была на выход из зоны, а не вход в нее, выберите unit leaves region)

У действия unit enters region один параметр - область, к которой будет привязан триггер. Задайте её. Запустите карту.
Теперь ролик начнется не в начале игры, а когда какой-нибудь юнит попадет в область.
Итак, теперь вы умеете пользоваться областями и привязывать к ним триггеры. 

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

тип действия: триггер

действие: turn off

У действия один параметр - укажите, какой триггер нужно будет отключить. 
С помощью других действий этой категории можно произвести обратный процесс - включить триггер (если он отключен, чтобы 
сделать триггер отключенным с самого начала игры, выделите его в редакторе триггеров и снимите галочку "изначально включен"
(в верхней части окна)). Также можно добавить в триггер новое событие.


Всего комментариев: 2
АК-47   (10.07.2012 21:04)
 yahoo

+1   Спам
Deamonic   (10.07.2012 00:11)
 [color=green]Огромное Спасибо! Всё на доступном языке! Было всё понятно 2 раза потренировался и всё стало на автомате... Почти всё получается что было тут указанно! Карты стали намного интереснее...Еще раз спасибо за такую полезнцю информацию

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