|
|
  |
Arduino, Нажатия мыши и клавиатуры в обход защиты от кликеров |
|
|
Zenogiasu |
20.4.2025, 21:01
|
  
Novice
Сообщений: 59
Регистрация: 3.12.2022 Группа: Пользователи Наличность: 0
Пользователь №: 20.434
Возраст: 28

|
Цитата(DarkMaster @ 20.4.2025, 20:53)  код привидите. и подробно опишите, что есть "зависания" (они могут быть сильно разными).
у меня лично зависаний никаких небыло. несколько дней только пользуюсь ардуинкой. сделаю как вы сказали, надеюсь все будет нормально. если что отпишусь. интересно кстати что за игры такие, ради которых сделалось это ардуино, с защитой от кликеров. не знаю таких, но знаю что в расте несколько лет назад был бот на ардуино, после чего EAC (его самая продвинутая версия, которая есть только в таких играх как раст и дота) стали детектить арудино. кстати почему сайт вдруг стал так долго грузить стрианицы? по минуте
|
|
|
|
Zenogiasu |
20.4.2025, 23:11
|
  
Novice
Сообщений: 59
Регистрация: 3.12.2022 Группа: Пользователи Наличность: 0
Пользователь №: 20.434
Возраст: 28

|
Цитата(DarkMaster @ 20.4.2025, 20:53)  код привидите. и подробно опишите, что есть "зависания" (они могут быть сильно разными).
Впервые столкнулся с зависаниями, которые вынуждают отключить пилот через диспетчер. До этого были лишь те, которые были вызваны ручной остановкой скрипта если скрипт ардуино был в работе, тоесть двигал камеру, тоесть при открытом порте. для этого было достаточно перезагрузить пилот. Но после внесения изменения в плане задавания рандом шага непосредственно до мува, часто (ИНОГДА) стал возникать окончательный зависон пилота. Что самое главное - рандом шага мува непосредственно до мува без закомментирования шапочной шаговой составляющией - вообще никак не ускоряло движение камеры, даже если сделать шаг 44. но если закомментировать шапочное установление шага то пилот зависает с необхожимостью офа через диспетчер не отвечайте. через день два я протестирую этот момент и скажу точно в чем кроется проблема. p.s. парашу прощения, язык луа не изучал еще. поэтому нубская логика и код. Код --lua local hw = require'arduino' hw.com = hw.get_port (2341, 8036) -- указать vid и pid ардуино if hw.com < 1 then -- если номер порта меньше 1 log ('error = ' .. tostring(hw.com)) -- код ошибки end_script () end local handle = findwindow ("New World") if handle then workwindow (handle[1][1]) else log ("Не найдет клиент игры") end_script () end hw.set_delay_mouse (20) -- установить паузу между нажатиями клавиш мыши hw.set_random_delay_mouse(10) -- установить рандом между нажатиями клавиш мыши от 0 до 9 мсек hw.set_offset_mousemove(5) -- шаг перемещения курсора, чем больше тем быстрее перемещается hw.set_delay_mousemove(1) -- установить паузу между каждый шагом перемещения мыши, чем меньше, тем быстрее перемещается
x1 = 600 x2 = 690 mnoj = 25 mnoj2 = 15 while 1 == 1 do local ar = findcolor (520, 14, 635, 30, [[('6864605 7524080 7721199 6997224 7260393 7062499 7325934 6468563 7194599 7457773 5676472 6336722 6403024 5610167 6600662 7721974 7392237')]], '%arr', 2, 40, 1) if ar then if ar > 9 then local x, y = mouse_pos ("abs") if step == 1 then hw.mouse.move (x - 50 - math.random (30), y - math.random (7)) step = 0 else hw.mouse.move (x - 50 - math.random (30), y + math.random (7)) step = 1 end else break end else break end wait (100 + math.random (100)) end timer = os.clock() + 50 while 1 == 1 do local ar = findcolor (x1, 14, x2, 30, [[('6864605 7524080 7721199 6997224 7260393 7062499 7325934 6468563 7194599 7457773 5676472 6336722 6403024 5610167 6600662 7721974 7392237')]], '%arr', 2, 40, 1) if ar then if ar > 30 then if x1 == 626 then break end if x1 == 600 then x1 = 626 x2 = 646 mnoj = 2 mnoj2 = 15 end end end if os.clock() > timer then log ('НЕ НАШЕЛ МЕТКУ') break end local x, y = mouse_pos ("abs") if step == 1 then hw.mouse.move (x + mnoj + math.random (mnoj2), y - math.random (7)) step = 0 else hw.mouse.move (x + mnoj + math.random (mnoj2), y + math.random (7)) step = 1 end wait (1 + math.random (15)) end
|
|
|
|
DarkMaster |
21.4.2025, 7:02
|
          
Модератор UOPilot
Сообщений: 9.746
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 29736
Пользователь №: 11.279

