================================= - Работа с несколькими окнами UO - Запись движений мыши - Сохранялка экрана (ScreenShot) - Расширенный язык скриптов - И многое другое ================================= --v.2.20--
добавил функцию получения текущей раскладки клавиатуры 'set $var GetLayout'. возвращает восьмизначное шестнадцатеричное число, без префикса '0x'. пример: a0000419
научил пилот 'Возвращать курсор мыши после кликов' при включенной галочке. ранее она относилась только к команде 'move'
при ошибке альтернативного определения цвета в 'findcolor', в строковой переменной будет возвращено значение '-3' (ранее возвращалось что-то типа '0---'). отрищательные значения в принципе сигнализируют об ошибке
добавил преобразование в 'hex' и обновление хинта кнопки с цветом туда где этого небыло
при определении цвета по 'ctrl+a' и 'ctrl+b', стрелочка слева от кнопки с цветом, окрашивается в 'определенный' цвет
по самому большому эксепшену в скрипте теперь вместе с классом ошибки, выводится ее описание. заодно это сообщение пишется в лог
при ошибке чтения массива командой 'load_array' скрипт продолжит работу с выводом сообщения в лог. размер загруженного массива будет зависеть от того на каком этапе произошла ошибка
добавил вывод номера строки и команды при записи в лог
переименовал пункт меню 'Вести лог' в 'Записывать лог в файл'
убрал флуд команды 'move' в лог
увеличил размеры окна истории развития, появляется в центре экрана
добавил возможность располагать окно лога поверх всех окон. включается соответствующим пунктом меню. сохраняется при сохранении настроек. по умолчанию включено
обновил раздел благодарностей
добавил функцию преобразования десятичного значения в шестнадцатеричное 'set $a dec2hex (#b)'
добавил функцию преобразования шестнадцатеричного значения в десятичное 'set #b hex2dec ($a)'. при возникновении ошибки обе будут материться в лог
добавил в 'findWindow' возможность искать по классу окна
добавил в 'findWindow' возможность искать в середине названий всех окон. порядок поиска следующий: 1. ищем указанную строку в качестве точного названия окон 2. в качестве класса окон 3. в начале названия окон 4. в середине названий окон 5. в качестве 'pid' окна
добавил в 'findWindow' вывод в лог каким способом найдено окно
увеличил ширину окна лога открываемого через меню
добавил задание размера массива. если массив не существовал, то он создается. если необязательные параметры отсутствуют, то принимаются равными нулю. 'set size (%arr <x> <y>)'
добавил мигание иконки в трее. зеленая стрелочка если есть запущенные скрипты, красная - если хоть один приостановлен. привязано к настройке "Отображать запущенные скрипты"
исправил поиск подстроки одного регистра в строке другого регистра, содержащих символы алфавита отличного от английского и заданных с помощью переменных set $substr таня set $str textТАНЯтект if $substr >= $str msg found end_if
исправил вложенный вызов процедур, расположенных в теле родительского скрипта set logging open 0 0 440 700 set linedelay 0 set #a 0 call proc proc proc wait 1 set logging on if #a.0 < 20 set #a.0 #a.0 + 1 call proc end_if end_proc
отныне 'findcolor' ищет во всем указанном диапазоне, а не 'до' конечной точки. 'set $a FindColor (10, 15 10, 15 1 1 84235 %arr)' будет искать цвет в одной точке
научил 'findcolor' искать по диапазону цветов и по отдельным каналам цвета. для поиска по диапазону параметры цвета задаются в круглых скобках. можно задавать сразу несколько параметров. ищет сразу по всем указанным параметрам. если цвет указан без скобок, то ищется точное совпадение цвета, как раньше 'set $a FindColor (StartX StartY EndX EndY ShiftX ShiftY (RequiredColor) ResultArray [type] [abs])' примеры задания 'RequiredColor': '84235' - точный цвет '84235-86027' - диапазон цветов 'R(11)' - значение красного канала = 11, остальные не проверяются 'G(73-80)' - диапазон значений зеленого канала, остальные не проверяются 'R(11)+G(73-80)+B(1)' - заданы значения по всем каналам '84235, R(0), R(11)+G(73-80)+B(1)' - комбинированное указание искомых цветов
добавил предельное количество точек для поиска в команде 'findcolor', в связи с этим слегка изменился синтаксис 'set $a FindColor (StartX StartY EndX EndY ShiftX ShiftY (RequiredColor) ResultArray [type [count]] [abs])'
отучил пилот устанавливать русскую раскладку клавиатуры там, где она не нужна
исправил отображение кнопок запуска остановки скриптов в Win x64
добавил команду поиска изображений 'set $a FindImage (StartX StartY EndX EndY (filename) ResultArray [type [accuracy [count]]] [abs])'. ищет по уникальному для изображения цвету. может ничего не найти, если этот цвет чем-то перекрыт. цвет в левом верхнем углу изображения считается цветом фона, и не анализируется. изображение должно быть 24 бита, bmp. в 'ResultArray' возвращает координаты левого верхнего угла найденых изображений. в строковой переменной возвращает количество найденых изображений, либо процент точности единственного найденного. type: 1 - надежный (default) 2 - быстрый accuracy: точность поиска в процентах (default: 80) count: максимальное количество найденых изображений (default: 1, all: -1)
поправил мелкий косяк с кнопусечками
добавил команду определения положения и размеров заданного окна 'get windowpos <handle> [#X #Y [#width #height [#result]]]'. если 'handle'=0, то берется текущее рабочее окно. статус ошибки возвращается в переменной '#result' '#result': 0: 'ok'; 1: 'width or height not recognized'; 2: 'x or y not recognized'; 3: 'windowpos false'; 4: 'handle not recognized';
'set windowpos #X #Y #width $height #handle' теперь взаимодействует с текущим рабочим окном, если '#handle' не только не распознан, но и равен нулю
поправил внешний вид формочки 'prompt' и добавил кнопочку 'Ок'
поправил 'prompt' на предмет соответствия заявленному функционалу, и добавил возможность выбора нескольких значений: set $a prompt (подсказка) // запрос на ввод значения. возвращает в переменную введенное значение. set #b prompt (выбор1 выбор2 выбор3 выбор4 выбор5) // запрос на выбор значения. возвращает номер выбранного значения, либо 0. выбор подтверждается закрытием окна. set %с prompt (выбор1 выбор2 выбор3 выбор4 выбор5) // запрос на выбор нескольких значений. возвращает указанный массив, содержащий в первой строке, по столбцам соответствующим номерам значений, либо 1 - если элемент выбран, либо 0 пример: set %s prompt (ch1 ch2 ch3 ch4 ch5) set #a size (%s [ 1 ]) // строка всегда одна, но в ней несколько столбцов set #b %s [ 1 #a ] // последний элемент set $c %s [ 1 ] // получим чтото типа 10010, т.е. все элементы сразу
--v.2.21--
добавил пониженный "Приоритет для новых скриптов"
добавил команду загрузки скриптов 'load_script <scriptNumber> <file>'. по-умолчанию скрипты загружаются из папки 'Scripts' load_script 7 example.txt
пока отключил вывод в лог 'findWindow' каким способом найдено окно, до лучших времен
добавил вывод сообщения в виде всплывающей подсказки в правом нижнем углу экрана 'hint <text>'. не останавливает скрипт, исчезает через 4 секунды, всплывает поверх всех окон. символы '|' и '/n' являются символами перевода строки. длина текста ограничена 255 символами
поправил вывод сообщений поверх всех окон
добавил в 'prompt' таймаут ожидания в секундах. указывается после всех параметров в круглых скобках 'set #b prompt (ch1 ch2 ch3 [(таймаут)])'
научил условные операторы понимать элементы массива в качестве параметров. указание индексов массива элементами массива не поддерживается
научил условные операторы принимать элеменнты массива в качестве параметров для определения цвета точки пример: set %a[1] 110 120 8030463 set %a[2] 110 120 set %a[5 1] 110, set %a[5 2] 120, set %a[5 3] 8030463 if (%a[1]) and (%a[2] 8030463) and %a[5]
научил условные операторы принимать в качестве параметров для определения цвета точки, координаты и цвет заданные одной строкой пример: set $a 110 120 8030463 set $b 110 120 if ($a) and ($b 8030463)
добавил переменные, возвращающие цвет и координаты, определенные по нажатию 'Ctrl+A': 'defColor', 'defX', 'defY', 'defXabs', 'defYabs'.
добавил переменную, возвращающую PID процесса которому принадлежит рабочее окно 'WorkWindowPID'
добавил горячую клавишу для остановки всех скриптов. по-умолчанию отключена, 'Ctrl+Alt+End'
добавил горячую клавишу для задания рабочего окна и определения цвета с координатами. по-умолчанию отключена, 'Ctrl+A'. полный аналог простому обычному 'Ctrl+A'
исправил растягивание панели параметров персонажа для лучшего восприятия отображаемых переменных (растягиваются панели типов №2 и №5)
изменил редактор скрипта обратно на обычный memo, для борьбы с разнокалиберными шрифтами при наборе\вставке нового текста
исправил ошибку возникающую при вычислении второй функции 'size' в одном выражении
исправил незначительную ошибку в функции 'prompt'. не обнулялся массив результатов
добавил поддержку плагинов. загружаются из 'Plugins\*.dll' при старте пилота. имя файла не должно содержать точек и других нелегальных для пилота символов. список функций всех загруженых плагинов расположен в соответствующем подпункте меню, вызываемому кликом правой кнопки мыши в скрипте. имя функции формируется из имени файла плагина и собственно имени самой функции, разделенных точкой. параметры указываются в следующих за именем круглых скобках. плагин возвращает одну строку, длиной до 32кб. символ с кодом '#00' является концом строки. комбинация символов с кодами '#0d0a' или '/n' являются управляющими, для увеличения первой размерности массива (строк). символ с кодом '#09' является управляющим, для увеличения второй размерности массива (столбцов). т.е. возвращаемое плагином значение вида '1#092#093/n4#095#096', где '#09' означает символ с кодом 9, создаст массив 2х3 следующего содержания. 1 2 3 4 5 6 пример: set $a myPlugin.function1 (много много параметров) // в строковой переменной $a будет всё что вернет плагин set %a myPlugin.function1 (много много параметров) // возвращаемое плагином значение будет преобразовано в массив %a пример исходного текста плагина лежит где-то рядом
исправил ошибку с определением пути к файлу при сохранении скрипта
исправил ошибку 'invalid class typecast' при нажатии 'Ctrl+B' на закладке отличной от скрипта
--v.2.21.1--
поправил запоминание и восстановление позиции курсора в редакторе при переключении закладок
поправил пропадание изменений в текущем скрипте, при добавлении нового плюсиком
исправил ошибку в команде 'load_script'
исправил ошибку в команде 'load_array' внесенную в версии 2.20
поправил вывод сообщений поверх всех окон
поправил загрузку хоткеев сломанную в предыдущей версии
если элемента массива не существовало, то вместо него выводиться будет пустая строка
в плагин вместо класса 'TApplication' передается хэндл
добавил диалог поиска и замены текста. вызывается по 'Ctrl+H'
--v.2.21.2--
при нажатии на кнопку с абсолютными координатами, в скрипт, после координат будет вставляться слово 'abs'
при включении хоткея 'Set work window', прежняя комбинация клавиш 'Ctrl+A' работает только на выделение всего текста в скрипте
ввел ограничение на количество строк в логе. при достижении количества строк 1024, устаревшая половина лога очищается. файл лога не затрагивает
исправил ошибку падения пилота при выходе без сохранения настроек
исправил ошибку с определением пути к файлу картинки в 'findimage' после сохранении скрипта через пункт меню 'сохранить как'
--v.2.22--
убрал напоминание о том, что не указано рабочее окно, при старте скриптов
поправил 'hint'. устранил мигание, ускорил в 4 раза
убрал вывод в лог имени скрипта при выводе системных (не из скрипта) сообщений
вывод сообщения 'Не могу найти рабочее окно' при нажатии Ctrl+a перенаправил в лог, поправил определение координат и цвета
перенаправил в лог сообщение об ошибке открытия файла лога. вывод в файл последующих сообщений не производится до перезапуска пилота
подправил вывод в лог сообщений о загрузке плагинов, добавил несколько сообщений об ошибках загрузки
сделал подсветку синтаксиса в редакторе. цвета пока настраиваются только через конфиг пилота в секции [Highlighter] зарезервированные слова разделены на группы по смысловому назначению. их цвета указываются в параметрах начинающихся со строки 'RW ' в формате : Background,Foreground,Style Style может принимать значения: 0 - обычный; 1 - жирный; 2 - курсив; 4 - подчеркнутый; 8 - зачеркнутый; и их комбинации.
исправил алгоритм поиска и замены текста в скрипте по хоткею Ctrl+H
подправил переменную 'delimiter'. для задания в качестве разделителя нелегальных символов их необходимо заключать в одинарные кавычки. вычисления переменных не производится теоретически с помощью этой переменно можно оперировать с любыми символами set delimiter '/' set %a [1 3] set logging %a [1]
добавил в 'hint' возможность задания некоторых параметров, в связи с этим слегка изменился синтаксис. старый вариант по прежнему работает 'hint ([fontSize fontColor [posX posY [width height]]] (any text))' круглые скобки обязательны, отсутствовать могут любые параметры, начиная с конца. если в качестве параметра указана '-1' то это параметр игнорируется, как если бы небыл указан вовсе. координаты могут быть отрицательными, за исключением '-1'.
переделал команду 'hint', теперь у каждого скрипта свой хинт. вывод хинтов из процедур поддерживается, но не рекомендуется. при этом происходит закрытие хинта не по таймеру, а по выходу из процедуры
поправил функцию 'Отображать запущенные скрипты' при отключенной галочке
добавил сохранение расположения окна лога на экране. зависит от состояния галочки 'Запоминать положение окон...'\'Uopilotа'. запоминается при сохранении настроек с открытым окном лога
исправил загрузку скриптов в работающие скрипты в команде 'load_script'