(2172.ACTIVE) Обновлена ACTIVE-версия программы Помощник.

    Активным лицензиям последних версий (2172+) по 10.06.2022 будут начисляться дополнительные 240 минут (начисление происходит несколькими более мелкими частями в течении суток при условии, что программа не закрыта).

Что изменено с прошлого релиза:
    - (Исправлено) альтернативный подсчет закрытых статов удваивал их с экипированного двуручного оружия (считал, что на игроке два одинаковых одноручных оружия);
    - (Исправлено) в условии элемента боевого применения не работал выбор типа камня (количество на поле), точнее любой выбор сбрасывался до зеленых камней;
    - (Доработано) для удобства восприятия результат поиска по названию сразу дополняется текущим действием на предмете, а также количеством на персонаже. Не нужно именно для контроля этих параметров открывать окно параметров. Кроме того информация о возможности разбора предмета (выполнении требований для этого) выводится во всплывающую подсказку предмета;
    - (Переработано) формат задания даты для расписаний планировщика и работа с циклическими датами (которые срабатывают снова через заданный промежуток). Теперь всегда есть одна исходная дата с точными (и положительными) числами отдельных полей, плюс добавилось смещение для каждого из них. Именно на него увеличивается исходная дата, для вычисления момента следующего срабатывания. Прошлый вариант циклических дат имел неустойчивую работу и иногда запуск происходил и чаще, чем требуется (в частности срабатывание скрипта начала новых квестовых суток реализовано именно через планировщик). К работе с планировщиком добавлена онлайн справка.
                                                   (картинка увеличивается при клике)
 
    Для установки обновления (не касается frozen-версии 2127) перезапустите программу и согласитесь с запросом на обновление при новой загрузке.
    Если используете несколько копий одновременно, то постарайтесь не закрывать их все в один момент. При сохранении используется ряд общих файлов у всех копий, и одновременный процесс может вызвать драку за доступ к записи/чтению таких файлов с непредсказуемым результатом (в том числе повреждению сохранения). 
    Так что оптимальным вариантом будет закрытие каждой следующей копии после полного закрытия окон предыдущей.
    Либо установите программу поверх в ту же папку (при закрытой программе) с установщика:
Альтернативные ссылки на установщики:
ACTIVE-версия помощника: 
 

Планировщик.

    Планировщик позволяет создавать произвольное число расписаний, которые в свою очередь могут запускать lua-скрипты с различными действиями в них.
 
    Открыть окно планировщика можно через соответствующее меню в рабочем окне (программы Окна - Планировщик) (см. рис. 1).

(рисунок 1)

    Все расписания глобально можно разделить на служебные и пользовательские. 
 
    Служебные обеспечивают работу стандартных одиночных скриптов: Начала и окончания каждых игровых суток (имеют идентификаторы for_EachNewDay_Script и specialForEndDay), Начала каждых квестовых суток (specialForNewQuestDay), а также specialForLotoBuy реализующий ситуацию ожидания появления в лавке нужных предметов (тиражей лото) на определенный момент времени для более быстрого входа в покупку. Служебные расписания не рекомендуется удалять из списка. Это нарушит работу связанных с ними скриптов (или и вовсе сотрет их содержимое).

(рисунок 2)
    Пользовательские, как и следует из названия, создаются самим пользователем для решения личных задач.

    Создание нового расписания осуществляется через клик на ссылку "Новая запись" (3.1) над списком. 

(рисунок 3)

    При выделении расписания в списке открывается панель его параметров, в которой и осуществляется настройка. 

    Новое расписание получает идентификатор (название расписания), начинающийся на "id" + случайный набор цифр. Идентификаторы разных расписаний ни в коем случае не должны совпадать! При необходимости пользователь может задать собственную строку-идентификатор (не переименовывайте служебные расписания) (3.2).
 
    Кроме идентификатора каждое расписание позволяет задать строку-описание, в которой можно указать детали выполняемой задачи, чтобы лучше ориентироваться, если расписаний будет много (3.3).

    Кроме того каждое расписание имеет дату срабатывания (4.1), смещение для формирования новой (4.2), если требуется циклическое срабатывание, и блок настройки скриптов (4.3).
(рисунок 4. Увеличивается при клике)

    Для удобства задания фиксированных значений в дату начала действия расписания и его смещения, можно использовать выпадающее меню на кнопке "<=Уст.(ановить)Время<=" (выбор меню запоминается и повторное нажатие на кнопку повторяет то же самое назначение).

    Далее будут рассмотрены различные исходные ситуации и детали настройки расписания на них, попутно раскрывая смысл тех или иных опций. От просто к более сложному.

    Ситуация 1. Нужно после определенной даты однократно запустить скрипт. 
В полях даты (5.1) указывается нужная. В полях смещения (5.2) все нули. В блоке "мульти-скрипт" "*Период активности (сек)" (5.3) устанавливается так же в 0.  (последний параметр будет более подробно рассмотрен далее)
(рисунок 5)
    А все требуемые действия прописываются в "Основной(1х)Скрипт" справа. Кликаете по ссылке и вводите команды в открывшемся редакторе.
(рисунок 6)
    Ситуация 2. Один и тот же скрипт нужно выполнять постоянно и с одним и тем же периодом.
Настройка аналогична ситуации 1, за исключением смещения (5.2). В него вносится на сколько должна измениться исходная дата для нового срабатывания. Например, + 1 день (можно использовать ненулевые значения сразу в нескольких полях: + 1 день, 2 часа, 3 минуты, 4 секунды).
(рисунок 7)
    Примечание. Расписание срабатывает не строго в указанное время. Реальный запуск скрипта может запаздывать, в зависимости от того, чем занята программа. Например, это никогда не произойдет, пока программа проводит бой. Если срок выйдет в бою, то расписание будет активировано после его окончания. В общем проверка расписаний и запуск скриптов производится не параллельно основному циклу текущего режима, а внутри него и в строго определенных точках выполнения. 
    Исходя из этого рассмотренная выше ситуация плохо подходит для активации благословений или чего-то подобного. Следующая дата срабатывания вычисляется не от фактической, а от исходной. Например, при смещении +2 часа и исходной 0:01:05 следующие точки срабатывания будут смещаться строго как: 2:01:05, 4:01:05, 6:01:05 ... 22:01:05. При этом, если перс проводит длительные бои (боссы или вихрь), то реальное срабатывание может происходить через минуты после исходной даты. Если активировать благо с запозданием, то оно может не успеть истечь к следующему запуску. Вариант со смещением относительно прошлого реального запуска скрипта будет рассмотрен дальше.

    Кроме основного скрипта выполняемого всегда однократно, к расписанию прикреплен дополнительный, который может иметь многократный запуск. Его активность в первую очередь регулируется параметром "*Период активности (секунд)". Если он не равен нулю, то обработка расписания немного изменяется. После исходной даты и в течении указанного числа секунд действует специальный период активности и в его рамках начинает выполняться дополнительный скрипт. По истечении дополнительного периода (то есть исходная дата + указанное число секунд) однократно выполняется основной скрипт. 
    На запуск дополнительного скрипта также будут оказывать влияние опции "*Счетчик" и "*Между запусками (секунд)". Первым можно задать ограничение на число запусков (0 для любого количества пока не истек период активности), а вторым задать интервал между сработками. Причем этот интервал учитывает фактическое время старта прошлого скрипта. Новый не будет запускаться, если не вышло указанное значение (минимум 1 секунда).
 
    Для чего могут быть полезны такие сложности.
 
    Ситуация 3. Когда известна дата появления нужного тиража в лавке, то для его оптимальной покупки стоит заранее прекратить лишнюю активность программы (например включить режим Ожидание). При этом начать часто производить опрос лавки, чтобы как можно быстрее увидеть изменение ассортимента и приступить к покупке, пока не разобрали большие стеки. А после закупки вернуть предыдущий режим и продолжить работу. В общем тут может быть любая ситуация когда в рамках одного условия сначала надо выполнить один набор действий (в том числе например изменить настройки самой программы), а по истечении времени другой (выставить настройки как было или любой другой вариант).
(рисунок 8. Увеличивается при клике)
8.1. - дата сработки;
8.2. - в течении 600 секунд (10 минут);
8.3. - меняем текущий режим (если стоит другой) на Ожидание и с паузой между попытками в 1 сек начинаем опрашивать лавку (при счетчике 0 производим столько попыток, сколько влезет в отведенные 10 мин);
8.4. - по истечении 10 минут возвращаем прежний режим работы и продолжаем прошлую деятельность дальше.

    Ситуация 4. Требуется регулярно набрасывать бафы на определенных игроков.
    Настройка схожа на прошлый вариант. 
8.1. - дата начала;
8.2. - активный период выставляется в большое значение, например неделю или больше;
8.3. - в доп. скрипт заносим команды на бафы, счетчик либо по прежнему 0, либо столько сколько бафов надо навесить, пауза между запусками - время действия бафа + пару секунд, чтобы не наступить на хвост еще не упавшего с прошлого раза эффекта.
8.4. - основной скрипт можно не использовать.
Пример с конкретикой по самим скриптам на эту ситуацию есть здесь: https://heavengameonline.blogspot.com/2021/10/blog-post_21.html

Удаление расписания из списка осуществляется путем клика в поле с символом "Х" (столбик "Удалить")