|
Цитата hw.set_delay_mousemove(1) я бы 1 не ставил. по крайней мере пока не поймете в чем проблема. попробуйте побольше. все x, y перварительно вычисляйте, выводите в лог, потом передавайте в функцию. lua абсолютно пофигу где вы вычисляете, но нужно проверить не вызывают ли проблемы определенные координаты. Цитата wait (1 + math.random (15)) возможно минимальная задержка слишком мала и вы заваливаете буфер. уменьшайте количество кода которое используете. Нужно найти тот минимальный кусок которой воспроизведет проблему. вот это позволит понять на какой строке зависает:
mydbg.lua ( 7,67 килобайт )
Кол-во скачиваний: 58
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
kyja |
22.4.2025, 22:52
|
  
Novice
Сообщений: 90
Регистрация: 29.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.164

|
Вообще по опыту лучше всего устанавливать их в самом скетче ардуино и не использовать вообще Код hw.set_delay_mouse (20) -- установить паузу между нажатиями клавиш мыши hw.set_random_delay_mouse(10) -- установить рандом между нажатиями клавиш мыши от 0 до 9 мсек hw.set_offset_mousemove(5) -- шаг перемещения курсора, чем больше тем быстрее перемещается hw.set_delay_mousemove(1) -- установить паузу между каждый шагом перемещения мыши, чем меньше, тем быстрее перемещается В скетче вот эти параметры Код int KEYBOARD_DELAY = 100; int MOUSE_DELAY = 60; int MOUSE_MOVE_DELAY = 35; int MOUSE_MOVE_OFFSET = 30; int RANDOM_KEY = 30; int RANDOM_MOUSE = 20; У меня с таким подходом проблем нет пилот не виснет всего использую 10 ардуин
|
|
|
|
Zenogiasu |
23.4.2025, 14:22
|
  
Novice
Сообщений: 59
Регистрация: 3.12.2022 Группа: Пользователи Наличность: 0
Пользователь №: 20.434
Возраст: 28

|
Цитата(kyja @ 22.4.2025, 22:52)  Вообще по опыту лучше всего устанавливать их в самом скетче ардуино и не использовать вообще Код hw.set_delay_mouse (20) -- установить паузу между нажатиями клавиш мыши hw.set_random_delay_mouse(10) -- установить рандом между нажатиями клавиш мыши от 0 до 9 мсек hw.set_offset_mousemove(5) -- шаг перемещения курсора, чем больше тем быстрее перемещается hw.set_delay_mousemove(1) -- установить паузу между каждый шагом перемещения мыши, чем меньше, тем быстрее перемещается В скетче вот эти параметры Код int KEYBOARD_DELAY = 100; int MOUSE_DELAY = 60; int MOUSE_MOVE_DELAY = 35; int MOUSE_MOVE_OFFSET = 30; int RANDOM_KEY = 30; int RANDOM_MOUSE = 20; У меня с таким подходом проблем нет пилот не виснет всего использую 10 ардуин о отлично сэр. прямой активный юзатель ардуин готов поделиться своим опытом. это очень ценно. я пока апатично относился к своей ардуинке тк код крайне банальный и выполняет очень банальную вещь. но в своре займусь буду благодарен за пару светов. и за текущей совет также благодарю. что касается финальных зависаний то да, это зависит от постоянного задавания параметра из шапки внутри скрипта. но пока молчу. еще не тестил. там тестов то делов на час всего. завтра надеюсь займусь все расскажу. и инфу это не плохо бы ыло потмо кинуть в шапку данной темы. ибо для меня лично уже факт что внутри скрипта нельзя задавать шапочные параметры задержки мышки кликов и клавы. исключительно 1 раз...
|
|
|
|
kyja |
23.4.2025, 21:40
|
  
Novice
Сообщений: 90
Регистрация: 29.10.2016 Группа: Пользователи Наличность: 0
Пользователь №: 18.164

