Главная RSS Онлайн игры WarCraft Приколы Карта сайта О блоге Поиск

“- У твоих сверстников уже жёны, дети, машины, ипотеки!- Звучит так, словно виновник всех этих бедствий – я.” - анекдот дня


warcraft-> Статьи по WarCraft 3->Создание диалогового окна для повышения характеристик героя. Часть 2

Создание диалогового окна для повышения характеристик героя. Часть 2

1

Добавил: AlexMaster

Дата: 09.04.2013


Эта статья является продолжением первой статьи, где я рассказывал об элементарном создании диалоговых окон, теперь создадим более сложное диалоговое окно, прокачка героя как в Diablo и других RPG подобных игр, вот что у нас должно получиться.

Диалоговое_окно



Переменные.
Для создания диалогового окна нам понадобятся следующие переменные. (Как создавать переменные я рассказывал в первой статье про диалоговые окна).
Hero – переменная типа “Боевая единица”
(B_agility_plus, B_Intelegence_plus, B_strength_plus, B_vitality_plus, B_close) – пять переменных типа кнопка, четыре отвечают за прибавления навыка на единицу, а одна за закрытие диалогового окна.
CharacterStats – переменная типа “Диалог”, отвечает за отображения диалога.
(DexCap, StrCap, MagCap, VitCap) – четыре переменные типа целочисленные отвечают за предельный уровень характеристики, как в Diablo первой части.
(Exp, Level, Life, Mana) – четыре переменные типа “Строка” отвечают за отображение опыта, уровня , жизни и маны.
Unspent_Points – переменная типа целочисленные, отвечает за очки распределения.
Vitality – переменная типа “целочисленная” отвечает за количество здоровья героя, на рисунке сверху у нашего героя, здоровье равно 14, впрочем можно поставить любую цифру хоть 500 от этого не чего не зависит.
В итоге у нас получилось 17 переменных.
Теперь приступим, к реализации триггеров.

Инициализирующий триггер “Init”

Переменные



Тут я думаю, ничего сложного нет, понятно, что переменная hero это Чародей Крови
Vitality -это стартовое здоровье нашего героя которое будет отображаться в диалоговом окне, остальные переменные обозначают максимальный уровень прокачки, всех навыков, т.е до 100, дальше этого барьера качать нельзя.
StrCap - максимальная сила.
DexCap - максимальная ловкость
MagCap - максимальный разум
VitCap - максимальное здоровье.

Триггер “spell”

Прежде чем описывать этот триггер создайте способность “Удар грома”, очистите все параметры, что-бы он стал пустышкой, подберите подходящую иконку интерфейса, поставьте перезарядку в одну секунду и придумайте какое-нибудь название для этой способности, например “Повышение характеристик”, эта способность будет отвечать за вызов диалогового окна.

Способность



В этом триггере боевая единица приводит эту способность в действие, где указано в условиях, что боевая единица является переменная Hero. Переменная объявлена в самом начале при инициализации, а способность является повышение характеристик, которую мы создали. В действиях не надо запускать триггер Open Character Stats, потому что мы его еще не создали.

Триггер “Open character stats”

Способность



Как всегда диалог начинается с очистки, потом идет объявление переменных Level, mana, life и exp.

Конкатенация строк

Способность



Цифрами обозначается последовательность раскрываемых окон. Под рисунком 2 едет конкатенация строк, это что-то вроде объединения строк в одну строку, функция называется Concatenate String. Для объединения строк используется простой знак +. Под третьим рисунком обозначается преобразование числа в строку, так как уровень героя нельзя так просто вывести в диалоговое окно, то его нужно преобразовать.
На следующем рисунке используется сразу три функции объединения строк.

Способность



Дальше более подробно отображено объединение строк первое значение это просто слово |nМана, где |n перенос строки.

Строка



После знака плюс едет еще несколько конкатенаций
(String((Мана of Hero), 3, 1)) означает преобразование реального числа в строку, где указывается, что преобразуется мана для Hero.

Строка



Потом следует последняя конкатенация где ставится слеш “/” +
“(String(Макс. Мана of hero),3,1)” – здесь тоже идет преобразование только вместо мана используется Макс. мана

Строка



В итоге у нас получилось такая длинная строка, состоящая из нескольких мелких строк.
Надеюсь у вас все получилось, следующая строка отображает жизнь героя, она создается точно так же как и с маной, так что нет смысла её описывать.

Для увеличения щелкните на картинке
Строка

Эта строка отображает опыт героя.

Строка



Отображение в диалоговом окне (Dialog –title)

Теперь все эти переменные нужно отобразить в диалоговом окне.

Строка



На рисунке 2 первое значение является конкатенация, к имени игрока присоединен цвет, потом следует знак плюс и цепочка из конкатенаций.

Вот пример на рисунке, цифрами проставлен последовательность, открытых окон, так что попробуйте воссоздать заголовок диалогового окна, вот что у вас должно получится.

