Раздел:
4. Триггеры
Автор оригинала:
Wizardum
Источник:
http://www.hiveworkshop.com/forums/trigger-gui-galaxy-ai-scripts-657/basic-trigger-editor-tutorial-165863/

От переводчика:

Если у вас есть какие-либо предложения/корректировки по переводу - пишите, не стесняйтесь. Буду рад выслушать любую конструктивную критику.

Вступление

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

Изучаем Основы

Для начала откройте редактор триггеров, нажав на выделенную кнопку из скриншота ниже или нажатием клавиши F6.
Когда Вы увидите стандартный триггер инициализации, то удалите его.
Чтобы изучить все досконально, мы должны начать с нуля.
Теперь давайте посмотрим на основные кнопки редактора:
Разберём конкретно отмеченные пункты:
  • Создать элемент – создаёт выделенный элемент. Например, если у вас был выделен триггер, то будет создан новый триггер, если был выделен комментарий, то будет создан комментарий. Если ничего не было выделено, по умолчанию будет создан комментарий.
  • Создать папку – создаёт папку, похожую на категории в WE. Вы можете использовать папку для более удобной организации вещей, например, чтобы отделить триггеры, относящихся к геймплею, от триггеров, которые относятся к заклинаниям.
  • Создать комментарий – Создаёт новый комментарий, в котором вы можете писать всё, что пожелаете
  • Создать триггер – Создаёт новый триггер, который будет влиять на игру.
  • Создать определение условия – Например, надо создать сложное условие, которое нужно использовать в нескольких местах без его многократного повторения. Тогда следует создать одно такое условие, добавить все нужные условия к нему и использовать их в остальных триггерах (скорее всего, блок этих условий появится в общем списке условий)
  • Создать определение действия – Похоже на предыдущее определение, но вы сможете делать большее количество наборов действий и внедрять их в любое место будет легче.
  • Новая функция – Условия и действия - это функции, предоставляющие базовые возможности, с функциями в широком смысле этого слова вы получаете более широкие возможности, о которых будет рассказано далее
  • Создать запись – Эта кнопка создаёт новую запись. Запись – новый тип переменной, хотя он может включать и много других переменных. Если провести параллель с vJass, то эта будет та же структура.
  • Создать переменную –это создает новую переменную. Однако, если нажать на эту кнопку, предварительно не выделив триггер, то будет создана новая глобальная переменная. Если же триггер выделен, то будет создана локальная переменная внутри этого триггера.
Отлично, теперь создадим новый триггер, и назовём его, например, “Test” и кликнем в область Событий/Условий/Действий, что бы сделать активными основные полезные иконки.
Думаю, что итак понятно что
  • Создать событие – Создаёт новое событие
  • Создать условие – Создаёт новое условие
  • Создать действие – Создаёт новое действие
Так же вы можете добавлять комментарии к событиям/условиям/действиям/локальным переменным

Переменные

