Переменные и условия
Макрос, который принимает значение, считает и ветвится. И признаки того, что задача переросла макросы.
Как сделать макрос, который принимает значение, считает и ветвится.
Как объяснил бы коллега за пультом: коротко и по делу.
Переменные превращают макрос из списка команд в маленькую программу.
| Вид | Команды | Где живут |
|---|---|---|
| Переменные шоу | SetVar, AddVar, ListVar |
В шоу-файле, общие для всех пользователей |
| Пользовательские | SetUserVar, AddUserVar, ListUserVar |
У конкретного пользователя |
Задать и использовать
> SetVar $cue = 5 > Goto Cue $cue
Знак $ подставляет значение. AddVar $cue = 1 прибавляет единицу — так
получается «следующее кью» с собственным счётчиком.
Посмотреть текущие значения: ListVar, ListUserVar.
Условия
If $mode = 1
Go Executor 1
EndIf
Блок выполняется, только если условие истинно. Вложенность поддерживается.
Зачем это на шоу
Чаще всего переменная работает счётчиком эпизодов — один макрос, который каждый раз идёт на шаг дальше:
AddVar $ep = 1
Goto Cue $ep Executor 3
Второй по частоте случай — режим шоу. $mode хранит репетицию, прогон или
спектакль, и макросы ведут себя по-разному:
If $mode = 0
Assign Cmd Disable Executor 1
EndIf
Строка макроса умеет и спросить значение у оператора — отсюда макросы вида «введи номер кью, я туда перейду и включу подсветку».
$akt, $pesnya, $rezhim вместо $a, $b. Имя переменной — единственное
место, где записан её смысл.
Переменная $HOSTHARDWARE и функция gma.gethardwaretype() появились в 3.7
и отвечают GMA2 или GMA3 — по тому, на каком железе запущена консоль.
Когда пора на плагин
Переменные хранят числа и строки, арифметика ограничена сложением через
AddVar, отладка — выводом в Command Line Feedback.
Больше двух-трёх условий, цикл, вычисления сложнее сложения, работа со списками объектов — задача переросла макросы, см. плагины на Lua.
Переменные превращают макрос из списка команд в маленькую программу.
Два вида переменных
| Вид | Команды | Где живут |
|---|---|---|
| Переменные шоу | SetVar, AddVar, ListVar |
В шоу-файле, общие для всех пользователей |
| Пользовательские | SetUserVar, AddUserVar, ListUserVar |
У конкретного пользователя |
Задать и использовать
> SetVar $cue = 5 > Goto Cue $cue
Знак $ подставляет значение переменной.
> AddVar $cue = 1 > Goto Cue $cue
Прибавляет единицу — получается «следующее кью» с собственным счётчиком.
Посмотреть значения
> ListVar > ListUserVar
Условия
If $mode = 1
Go Executor 1
EndIf
Блок выполняется, только если условие истинно. Вложенность поддерживается, но глубокие конструкции лучше выносить в плагин.
Практические сценарии
Счётчик повторов. Макрос, который каждый раз запускает следующий эпизод:
AddVar $ep = 1
Goto Cue $ep Executor 3
Режим шоу. Переменная $mode хранит текущий режим (репетиция / прогон /
спектакль), а макросы ведут себя по-разному:
If $mode = 0
Assign Cmd Disable Executor 1
EndIf
Параметризованный макрос. Одна и та же логика для разных групп:
SetVar $gr = 3
Group $gr
Highlight
Меняя одну строку, вы меняете поведение всего макроса.
Переменные и ввод пользователя
В редакторе макроса строка может запрашивать значение у оператора. Так делают макросы вида «введи номер кью — я туда перейду и включу подсветку».
Переменная $HOSTHARDWARE и функция gma.gethardwaretype() появились в 3.7
и отвечают GMA2 или GMA3 — по тому, на каком железе запущена консоль.
Ограничения
- Переменные хранят числа и строки, без сложных структур.
- Арифметика простая: сложение через
AddVar, остальное — через плагины. - Отладка ограничена выводом в Command Line Feedback.
Давайте переменным осмысленные имена: $akt, $pesnya, $rezhim, а не $a,
$b. Через месяц вы будете читать свой макрос как чужой.
Когда пора переходить на плагин
Если в макросе появились:
- больше двух-трёх условий;
- необходимость в цикле;
- вычисления сложнее сложения;
- работа со списками объектов —
задача переросла макросы. См. плагины на Lua.