Строка



Подсказка: На 5 рисунке видно, что идет преобразование переменной Unspent_points которая отвечает за очки распределения о ней мы поговорим позже.

Подсказка: в начале идет конкатенация строк. Первое значение конкатенации это присоединение имя игрока, второе значение это еще одна конкатенация и так далее, таким образом нужно объединить все переменные, которые были созданы ранее.
Что-бы легче было это воспринять запомните, что первое значение это всегда какое-нибудь действие или переменная например имя игрока, а второе значение это конкатенация и так до тех пор пока все переменные и действия не будут перечислены. Не забывайте ставить такой знак |n, он отвечает за перенос строки, после того как вы все действия перечислите, то в конце вместо конкатенации нужно поставить завершающее действие.

Строка



Кнопки
Кнопки нужны для прокачки героя, вот пример кнопки.

Строка

характеристики “Сила”, первая цифра 18, а вторая 22, это потому, что я взял шлем доблести, который увеличивает силу героя на 4.
Для создания кнопки нужно выбрать действие Диалог Create Dialog Button. Оно принимает два значение первое переменная(CharacterStats) для которого будет создаваться кнопка, а второе надпись кнопки. Только вместо надписи мы создадим конкатенацию, где в первом значении у нас будет надпись Сила, а во втором еще одна конкатенация, где будут отображены наши цифры. На рисунке показан пример первой цифры. Исключить bonuses означает, что любые артефакты которые будет носить герой, не будут суммироваться с его характеристиками и будут выводиться только реальные значения.

Строка



Строка



Если вы заметили то вторая цифра у нас имеет синий цвет, это можно реализовать, если вместо второй цифры сделать конкатенацию и написать |cff3399ff потом присоединить преобразованное число в строку с включенными бонусами и таким образом будет отображаться параметры силы героя вместе со всеми артефактами.

Строка



Остальные кнопки создаются точно так же.
Потом под каждой кнопкой нужно создать переменную, отвечающую за работоспособность кнопки.

Строка



Как я сказал все кнопки создаются одинаково, кроме живучести, там идет отображение цифр которые указаны в переменной Vitality.

Строка



Последнее действие закрытие диалогового окна и его показ. В итоге вот что у нас должно получиться.

Строка



Триггер “Plus Strength”

Этот триггер прибавляет к силе единицу и убавляет единицу у переменной Unspent_Points

Строка



Событие определяет нажатие кнопки, условие проверяет, какая кнопка нажата, B_String_plus,
Внутри действия идет еще одна проверка, где проверяется Unspent_Points больше 0, потому что если эта переменная будет равна нулю, то действие не сработает и сила не прибавится. Второе условие проверяет меньше ли сила героя переменной StrCap. Напомню, что переменная StrCap является максимальным показателем, значение которого равно 100 и выше этого значения качать героя нельзя. Потом идут действия переменной Unspent_Points, присваивается арифметическое значение(Arithmetic), где от переменной unspent_points отнимается единица, а герою с помощью действия Герой – modify hero attribute прибавляется единица. Последние действие отвечает за повторный запуск диалогового окна, это нужно для того, что бы диалоговое окно не закрывалось, при нажатии кнопки B_String_plus.
Триггеры Plus Agility, Plus Inteligence делаются точно так же как и Plus Strength только используются переменные.B_Agility_plus, Dex_Cap, B_intelegence_plus, Mag_Cap
Триггер Plus Vitality
Этот триггер который отвечает за прибавление здоровья делается немного по-другому для начало нужно создать способность, которая является предметом и отвечает за прибавления здоровья,
Предмет: увеличение запаса здоровья (Однократное) подойдет, у этой способности поставьте значение Данные - получено жизни (Макс.): +15, потом создайте предмет “Медицинский тракт” Способности-Способности: поставьте нашу способность. Переименуйте наш предмет на Vitality up Hero, все готово теперь приступим к триггеру.

Строка



Почти все тоже самое, что и в остальных случаях, только вместо обычного прибавление характеристики идет создание предмета в инвентаре героя, так же заметьте, что у нас появилась новая переменная vitality которую мы инициализировали в самом начале, только в этом случае стоит арифметическое значение где переменной vitality прибавляется единица.

Триггер “Levelup”

При переходе на следующий уровень герою прибавляется пять очков распределения.

Строка



Это был последний триггер, надеюсь вы все поняли, если нет то вы можете скачать файл
с примером и разобраться в нем в любом случае самый сложный момент в этой статье это конкатенация строк.
Если будут какие то вопросы задавайте в комментариях под статьёй.

Статья написана для сайта vagon-igr.ru

warcraft-> Статьи по WarCraft 3->Создание диалогового окна для повышения характеристик героя. Часть 2


Перейти на главнуюВагон игр Назад

Просмотров: 1168

Комментарий к этой заметки:

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

Введите капчу

 



Яндекс.Метрика