Здравствуйте, гость ( Вход | Регистрация )

> Скрипт на запись макроса, Запись макроса через скрипт на мышку
Zenogiasu
сообщение 25.1.2024, 23:50
Сообщение #1


**

Neophyte
Сообщений: 45
Регистрация: 3.12.2022
Группа: Пользователи
Наличность: 0
Пользователь №: 20.434
Возраст: 28



Привет. Написал простой скрипт чтоб записывал передвижение мыши а затем в точности воспроизводил. Но не уверен что все по уму сделано. Можете поправить? К тому-же столкнулся с проблемой того, что на разных компьютерах воспроизводится с разной скоростью. где-то за 40 сек исполняет, где-то за 38 к примеру.

это скрипт записи макроса
Код

set #s 1
get mouse_pos #x #y
kright_down #x #y
:ss
get mouse_pos #x #y
init_arr %s (#s) #x #y // записываем в массив текущие корды мыши
save_array %s C:\123.txt    // сохраняем этот массив в текстовый файл
set #s #s + 1           // чтоб следующие координаты прописывал на след строчку
wait 10
goto ss    // и так пока не остановлю.

Это скрипт воспроизведения макроса
Код

set $massiv ddd12       // какой массив воспроизводить

set linedelay 0         // воспроизведение плавного макроса
set size(%s)
set #s
set $txt .txt
load_array %s c:\$massiv$txt   // загружаем нужный массив с координатами
set #skolkostrok size(%s)     // узнаем сколько там строк
set #s #s + 1    // устанавливаем строку на 1
move_smooth %s [#s 1] %s [#s 2]   // перемещаем на первоначальные нужные координаты 1 строки
wait 100 + random (10)
kright_down %s [#s 1] %s [#s 2]   // и стартуем
set #a #skolkostrok - 1     // повторять столько сколько строк в массиве
repeat #a
    set #s #s + 1
    move %s [#s 1] %s [#s 2]
    wait 16 + random (1)       // а это время пришлось выверять вручную долгими тестами чтобы совпадало
end_repeat
kright_up %s [#s 1] %s [#s 2]
end_script

Я так понял язык пилота в этом плане чучуть ущербный правильно? Потому-что меняешь тайминги там где ваит 16 на любые другие с разницей в несколько милисекунд, а время выполнения скрипта не меняется почему-то. разница будет только если на 7+ мс менять тайминг
К ктому-же столкнулся с проблемой что на разных компах сходу те же скрипты с разной скоростью работают. Тот-же код на луа решшит данные проблемы с таймингами? Чтобы на всех компах и системах работало одинакого и не приходилось переживать. Да и к тому-же в скрипте записи там каждые 10мс файл текстовый пересоздается на диске с. Это не вызывает дополниительных нагрузок и микрозадержек в виду этого? Варианта записывать в массив чтобы потом сохранился одним разом в файл я не придумал, так как когда надо сотановить запись я жму кнопочку стоп скрипт.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
DarkMaster
сообщение 26.1.2024, 18:21
Сообщение #2


***********

Модератор UOPilot
Сообщений: 9.477
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27920
Пользователь №: 11.279



Под lua есть решения с высокоточными таймерами. Вроде работают. Если сделать:
Код
ffi.cdef[[
void Sleep(int ms);
]]
-- Подменяем пилотный wait
_G.wait = ffi.C.Sleep

То мы переобъявим функцию сна и будем использовать напрямую виндовую. У меня она относительно стабильно дает 1мс. Разница обычно не более 2%, бывают редкие просадки до 0.6мс не знаю с чем связано. Ну либо использовать высокоточные таймеры - они жрут камень сильно. Вообще это даже не виндовая фишка. Эти моменты решены на железном уровне в камне.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
Zenogiasu   Скрипт на запись макроса   25.1.2024, 23:50
cirus   Нет. Так устроена функция Sleep в Windows. Скорос...   26.1.2024, 2:30
Zenogiasu   Нет. Так устроена функция Sleep в Windows. Скорос...   26.1.2024, 3:07
Zenogiasu   Понял, но себя на понял не беру поэтому ничего не ...   27.1.2024, 2:08
DarkMaster   встроенными средствами нет. возможно на луа либы ...   27.1.2024, 16:47
Zenogiasu   встроенными средствами нет. возможно на луа либы ...   28.1.2024, 3:05
DarkMaster   эмм... у меня на луа скрипт бегал на getimage + г...   28.1.2024, 17:53
Zenogiasu   Возникла ужасная проблема. на компе не работают ск...   5.2.2024, 15:14
DarkMaster   проблема наблюдалась у некоторых людей, если систе...   5.2.2024, 15:53
Zenogiasu   проблема наблюдалась у некоторых людей, если сист...   5.2.2024, 15:59
Aqualon   проблема наблюдалась у некоторых людей, если сист...   5.2.2024, 20:06
nykep   ffi.cdef[[ void Sleep(int ms); ...   5.2.2024, 23:10
DarkMaster   По сути без разницы - они полностью совместимы, н...   5.2.2024, 16:10
Zenogiasu   Проблема с неработающими Wait - РЕШЕНА. Решена был...   5.2.2024, 17:54
DarkMaster   local ffi = require[[ffi]] ff...   7.2.2024, 17:51
Zenogiasu   Подскажите пожалуйста как разбить элемент на элеме...   14.2.2024, 2:51
DarkMaster   переходите на луа - всем будет проще. за синтаксис...   14.2.2024, 18:22
Zenogiasu   Благодарю добрый человек. На вас весь форум держит...   24.2.2024, 1:47


Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 1.6.2024, 17:21
Designed by Nickostyle