tsaradena |
Отправлено: 23 Июня, 2018 - 23:56:32
|
Прохожий
Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2018
Репутация: 0
|
Добрый день.
Пишу бота под NoxPlayer. Не могу разобраться с работой команд sendmousetransfer и sendkey.
1) sendmousetransfer не работает с настройкой из учебника:
CODE:sendmousetransfer(LEFT, 50, 340, 50, 150, 0.02, w);
Работает если установить параметр 6 в значение 10 или выше:
CODE:sendmousetransfer(LEFT, 50, 340, 50, 150, 10, w);
Но при этом происходит прокрутка на несколько экранов, как будто произошел быстрый свайп по экрану.
За что отвечает 6ой параметр и можно ли как-то настроить более плавное перетаскивание мыши?
2) sendkey также как и key вообще не работают.
Помогите разобраться, может кто сталкивался и/или уже решал подобные проблемы? |
|
|
tsaradena |
Отправлено: 24 Июня, 2018 - 07:59:35
|
Прохожий
Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2018
Репутация: 0
|
Dantes3000 пишет: tsaradena , надо полный код сюда. Если в виз редакторе - лучше файл скинуть.
Вот в этом коде НЕ работают команды sendmousetransfer и sendkey:
CODE:win w_nox=window ("NoxPlayer", "Qt5QWindowIcon", -1);
win w_nox_control=window ("QWidgetClassWindow", "Qt5QWindowIcon", w_nox);
sendmousetransfer(LEFT, 50, 340, 50, 200, 0.02, w_nox_control);
pause(500);
sendkey('a', w_nox_control);
Вот в этом коде работают команды sendmouse, sendmousedown, sendmouseup и sendmousemove:
CODE:win w_nox=window ("NoxPlayer", "Qt5QWindowIcon", -1);
win w_nox_control=window ("QWidgetClassWindow", "Qt5QWindowIcon", w_nox);
sendmousedown(LEFT, 50, 340, w_nox_control);
sendmousemove(LEFT, 50, 200, w_nox_control);
pause(500);
sendmouseup(LEFT, 50, 200, w_nox_control);
pause(500);
sendmouse(LEFT, 50, 340, w_nox_control);
В игре оба кода должны выполнять одно и тоже, но первый на короче. А если еще учесть, что в Nox можно на нажатие клавиш настраивать много действий (скрипты), то код будет на порядок короче. |
|
|
tsaradena |
Отправлено: 24 Июня, 2018 - 16:24:06
|
Прохожий
Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2018
Репутация: 0
|
Dantes3000 пишет: tsaradena , Может указатель меняется. Попробуй получать его так:
CODE:win w;
int x, y;
pause(1000);
getmouse(x, y);
w=getwindow(1, x, y); //0 - на окно
Нет, указатель не меняется, по крайней мере предлагаемый вами код всегда возвращает один и тот же указатель. Эти же указатели показывает и Кибор на вкладке Шпион.
Еще добавлю - бот уже много чего умеет, но пока весь код реализовываю на sendmouse и findimage.
В принципе, если разобраться нормально со свайпом, то можно будет реализовать почти всё что захочешь.
Но всегда хочется чего то большего... поэтому вопрос по sendmousetransfer и sendkey остается открыт.
PS: вспомнил почему использую контрол - размер контрола соответствует размеру игры, поэтому проще прописывать клики мыши и готовить картинки для поиска. |
|
|
Zireael |
Отправлено: 24 Июня, 2018 - 17:13:53
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Более того по какой-то причине перестала работать команда sendmousemove - ругается на 4ый параметр
Функция принимает 3 параметра.
CODE:sendmousemove (200, 250, wind) - перемещение мыши в указанные клиентские координаты окна. |
|
|
tsaradena |
Отправлено: 24 Июня, 2018 - 17:33:53
|
Прохожий
Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2018
Репутация: 0
|
Dantes3000 пишет: а через sendmousedown sendmousemove sendmouseup не получится?
Да, получается делать свайпы более медленные, чем в sendmousetransfer.
Zireael пишет: Функция принимает 3 параметра.
Спасибо, нашел и поправил ошибку.
Если по sendmousetransfer никаких пояснений нет, то буду писать через sendmousedown sendmousemove sendmouseup...
По sendkey вопрос открыт - не получается передавать нажатия забинденных кнопок. |
|
|
|