Сейчас 01:49:30 Суббота, 2 июля, 2022 год
Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я

Меню сайта

Категории

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

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

Реклама

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


Переменные - это области памяти, которые могут хранить значения. Они играют важную роль в программировании, т.к. позволяют программистам писать программы более удобно. В переменные можно сохранять почти любой вид данных. Они позволяют вам хранить боевых единиц, выигрывающего игрока, тип боевой единицы или даже текстовые строки. Сохранение информации в переменные позволяет вам использовать их позже. Например, вы хотите записать в переменную, сколько боевых единиц убил игрок. Тогда вам понадобится переменная типа "целочисленная". Также можно записать игрока, убившего самое большое количество боевых единиц на протяжении игры, используя переменную типа "игрок".

Создание переменных.


В World Editor переменные создаются при помощи Редактора переменных. Если вы используете Custom Script, вы также можете создать многие типы переменных в триггере.
Чтобы открыть Редактор переменных, щёлкните "Правка -> Переменные" или просто нажмите комбинацию клавиш "Ctrl - B". Появится окошко, где можно добавить любые типы переменных, которые нужны для вашей карты. У всех переменных есть тип, название и значение.
Тип переменной определяет, какой тип данных она может хранить. В WarCraft III использовано множество различных типов данных. При создании переменной вам нужно будет определить тип данных, которые в неё можно будет записать. Например, переменная типа "целочисленная" может содержать только целое число, а переменная типа "боевая единица" может содержать только боевых единиц (героев, воинов, нейтральные войска и.т.д.). Позже мы обсудим разные типы переменных и их использование.
У каждой переменной должно быть уникальное имя. На самом деле для компьютера имя фактически ничего не значит, это просто памятка для вас, определяющая, что это за переменная при создании карты. Можно называть переменные почти так, как вам хочется, но запоминайте, какая переменная для чего предназначена. Ниже дам парочку советов по подбору имени переменной:
  • Присваивайте переменной имя, которое что-либо означает. Названия из одной буквы выглядят глуповато. Согласитесь, назвать переменную "index" лучше, чем "i", название "count" лучше, чем "c", а "name" лучше, чем "n".
  • Не начинайте имя переменной с числа. Оно может содержать числа, но первым символом должна быть буква.
  • Можно использовать в имени переменной нижнее подчёркивание, но никак не пробел. Использование таких подчёркиваний является хорошим разделением слов, но лучше не начинать имя с такого подчёркивания.
  • Не давайте имена, которые очень похожи на имена других переменных.
  • Не давайте переменным имена, которые похожи на ключевые слова или функции. Например, не называйте переменную типа "целочисленная" именем "int" или переменную типа "строка" именем "string". Это может быть причиной некоторых недоразумений при создании триггеров.

По умолчанию значение переменной равно "0" или "Нет". Позже значение можно менять, используя триггеры или команду "Custom Script". После создания переменной можно всегда вернуться в Редактор переменных и изменить её свойства.


Установка значений переменных.


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

Переменные-массивы.


Переменные-массивы - это переменные, которые могут содержать несколько значений. Любая переменная, которую вы создаёте, может быть массивом. Для этого поставьте галочку в поле "Массив". Каждое значение такой переменной имеет свой индекс, свой порядковый номер. Минимальный индекс - 0. Индекс используется для обращения к элементам массива. Он позволяет получить доступ к любому значению массива. Приведу пример - у меня есть переменная-массив типа "строка", которую я назвал "Fruits". В триггере инициализации карты я задам различные значения этого массива, чтобы позже их использовать.

Позже, во время игры, если я захочу сказать игроку, чтобы он собирал груши, я буду использовать Fruits[] следующим образом:

Также я могу циклом вывести названия всех фруктов таким образом:


Использование логических переменных.


Логические переменные используются, чтобы найти ответ на одно и более утверждение. Значение таких переменный может быть только одно из двух - "Да" или "Нет". Пример утверждения - "Мой рост - 10 футов или дерево упало". В свою очередь, утверждение может быть истинным ("Да") или ложным ("Нет").

