История Терран
История Протоссов
История Зергов
StarCraft - FOREVER!
7x Team Logo
 
 
 Авторизация
Регистрация
Новости
Команда
Файлы
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
Прочитано раз: 17385
Последний: 2016-10-01 14:15:10
Обсудить на форуме

   Пока тут нет ни одного комментария, можете добавить первый.

  Добавить комментарий

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

7x Top

7x pts rating
2499 protoss
[7x]KpeHgeJIb
protoss KpeHgeJIb.359
2499 pts
 
Stat: 119-96
Rate: 55.35
2169 protoss
[7x]QuanChi
protoss QuanChi.484
2169 pts
 
Stat: 493-471
Rate: 51.14
2571 terran
[7x]Control
terran control.341
2571 pts
 
Stat: 377-321
Rate: 54.01
2077 protoss
[7x]Smith
protoss smith.269
2077 pts
 
Stat: 290-257
Rate: 53.02
2004 protoss
[7x]Nerazim
protoss Nerazim.2325
2004 pts
 
Stat: 269-255
Rate: 51.34
1802 protoss
[7x]IGG
protoss Motörhead.647
1802 pts
 
Stat: 153-138
Rate: 52.58
1573 protoss
[7x]Lipton
protoss Lipton.725
1573 pts
 
Stat: 81-84
Rate: 49.09
1106 zerg
[7x]jonk
zerg jonk.178
1106 pts
 
Stat: 78-77
Rate: 50.32
709 zerg
[7x]Harius
zerg LiquidHarius.21800
709 pts
 
Stat: 42-7
Rate: 85.71
251 zerg
[7x]Masamune
zerg Masamune.571
251 pts
 
Stat: 13-4
Rate: 76.47
224 terran
[7x]Surprise
terran Surprise.698
224 pts
 
Stat: 12-7
Rate: 63.16
165 zerg
[7x]T1Mmi
zerg TiMmi.736
165 pts
 
Stat: 29-19
Rate: 60.42
54 zerg
[7x]Krash
zerg Krash.903
54 pts
 
Stat: 2-3
Rate: 40.00
1489 terran
[7x]Leon
terran Leon.1216
1489 pts
 
Stat: 226-221
Rate: 50.56
1162 zerg
[7x]Igon
zerg SevenXIgon.103
1162 pts
 
Stat: 50-50
Rate: 50.00
928 zerg
[7x]CrazyRabbit
zerg CrazyRabbit.780
928 pts
 
Stat: 39-26
Rate: 60.00
807 zerg
[7x]Raven_gg
zerg Ravengg.625
807 pts
 
Stat: 35-30
Rate: 53.85
560 random
[7x]Fen1kz
random Fenlkz.514
560 pts
 
Stat: 58-46
Rate: 55.77
464 protoss
[7x]Ashbringer
protoss Ashbringer.2446
464 pts
 
Stat: 15-20
Rate: 42.86
162 protoss
[7x]Kanzler
protoss Kanzler.870
162 pts
 
Stat: 5-4
Rate: 55.56

События

Waiting info...



Информация


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

Новинки

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

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

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

Новые файлы


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


 

© 2002-2016 7x.ru StarCraft information site.
7x Engine version 1.7.1 Alpha build 4 .

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

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

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

 

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

карта сайта