Главная » Статьи » Редакторы игрового контента » Статьи редактор WarCraft |
Грамотное создание и управление системой заданий (с проверками): Предисловие: Прежде всего, хочу сказать о том, откуда брался материал. В этом мне помогла карта Blizzard-ов. Официальная кампания Орды из Regin of Chaos. Самая первая миссия. Я ее выложу как пример. Если внимательно посмотреть в систему триггеров других официальных карт кампании warcraftа, то там вы увидите ровно тоже самое, что я сейчас вам предложу. Поэтому и посему, приятного чтения! Разберемся с переменными: Давайте решим, какие, и для чего, нам нужны переменные. Поскольку, задания – это своего рода проверка выполнения событий, то и переменные должны быть как-то связаны с событиями, а следовательно логического типа (true/false). Давайте создадим несколько переменных: Code QuestCreated (лог.) – переменная, которая будет отвечать за создание квеста. NewQuest (лог.) – переменная типа "квест". Это ваш какой-то квест. GameOver (лог.) – переменная, которая будет отвечать за конец игры. 1. Вот, с переменными мы справились, теперь приступим к подготовке самой системы. Начнем с первой ступени: создадим триггер, который будет проверять наличие квеста: если нет, то создавать его. И после этого помещать созданный квест в переменную - NewQuest: Триггер QuestCreate: Code События: Условия: --- QuestCreated равно Нет Действия: --- Set QuestCreated = Да --- Задание - Create a Основное, не получено quest titled ... () --- Set NewQuest = (Last created quest) --- Задание - Create a quest requirement for (Last created quest) with description... 2. А теперь создадим триггер отвечающий, за открытие квеста. В нем будут происходить следующие действия: запускать предыдущий триггер, проверяя все условия, помечать наш квест NewQuest как полученное задание, а так же выводить на дисплей информацию о том, что задание получено. Это делается следующими тремя строками: Триггер Quest Discover: Code События: Условия: Действия: --- Триггер - Run QuestCreate <gen> (checking conditions) --- Задание - Mark NewQuest as Получено --- Задание - Display to (All players) the Задание получено message: ЗАДАНИЕ ПОЛУЧЕНО: ... 3. Создаем последний триггер, отвечающий за успешное завершение квеста. Здесь все построено на подобии предыдущего триггера. Запускается первый триггер, проверяющий наличие задания. После этого помечается, как выполненный, и отображается для всех игроков, что задание выполнено. Quest Complete: Code События: Условия: Действия: --- Триггер - Run QuestCreate <gen> (checking conditions) --- Задание - Mark [ NewQuest ] as Выполненно --- Задание - Display to (All Players) the Задание выполненно message: ЗАДАНИЕ ВЫПОЛНЕННО: ... 4. Ну вот. Основные триггеры для работы с квестами мы получили. В принципе, это не самая сложная система. Видали, как говориться, и посложней. Теперь давайте разберемся с добавлением. А именно: предположим, что в нашей RPG, на карте есть герой, который не должен погибнуть! Что мы должны сделать, чтобы задать это условие в коде. Первое, решим, что будет, если герой все-таки погиб: тогда у нас запустится триггер, который проверит состояние героя на гибель, проверит переменную, отвечающую за конец игры (значение которой должно быть к тому моменту сравнительно с «нет»), и завершит игру с надписью: «Вы проиграли!». Вот, с общим понятием разобрались. Что же нужно сделать? Создадим первый триггер, который отображает на экран игроку сообщение, гласящее проигрыш. MissionFailed Code События: Условия: Действия: --- Задание - Display to (All Players) the ЗАДАНИЕ ПРОВАЛЕНО: ... message: Задание провалено 5. Ну вот, а теперь начнем работу с триггером, проверяющим состояние героя. DefeatHero Code События: --- Боевая единица - A unit owned by Игрок 1 (красный) умирает Условия: --- (Dying unit) равно Hero --- GameOver равно Нет Действия: --- Триггер - Turn off (This trigger) --- Set GameOver = Да --- Триггер - Run MissionFailed <gen> (cheking conditions) --- Wait 2.00 seconds --- Игра - Defeat Игрок 1 (красный) with the message: Вы проиграли 6. (эпилог) | |
Просмотров: 1373 | Комментарии: 2 | Рейтинг: 3.0/1 |
Всего комментариев: 2 | |
| |