Переменные – ячейки памяти для хранения данных. В зависимости от своего заранее заданного типа, переменные могут сохранять в себе различные данные - от чисел и строк до боевых единиц (на самом деле, типов гораздо больше).
Например, вы создали юнита, но хотите его использовать позднее(в другом триггере). Всего лишь поместите юнита в переменную, и, позднее, в другом триггере используйте эту переменную.
Базовое создание переменной:
Поле «Идентификатор скрипта» чаще всего используется при внедрении нестандартных скриптов. Имя, которое вы дали переменной при создании – единственное, что вы будете использовать для её поиска, в то время как «Идентификатор скрипта» может иметь разные названия, но именно он вызывается из скрипта.
В списке «Тип» вы должны выбрать тип переменной, которого она должна быть. Самые известные типы переменных - Integer(Целое число), Real(Действительное), Point(Точка), String(Строка), Unit(Юнит), Unit Group(Группа юнитов) и другие.
Если же вы хотите создать переменную с заранее заданным типом и не изменяемым в течение игры значением, то поставьте галочку на пункте «Константа». Переменная будет использована, но не доступна для изменения
Если вы поставите галочку в поле «массив», то можно создать переменную-массив (максимум четырёхмерный).
Вы можете объединить в массив несколько одинаковых переменных одного типа.
Например, у вас есть 4 целочисленные переменные int_var0, int_var1, int_var2 и int_var3.
Использование большого количества переменных вызывает трудности в поисках нужной, когда их список будет достаточно велик. Согласитесь, будет удобно обращаться через int_var[1], чем int_var1. Ко всему прочему: большое количество переменных затрудняет поиск нужной в общем списке.
Вы также можете предустановить значение переменной.
Теперь изменим значение переменной, добавив новое действие. Идём в категорию «Переменная» и выбираем действие «Установить переменную».
Выделяем нужный вариант и нажимаем «Переменная»
Выберите переменную, которую хотите изменить, и нажмите на «Значение».
Итак, существует множество способов изменения значения переменной.
Опция «Функция» позволяет вам использовать функции для изменения значений переменных. Это удобно, если вы используете функции, которые возвращают значения такого же типа, как и переменная.
Например, если вы используете функцию Математика -> Арифметическая операция, то она вернёт целочисленное значение, которое соответствует нашему случаю.
Опцию «Переменная» следует использовать, если вы хотите использовать значение из другой переменной.
Опция «Значение» позволяет установить значение переменной напрямую.
С помощью опции «Особый скрипт» вы можете использовать скрипт для установки переменной.

Записи

Записи – основной путь создания своего типа переменных.
Например, если вы хотите создать свою переменную типа «Точка», то вы можете назвать запись MyPoint, с двумя действительными переменными внутри, одну назовите Х, вторую У.
Процесс создания записи простой, просто создайте новую Запись и добавьте 2 переменные. Принцип похож на создание переменных.
Теперь создадим переменную типа MyPoint и отметим некоторые различия.
Создадим новую переменную и назовём её «point». Теперь в типе переменной укажем «- Запись», которая находиться в начале списка.
Если у вас больше одной записи, вы можете выбрать из списка «Запись» нужную. В данном случае у нас не будет такой необходимости.
Изменение значения переменной будет немного отличаться, чем установка обычной переменной.
Создадим действие Переменная ->Установить переменную.
В нужной переменной укажите “point”.
После point будет добавлено «Член».
Кликните туда, чтобы выбрать переменную, которую вы хотите изменить: Х или Y. Сейчас вы можете установить Х значение переменной типа «Точка».

Функции

Я вынес это в отдельную тему, потому что «создание определения условий» и «действий» – это производные от самой функции, только с другими значками. Помните, я говорил, что «Создание определения действий» - это нечто, позволяющее вам объединить множество действий и использовать их где-нибудь ещё?
Функции очень похожи на это.
Для использования функции вы должны дать ей имя, объявить возвращаемый тип, добавить параметры по необходимости, описать то, что она делает. По желанию можете использовать часть нестандартного кода, добавить локальные переменные по необходимости, добавить действия, которые функция должна делать, и, наконец, вы должны добавить возвращаемое значение (в зависимости от типа, который вы выбрали).
Такая вещь, как возвращаемый тип поначалу может вас озадачить, но это довольно полезная вещь. Допустим, вы хотите создать функцию, которая будет производить для вас математические действия, но вам нужен только результат (какое-то значение). Сначала вы делаете функцию с вашей сложной формулой, и, когда функция возвращает результат – пишете его напрямую в нужную переменную.
Параметры – другая очень полезная вещь. Вернёмся к нашей сложной математической функции и представим, что нам нужно несколько значений для возвращения корректного результата, но значения не всегда одинаковые. В этом случае вы можете подставить параметры во время вызова самой функции.
Для создания параметра кликните на кнопку из изображения ниже.
Текст подсказки – это описание вашей функции в списке функций и действий.
Пользовательский код скрипта – это, насколько я знаю, альтернативный метод создания функции, а вместо GUI тут используется скриптовой язык Galaxy Scripting Language (GSL).
Что такое локальные переменные вы уже знаете. «Действия» – это место, где происходят все расчёты или происходящие по очереди действия, и возвращается конечный результат.
Я создал простую функцию, которая берёт 2 точки как параметры и высчитывает расстояние между ними. Я знаю, что такая функцию уже есть, но я думаю, этот будет хороший пример для понимания «как это работает».
Для создания предустановленных действий и условий последовательность действий будет аналогичная, но предустановленные действия не нуждаются в возвращении значений до тех пор, пока вам самим это не понадобиться. Я думаю, предустановленные действия полезны, когда у вас много действий, повторяющие сами себя во многих местах. Итак, если вы используете эти действия в «предустановленном действии» и вызываете само «предустановленное действие» напрямую, то это делает код проще для понимания и дальнейшей доработки .
«Предустановленные условия» всегда должны возвращать логическое значение, такое как «истина» и «ложь», но они по своей структуре одинаковые с функциями, которые мы изучили выше.
Удачного кодинга! :)

