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

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


**

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



Привет. Написал простой скрипт чтоб записывал передвижение мыши а затем в точности воспроизводил. Но не уверен что все по уму сделано. Можете поправить? К тому-же столкнулся с проблемой того, что на разных компьютерах воспроизводится с разной скоростью. где-то за 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Отправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 26.1.2024, 2:30
Сообщение #2


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26744
Пользователь №: 16.971
Возраст: 29



Цитата
Тот-же код на луа решшит данные проблемы с таймингами?

Нет. Так устроена функция Sleep в Windows.
Скорость работы скрипта зависит от процессора.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zenogiasu
сообщение 26.1.2024, 3:07
Сообщение #3


**

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



Цитата(cirus @ 26.1.2024, 2:30) *

Нет. Так устроена функция Sleep в Windows.
Скорость работы скрипта зависит от процессора.

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


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27724
Пользователь №: 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
сообщение 27.1.2024, 2:08
Сообщение #5


**

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



Понял, но себя на понял не беру поэтому ничего не понял
чтож тогда если поправок в мой текущий скрипт записи макроса нет - ряд других вопросов:
1. можно ли считывать ИД курсора на языке пилота?
2. по умолчанию элементы массива являются строковыми переменными?
3. гет имидж, как вы выражаетесь, выгядет вкусной вещью, но перекапав форум, любой увидит то что по факту эта вещь, к сожалению не работает. решены ли проблемы на луа?
4. На какие массивы распостраняется делимитер? например тебе надо поставить пробел в делиметре. после ттого как ты это сделал, на какие массивы оно будет распостранено? на все что заданы в текущий момент в скрипте или как? и как обнулить делимитер?
5. можно ли как-то без использования функции Ярлыка и бат файла сделать так, чтобы при запуске основного exe пилота был автоматически сразу запущен нужный скрипт?
6. Можно ли привязать одну вкладку скрипта к приложению из другого скрипта?
7. забыл(
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 27.1.2024, 16:47
Сообщение #6


***********

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



Цитата
1. можно ли считывать ИД курсора на языке пилота?

встроенными средствами нет. возможно на луа либы какие-то есть. подозреваю, что решается простым биндингом.
Цитата
2. по умолчанию элементы массива являются строковыми переменными?

в пилоте на самом деле вообще все строковое. Но все, что #var обрабатывается, несколько иначе в плане парсера и считается условно числовым.
Цитата
3. гет имидж, как вы выражаетесь, выгядет вкусной вещью, но перекапав форум, любой увидит то что по факту эта вещь, к сожалению не работает. решены ли проблемы на луа?

а что с ним не так? прекрасно шуршит. как минимум в луа.
Цитата
4. На какие массивы распостраняется делимитер? например тебе надо поставить пробел в делиметре. после ттого как ты это сделал, на какие массивы оно будет распостранено? на все что заданы в текущий момент в скрипте или как? и как обнулить делимитер?

по сути на все при загрузке/сохранении. обнулить никак, но можно поставить исходное значение "\t".
Цитата
5. можно ли как-то без использования функции Ярлыка и бат файла сделать так, чтобы при запуске основного exe пилота был автоматически сразу запущен нужный скрипт?

вроде нет. а в чем проблема батника или ярлыка?
Цитата
6. Можно ли привязать одну вкладку скрипта к приложению из другого скрипта?

да. старый синтаксис помню плохо. будет что-то вроде:
set workwindow workwindow.2
где 2 номер влкадки другого скрипта.

переходите на луа - решите много проблем.


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


**

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



Цитата(DarkMaster @ 27.1.2024, 16:47) *

встроенными средствами нет. возможно на луа либы какие-то есть. подозреваю, что решается простым биндингом.
переходите на луа - решите много проблем.

спасибо за ответы. мистер цирус вот выдал на луа в свое время изменение курсора, работатет отлично. просто поинтересовался относительно старого синтаксиса.
https://forum.uokit.com/index.php?showtopic=30151
в гет имаге что не так? ну как бы то что у вас там постоянные проблемы с тем, что скринит квадраты малевича вместо того что нужно скринить... и решение там только одно было - определять необходимую оласть скрина абсолютными координатами экрана, а не координатами окна. да и вроде как принт скрин работает точно также криво. мне сейчас если надо сделать скрин приходится использовать дефолт, чтобы скринил тупо весь экран а не ную часть рабочего окна. ибо будет черный скрин...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 28.1.2024, 17:53
Сообщение #8


***********

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



Цитата
скринит квадраты малевича вместо того что нужно скринить

эмм... у меня на луа скрипт бегал на getimage + геометрический/математический анализ полученного участка окна. Бегало ~20 окон на протяжении 1.5 лет. Проблемы не было. Свежую версию, луа, дальше смотреть по обстоятельствам.

Цитата

не умоляя заслуги, но там вроде через вин апи id курсора можно дергать.


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


**

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



Возникла ужасная проблема. на компе не работают скрипты потому-что не работают wait ' ы, какое бы время не указать чтобы ждал - проскипцывает строчки моментально. хоть ваит 1000 хоть 99999, что за ужас?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 5.2.2024, 15:53
Сообщение #10


***********

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



проблема наблюдалась у некоторых людей, если система ОЧЕНЬ долго не перезагружалась. Используйте данный код в шапке и забудьте о проблеме.
Код
ffi.cdef[[
void Sleep(int ms);
]]
-- Подменяем пилотный wait
_G.wait = ffi.C.Sleep


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


**

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



Цитата(DarkMaster @ 5.2.2024, 15:53) *

проблема наблюдалась у некоторых людей, если система ОЧЕНЬ долго не перезагружалась. Используйте данный код в шапке и забудьте о проблеме.
Код
ffi.cdef[[
void Sleep(int ms);
]]
-- Подменяем пилотный wait
_G.wait = ffi.C.Sleep


да, уже почитал форум, вижу что наблюдалась на протяжении десятилетий, решения найдено небыло кроме подмены вайта. Спасибо за супер быстрый ответ. Перезагрузка в моем случае, конечно, не помогла, также дело не в виндусе, тк на другом компе та-же. И луа на помощь не придет тк код на пилотовском.
Попробую еще скачать чистую версию пилота с сайта и туда вбухать старые скрипты. Кто знает, может постоянное скачивание архива с пилотом с облака на компы в течении времени как-то Шакализирует пилот?)

Кстати на счет луа, вы придумали способ как обойти ф-цию Sleep через луа, я правильно понимаю, тоесть когда я пойду учить луа и писать на нем, лучше сразу писать через ваш обход этой ф-ции слип, нежели использовать обычный ваит, верно? Тк эта функция слип очень критично влияет на микротайминги, и писать макрос для каждого компа отдельно это как-то не круто.
Однажды просто на новую винду поставил код который стабильно долго работал, а на новой он вместо 500мс ждал наверно 100. и интвентарь в игре просто не успевал открыться чтобы проверить ботом открыт ли он. И возникала критическая ошибка) пришлось увеличивать все тайминги банально дддля этой системы.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 5.2.2024, 16:10
Сообщение #12


***********

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



Цитата
лучше сразу писать через ваш обход этой ф-ции слип, нежели использовать обычный ваит, верно?

По сути без разницы - они полностью совместимы, но смысла в стандартном вэйте нет. Он дает чуть большую нагрузку на камень и имеет данный баг. У меня в шапке подгружается отдельный скрипт который чуть расширяет/заменяет стандартный функционал. Я не пользуюсь стандартным вейтом.


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


**

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



Проблема с неработающими Wait - РЕШЕНА. Решена была путем обновления виндувс тупо через центр обновлений. Винда - неактивированная лицензия с надписью активируйте виндовс. За 2 года не обновлялась через ЦО, нажали сейчас, скачались там какие-то пакеты которые доступны для неактивированной винды и заработали вайты. Можете добавить это в свою базу решения проблем, если такая есть. Полагаю дела были либо во всяких этих обновах на с++ фрамеворка директ икса итд
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Aqualon
сообщение 5.2.2024, 20:06
Сообщение #14


**

Neophyte
Сообщений: 23
Регистрация: 21.3.2023
Группа: Пользователи
Наличность: 2
Пользователь №: 20.503
Возраст: 22



Цитата(DarkMaster @ 5.2.2024, 16:53) *

проблема наблюдалась у некоторых людей, если система ОЧЕНЬ долго не перезагружалась. Используйте данный код в шапке и забудьте о проблеме.
Код
ffi.cdef[[
void Sleep(int ms);
]]
-- Подменяем пилотный wait
_G.wait = ffi.C.Sleep


Забавный момент.
Помню сталкивался с этой проблемой, как раз в ситуации описанной вами - долго не перезагружал комп.
После перехода на луа почему то эта проблема пропала сама собой, даже без переопределения слипа через ffi.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
nykep
сообщение 5.2.2024, 23:10
Сообщение #15


****

Apprentice
Сообщений: 233
Регистрация: 1.9.2012
Группа: Пользователи
Наличность: 1212
Пользователь №: 15.246
Возраст: 25



Цитата(DarkMaster @ 5.2.2024, 15:53) *

Код
ffi.cdef[[
void Sleep(int ms);
]]
-- Подменяем пилотный wait
_G.wait = ffi.C.Sleep


а что нужно чтоб этот код работал? у меня выдает ошибку
a runtime error
attempt to index global 'ffi' (a nil value)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 7.2.2024, 17:51
Сообщение #16


***********

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



Код

local ffi           = require[[ffi]]
ffi.cdef[[
void Sleep(int ms);
]]
-- Подменяем пилотный wait
_G.wait = ffi.C.Sleep

ffi подключить надо было. По умолчанию он не подгружен.


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


**

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



Подскажите пожалуйста как разбить элемент на элементы?
есть массив %arr [1 1] равный dddddd
а нужно чтобы каждая буковка приняла вид либо отдельного столбца либо строки и стало [1 2] = d, [1 3] = d итд
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 14.2.2024, 18:22
Сообщение #18


***********

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



переходите на луа - всем будет проще.
за синтаксис не отвечаю - давно перешел на луа. Считайте наброском.

set %arr [1 1] "dddddd"
set #limit size(%arr[1 1])
log limit #limit
for #i #limit 1 -1
set %arr[1 #i] copy (%arr[1 1], #i, 1)
log #i %arr[1 #i]
end_for


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


**

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



Благодарю добрый человек. На вас весь форум держится по большей части.
Если кто прочитает и обладает необходимыми знаниями, сможет кто-нибудь научить пробрасывать видяху на гипер-в на виндусе 10? заплачу 10к если сможете на мои бомже компики это сделать чтобы хотябы в 2 окна фармить на каждом а не в одно. виртуализацию поддерживают процессоры, а винду 11 - нет, на ней вроде как с пробросом проблем нет Пендосский гайд по пробросу смотрел - чето не получилось, код ошибки 43
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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