|
В целом вы можете еще доработать сам фаил arduino.lua тут добавлено авто определение компорта Единственное сам фаил я не проверял я выкинул из него свои спецефические правки которые вам точно не нужны но по идее он рабочий Вот основные моменты Добавлено определение компорта берет последний ком порт как номер порта для подключения он берет номер порта с диска Z файла com_port.txt У меня это рам диск из проги PrimoRamdisk есть на рутрекере ВАЖНЫЙ ньюанс у меня содержимое файла очишается при старте самого первого скрипта Иначе он будет брать "старый" номер А так он в первый раз его там сохранит и потом будет работать с ним Изминено ffi.cdef[[ все что внутри лучше забрать Код ----Определение ком порта---------- local file_port = io.open("Z:\\com_port.txt", "r") last_port = 0 if file_port then last_port = file_port:read("*all") -- Чтение всего содержимого файла file_port:close() last_port = tonumber(last_port) -- Преобразуем в число -- log("Номер COM-порта: " .. last_port) else -- log("Не удалось открыть файл.") ----Автоопределение ком порта---------- local handle_ports = io.popen("mode") local result_port = handle_ports:read("*a") handle_ports:close()
local com_ports = {} for port_find in result_port:gmatch("(COM%d+):") do table.insert(com_ports, port_find) end
for _, port_find in ipairs(com_ports) do last_port = port_find:match("COM(%d+)") -- Извлекаем числовую часть порта last_port = tonumber(last_port) -- Преобразуем в число end
local file_port = io.open("Z:\\com_port.txt", "w") if file_port then -- Записываем номер порта в файл file_port:write(last_port) file_port:close() -- Закрываем файл else --log("Ошибка: Не удалось открыть файл для записи.") end end ----Определение ком порта----------
--Если порт так и не определился то перезагрузка if last_port == 0 then os.execute("shutdown /r /t 0") end
export_array.com = last_port -- Устанавливаем последний найденный порт Строка самого подключения Код COMport = ffi.cast('int', ffi.C.CreateFileA('\\.\\COM' .. tostring(export_array.com), GENERIC_READ + GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, nil)) но она зависит от версии виндоус у меня 10 в 11 винде она другая При таком формате у меня не бывает зависаний вообще
Прикрепленные файлы
temp_arduino.lua ( 24,43 килобайт )
Кол-во скачиваний: 30
|
|
|
|
IgeMoN |
28.5.2025, 7:23
|

Registred
Сообщений: 6
Регистрация: 20.5.2025 Группа: Пользователи Наличность: 0
Пользователь №: 20.960
Возраст: 35

|
Товарищи! Помогите разобраться пожалуйста!!! Взял платку Leonardo R3, скачал все че нужно Ардуино IDE, драйвер, скетч скопировал, ардуино.луа закинул в папку с УОпилотом. В IDE загружаю на плату скетч, выдает такую ошибку Connecting to programmer: . Found programmer: Id = "CATERIN"; type = S Software Version = 1.0; No Hardware Version given. Programmer supports auto addr increment. Programmer supports buffered memory access with buffersize=128 bytes.
Programmer supports the following devices: Device code: 0x44
Плату выбрал проде правильно Ардуино Леонардо порт вроде правильно выбрал СОМ7 в скобках подписано (леонардо) Загружаю через стрелочку вроде все правильно. Всяко пробовал вобщем ошибка остается, думаю дай проверю. Запускаю пилот, скрипт такой --lua local hw = require'arduino' hw.com = hw.get_port (2341, 8036) -- указать vid и pid ардуино if hw.com < 1 then -- если номер порта меньше 1 log ('error = ' .. tostring(hw.com)) -- код ошибки end_script () end hw.set_delay_mouse (20) -- установить паузу между нажатиями клавиш мыши hw.set_random_delay_mouse(10) -- установить рандом между нажатиями клавиш мыши от 0 до 9 мсек -- т. е. между нажатием и отпусканием кнопки мыши будет пауза от 20 до 29 мсек. hw.set_offset_mousemove(4) -- шаг перемещения курсора, чем больше тем быстрее перемещается hw.set_delay_mousemove(2) -- установить паузу между каждый шагом перемещения мыши, чем меньше, тем быстрее перемещается
hw.mouse.left (252, 372 ) -- клик левой кнопкой мыши в координатах 200, 100 wait (3000) -- пауза 3 секунды hw.mouse.left_dbl (691, 339 ) -- двойной клик левой кнопкой мыши wait (2000) hw.mouse.left (252, 372 ) -- клик левой кнопкой мыши в координатах 200, 100 wait (3000) -- пауза 3 секунды hw.mouse.left_dbl (691, 339 ) -- двойной клик левой кнопкой мыши wait (2000) hw.mouse.left (252, 372 ) -- клик левой кнопкой мыши в координатах 200, 100 wait (3000) -- пауза 3 секунды hw.mouse.left_dbl (691, 339 ) -- двойной клик левой кнопкой мыши wait (2000)
на рабочем столе работает (я еще клики правой кнопкой добавлял) в игре сука не работает. Если на рабочем столе работает это оно не через HID не через платку работает? Или это адская защита в игре что даже с платкой не наебешь?
|
|
|
|
IgeMoN |
28.5.2025, 16:03
|

Registred
Сообщений: 6
Регистрация: 20.5.2025 Группа: Пользователи Наличность: 0
Пользователь №: 20.960
Возраст: 35

|
Цитата(DarkMaster @ 28.5.2025, 15:03)  время между down/up увеличьте, так же можете рандом добавить. некоторые игры не способны воспринять слишком быстрое нажатие
Тысяча благодарностей! заработало, вместо просто кликов сделал зажатие/отпускание клавиши. Может и платка не нужна была)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|