Обучалка непростая, рассчитана на тех кто хотя бы выполнил все предыдущие туторы по триггерам и немного шарит в них. Мы создадим систему заданий (квестов для любителей RPG), у нас будет персонаж принимающий и выдающий это задание. Будет также и журнал заданий. Систему, по мне так похожую на Diablo II
Вот как все примерно будет выглядеть (Не забывайте, оформление=ваша фантазия):


Для начала сделайте карту. Поставьте себе какую-либо единицу (игрок 1), единицу для персонажа с заданием (игрок 2) и кучку зерглингов для битья (игрок 15).

Область 001 не обязательна. У меня она ограничивает игровую площадь, мне удобнее было :). А вот область Quest gain поставьте обязательно — входя в нее, ваша боевая единица сможет разговаривать с персонажем с заданием (в дальнейшем — задачником:)). Сделали? Молодцы.
Для начала давайте насоздаем кучу переменных (я объясню что зачем):
Kill count = 0 <Целое число>
LOG = Нет элемента диалогового окна <Элемент диалога>
Quest button dialog = Нет диалогового окна <Диалог>
NPC Text = "Здесь вставьте текст своего задания" <Текст>
QUEST LOG = Нет диалогового окна <Диалог>
Buttons = Нет элемента диалогового окна <Элемент диалога[1][1]>
quest dialog = Нет диалогового окна <Диалог>
Posibilty of Quest gain = false <Булево[2]>
Buttons — Массив с двумя индексами, Posibilty of Quest gain — с одним.
Нам нужна кнопка журнала с заданиями, да? Создаем триггер.
Initialization
События
Игра - Инициализация карты
Локальные переменные
Условия
Действия
Камера - Задать рамки камеры для игроков (Все игроки): Область 001 (Да миникарту)
Интерфейс - Скрыть игровой ПИ для игроков (Все игроки)
Игрок - Игрок 1 и игрок 2 относятся друг к другу как Союзник с общим обзором
Окно диалога - Создать Модальный диалоговое окно размером (180, 180) в (0, 0), связанное с Правый верхний экрана
Переменная - Установить Quest button dialog = (Последний созданный диалог)
Окно диалога - Создать кнопку для диалога (Последний созданный диалог) с размерами 120 и 120, привязанную к Правый верхний со смещением (30, 30), подсказкой "", текстом "Assets\Textures\ui_ingame_help_tech..." и изображением наложения Assets\Textures\black.dds
Переменная - Установить LOG = (Последний созданный объект диалога)
Окно диалога - Показать (Последний созданный диалог) для (Все игроки)
Ваша единица и задачник — союзники, стандартного интерфейса больше нет, а рамки камеры заданы в области 001. Также создано диалоговое окно и кнопка в нем. И показано, собственно.
Теперь нам необходимо сделать проверки на то, находится ли наш герой в нужном месте (зоне Quest Gain). Создаем два триггера.
enter
События
Единица - Бессмертный [125.32, 121.42] Входит в Quest gain
Локальные переменные
Условия
Действия
Интерфейс - Показать "ВОШЕЛ " для (Все игроки) в зоне Субтитры
Переменная - Установить Posibilty of Quest gain[0] = true
Бессмертным должен быть ваш герой. Сообщение — надоедливое конечно, но жизнь облегчит вам ох как.
Exit
События
Единица - Бессмертный [125.32, 121.42] Оставляет Quest gain
Локальные переменные
Условия
Действия
Интерфейс - Показать "ВЫШЕЛ " для (Все игроки) в зоне Субтитры
Переменная - Установить Posibilty of Quest gain[0] = false
Как видите, за это все отвечает первый индекс нашей переменной — булева.
Нам нужно чтобы при выделении задачника показывался текст задания. Создаем триггер:
Quest dialog
События
Выбор единицы - Для Темный тамплиер [144.29, 120.17] задано Выделение игроком Любой игрок
Локальные переменные
Условия
Posibilty of Quest gain[0] == true
Действия
Окно диалога - Создать Модальный диалоговое окно размером (500, 400) в (0, 0), связанное с Сверху экрана
Переменная - Установить quest dialog = (Последний созданный диалог)
Окно диалога - Создать метку для диалога (Последний созданный диалог) с размерами 400 и 300, привязанную к Сверху со смещением (0, 50), текстом NPC Text цвета Белый и появлением текста true в течение 4.0.
Общее - Если (условия), то выполнить (действия), иначе выполнить (действия)
Если
Posibilty of Quest gain[1] == true
то
иначе
Окно диалога - Создать кнопку для диалога (Последний созданный диалог) с размерами 200 и 50, привязанную к Сверху со смещением (-120, 310), подсказкой "", текстом "Принять" и изображением наложения Assets\Textures\black.dds
Переменная - Установить Buttons[0][0] = (Последний созданный объект диалога)
Окно диалога - Создать кнопку для диалога (Последний созданный диалог) с размерами 200 и 50, привязанную к Сверху со смещением (120, 310), подсказкой "", текстом "Закрыть" и изображением наложения Assets\Textures\black.dds
Переменная - Установить Buttons[1][0] = (Последний созданный объект диалога)
Окно диалога - Показать (Последний созданный диалог) для (Все игроки)
При выделении задачника (у меня темного тамплиера) и переменной Posibilty of Quest gain[0] == true, появится диалоговое окно, в котором, в зависимости от переменных будет текст и различные кнопки. При первом клике будет текст задания + кнопки «Принять» и «Закрыть».
Давайте теперь создадим наш журнал с заданиями и заодно в этот же триггер впихнем прием задания и действие кнопки «закрыть» — создаем триггер:
Quest log
События
Окно диалога - Предмет Любой элемент диалога используется игроком Любой игрок с типом события Выбрано.
Локальные переменные
Условия
Действия
Общее - Если (условия), то выполнить (действия), иначе выполнить (действия)
Если
(Используемое окно диалога) == LOG
то
Окно диалога - Скрыть QUEST LOG для (Все игроки)
Окно диалога - Создать Модальный диалоговое окно размером (600, 700) в (0, 0), связанное с Левый экрана
Переменная - Установить QUEST LOG = (Последний созданный диалог)
Окно диалога - Создать кнопку для диалога (Последний созданный диалог) с размерами 200 и 50, привязанную к Левый со смещением (-40, 310), подсказкой "", текстом "Отказаться" и изображением наложения Assets\Textures\black.dds
Переменная - Установить Buttons[0][1] = (Последний созданный объект диалога)
Окно диалога - Создать кнопку для диалога (Последний созданный диалог) с размерами 200 и 50, привязанную к Левый со смещением (350, 310), подсказкой "", текстом "Закрыть" и изображением наложения Assets\Textures\black.dds
Переменная - Установить Buttons[1][1] = (Последний созданный объект диалога)
Общее - Если (условия), то выполнить (действия), иначе выполнить (действия)
Если
Posibilty of Quest gain[1] == true
то
Окно диалога - Создать метку для диалога QUEST LOG с размерами 400 и 50, привязанную к Левый со смещением (50, -200), текстом "Убейте 5 Зерглингов..." цвета Белый и появлением текста false в течение 2.0.
иначе
Окно диалога - Показать (Последний созданный диалог) для (Все игроки)
иначе
Общее - Если (условия), то выполнить (действия), иначе выполнить (действия)
Если
(Используемое окно диалога) == Buttons[1][0]
то
Окно диалога - Скрыть QUEST LOG для (Все игроки)
Окно диалога - Скрыть quest dialog для (Все игроки)
иначе
Общее - Если (условия), то выполнить (действия), иначе выполнить (действия)
Если
Posibilty of Quest gain[2] == false
(Используемое окно диалога) == Buttons[0][0]
то
Окно диалога - Скрыть Buttons[0][0] для (Все игроки)
Переменная - Установить NPC Text = "ТЫ ЕЩЕ НЕ УБИЛ ЗЕРГ.."
Переменная - Установить Posibilty of Quest gain[1] = true
Окно диалога - Скрыть QUEST LOG для (Все игроки)
Окно диалога - Скрыть quest dialog для (Все игроки)
иначе
При нажатии на нашу кнопку Log, появится новое диалоговое окно с заданиями, если они взяты конечно. В этом окне будут кнопки «закрыть» и «отказаться». Нажатие кнопки «отказаться» сбросит взятый квест, вследствие чего мы можем взять его заново.
Если же мы нажимаем на кнопку «принять» в окне с нашим квестом — информация о нем заносится в журнал и стартует квест (За это отвечает булево Posibilty of Quest gain[1] = true) и изменяется текст у задачника. Также кнопка принять до выполнения или сброса квеста будет недоступна.
Если же мы нажимаем на кнопку «закрыть» в окне с нашим квестом — просто закрывается окно журнала и разговора с задачником.
Давайте зададим теперь действия для кнопок в журнале заданий. Новый триггер:
Action
События
Окно диалога - Предмет Любой элемент диалога используется игроком Любой игрок с типом события Выбрано.
Локальные переменные
Условия
Действия
Общее - Если (условия), то выполнить (действия), иначе выполнить (действия)
Если
(Используемое окно диалога) == Buttons[0][1]
то
Переменная - Установить NPC Text = "Опять ты! Ну что, со.."
Переменная - Установить Posibilty of Quest gain[1] = false
Окно диалога - Скрыть QUEST LOG для (Все игроки)
иначе
Общее - Если (условия), то выполнить (действия), иначе выполнить (действия)
Если
(Используемое окно диалога) == Buttons[1][1]
то
Окно диалога - Скрыть QUEST LOG для (Все игроки)
иначе
Если мы нажимаем на кнопку «Отказаться», то текст задачника меняется и переменная Posibilty of Quest gain[1] сбрасывается. Также закрывается окно журнала.
Если же мы нажимаем на «Закрыть» — окно журнала закрывается.
Сейчас мы сделаем чтобы нам засчитывали в квест убийства зерглингов. Новый триггер:
Quest count
События
Единица - Любая боевая единица умирает
Локальные переменные
Условия
Posibilty of Quest gain[1] == true
Действия
Общее - Если (условия), то выполнить (действия), иначе выполнить (действия)
Если
Kill count < 5
(Владелец (Изменяемая единица)) == 15
то
Переменная - Установить Kill count = (Kill count + 1)
Общее - Если (условия), то выполнить (действия), иначе выполнить (действия)
Если
Kill count == 5
то
Интерфейс - Показать "Квест завершен " для (Все игроки) в зоне Субтитры
Переменная - Установить Posibilty of Quest gain[1] = false
Переменная - Установить Posibilty of Quest gain[2] = true
Переменная - Установить NPC Text = "Что, убил зерглинго..."
иначе
Интерфейс - Показать "Убийство засчитано" для (Все игроки) в зоне Субтитры
иначе
Если мы убиваем любую единицу игрока 15 с включенным квестом, нам засчитывают убийство. Если же мы убиваем 5-го зерглинга для квеста — нам сообщают что квест завершен, текст задачника меняется и переменная, необходимая для сдачи квеста (Posibilty of Quest gain[2]) становится активной.
Простейшая система квестов с 1-м единственным работающим квестом создана. Есть пара глюков с оформлением журнала заданий, но с этим уж разберитесь сами.
Если возникли какие-либо вопросы по ходу выполнения данных туторов, приходите на форум Redsys.ru и задавайте. Будем рады ответить. Либо в комментариях ниже, но шанс получить ответ у вас тогда будет также ниже.
Карта Автора — Тут
Автор — Knight
ip: 89.164.99.*
xbox игры купить Нижний Тагил