К содержанию
fohbookбета/ grandMA2

Переменные и условия

Macro, который принимает значение, считает и ветвится. И признаки того, что для задачи уже нужен плагин.

Версия ПО вашего пульта:1 фрагмент статьи для версий новее вашей1 фрагмент статьи для версий новее вашей1 фрагмент статьи для версий новее вашей1 фрагмент статьи для версий новее вашей1 фрагмент статьи для версий новее вашей1 фрагмент статьи для версий новее вашей1 фрагмент статьи для версий новее вашей
Быстрый выбор:

Переменные превращают Macro из списка команд в маленькую программу.

Вид Команды Где хранятся
Переменные шоу SetVar, AddVar, ListVar В Show file, общие для всех пользователей
Пользовательские SetUserVar, AddUserVar, ListUserVar У конкретного пользователя

Задать и использовать

командная строка
> SetVar $cue = 5
> Goto Cue $cue
 

Знак $ подставляет значение. AddVar $cue = 1 прибавляет единицу — так получается «следующее Cue» с собственным счётчиком.

Посмотреть текущие значения: ListVar, ListUserVar.

Условия

Условие пишется в начале строки Macro в квадратных скобках. Если оно истинно, выполняется остаток строки, если нет — строка пропускается, и Macro идёт дальше.

[$mode == 1] Go Executor 1
[$mode == 0] Off Executor 1

Операторы: ==, >, <, >=, <=. Сравниваются строки, символ за символом, а не числа: "61" окажется больше "599", потому что 6 больше 5. Для счётчиков держите число знаков одинаковым или сравнивайте только на равенство.

Блоков «если — иначе» и вложенности у Macro нет: каждое условие действует на одну строку. If и EndIf в Command Line — фильтр выбора, к условиям Macro они отношения не имеют.

Зачем это на шоу

Чаще всего переменная работает счётчиком эпизодов — один Macro, который каждый раз идёт на шаг дальше:

AddVar $ep = 1
Goto Cue $ep Executor 3

Второй по частоте случай — режим шоу. $mode хранит репетицию, прогон или спектакль, и Macro ведут себя по-разному:

[$mode == 0] Off Executor Thru
[$mode == 1] Go Executor 1

Строка Macro умеет и спросить значение у оператора: текст в скобках появляется во всплывающем окне, а ответ подставляется на его место.

SetVar $answer = ("Really delete all groups? yes/no")
[$answer == "yes"] Delete Group Thru

Для текста вопрос пишут в кавычках внутри скобок, для чисел и команд — без кавычек: Fixture (Which Fixture ID?).

Именование

$akt, $pesnya, $rezhim вместо $a, $b. Имя переменной — единственное место, где записан её смысл.

Появилось в 3.7 · в вашей версии этого нет

Переменная $HOSTHARDWARE и функция gma.gethardwaretype() появились в 3.7 и отвечают GMA2 или GMA3 — по тому, на каком железе запущена консоль.

Когда пора на плагин

Переменные хранят числа и строки, арифметика ограничена сложением через AddVar, отладка — выводом в Command Line Feedback.

Больше двух-трёх условий, цикл, вычисления сложнее сложения, работа со списками объектов — задача уже слишком сложна для Macro, см. плагины на Lua.

Нашли в статье ошибку, устаревшее или непонятное место?

рядом по смыслу