Диалоговые окна
Автор: Сорнемус
В данной статье я расскажу, как работать с диалоговыми окнами на примере мини-диалога.
Для начала я объясню некоторые вещи:
1. Если я пишу ХХХ => УУУ => ZZZ, то это значит, что надо зайти в меню ХХХ, нажать там УУУ и выбрать ZZZ.
2. После некоторых указаний в круглых скобочках я буду указывать горячую клавишу этого действия.
Также желательно чтобы Читатель знал триггеры на уровне новичка.
Итак, начинаем! Первым делом нам надо будет подготовить всё для создания мини-диалога:
Включаем World Editor. Создаём новую карту (если у вас отключен пункт «Автоматически создавать карту при запуске WE»). Потом идём в Слой => Юниты (U). Создадим где-нибудь паладина, а неподалёку пехотинца:
Далее создадим небольшую область рядом с паладином, и назовём её «Paladin»:
Дальше пойдёт триггерная часть:
Для начала нам нужно пойти в «Редактор Переменных» (Ctrl + B). Создаём там переменную-массив типа «Кнопка» («Button») размером 3 ячейки, переменную типа «Диалог» («Dialog»), и две переменных типа «Боевая единица» («Unit»). Массив кнопок назовём «Buttons», наш диалог «Dialog», одну переменную юнита назовём «Footman», а другую «Paladin»:
Далее создаём папку триггеров «Dialog». Там создаём 5 триггеров: «Init», «ShowDialog», «ClickFirst», «ClickSecond» и «ClickThird». Заходим в триггер «Init». Ставим событием «Elapsed time in 0.01» («Времени прошло 0.01 секунд»). Назначаем там переменной «Footman» пехотинца, а «Paladin» паладина соответственно.
Теперь нам надо назначить описание для диалога и кнопок. Но для начала позвольте мне разъяснить некоторый момент – я поставил событие не Инициализацию карты, потому что диалоги, как и мультиборды/таблицы рекордов не могут работать с событием Инициализации, поэтому надо использовать событие «Elapsed time».
Итак, продолжим. Назначаем текст диалогу действием «Диалог – Change title». А для назначения кнопкам текста надо использовать 2 действия – сначала мы создаём кнопку действием «Диалог – Create Dialog Button»,а потом занесём её в переменную «Set Buttons [1/2/3] = Last Created Dialog Button». Давайте поставим текст диалогу «Выберите ответ:», а кнопкам «Привет!», «Ты кто?» и «Пошёл вон!». Вот как всё будет выглядеть, если вы сделали всё правильно:
Дальше нам надо сделать так, чтобы при определённых действиях это окно показывалось, верно? Для примера, я сделаю, чтобы оно показывалось во время разговора между Пехотинцем и Паладином, а данный разговор начинался, когда Пехотинец входит в нашу зону «Paladin». Итак, идём в триггер «ShowDialog», там ставим событие «Боевая единица – A unit enters region». В регион ставим нашу область «Paladin». Далее, в условиях, выбираем «Unit Comparison» и ставим там «(Entering unit) равно (==) Footman».
Потом в действиях включаем ролик действием «Спецэффекты – Cinematic Mode». Потом делаем так, чтобы паладин говорил Пехотинцу «Здраствуй.». Тут нам поможет действие «Спецэффекты – Transmission from Unit». Ну а теперь можно и показывать диалог. Если всё правильно, то триггер «ShowDialog» у вас должен выглядеть так:
Теперь мы должны сделать, чтобы при нажатии определённых кнопок диалога, паладин реагировал по-разному. Для начала идём в «ClickFirst». Ставим событие «Диалог – A dialog button is clicked for Dialog». Теперь мы должны поставить условие, что нажатая кнопка, это «Buttons[1]». То же самое мы будем делать и с другими кнопками. Ставим «Dialog Button Comparison» где проставляет значения таким образом: «(Clicked dialog button) равно (==) Buttons [1]».
Потом нам надо сделать, чтобы Пехотинец говорил нужную фразу, в данном случае это «Привет!». А паладин должен будет ему ответить. У нас диалог небольшой, поэтому паладин ответит один раз. Его фразой будет «Извини, я спешу. До встречи!». А Пехотинец ответит «Ну до встречи...». Ну и в конце выключаем режим ролика. В конечном итоге выйдет так:
Далее ставим в триггер «ClickedSecond» те же самые события и условия, но в условии заменяем «Buttons [1]» на «Buttons [2]». Но теперь паладин будет отвечать по другому, то есть у нас выйдет вот такой коротенький разговор:
Пехотинец: Ты кто?
Паладин: Я Паладин армии Альянса.
Пехотинец: Ясно…
Триггер станет выглядеть так:
Ну и наконец, третий ответ. В нём пехотинец отвечает грубо, поэтому и ответ паладина будет грубым ;-)
Пехотинец: Пошёл вон!
Паладин: Как ты со мной разговариваешь!?
Пехотинец: Как хочу, так и разговариваю!
Ну а триггер будет таким:
Ну, вот и всё. На этом статья закончена. Удачи вам в создании диалогов, и прочего ;-)
Карта-пример: Скачать
P.S. Некоторые могут жаловаться на то, что у большинства русские триггеры. Так вот, если у вас русские триггеры, то открывайте карту-пример, и сравнивайте то, что в карте, и то, что в статье. Тогда всё должно быть более-менее понятно.