Циклические действия.

    В ряде ситуаций возникает потребность выполнять набор действий регулярно, но эпизодически и с заметным интервалом между отдельными попытками. В помощнике пользовательские действия задаются lua-скриптами. А циклический их запуск можно реализовать через планировщик.

    Пример. С монстров падают эфемерные мешки со временем жизни в 30 минут. Причем вскрытие такого мешка рандомно сбрасывает одну из нужных для ивента медалей (от ириски). Более оптимально сначала насобирать мешков (скажем в течении 25 минут), а после вскрыть их все. После перед (и для) поиском новых, похрустеть ирисками и почистить зубы (стоматологи настоящие разорители семейных бюджетов!).
    Значит исходная настройка №1. С монстров мешки собираем тухнуть в сундук.
    Шаг №2. Создание циклического расписания. Меню в рабочем окне Помощника "Окна" - "Планировщик". А в нем самом создаем новое расписание и выделяем его в списке для редактирования параметров.
    Опций всяких много, но сейчас нам нужны только те, что находятся в блоке "*Многократно запускаемый (мульти-)скрипт". Расписание имеет период активности, первый параметр. Допустим собирать мешки мы планируем в течении следующей одной недели. Кликаем по опции "*Период активн.(сек)" и задаем нужное.
    В течении активного периода может выполняться скрипт этого блока согласно параметрам "*счетчик" и "интервал(*Между запусками(сек))". Интервал соответственно задает временной промежуток между окончанием выполнения одного скрипта и началом следующего. Задается в секундах. Для нашего случая наверно стоит взять 20-25 минут (либо меньше, если совсем с местом туго - мешки не стекуемые).
    Значение параметра "*счетчик" трактуется так:
    "меньше нуля" - выполнение скрипта запрещено (можно использовать для быстрого отключения процесса не затрагивая остальные параметры);
    "ноль" - выполнение "сколько влезет" в активный период (бесконечно);
    "больше нуля" - ограниченное число запусков, при каждом счетчик уменьшается на единицу, при окончании он сразу становится отрицательным, и тем самым блокирует дальнейшее исполнение.
    Думаю, в нашем случае можно выставить безлимит (счетчик = 0) и обрабатывать мешки пока не окончится активный период расписания (7 дней по предыдущей настройке).
    Теперь самое главное - скрипт, непонятный и ужасный. Кликаем по ссылке и лицезреем редактор.
    Задача в тексте выглядит так:
1. Разобрать все эфемерные мешки на персе;
2. Разобрать по 1шт каждого вида ирисок, для восстановления полного набора медалей для дальнейшего поиска новых мешков.
    Все это можно быстро задать с помощью шаблонов вверху редактора.
    1. Разобрать 0 (то есть все что есть) мешков. Хватаем картинку мешка и сбрасываем его на строку "Разобрать(сунд.)". Параметр справа заранее выставляем в 0, если он там другой. В скрипт туда, где находится курсор ввода, вставится сразу готовая пропись.
    2. Разобрать по 1шт ирисок. Параметр справа от "Разобрать(сунд.)" меняем на 1. Курсор ввода текста переводим на новую строку.
    И каждый раз выставляя курсор на новую строку сбрасываем на ссылку разбора каждый вид ирисок. Обратите внимание, что в пропись попадает и значение параметра, поэтому важно его менять заранее, если он должен быть другим нежели в прошлый раз (в нашем случае на каждую ириску он нужен в значении 1, так что выставить однократно перед первой).
    Полный итоговый скрипт будет выглядеть так.
    Его можно сохранить при необходимости в отдельный файл, а после загрузить из него в другом месте. Кроме того для адептов лиги лени именно этот доступен по этой ссылке (можно скачать и сразу подгрузить в скрипт планировщика, без перетаскивания предметов на шаблон разбора): вскрыть_эфемерные_мешки_съесть_ириски.lua. Сохранять оптимально в папку    Помощник\Scripts\ Именно она откроется в первую очередь по клику на ссылку "Загрузить" в редакторе. Ссылки внизу редактора нужны именно для сохранения копии в файл, если это не требуется, то лишних телодвижений можно не делать. Сам скрипт планировщика сохраняется автоматически по мере ввода. По окончании достаточно просто закрыть редактор. Ссылка на скрипт начнет показывать его длину, что без открытия редактора позволяет говорить, что он как минимум не пустой. Кроме того стандартно пустые и нет скрипты выделяются разными цветами шрифта ссылки на него (в данном случае черная, указывавшая на пустой, стала синей).
    Осталось совсем чуть-чуть. Задать время начала действия расписания. Очень важно чтобы оно было в будущем относительно текущего момента, иначе признак "первого редактирования" не сбросится и расписание никогда не включится (подстраховка от того, чтобы скрипт не начал вызываться пока пользователь еще прописывает действия и не закончил). Можно быстро выставить фиксированный выбор "через минуту" следующим образом.
    Дальше продолжить остальную настройку программы, либо сразу запускать выполнение режима (нажать Старт в рабочем окне). В указанное время расписание активируется и в рамках заданного периода активности будет запускать скрипт (согласно интервала и счетчика, в рассмотренном примере каждые 25 минут в течении следующей недели).
    По такой же схеме можно реализовывать любую периодическую активность. Например, обеспечить клан 24/7 активными знаками хранителя через команду (в редакторе меню "Разное" - "Острова - Бафы с переходом"):
sendIslandBufs({массив,ИД,игроков,через,запятую},{массив,кодов,предметов}) 
    Пример. sendIslandBufs({1122,2233,3344,4455},{19032,19033,19031}). Оббафывание тремя знаками хранителя "Веселые_колокольчики"(19032), "Задорный_барабан"(19033) и "Мелодичная_лира"(19031) четырех игроков с игровыми идентификаторами 1122, 2233, 3344 и 4455 соответственно. Сама команда делает это однократно в момент выполнения ее в скрипте. Останется лишь организовать циклический запуск каждые 30 минут (лучше с некоторо-секундным запасом, чтобы не получилось, что эффект не успеет упасть до начала новой попытки). 
    Для вставки кода предмета в позицию курсора ввода его картинку можно сбрасывать непосредственно в поле текста =>. Тот же принцип работает и для игроков, если перетаскивать позиции любого их списка в программе (а так же для монстров, если где-то в прописи нужно указывать их коды).

Комментариев нет:

Отправить комментарий

Примечание. Отправлять комментарии могут только участники этого блога.