Как воспринимать макрос в редакторе
В UI макрос это не скрипт, а просто цепочка блоков. Ты добавляешь действия сверху вниз в том порядке,
в котором они должны произойти. По ощущению это ближе к Scratch: ты собираешь сценарий из готовых визуальных блоков.
Базовый порядок сборки
- Если сценарий зависит от предмета, цели или состояния игрока, то следует добавить проверки, так как это экономит время при выполнении (см. дефолтные пресеты)
- Далее уже добавляете действия: перенос в хотбар, выбор слота, use, перенос в оффхенд и так далее. По сути основная часть макроса.
- После инвентарных шагов при необходимости добавь короткий
Await. В целом, не всегда нужно, но для безопасности он добавлен в дефолтных пресетах.
- В конце добавь
Notify, так банально понятнее.
Когда используешь If Condition, думай о нём как о Scratch-блоке с внутренней областью. Снаружи стоит сама
проверка, а внутри неё лежат дочерние блоки, которые ты отдельно добавляешь внутрь этого контейнера. Они
должны выполниться только при выполнении условия.
Рабочий шаблон
Самый стабильный пользовательский шаблон выглядит так:
- Проверить, что предмет есть.
- Переложить его в нужное место.
- Подождать короткую паузу.
- Выбрать предмет или нужную руку.
- Использовать предмет.
- Показать уведомление.
Когда макросы обычно ломаются
Чаще всего проблемы не в самом editor UI, а в порядке действий. Если сначала ставить use, а потом перенос,
сценарий НЕ будет работать. Если не добавить паузу после перемещения предмета, следующий шаг может начаться
слишком рано (часто это может происходить из-за пинга).
Если не сделать предварительную проверку, макрос будет выглядеть как будто “ничего не сделал”, так что да, для дебага удобнее или чат или уведомления.
Практический совет
Если действие можно привязать к предмету, лучше привязывать его к предмету, а не к номеру слота. Слот удобен
только тогда, когда раскладка инвентаря у тебя всегда одинаковая. Так обычно не бывает, но было бы глупо не добавлять просто селект конкретного слота.
Ещё один хороший ориентир: если блок в голове читается как отдельный шаг сценария, значит его место в макросе
скорее всего выбрано правильно. Если без пояснений уже непонятно, что делает кусок цепочки, то макрос лучше
упростить или разбить на вложенные условия и отдельные части.
Хорошим напоминанием, что ты можешь разбивать макросы на несколько подмакросов. Макрос позволяет вызывать другие, потому таким образом можно разгрузить логическую нагрузку на экране.
Часть функций в макросах может не содержаться, потому можно применять просто команды клиента И/ИЛИ сервера.
ЗапомнитьВ UI макрос почти всегда собирается по схеме: проверка -> перенос -> пауза -> использование -> уведомление.