Локальные переменные.


Выше мы рассматривали глобальные переменные. Локальные переменные имеют отличие от них - они могут быть использованы только в функции, в которой они объявлены. К примеру, вам требуется триггер, который бы запускался всякий раз при убийстве боевой единицы. Если вы используете стандартную глобальную переменную, то триггер, возможно, перезапишет переменную с умершей боевой единицей, если он запустится ещё раз при смерти кого-либо ещё. Соответственно, правильно триггер уже не сработает, т.к. значение переменной было изменено.
Или, допустим, у вас есть триггер, который воскрешает героев, в котором умирающий герой записывается в глобальную переменную. Если при воскрешении одного героя погиб второй, то в глобальную переменную занесёт этого героя, а герой, который был перед ним, будет потерян.
Чтобы создать локальную переменную, вам понадобится использовать JASS. Добавьте действие "custom script" в триггер и напишите в нём:

Custom Script: local unit Revive_Hero

Чтобы задать значение этой переменной, снова понадобится Custom Script. Добавьте в свой триггер ещё одно действие "Custom script" и напишите в нём:

Custom script: set Revive_Hero = GetTriggerUnit()

Затем снова понадобится JASS, чтобы воскресить героя. Напишем ещё один Custom Script:

Custom script: call ReviveHeroLoc(Revive_Hero, GetRectCenter(GetPlayableMapRect()), true)

Запомните - локальные переменные не показываются в стандартном интерфейсе и именно поэтому следует использовать JASS для управления этими переменными.

Список типов переменных.


Способность - сохраняет тип способности, например "Стремительность" или "Кровожадность".
Тип атаки - сохраняет тип атаки. (Заклинание, Герой, Сила Тьмы и.т.д.)
Логическая - сохраняет значения "Да" или "Нет".
Заклинание - сохраняет тип заклинания, например "Замедление" или "Яд". Не является способностью.
Объект камеры - сохраняет камеру, которая была поставлена на карте.
Звуки боя - сохраняет тип звуков боя у боевой единицы. (Лёгкий металлический удар (рубящий), тяжёлый металлический удар (режущий) и.т.д.)
Тип урона - сохраняет тип урона боевой единицы. (Огонь, холод, молния, отравление и.т.д.)
Декорация - сохраняет декорацию, которая была поставлена на карту или создана триггерно.
Разрушаемый объект - сохраняет тип декорации.
Условие поражения - сохраняет последнее созданное вами условие поражения.
Диалог - сохраняет последнее созданное вами окно диалога.
Кнопка - сохраняет последнюю созданную вами кнопку для окна диалога.
Тип эффекта - сохраняет тип эффекта. (Графика цели, графика мага, графика выстрела и.т.д.)
Плавающий текст - сохраняет последний созданный вами всплывающий текст.
Буфер игры - сохраняет последний созданный вами кэш.
Скорость игры - сохраняет скорость игры, также текущую скорость игры или похожее значение.
Ссылка - сохраняет ссылку на любой вид данных.
Хэш-таблица - сохраняет последнюю созданную вами хэш-таблицу.
Изображение - сохраняет последнее созданное вами изображение.
Тип изображения - сохраняет тип изображения. (Текстура земли, выбор, индикатор и.т.д.)
Целочисленная - сохраняет целое число. Не поддерживает десятичные дроби.
Предмет - сохраняет предмет, который уже существует в карте.
Класс предмета - сохраняет класс предмета.
Тип предмета - сохраняет тип предмета.
Таблица рекордов - сохраняет последнюю созданную вами таблицу рекордов.
Молния - сохраняет последнюю созданную вами молнию.
Тип молнии - сохраняет тип молнии. (Похищение здоровья, похищение маны, вампиризм и.т.д.)
Меню паузы - сохраняет последний созданный вами мультибоард.
Порядок - сохраняет приказ, который может быть отдан боевой единице. (Атаковать, двигаться, спрятаться и.т.д.)
Игрок - сохраняет любого игрока.
Цвет игрока - сохраняет цвет любого игрока.
Группа игроков - сохраняет группу игроков для дальнейшего использования.
Точка - сохраняет координату Х\Y на карте.
Тип проходимости - сохраняет тип проходимости. (Ходьба, строительство, полёт и.т.д.)
Задание - сохраняет последнее созданное вами задание.
Условия задания - сохраняет последнее созданное вами задание.
Раса - сохраняет расу. (Альянс, орда и.т.д.)
Реальная - сохраняет число. Поддерживает десятичные дроби.
Область - сохраняет регион, который расположен на карте.
Звук - сохраняет звук, который был импортирован или изначально существовал в игре.
Тип звука - сохраняет тип звука.
Спецэффект - сохраняет последний созданный вами спецэффект.
Строка - сохраняет группу символов, число или текст.
Тип технологии - сохраняет тип улушения, которое может быть исследовано.
Деформация рельефа - сохраняет последнюю созданную вами деформацию рельефа.
Рельеф - сохраняет форму кисти рельефа (круг или квадрат).
Тип ландшафта - сохраняет текстуру ландшафта. (Летний лордерон: почва, Ашенваль: трава и.т.д.)
Таймер - используется для создания таймера. Каждыйт таймер имеет переменную.
Окно таймера - сохраняет последнее созданное вами окно таймера.
Триггер - сохраняет любой созданный вами триггер.
Текстура земли - сохраняет последнюю созданную вами текстуру земли.
Тип текстуры земли - сохраняет тип текстуры земли.
Боевая единица - сохраняет боевую единицу.
Отряд - сохраняет группу боевых единиц.
Тип объекта - сохраняет тип объекта.
Модификатор видимости - сохраняет последний созданный вами модификатор видимости.
Погодный эффект - сохраняет последний созданный вами погодный эффект.
Просмотров: 8361 Добавил: Duosora Добавлено: 13 Февраля 2010 в 22:01:29
Комментариев: 18 |

