Сейчас 21:16:05 Понедельник, 25 ноября, 2024 год
Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я

Меню сайта

Категории

Наш опрос
Ваша любимая раса?
Проголосовало: 177949

Сейчас на сайте
На сайте всего: 104
Гостей: 104
Пользователей: 0

Реклама

Главная » Статьи по WarCraft 3 » Создание карт » Триггеры
Переменные
Теория


Сперва я вообще не знал, что в редакторе триггеров есть какие-то переменные. Когда узнал, подумал: "Втф, зачем они нужны?". Но однажды стало понятно, что без них даже несколько квестов в своей карте не сделать! Давайте разберёмся, что же это такое.

Представим ситуацию. Мы делаем крутую карту вида RPG, и хотим намутить что-то типа MMORPG, вроде LA2 или RF Online, где игроку нужно убивать 100500 мобов для прокачки. Но мы, как истинные знатоки MMORPG, знаем, что унылое убивание огромного количества мобов подряд довольно скучно, поэтому решаем схитрить, и выделить игроку 10 квестов, в каждом из которых надо убить по 100 юнитов разных видов. Например, 1 квест на 10 гноллов, 1 квест на 10 огров и так далее. Мы их создаём, радуемся. После этого мы делаем триггер на выполнение квеста. Допустим, мы его сделали (забавно, что без знания переменных сделать условие выполнения такого квеста в общем-то нельзя, но мы утрируем). И вот мы выбираем действие выполнения квеста: "Засчитать (КВЕСТ) как выполненный". Тыкаем на КВЕСТ и что выбираем? Последний созданный квест. Хмм. Что-то не так! У нас есть 10 квестов, допустим, 10-м мы создали квест "Убить гноллов", но выполнили мы квест с ограми. Если мы выберем "Засчитать (ПОСЛЕДНИЙ СОЗДАННЫЙ КВЕСТ) как выполненный", мы сделам выполненным совсем не квест с ограми, а с гноллами! Вот тут-то и находится применение переменным.

Переменная, в отличие от стандартных предложений по выбору вроде "последний созданный квест", меняется ТОЛЬКО ТОГДА, когда вы САМИ сказали сделать это. Делается это с помощью действия "Set Variable". Но для начала переменную надо создать. В редакторе триггеров на панели кнопок находим жёлтый "икс", или же просто жмём на клавиатуре Ctrl+B (Ctrl+И). Появляется окошко с переменными, где пока пусто. Жмём зеленый "икс" с плюсиком "Новая переменная" (справа от неё кнопки редактирования и удаление переменных). Появляется еще одно окошко, где мы можем выбрать название и тип переменной. Галку с массивом и "Нач. знач." пока не трогаем. В случае квеста нам понадобятся типы "Задание" и "Условие задания". Мы знаем, что когда мы создаём квест, одним действием мы пишем его заголовок и описание, а другим конкретные задания вида "Убить 10 огров". Так вот, первое действие - это "задание", а второе - "условие задания". Название вы придумываете сами, только делайте их такими, чтобы можно было понять, что это такое. Например "Quest10Ogres" и "Quest10OgresR" ("Квест10огров" и "Квест10огровУ"). Вы сделали переменные, теперь их надо "привязать" к нужному квесту с помощью действия "Set Variable". Выбираем его, в Variable выбираем вашу переменную, в Value указываем, что будет являться вашей переменной. Ваши действия ранее выглядели так:


Создаём квест
Создаём условие квеста


Теперь же они должны выглядеть так:


Создаём квест
Set Quest10Ogres = (Последний созданный квест)
Создаём условие квеста
Set Quest10OgresR = (Последнее созданное условие квеста)


Теперь, когда наш игрок убьёт 10 огров, мы делаем действия "Отметить (Quest10Ogres) выполненным", "Отметить "Quest10OgresR" выполненным". И тогда окажется выполненным именно квест с ограми, а не с гноллами или еще кем-то.

Это не вся польза от переменных. Особняком от других типов переменных стоит тип "Целочисленная", она же 'Integer'. В ней хранятся целые числа. По самому слову "переменная" можно понять, что её можно менять. И это очень полезно, когда вам надо выполнить какое-либо действие определённое количество раз. Например, каждую минуту вывести текст "Привет всем!", но сделать это не более пяти раз. Мы создаём переменную типа "Целочисленная", называем её, допустим i, после чего делаем триггер:


Событие:
Каждые 60 секунд
Условие:
Integer Comparison -> i меньше 5
Действие:
Set i = i + 1
*Примечение к действию выше. Изначально наша переменная i равна 0. С помощью выше написанного действия мы при каждом запуске триггера прибавляем к i единицу. При этом триггер срабатывает ТОЛЬКО тогда, когда i МЕНЬШЕ пяти (благодаря нашему условию). Таким образом, триггер сработает ровно 5 раз. Теперь о том, как прибавить к i единицу. Для этого, тыкнув в 'Value', мы выбираем функцию 'Arithmetic', и видим 'Value + 1'. Тыкаем теперь уже это 'Value', где выбираем нашу переменную i.
Написать текст: "Привет всем!"


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

Практика


Два простых задания.

1. Сделать, чтобы в рамках одного триггера через 3 секунды после запуска карты в центре карты в распоряжение красного игрока вызывалось сначала 5 пехотинцев, затем 1 стрелок, а после этого 10 рыцарей (именно в таком порядке, промежуток между вызовами 1 секунда). Затем, через 10 секунд после вызова рыцарей установите размер стрелка на 200% (именно одного стрелка и никого другого).
2. На карте есть штук 20 гноллов одного типа, а также просто всяких монстров. Красному игроку можете дать сколько угодно армии. Сделать так, чтобы каждый раз (НО НЕ БОЛЕЕ ДЕСЯТИ РАЗ) при убийстве ИМЕННО гнолла ИМЕННО красным игроком всем игрокам на секунду отображалось какое-нибудь любое сообщение, пусть это будет "123", например.
Просмотров: 6622 Добавил: JohnsonKey Добавлено: 10 Июня 2011 в 15:01:32
Комментариев: 10 |

Всего комментариев: 10
16 Августа 2014
10. Проскурин Илья Владимирович (shekspire996) [Материал]
Спасибо :D

28 Июня 2014
Set i = i + 1
где найти set ??в действиях..
у меня руссифицированный редактор (
подскажите ??

23 Ноября 2012
8. Дмитрий (k0t1x) [Материал]
полезно +

30 Сентября 2011
Хорошая статья, конечно, для дизайна, можно и цветов добавить, ну да ладно)

18 Августа 2011
6. Генко (LanceloTo) [Материал]
крутяк

07 Августа 2011
5. Глеб (Karlord) [Материал]
Хорошая статья + практика :)

05 Августа 2011
норм статья :)

29 Июля 2011
3. Евгений (Genya) [Материал]
Отлично

01 Июля 2011
2. Рябов Александр (MinatoNimikaze) [Материал]
блин а я годал..

15 Июня 2011
1. Евгений (Скелетег) [Материал]
Я прочел все это один раз и все понятно!
+10
(вау я первонах!)

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Форма входа

Поиск

Случайная картинка

Случайный файл
[08 Мая 2008]
[Replay · Разные ?х?]
Реплей карты Painkiller -
Реплей отличной карты!В скором времени хочу её скинуть, но пожалуйста посудите. Карта отличная. В реплее к сожалению нету музыки, которая присутствует в карте.

Новые карты
[07 Февраля 2016]
Переезжаем на другой сайт, господа![Dota]
[18 Октября 2015]
Duel of Gods PreV[Другое]
[18 Октября 2015]
Hero of The Empire v1.18g[RPG]
[17 Октября 2015]
Servant War v1.05[Другое]
[17 Октября 2015]
Age of Vikings Edited v1.6[Другое]
[17 Октября 2015]
Strife of the Champions Beta v1.2[Arena]
[17 Октября 2015]
VirusBoll (rus)[Другое]
[17 Октября 2015]
Exterminators v1[AoS]
[17 Октября 2015]
The Lord Heroes v1.2[Другое]
[17 Октября 2015]
Versus heroe Arena 1.0 AI[Arena]

5 лучших по кол-ву добавленных статей
[ Duosora ] [ 58 ]
[ Messenger ] [ 52 ]
[ Bru ] [ 39 ]
[ Pand@ ] [ 35 ]
[ OrcRider ] [ 27 ]

Наша кнопка
Warcraft3FT.info - Всё для Warcraft 3 и DotA

Другие варианты

Статистика

Материалы:
Новости: 1010
Файлы: 8668
Статьи: 680
Картинки: 8256
Форум: 30520/954989
Комментарии: 58094
Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz