|
Pilot mod pack. Расширение функционала |
|
|
DarkMaster |
26.7.2024, 18:34
|
          
Модератор UOPilot
Сообщений: 9.746
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 29724
Пользователь №: 11.279

|
Пак функций переписанных на чистом luajit с существенным расширением функционала. Планируется к дальнейшему расширению и включению в пилот по умолчанию. Можно счтиать бета версией. Крайне желательно получить фидбеки по функционалу, ошибкам и т.д. По поводу мышки и клавиатуры. Для работы с неактивным окном рекомендуется post. Для работы с активным окном input. Для использования выпонить: Код require"lua_system\\init" Краткий список функций. Подробнее в readme.txt Системные. Массив sys.
Код define - безопасно объявить через cdef geterr - получить последнюю ошибку indexof - получить индекс элемента в массиве inpairs_sorted - итератор аналогичный in pairs(), но в афаитном порядке ispilot - яляется ли среда пилотом lg - вывести содержимое в лог (в т.ч. таблицы) random_g - случайное число с распределением по гауссу registryread - прочитать ключ реестра utf16_to_ascii - преобразовать UTF-16 в ASCII utf16_to_file - записать UTF-16 в файл utf8_to_ascii - преобразовать UTF-8 в ASCII utf8_to_utf16 - преобразовать UTF-8 в UTF-16 Процессы. Массив proc.
Код cd - получить/установить текущую директорию getenvironment - получить текущие переменные окружения exec - запустить исполняемый файл execandwait - запустить исполняемый файл и ждать выполнения execpipe - запустить исполняемый файл и открыть пайпы exepath - путь к исполняемому файлу setaffinity - назначить ядра процессу setpriority - установить приоритет процеса terminate - уничтожить окно Окна. Массив wnd.
Код findwindow - найти окно getcontroltext - получить текст контрола (кнопки) getfocus - получить хэндл окна с фокусом клавиатуры getforeground - получить активное окно getwindow - получить окно относительно другого getwindowclass - получить класс окна getwindowtext - получить имя окна isvisible - является ли окно невидимым postmessage - отправить post сообщение окну sendmessage - отправить send сообщение окну setcontroltext - задать текст контрола (кнопки) setwindowtext - задать имя окна showwindow - показать/свернуть/развернуть/скрыть окно tohandle - преобразовать число в хэндл windowfromcursor - хэндл окна под курсором windowfrompoint - хэндл окна в точке windowinfo - получить информацию об окне windowpid - получить PID окна windowpos - получить позицию окна workwindow - назначить рабочим окном Мышь. Массив mouse.
Код mousepos - получить текущие координаты мыши
Методы кликов мышкой: post send event input
Каждый из методов имеет следующие функции:
move - переместить мышь
left - кликнуть левой кнопкой left_double - двойной клик левой кнопкой left_down - нажать левую кнопку left_up - отпустить левую кнопку
right - кликнуть правой кнопкой right_double - двойной клик правой кнопкой right_down - нажать правую кнопку right_up - отпустить правую кнопку
middle - кликнуть средней кнопкой middle_double - двойной клик средней кнопкой middle_down - нажать среднюю кнопку middle_up - отпустить средню кнопку
m4 - кликнуть mouse4 кнопкой m4_double - двойной клик mouse4 кнопкой m4_down - нажать mouse4 кнопку m4_up - отпустить mouse4 кнопку
m5 - кликнуть mouse5 кнопкой m5_double - двойной клик mouse5 кнопкой m5_down - нажать mouse5 кнопку m5_up - отпустить mouse5 кнопку
wheel_down - переместить колесо вниз wheel_up - переместить колесо вверх wheel_left - переместить колесо влево wheel_right - переместить колесо вправо
Методы имеют следующие опции: move_before_click - переместить мышь в точку клика move_after_click - вернуть мышь после клика move_func - функция перемещения мыши move_split - разделять перемещение и клик (только input и event) timeout_inner - задержка межу down и up timeout_outer - задержка между up и down (не блокирующая) timeout_move - задержка межу move и down mod_inner - использовать флаг зажатия ctrl/shift вместо зажатия (только send и post) clock_up - время последнего клика Клавиатура. Массив kbd.
Код getlayout - получить текущую раскладку клавиатуры getlayoutlist - получить список доступных раскладок keystate - получить состояние клавиши keystateasync - получить состояние клавиши асинхронно. setlayout - установить раскладку клавиатуры
Методы отправки нажатий клавиатуры: send post event input
Каждый из методов имеет следующие функции: key - нажать и отпустить клавишу text - отправить текст down - нажать клавишу up - отпустить клавишу
Время. Массив time.
Код clock_hp - таймер с высоким разрешением clock_hp_int64 - таймер с высоким разрешением результат в int64 clock_hp_resolution - количество тиков таймера с высоким разрешением в секунду clock_hp_result[0] - результат выполнения clock_hp_int64() day - текущий день hour - текущий час min - текущая минута month - текущий месяц sec - текущая секунда sleep - приостановить программу sleep_hp - приостановить программу с высокой точностью sleep_random - случайная пауза sleep_random_g - случайная пауза с распределением по гауссу timer - создать объект-таймер timestamp - строковый таймштамп weekday - текущий день недели year - текущий год
Сообщение отредактировал DarkMaster - 7.3.2025, 18:45
Прикрепленные файлы
lua_system_3.0.0b.zip ( 264,66 килобайт )
Кол-во скачиваний: 258
lua_system_3.0.1b.zip ( 271,92 килобайт )
Кол-во скачиваний: 273
lua_system_3.0.2b.zip ( 306 килобайт )
Кол-во скачиваний: 216
lua_system_3.0.3b.zip ( 315,64 килобайт )
Кол-во скачиваний: 191
lua_system_3.0.4b.zip ( 302,32 килобайт )
Кол-во скачиваний: 121
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
DarkMaster |
30.7.2024, 12:08
|
          