Всего комментариев: 171 2 »
08 Сентября 2012
17. Александр (Hexing) [Материал]
>у мя есть вопросс ... а название переменых хоть какие ставить?
да, как тебе удобно

15 Июня 2012
16. Сон Владимир Полекарпович (ppp123) [Материал]
у мя есть вопросс ... а название переменых хоть какие ставить?

30 Мая 2012
класс !

21 Мая 2012
14. Макс (AltSk0P) [Материал]
полезная статейка) про кс бы побольше...

29 Января 2012
13. Пикула Юрий (PUVer) [Материал]
Список типов переменных огорчил меня. Нужно указать оригинальные их названия например integer

29 Апреля 2011
12. Владимир (Keeper_of_the_Life) [Материал]
Хорошая статья для новичков.
Надо было с Custom Script'oм по больше

11 Апреля 2011
Кул =)

27 Марта 2011
10. Pedo Bear (Pedobear) [Материал]
Кто не понимает где найти редактор переменных,жмем F4 потом Ctrl+B :)

04 Ноября 2010
9. Гаевских Слава (Slava_Gaevskih) [Материал]
а у меня тоже в правке нету переменных. подскажите плиз

18 Июля 2010
Немогу открыть Редактор переменных.... при выбере в "Правке" нету выбора "Премеенные"
При нажатии "Ctrl - B" ничего не происходит...
помогите плз... как с этим бороться....

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

Форма входа
Логин:
Пароль:

Поиск

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

Случайный файл
[10 Мая 2008]
[Карты · Другое]
Operation Desert Storm v0.4 -

Действие этой карты разворачивается в Кувейте, в Саудовской Аравии, в то время, когда Силы Американской Коалиции вели войну в Заливе Войны. Может быть, что-либо здесь и напутано, но это не имеет значения. Задачей игроков является захват стратегических точек, битвы между сторонами конфликта и сражения с ордами зомби (в зависимости от выбранного режима).


Новые карты
[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 ]
[ РеКсАр ] [ 27 ]

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

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

Статистика

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