От переводчика: т.к в оригинальной статье я не нашёл примера готового я решил выложить его сам(всё равно для скриншотов повторял все действия :))
`
ОЖИДАНИЕ РЕКЛАМЫ...
1
29
12 лет назад
1
Скриншоты в .jpg, это, конечно, пушка.
0
22
12 лет назад
0
красавчик, в наш проект вступай
0
22
12 лет назад
0
Doc, в .png слишком жирные получились бы
0
35
12 лет назад
0
Doc, дык они в скринвебе делались
1
34
12 лет назад
1
скатились до перевода статей.. sad
2
35
12 лет назад
2
Hellcore, wtf? мы с него и начинали
0
37
12 лет назад
Отредактирован ScorpioT1000
0
ZlaYa1000, мы топ1 ск2румодмейкинг
0
35
12 лет назад
0
кому это надо с нами конкурировать
12
25
12 лет назад
12
скатились до перевода статей.. sad
дак зачем изобретать велосипед?
ск2румодмейкинг
в россии видимо вобще ск2 модмейкинга нет =(
6
37
12 лет назад
Отредактирован ScorpioT1000
6
Жалко же хомячкам 500 рублей на искусство. Лучше купить доту 2.
Нет, серьезно, зачем какието основы там, схемы, переменные, зачем, до ульты дойти гораздо быстрей )
0
22
12 лет назад
0
ScorpioT1000, или яги кучу бутылок
1
37
12 лет назад
1
Я бы от яги не отказался <3
0
22
12 лет назад
0
ScorpioT1000, яга для школиев только водка, только хардкор
0
22
12 лет назад
Отредактирован DragonSpirit
0
начинать надо с малого и набирать обороты
0
34
12 лет назад
0
ZlaYa1000:
Hellcore, wtf? мы с него и начинали
вовсе нет. Это недавно от недостатка контента переквалифицировались в копипастеров.
2
25
12 лет назад
2
дота2 бесплатная, бред ее покупать. те кто не может бесплатно достать ключ слишком ленивы или им это не надо.
распространение ск2 ораничивает еще и батлнет, многим он вобще не уперся. была бы поддержка локалки все было бы иначе
0
29
12 лет назад
0
agentex, именно так. Слишком много DRM.
1
37
12 лет назад
1
Сказал чувак, продающий свою игру
0
15
12 лет назад
0
Дело не в отсутсвии сетевой игры.
Если бы близард додумался сделать игру в кастомные карты бесплатной (с рядом ограничений), то гарена осталась бы в истории.
1
27
12 лет назад
1
Point.Член на пол экрана :D
0
24
12 лет назад
0
Пошутить пытались.
0
35
12 лет назад
0
Hellcore, да что-ты?) ну а чем мы занимались в 2004 и 2005?
0
34
12 лет назад
0
Я имел виду sc2.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.