Модератор UOPilot
Сообщений: 9.746
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 29724
Пользователь №: 11.279

|
Господа, я понимаю время, все такое. Но кто-нибудь хоть открывал? Ловите момент пока у меня есть время и возможность писать на общественных началах (IMG: style_emoticons/default/smile.gif) Из того, что было мной обнаружено и пофикшено: Добавлены функции кликов в event и input: left_double right_double middle_double m4_double m5_double Исправления readme: вместо setcontroltext был getcontroltext вместо setaffinity был setpriority исправлена куча опечаток. Убрано двое экранирование в require'ах. Есть ли какие-то пожелания по функционалу? Рекомендации? Замечания? Баги? Сообщение отредактировал DarkMaster - 30.7.2024, 18:37
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
DarkMaster |
31.7.2024, 9:48
|
          
Модератор UOPilot
Сообщений: 9.746
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 29724
Пользователь №: 11.279

|
Так а кто спросить то не дает?) Закидываем папку lua_system рядом с exe пилота. в скрипте пишем: Код --lua require"lua_system\\init"
-- ну и понеслася kbd.intput.key("a") wnd.workwindow("путь к exe") mouse.post(100, 200, "ctrl")
В дальнейшем планируется все выкинуть в глобал. Ну т.е. не надо бдует писать wnd.workwindow, sys.sleep и т.д, а просто workwindow, sleep, findwindow и т.д. На данный момент просто нет полноценного понимания, что делать с эмуляциями, т.к. там по 4 метода и в каждом функции имеют одинаковое имя. Делать вские sleft, pleft, eleft, ileft мне кажется не очень хорошей идеей, поэтому пока не развернул в глобал. Если есть идеи, как сделать красиво - буду рад. Сообщение отредактировал DarkMaster - 1.8.2024, 9:23
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
nykep |
1.8.2024, 0:43
|
   
Apprentice
Сообщений: 261
Регистрация: 1.9.2012 Группа: Пользователи Наличность: 1789
Пользователь №: 15.246
Возраст: 25

|
Кажется я упускаю что-то важное, строка require"lua_system\\init" больше не выдает ошибку, а вот дальше дело не идет. Код --lua require"lua_system\\init" wnd.workwindow("Блокнот") такой скрипт выдает (IMG:https://i.ibb.co/G2h4Rws/err.png) Можно пример полного скрипта, который отправляет писульку и кликает правой кнопкой в блокнот методом post?
|
|
|
|
DarkMaster |
1.8.2024, 9:22
|
          
Модератор UOPilot
Сообщений: 9.746
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 29724
Пользователь №: 11.279

|
Вот поэтому мне и нужны другие люди. Потому, что тестишь по накатанной, а шаг в сторону и вот оно. Во 1. В wnd.findwindow первым параметром идет ПУТЬ а не имя окна, отсюда проблема певая. Я использовал во время разработки в основном to_handle, отсюда проблемки. Т.е. в данном случае: Код wnd.workwindow(nil, "Блокнот") Во 2 криво добавил обработчик ошибок уже после написания функции. Огромное спасибо. Ща прилеплю апдейт. Код --lua require"lua_system\\init"
-- ну и понеслася kbd.input.key("a") wnd.workwindow("путь к exe") --wnd.workwindow(nil, "имя окна") -- или так mouse.post.left(100, 200, "ctrl") // Небольшая просьба. Пишите из чего запускаете. Пилот или zerobrane. Сообщение отредактировал DarkMaster - 1.8.2024, 16:31
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
DarkMaster |
1.8.2024, 20:12
|
          
Модератор UOPilot
Сообщений: 9.746
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 29724
Пользователь №: 11.279

|
по методам. все: send post event input должны работать, но не везде =) их использование абсолютно идентичное для пользователя. внутри там куча оберток чтобы синтаксис для пилота был одинаковый у каждого метода. зависит от приложения. send очень капризный. отправляется в неактивное окно post - относительно нормально должен отправлять, работает с неактивным окном. event - в активное окно input - в активное окно. Этот очень преспективный, приложения должны очень хорошо его воспринимать. Цитата И все же что такое здесь "ctrl"? клик с зажатым ctrl тестил на total commander'е выделение файлов с ctrl. Там в папочке есть файлик readme.txt - там все-все описания функций. Сообщение отредактировал DarkMaster - 1.8.2024, 20:13
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
kyja |
1.8.2024, 23:46
|
  
