|
Несколько вопросов, Если вопросы уже обсуждались, можно меня тыкнуть в эту тему )) |
|
|
DarkMaster |
19.12.2014, 0:16
|
Модератор UOPilot
Сообщений: 9.465
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27680
Пользователь №: 11.279
|
Цитата Пишу кликер для замечательной игры EVE Online Кликер пишет разраб - WKnight, вы пишите скрипты =) Цитата 1. Иногда (крайне редко, но все же) программа перестает воспринимать команды клика. Перед кликами естественно идет команда Move с теми же координатами, что и клик. Скорость скрипта 30 мс. Сам клиент воспринимает, что на указанную точку была подведена мышка (кнопка на которую нужно нажать как и положено подсвечивается), но вот при команде left или right ничего не происходит... kleft kright left воспринимают далеко не все приложения. Во время этой невосприимчивости, если сделать клик мышкой, то он произойдет? Цитата 2. При работе двух скриптов запущенных в одной программе и взаимодействующих с разными клиентами в моменты одновременного перемещения и нажатия кнопок в одном из клиентов нажатия не происходит. Это можно как то исправить? Либо продумывать логику так, чтобы этих одновременных перемещений не было, либо ставить астер/виртуалки. Если работает без move, то убрать move. Цитата 3. Можно как то отвязать мышку, которую использует программа от реальной? Натыкался на программы которые делают 2 курсора на 2 мышки, но ничего хорошего из этого не вышло (программа пытается схватить первичную несуществующую мышку). Из читанного мною о подобных программах и их реализациях ничего хорошего сказать не могу. По сути в винде все так же одна мышь, просто два курсора отображется. При работе со второй в моменты кликов происходит обыкновенное перемещение и нажатие первой мыши. Цитата 4. Если пункт 3 выполнить нереально, то возникает следующая проблема. Во время работы скрипта смотрю видео из ВК в полноэкранном режиме и в этот момент программа вообще не видит клиент игры (она передвигается по нужным координатам, но все нажатия уходят вникуда). Как это можно исправить? Астер/виртуалки/убрать за пределы видимой области экрана.
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
maxximum3000 |
19.12.2014, 12:37
|
Neophyte
Сообщений: 18
Регистрация: 18.12.2014 Группа: Пользователи Наличность: 0
Пользователь №: 17.189
Возраст: 24
|
Не так выразился. Скрипт на кликер ))
1. Если сделать реальный клик мышкой, то он произойдет. Для дальнейшей нормальной работы приходится перезапускать программу (UOPilot). Никакие другие действия не помогают. А так команды left клиент воспринимает очень даже хорошо.
2. На данный момент продумать реально, дальше при расширении скрипта этого сделать будет невозможно (слишком много будет случайных промежутков времени между кликами).
3. Ну... жаль.
4. Астер? Виртуалки не катят. Ставил VirtualBox, но на нем так и не смог запустить клиент (требует шейдер 3), обмануть ничем не получилось.
Так же добавлю еще пару пунктов:
5. UOPilot может проверять по цвету в определенной точке, но с данной игрой это не прокатывает. Следующий скрипт не срабатывает:
move координаты1 If координаты1 цвет1 left координаты1 wait 1s end_if
При проверке, он находит нужный цвет и делает нажатие мышкой в эти координаты. НО, если цвет он не находит, то он все равно делает нажатие в эти координаты (переменная цвет1 игнорируется, тем самым игнорируется команда "if" и выполняется все команды вписанные во внутрь).
Или же это я криворукий и не так что то пишу?
6. Можно ли сделать проверку не по цвету, а по картинке? К примеру у меня есть картинка 32х32 пикселя и если UOPilot находит точное совпадение этой картинки в фрагменте окна клиента 100х100 пикселей то делает/не делает определенные клики (обычная привязка к команде "if")?
|
|
|
|
maxximum3000 |
19.12.2014, 17:10
|
Neophyte
Сообщений: 18
Регистрация: 18.12.2014 Группа: Пользователи Наличность: 0
Пользователь №: 17.189
Возраст: 24
|
Цитата(maxximum3000 @ 19.12.2014, 12:37)
move координаты1 If координаты1 цвет1 left координаты1 wait 1s end_if
Вот именно этот фрагмент кода. Даже если пишу только его (на банальную проверку) то он игнорирует условия "if" Вот такой скрипт: Цитата move 1243, 416 If 1243, 416 10213092 left 1243, 416 wait 1s
end_if wait 5s В идеале, если по координатам 1243, 416 UOPilot не находит цвета 10213092 то по скрипту просто идет пауза и он начинается заново. У меня же даже если указанного цвета НЕТ по координатам 1243, 416, то все равно происходит клик в эти координаты.
|
|
|
|
maxximum3000 |
19.12.2014, 22:17
|
Neophyte
Сообщений: 18
Регистрация: 18.12.2014 Группа: Пользователи Наличность: 0
Пользователь №: 17.189
Возраст: 24
|
Цитата(DarkMaster @ 19.12.2014, 19:30) Это фантастика. Добавьте внутрь ифа: get color #color 1243, 416 log #color
Ну собственно нужное сделал через сравнение картинок. И очень жаль, но в данной игре не работает kleft. Ну и ладно. Вопросов у меня будет еще много )) Вот такая проблема возникла с поиском изображения: Цитата set $a findimage (1550 55 1600 120 (veld.bmp) %crds 2 40 -1 10) if $a > 0 msg найден Велдспар
else msg Велдспара нет
end_if Вот искомая картинка
veld.bmp ( 2,75 килобайт )
Кол-во скачиваний: 509 Она находится в координатах от 1560 65 до 1590 95 В данном примере скрипт ее распознает:
Screenshot_2.bmp ( 34,99 килобайт )
Кол-во скачиваний: 540 Но вот в этом примере он ее не видит:
Screenshot_1.bmp ( 35,65 килобайт )
Кол-во скачиваний: 518
|
|
|
|
maxximum3000 |
19.12.2014, 22:45
|
Neophyte
Сообщений: 18
Регистрация: 18.12.2014 Группа: Пользователи Наличность: 0
Пользователь №: 17.189
Возраст: 24
|
Цитата(DarkMaster @ 19.12.2014, 22:26) А вас не смущает, что камни разные? Присмотритесь внимательнее. Veld.bmp можно сделать гораздо меньше 5*5 пикселей будет достаточно.
По началу я тоже думал, что они разные, но оказалось обман зрения... Эти же 2 картинки, вырезал все лишнее (оставил сами камни). Если открыть фото вивером и приблизить до максимума, то можно увидеть, что сами камни одинаковые, но в них не находится и 40% совпадения при 10% погрешности... Или я что то не так понял?
Screenshot_2.bmp ( 3,57 килобайт )
Кол-во скачиваний: 488
Screenshot_1.bmp ( 3,57 килобайт )
Кол-во скачиваний: 482
|
|
|
|
maxximum3000 |
26.12.2014, 18:29
|
Neophyte
Сообщений: 18
Регистрация: 18.12.2014 Группа: Пользователи Наличность: 0
Пользователь №: 17.189
Возраст: 24
|
Цитата(Cockney @ 26.12.2014, 16:15) да команды:
start_script <номер вкладки> stop_script pause_script
параметры такие же как и в первой комманде
пример.
pause_script 2 // останавливаем 2 скрипт . . .move 0, 0 . . start_script 2 // продолжаем работу второго скрипта
Сделал таким образом. (в конце resume_script). Скорость скрипта стояла 50. В итоге закончилось все тем, что скрипт 0 поставил на паузу скрипт 1, а скрипт 1 успел поставить скрипт 0 на паузу. Пришел и увидел скрипт 1 и скрипт 0 на паузе (работают только они)... Косяк... Фрагмент скрипта 0: Цитата send {F1} wait 1s pause_script 1 move 612, 53 left 612, 53 move 612, 53 resume_script 1 wait 750 send {F2} Фрагмент скрипта 1: Цитата wait 1s pause_script 0 move 730, 12 left 730, 12 resume_script 0 Пауза сработала одновременно. Поставить скорость скрипта ниже 50 не представляется возможным, т.к. на скорости 30 только 90% кликов срабатывают, на скорости 20 около 70%, на скорости 15 только 20%, на скорости 0 не срабатывает ни один клик мышкой.
|
|
|
|
DarkMaster |
26.12.2014, 19:53
|
Модератор UOPilot
Сообщений: 9.465
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27680
Пользователь №: 11.279
|
Цитата Пауза сработала одновременно. Поставить скорость скрипта ниже 50 не представляется возможным, т.к. на скорости 30 только 90% кликов срабатывают, на скорости 20 около 70%, на скорости 15 только 20%, на скорости 0 не срабатывает ни один клик мышкой. делайте ручные wait. Так же можно завести третий скрипт, который будет управлять двумя другими. В скрипте 1 делаем: Код // Устанавливаем флаг, что вкладке требуется клик set #needClick 1 // Ждем разрешения от управляющего скрипта while_not %clickAccept.3 [ 1 ] = 1 wait 10 end_while // Кликаем move x y left x y // Устанавливаем флаг, что клик более не требуется. set #needClick 0 // Ждем снятия разрешения на клик. while_not %clickAccept.3 [ 1 ] = 0 wait 10 end_while
В скрипте 2 делаем почти так же, только индекс в массиве 2, а не 1: Код set #needClick 1 while_not %clickAccept.3 [ 2 ] = 1 wait 10 end_while move x y left x y set #needClick 0 while_not %clickAccept.3 [ 2 ] = 0 wait 10 end_while
в скрипте 3: Код :start // Перебираем вкладки 1 и 2 for #i 1 2 1 // Если вкладке нужен клик if #needClick.#i = 1 // Получаем номер другой вкладки. Можно ифом, но мне так больше нравится. set #pausedScript 2 - #i /2 // Ставим на паузу другую вкладку. pause_script #pausedScript // Даем разрешение на клик вкладке, запросившей этот клик. set %clickAccept [ #i ] 1 // Ожидаем пока вкладке больше не понадобится клик. while #needClick.#i = 1 wait 10 end_while // Снимаем разрешение на клик. set %clickAccept [ #i ] 0 // Продолжаем работу другого скрипта. resume_script #pausedScript end_if end_for goto start
Немного громоздко, но должно стабильно работать. Сообщение отредактировал DarkMaster - 1.3.2015, 8:22
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
maxximum3000 |
26.12.2014, 20:00
|
Neophyte
Сообщений: 18
Регистрация: 18.12.2014 Группа: Пользователи Наличность: 0
Пользователь №: 17.189
Возраст: 24
|
Благодарю, буду пробовать. Вопрос в догонку. Какие шрифты русского языка стоят на UOPilot? У меня англоязычная win 10 и когда я ставлю русский язык в пилоте, то за место текста вижу вопросительные знаки... (IMG: style_emoticons/default/sad.gif)
|
|
|
|
maxximum3000 |
26.12.2014, 20:21
|
Neophyte
Сообщений: 18
Регистрация: 18.12.2014 Группа: Пользователи Наличность: 0
Пользователь №: 17.189
Возраст: 24
|
Цитата :start // Перебираем вкладки 1 и 2 for #i 1 2 1 // Если вкладке нужен клик if #needClick.#i = 1 // Получаем номер другой вкладки. Можно ифом, но мне так больше нравится. set #pausedScript #a 2 - #i /2 // Ставим на паузу другую вкладку. pause_script #tmp // Даем разрешение на клик вкладке, запросившей этот клик. set %clickAccept [ #i ] 1 // Ожидаем пока вкладке больше не понадобится клик. while #needClick.#i = 1 wait 10 end_while // Снимаем разрешение на клик. set %clickAccept [ #i ] 0 // Продолжаем работу другого скрипта. resume_script #pausedScript end_if end_for goto start В данном коде ругается на: set #pausedScript #a 2 - #i /2 Пишет: set - (6): Символ не распознан (pos:1 '#a 2 - 1 /2')
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|