История Терран
История Протоссов
История Зергов
StarCraft - FOREVER!
7x Team Logo
StarCraft 2 - FOREVER!
 
 
 Авторизация
Регистрация
Новости
Команда
Файлы
StarCraft 2
Статьи
Стратегии
Библиотека
Юмор
Редактор карт
Партнеры
Реклама


 Триггеры. Создание квестов (заданий)

Обучалка непростая, рассчитана на тех кто хотя бы выполнил все предыдущие туторы по триггерам и немного шарит в них. Мы создадим систему заданий (квестов для любителей 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
© RedSys.Ru by Knight
Статья написана: 2010-08-31 14:28:52
Прочитано раз: 25025
Последний: 2024-04-19 05:53:13
Обсудить на форуме

[1]
Коментарии:

  JefferyAccus
Гость @ 2021-05-24 22:44:43

217358181
ip: 89.164.99.*
xbox live купить игры https://rent4.today
xbox игры купить Нижний Тагил
[1]
  Добавить комментарий

Добавить комментарий
Заголовок:
Имя*:
Email:
Icq:
Местонахождение:
Сколько будет 6х6?:
Комментарий*:

7x Top
События

SC2Alpha League
26.05 @ 21:00 МСК:
7x vs EESC
02.06 @ 21:00 МСК:
7x vs ĦRZ
09.06 @ 21:00 МСК:
7x vs PÂRłAH
16.06 @ 21:00 МСК:
7x vs MDeS
23.06 @ 21:00 МСК:
7x vs PLA2N



Информация


Администрация:
-
-

Новинки

Последние Новости

Новое на форуме

Последние статьи

Новые файлы


Друзья
Реклама


 

© 2002-2024 7x.ru StarCraft information site.
7x Engine version 1.7.1 Alpha build 5 .

Копирование информации только с прямой индексируемой ссылкой на наш сайт!
Идея проекта: . Разработка - 7x Team.

Рекомендуемое разрешение - 1280x1024 при 32bit. Минимум - 1024x600 при 16bit.
Поддерживаемые браузеры: IE 7.0+ и аналогичные
Дата генерации - 19.04.2024 @ 05:53:14 MSK. Страница загружена за 0.052234 попугая.

И помните - StarCraft Forever!

 

Яндекс.Метрика Rambler's Top100 Яндекс цитирования

карта сайта
7x на Ютубе
7x во Вконтакте
7x в Твиттере
7x в Дискорде