Novice
Сообщений: 90
Регистрация: 29.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.164

|
Цитата(DarkMaster @ 1.8.2024, 20:12)  клик с зажатым ctrl тестил на total commander'е выделение файлов с ctrl.
Не то чтобы не очевидно но это в целом будет казаться странным поведением то есть под капотом ведь там наверное идет эмуляция нажатия кнопки и потом клика и потом отпуск кнопки и отпуск клика То есть условно в какой то игре которая считывает допустим скорость кликов / зажатия / отпусков кнопок это будет выглядеть крайне не естественно и соответственно больше шансов на бан и прочие И вот вроде на такой безобидной вещи можно будет сильно палится ну это конечно все только для игр актуально Из идей мне кажется очень часто спрашивали и в целом интересная функция это перемещение мыши не линейно из точки А в Б а более человеческое по кривой что мне кажется очень был популярный вопрос
|
|
|
|
DarkMaster |
2.8.2024, 0:05
|
          
Модератор UOPilot
Сообщений: 9.746
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 29724
Пользователь №: 11.279

|
Цитата то есть под капотом ведь там наверное идет эмуляция нажатия кнопки и потом клика и потом отпуск кнопки и отпуск клика а вот и не всегда. если речь идет о post или send, то они умеют в рамках сообщения клика отсылать сообщение о том, что клик с модификатором (только shift и ctrl, для альт не работает). По дефолту пришлось отключить - приложения такие дебри winapi не оценили, в настройках метода можно включить обратно. Цитата То есть условно в какой то игре которая считывает допустим скорость кликов / зажатия / отпусков кнопок это будет выглядеть крайне не естественно и соответственно больше шансов на бан и прочие И вот вроде на такой безобидной вещи можно будет сильно палится ну это конечно все только для игр актуально я от части соглашусь, но тут есть много "но". не всегда бан страшен (по разным причинам), не всегда это игры, есть те же мыши с биндами, где так же прилетают с фиксированными задержками нажатия и отжатия. Хотя в целом - да, у меня есть желание сделать красивые рандомные таймеры для этого. Цитата И как по-новому записывать move? Не заметил вопрос. Точно так же как и клики, например: mouse.post.move(100, 200) Обратите внимание, что указатель теперь не перемещается и move происходит исключительно для приложения. В paint'е вполне успешно рисует. В то же время: mouse.input.move(100, 200) приведет к явному изменению позиции указателя. Т.е. move теперь тоже часть методов. Для него есть еще одна функция вне методов, чет забыл про нее и сомнения у меня в том, что она нужна, но руки дойдут сделаю. Не хочу с модуля на модуль туда-сюда прыгать. Важно текущее состояние чтобы хоть чуть-чуть было протестировано, зафиксируем, как стабильное (насколько это возможно), допил других модулей, тесты других, сбор в кучу и делаем апдейт пилота. План такой. Потом можно смело уходить на второй круг и добавлять функционал по уже сделанным модулям. Естественно этот принцип не абсолютный, в тот же sys и time уже сейчас внесены дополнения после 3.0.1b потому, что некоторые вещи тянут за собой необходимость реализации функций, которые гораздо уместнее поместить в тот же sys, чем делать локальными и недоступными пользователю.
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
DarkMaster |
4.8.2024, 16:50
|
          
Модератор UOPilot
Сообщений: 9.746
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 29724
Пользователь №: 11.279

|
Цитата post клики ничего не делают, пробовал в блокноте и пэинте. странно. А привязка точно верно сделана? Там что в блокноте что в пэинте куча дочерних окон. Попробуй пилтом через ctrl+a дернуть хэндл и вызвать потом: window = wnd.tohandle(циферки_хэндла) mouse.post.left(100, 200) У меня сейчас работает. В пэинте успешно ставит точки. Сделай кисть побольше на всякий случай(совет тупой, но мало ли). В блокноте тоже работает. Отправка клавиатуры в блокнот тоже шуршит, но пост не пошлет регистр. Точнее он шлет, но блокноту пофигу. send блокнот вообще не воспринимает. В пилотовском send'e там вообще зоопарк из комбинации методов был из-за чего иногда жаловлись, что идут двойные нажатия или двойной ввод текста. Там было что-то вроде: send_down(буква) say(буква) send_up(буква) Это криво, неправильно. Подобное поведение есть в input, но там сам метод совсем иначе это генерирует. move ща копаю. видимо оторвал когда модификаторы прикручивал.
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|