|
|
|
Вопрос по рабочим столам в Win10 |
|
|
FREEON |
18.8.2019, 15:32
|
Journeyman
Сообщений: 365
Регистрация: 14.2.2017 Группа: Пользователи Наличность: 1319
Пользователь №: 18.346
Возраст: 25
|
Ну на время тестов скриптов дал бы вам совет особенно если работаете с циклами это биндить кнопки в пилоте или при помощи плагина KB.zip. Кидать(распаковать) в папку Plugins, которая рядом с пилот должна быть создана. Более полную информацию можете посмотреть тут. Пример кода который нужно располагать в циклах for while
Код //УПРАВЛЕНИЕ СКРИПТОМ if KB.GetKeyStateByCode(83) = 1 // S - пауза wait 1s while_not KB.GetKeyStateByCode(83) = 1 // S -- отпустить паузу wait 100 end_while end_if if KB.GetKeyStateByCode(69) = 1 // E - выключить скрипт end_script end_if
Узнать другие коды клавиш плагина для скрипта можно при помощи утилиты Выложил dron4938. Цитата да, это два монитора))
тогда проверяйте цвет или область поиска у вас там сканирует область размером 3х1 пикселяСообщение отредактировал FREEON - 18.8.2019, 18:47
|
|
|
|
Glosha |
18.8.2019, 19:34
|
Neophyte
Сообщений: 47
Регистрация: 4.8.2019 Группа: Пользователи Наличность: 0
Пользователь №: 19.375
|
Цитата(FREEON @ 18.8.2019, 15:32) Ну на время тестов скриптов дал бы вам совет особенно если работаете с циклами это биндить кнопки в пилоте или при помощи плагина KB.zip. Кидать(распаковать) в папку Plugins, которая рядом с пилот должна быть создана. Более полную информацию можете посмотреть тут. Пример кода который нужно располагать в циклах for while
Код //УПРАВЛЕНИЕ СКРИПТОМ if KB.GetKeyStateByCode(83) = 1 // S - пауза wait 1s while_not KB.GetKeyStateByCode(83) = 1 // S -- отпустить паузу wait 100 end_while end_if if KB.GetKeyStateByCode(69) = 1 // E - выключить скрипт end_script end_if
Узнать другие коды клавиш плагина для скрипта можно при помощи утилиты Выложил dron4938. тогда проверяйте цвет или область поиска у вас там сканирует область размером 3х1 пикселяоткатил систему и все заработало. не знаю точно, но мне кажется багнулось, после того, как ушел в спящий режим с работающим скриптом.
|
|
|
|
Glosha |
18.8.2019, 20:48
|
Neophyte
Сообщений: 47
Регистрация: 4.8.2019 Группа: Пользователи Наличность: 0
Пользователь №: 19.375
|
Цитата(FREEON @ 18.8.2019, 14:49) Код set delimiter ' ' init_arr %color 12642802 12642802 12642802 // цвет в точке 1, цвет в точке 2 ... init_arr %x 550 560 580 // координата X в т1, координата X в т2 init_arr %y 180 180 180 // координата Y в т1, координата Y в т2 set #proverka 0 // cчетчик проверки цвтов во всех точках while 1 = 1 // зациклили выполнение кода, до тех пор покам нужно for #i 1 size(%color) // перебираем массив(наши точки а данном случае по размеру цвета) log %x[#i], %y[#i] %color[#i] // показать лог Точки в формате X Y Color if %x[#i], %y[#i] %color[#i] // Если есть цвет в точке..выполнить действие move %x[#i] %y[#i] // навести мышку на точку(выполнить действие) set #proverka 0 // а также делаем сброс счетчика т.к желаемый результат не достигнут else // если нет цвета в точке set #proverka #proverka + 1 // цвет отсутствует прибавили к счетчику +1 log #proverka // отоброзили в лог состояния счетчика end_if // конец условия if #proverka >= 3 // если в 3 точках отсутствует цвет, то... break // выйти из цикла for end_if end_for if #proverka >= 3 // если в 3 точках отсутствует цвет, то... break // выйти из цикла while end_if end_while end_script
не совсем то, что мне нужно... здесь координаты цвета и клика в одной точки, а мне нужен клик в другой тк, это действие след уровня.
|
|
|
|
Glosha |
18.8.2019, 22:45
|
Neophyte
Сообщений: 47
Регистрация: 4.8.2019 Группа: Пользователи Наличность: 0
Пользователь №: 19.375
|
Цитата(FREEON @ 18.8.2019, 22:03) мысли читать не умею вы опишите точки где идет поиск и где нужно сделать клик, либо нарисуйте схему... т.к. возможны различные варианты
есть 3 точки координат цвета, пусть будет: "1, 1" "2, 2" "3, 3" и 3 точки клика "4,4" "5, 5" "6, 6". нужно проверить соотвествие в точках цвета и если его там нет(нужного цвета) сделать клик, вот пример: цикл проверка цвета "1, 1" если нет нужного цвета кликнуть "4, 4" проверка цвета "2, 2" если нет нужного цвета кликнуть "5, 5" и тд и так зациклить пока не будет все 3 точки без нужного цвета.
|
|
|
|
FREEON |
18.8.2019, 23:49
|
Journeyman
Сообщений: 365
Регистрация: 14.2.2017 Группа: Пользователи Наличность: 1319
Пользователь №: 18.346
Возраст: 25
|
Цитата(Glosha @ 18.8.2019, 22:45) есть 3 точки координат цвета, пусть будет: "1, 1" "2, 2" "3, 3" и 3 точки клика "4,4" "5, 5" "6, 6". нужно проверить соотвествие в точках цвета и если его там нет(нужного цвета) сделать клик, вот пример: цикл проверка цвета "1, 1" если нет нужного цвета кликнуть "4, 4" проверка цвета "2, 2" если нет нужного цвета кликнуть "5, 5" и тд и так зациклить пока не будет все 3 точки без нужного цвета.
Код set delimiter ' ' init_arr %color 12642802 12642802 12642802 // цвет в точке 1, цвет в точке 2 ... init_arr %x 550 560 580 // координата X в т1, координата X в т2 init_arr %y 180 180 180 // координата Y в т1, координата Y в т2 init_arr %xx 111 222 333 // координаты кликов X init_arr %yy 11 22 33 // координаты кликов Y set #proverka 0 // cчетчик проверки цвтов во всех точках while 1 = 1 // зациклили выполнение кода, до тех пор покам нужно for #i 1 size(%color) // перебираем массив(наши точки а данном случае по размеру цвета) log %x[#i], %y[#i] %color[#i] // показать лог Точки в формате X Y Color if %x[#i], %y[#i] %color[#i] // Если есть цвет в точке..выполнить действие move %xx[#i] %yy[#i] // навести мышку на точку(выполнить действие) set #proverka 0 // а также делаем сброс счетчика т.к желаемый результат не достигнут else // если нет цвета в точке set #proverka #proverka + 1 // цвет отсутствует прибавили к счетчику +1 log #proverka // отоброзили в лог состояния счетчика end_if // конец условия if #proverka >= 3 // если в 3 точках отсутствует цвет, то... break // выйти из цикла for end_if end_for if #proverka >= 3 // если в 3 точках отсутствует цвет, то... break // выйти из цикла while end_if end_while end_script
|
|
|
|
Fors1k |
19.8.2019, 2:30
|
Journeyman
Сообщений: 497
Регистрация: 19.12.2017 Группа: Пользователи Наличность: 2384
Пользователь №: 18.746
|
Цитата(Glosha @ 18.8.2019, 9:36) в первом примере не догоняю, где привязывать каждый поиск цвета под свой клик. Код set delimiter ' ' init_arr %a (1) "1, 2 3, 4" "5, 6 7, 8" "9, 10 11, 12" "13, 14 15, 16" "17, 18 19, 20" "21, 22 23, 24" init_arr %b (1) "1 2" "3 4" "5 6" "7 8" "9 10" "11 12" // координаты для клика while size(%a[1]) > 0 for #i 1 size(%a[1]) set $a %a[1 #i] set #a findcolor ($a 1 1 (3798088-4387912) %arr 2 -1 3 workwindow) if #a = 0 set $b %b[1 #i] kleft $b delete_array %a #i delete_array %b #i break end_if end_for end_while end_script
--------------------
Для связи
|
|
|
|
Glosha |
19.8.2019, 12:48
|
Neophyte
Сообщений: 47
Регистрация: 4.8.2019 Группа: Пользователи Наличность: 0
Пользователь №: 19.375
|
Цитата(Fors1k @ 19.8.2019, 2:30) Код set delimiter ' ' init_arr %a (1) "1, 2 3, 4" "5, 6 7, 8" "9, 10 11, 12" "13, 14 15, 16" "17, 18 19, 20" "21, 22 23, 24" init_arr %b (1) "1 2" "3 4" "5 6" "7 8" "9 10" "11 12" // координаты для клика while size(%a[1]) > 0 for #i 1 size(%a[1]) set $a %a[1 #i] set #a findcolor ($a 1 1 (3798088-4387912) %arr 2 -1 3 workwindow) if #a = 0 set $b %b[1 #i] kleft $b delete_array %a #i delete_array %b #i break end_if end_for end_while end_script не работает у меня твой код, все время типо нашел цвет циклит, даже если нет там вообще нечего
|
|
|
|
FREEON |
19.8.2019, 13:25
|
Journeyman
Сообщений: 365
Регистрация: 14.2.2017 Группа: Пользователи Наличность: 1319
Пользователь №: 18.346
Возраст: 25
|
Цитата(Glosha @ 19.8.2019, 10:47) пс. подскажите, у меня пилот при составление координат цепляется к размеру кнопки, а не всего окна программы, но у меня там 15 кнопок и все одинакового размера... можно, как-то акцентировать на все окно? или только через "abs"?
можно, но это дело случая может сработать а может и нет...но суть такова просто снимаете координаты относительно первого привязанного окна . Что под этим подразумеваю? ну нам нужно сделать привязку к окну где будем работать. Затем переходим в настройки пилота, далее выпавшем меню нажимаем Настройки, далее вкладка Mouse, Ищем строку Отображать координаты курсора и выбираем Относительные жмем Save. Всё теперь вверху пилота пишутся координаты при смещении курсора. Дале наводим курсор на кнопку но не снимая координаты(не нажимая ctrl+a) и не убирая мышку, переписываем относительные координаты на листик или запоминаем если память хорошая и затем вставляем в свой скрипт. Ну либо через паинт или некоторые утилиты окна так же можно снимать положение точек относительно точки начала отсчета окна. Но это либо будет работать либо нет. Есче как вариант можно через название окон кнопок попробовать...но первый это более сложный вариант
|
|
|
|
Glosha |
19.8.2019, 14:20
|
Neophyte
Сообщений: 47
Регистрация: 4.8.2019 Группа: Пользователи Наличность: 0
Пользователь №: 19.375
|
Цитата(FREEON @ 18.8.2019, 23:49) твой код
Код set delimiter ' ' init_arr %color 12642802 12642802 12642802 // цвет в точке 1, цвет в точке 2 ... init_arr %x 550 560 580 // координата X в т1, координата X в т2 init_arr %y 180 180 180 // координата Y в т1, координата Y в т2 init_arr %xx 111 222 333 // координаты кликов X init_arr %yy 11 22 33 // координаты кликов Y set #proverka 0 // cчетчик проверки цвтов во всех точках while 1 = 1 // зациклили выполнение кода, до тех пор покам нужно for #i 1 size(%color) // перебираем массив(наши точки а данном случае по размеру цвета) log %x[#i], %y[#i] %color[#i] // показать лог Точки в формате X Y Color if %x[#i], %y[#i] %color[#i] // Если есть цвет в точке..выполнить действие move %xx[#i] %yy[#i] // навести мышку на точку(выполнить действие) set #proverka 0 // а также делаем сброс счетчика т.к желаемый результат не достигнут else // если нет цвета в точке set #proverka #proverka + 1 // цвет отсутствует прибавили к счетчику +1 log #proverka // отоброзили в лог состояния счетчика end_if // конец условия if #proverka >= 3 // если в 3 точках отсутствует цвет, то... break // выйти из цикла for end_if end_for if #proverka >= 3 // если в 3 точках отсутствует цвет, то... break // выйти из цикла while end_if end_while end_script
тут тоже не то, что нужно.. не циклит на проверки цвета, что есть, что нету его уходит в клик + клик не по заданным осям и кликает в одно и тоже место, количество кликов в зависимости заданного счетчика . привязка стоит к окну. мои данные
Код set #handle findwindow ("Manager") // найти окно set workwindow #handle // сделать его рабочим set windowpos 1, 515
set delimiter ' ' init_arr %color 4387912 4387912 // цвет в точке 1, цвет в точке 2 ... init_arr %x 429 429 // координата X в т1, координата X в т2 init_arr %y 560 590 // координата Y в т1, координата Y в т2 init_arr %xx 429 429 // координаты кликов X init_arr %yy 620 650 // координаты кликов Y set #proverka 0 // cчетчик проверки цвтов во всех точках while 1 = 1 // зациклили выполнение кода, до тех пор покам нужно for #i 1 size(%color) // перебираем массив(наши точки а данном случае по размеру цвета) log %x[#i], %y[#i] %color[#i] // показать лог Точки в формате X Y Color if %x[#i], %y[#i] %color[#i] move %xx[#i] %yy[#i] set #proverka 0 // а также делаем сброс счетчика т.к желаемый результат не достигнут else // если нет цвета в точке set #proverka #proverka + 1 // цвет отсутствует прибавили к счетчику +1 kleft %xx[#i] %yy[#i] // навести мышку на точку(выполнить действие) end_if // конец условия if #proverka >= 2 // если в 3 точках отсутствует цвет, то... break // выйти из цикла for end_if end_for if #proverka >= 2 // если в 3 точках отсутствует цвет, то... break // выйти из цикла while end_if end_while end_script
|
|
|
|
FREEON |
19.8.2019, 14:40
|
Journeyman
Сообщений: 365
Регистрация: 14.2.2017 Группа: Пользователи Наличность: 1319
Пользователь №: 18.346
Возраст: 25
|
Цитата(Glosha @ 19.8.2019, 14:20) тут тоже не то, что нужно.. не циклит на проверки цвета, что есть, что нету его уходит в клик + клик не по заданным осям и кликает в одно и тоже место, количество кликов в зависимости заданного счетчика . привязка стоит к окну. мои данные
Код set #handle findwindow ("Manager") // найти окно set workwindow #handle // сделать его рабочим set windowpos 1, 515
set delimiter ' ' init_arr %color 4387912 4387912 // цвет в точке 1, цвет в точке 2 ... init_arr %x 429 429 // координата X в т1, координата X в т2 init_arr %y 560 590 // координата Y в т1, координата Y в т2 init_arr %xx 429 429 // координаты кликов X init_arr %yy 620 650 // координаты кликов Y set #proverka 0 // cчетчик проверки цвтов во всех точках while 1 = 1 // зациклили выполнение кода, до тех пор покам нужно for #i 1 size(%color) // перебираем массив(наши точки а данном случае по размеру цвета) log %x[#i], %y[#i] %color[#i] // показать лог Точки в формате X Y Color if %x[#i], %y[#i] %color[#i] move %xx[#i] %yy[#i] set #proverka 0 // а также делаем сброс счетчика т.к желаемый результат не достигнут else // если нет цвета в точке set #proverka #proverka + 1 // цвет отсутствует прибавили к счетчику +1 kleft %xx[#i] %yy[#i] // навести мышку на точку(выполнить действие) end_if // конец условия if #proverka >= 2 // если в 3 точках отсутствует цвет, то... break // выйти из цикла for end_if end_for if #proverka >= 2 // если в 3 точках отсутствует цвет, то... break // выйти из цикла while end_if end_while end_script
Код
set #handle findwindow ("Manager") // найти окно set workwindow #handle // сделать его рабочим set windowpos 1, 515
set delimiter ' ' init_arr %color 4387912 4387912 // цвет в точке 1, цвет в точке 2 ... init_arr %x 429 429 // координата X в т1, координата X в т2 init_arr %y 560 590 // координата Y в т1, координата Y в т2 init_arr %xx 429 429 X1 X2 X3 !!! // координаты кликов X init_arr %yy 620 650 Y1 Y2 Y3 !!! // координаты кликов Y set #proverka 0 // cчетчик проверки цвтов во всех точках while 1 = 1 // зациклили выполнение кода, до тех пор покам нужно for #i 1 size(%color) // перебираем массив(наши точки а данном случае по размеру цвета) log %x[#i], %y[#i] %color[#i] // показать лог Точки в формате X Y Color if %x[#i], %y[#i] %color[#i] while %x[#i], %y[#i] %color[#i] move %xx[#i] %yy[#i] wait 100 end_while set #proverka 0 // а также делаем сброс счетчика т.к желаемый результат не достигнут else // если нет цвета в точке set #proverka #proverka + 1 // цвет отсутствует прибавили к счетчику +1 kleft %xx[#i] %yy[#i] // навести мышку на точку(выполнить действие) end_if // конец условия if #proverka >= 2 // если в 3 точках отсутствует цвет, то... break // выйти из цикла for end_if end_for if #proverka >= 2 // если в 3 точках отсутствует цвет, то... break // выйти из цикла while end_if end_while end_script
какие точки кликов указали туда и "кликает" %xx %yy две одинаковые координаты пикселей x1y1 = 429 620 и x2y2 = 429 620
|
|
|
|
Glosha |
19.8.2019, 14:51
|
Neophyte
Сообщений: 47
Регистрация: 4.8.2019 Группа: Пользователи Наличность: 0
Пользователь №: 19.375
|
Цитата(FREEON @ 19.8.2019, 14:40)
какие точки кликов указали туда и "кликает" %xx %yy две одинаковые координаты пикселей x1y1 = 429 620 и x2y2 = 429 620
не, там вторая точка 429 650 все равно проскакивает цикл, хотя цвет есть. вот такое все четко работает Код set #d findcolor (3815, 560 3815, 562 1 1 (3798088-4387912) %arr 2 -1 3 abs) while #d > 0 set #d findcolor (3815, 560 3815, 562 1 1 (3798088-4387912) %arr 2 -1 3 abs) wait 10000 if #d = 0 end_if end_while
|
|
|
|
Glosha |
19.8.2019, 16:12
|
Neophyte
Сообщений: 47
Регистрация: 4.8.2019 Группа: Пользователи Наличность: 0
Пользователь №: 19.375
|
Цитата(FREEON @ 19.8.2019, 15:52) Вы при снятии координат и цвета делаете проверку последнего Ctrl + В
но ваш код у меня не работает, хз, что делать. у меня просто проскакивает проверку цвета и уходит в действие если нет цвета, и кликает в одно и тоже место, хотя координаты указаны разные init_arr %xx 429 429 X1 X2 X3 !!! // координаты кликов X init_arr %yy 620 650 Y1 Y2 Y3 !!! // координаты кликов Y
|
|
|
|
Fors1k |
19.8.2019, 16:22
|
Journeyman
Сообщений: 497
Регистрация: 19.12.2017 Группа: Пользователи Наличность: 2384
Пользователь №: 18.746
|
Цитата(Glosha @ 19.8.2019, 12:48) не работает у меня твой код, все время типо нашел цвет циклит, даже если нет там вообще нечего
Оказывается, findcolor не видит координаты из строковых переменных и массивов. Исправил это. Код set workwindow findwindow ("Manager") // указываем окно поиска set delimiter ' ' init_arr %a (1 4) 1 2 3 4 5 6 7 8 9 10 11 12 // координаты для поиска init_arr %b (1 2) 1 2 3 4 5 6 // координаты для клика while size(%a) > 0 for #i 1 size(%a) set #a %a[#i 1] set #b %a[#i 2] set #c %a[#i 3] set #d %a[#i 4] set #fc findcolor (#a #b #c #d 1 1 (3798088-4387912) %arr 2 -1 3 workwindow) if #fc = 0 kleft %b[#i] delete_array %a -#i delete_array %b -#i break end_if end_for end_while end_script В массив %a записать координаты всех мест поиска: StartX StartY EndX EndY. В массив %b записать координаты всех мест клика: X Y. 3815, 560 3815, 562 - это, я так понимаю, координаты одной из кнопок, где проверяешь цвет. Дай на всякий случай координаты всех кнопок, в которых ищешь цвет, и куда кликать.
--------------------
Для связи
|
|
|
|
Glosha |
19.8.2019, 16:43
|
Neophyte
Сообщений: 47
Регистрация: 4.8.2019 Группа: Пользователи Наличность: 0
Пользователь №: 19.375
|
Цитата(Fors1k @ 19.8.2019, 16:22) 3815, 560 3815, 562 - это, я так понимаю, координаты одной из кнопок, где проверяешь цвет. Дай на всякий случай координаты всех кнопок, в которых ищешь цвет, и куда кликать.
делаю тесты и нечего не выходит, просто считывает код и заканчивает вот для примера подставлял 1 точку для теста init_arr %a (1 4) 2353 560 2353 560 // записать координаты всех мест поиска цвета: StartX StartY EndX EndY. init_arr %b (1 2) 2353 590 // записать координаты всех мест клика: X Y.
|
|
|
|
Fors1k |
19.8.2019, 17:01
|
Journeyman
Сообщений: 497
Регистрация: 19.12.2017 Группа: Пользователи Наличность: 2384
Пользователь №: 18.746
|
Цитата(Glosha @ 19.8.2019, 16:43) делаю тесты и нечего не выходит, просто считывает код и заканчивает вот для примера подставлял 1 точку для теста init_arr %a (1 4) 2353 560 2353 560 // записать координаты всех мест поиска цвета: StartX StartY EndX EndY. init_arr %b (1 2) 2353 590 // записать координаты всех мест клика: X Y.
Запустил у себя код, скопировав прям с форума. Все работает. Цитата(Glosha @ 19.8.2019, 16:43) просто считывает код и заканчивает
Скрипт может закончиться, только если он не нашел цвет. Если не нашел цвет, значит должен выполниться kleft. Если ты говоришь, что не произошло вообще ничего, то это невозможно. Присылай запущенный код целиком, где-то должна быть ошибка. Клик должен быть в том же окне, в котором идет поиск?
--------------------
Для связи
|
|
|
|
Glosha |
19.8.2019, 17:39
|
Neophyte
Сообщений: 47
Регистрация: 4.8.2019 Группа: Пользователи Наличность: 0
Пользователь №: 19.375
|
Цитата(Fors1k @ 19.8.2019, 17:01) Запустил у себя код, скопировав прям с форума. Все работает.
Скрипт может закончиться, только если он не нашел цвет. Если не нашел цвет, значит должен выполниться kleft. Если ты говоришь, что не произошло вообще ничего, то это невозможно. Присылай запущенный код целиком, где-то должна быть ошибка.
Клик должен быть в том же окне, в котором идет поиск?
https://i.imgur.com/QZgtH8w.pngвот смотри, я проверяю цвет в 3 точках внизу, 2 из них активны, а 1 не активно, значит скрипт должен кликнуть на 4(если например не активно 2, то клик должен быть привязан к 5), а дальше ожидать пока не откажут в цвете 2 и 3, а после кликнуть 5 и 6, и выйти. вот мои координаты точек init_arr %a (1 4) 433 890 433 890 433 920 433 920 433 950 433 950 // записать координаты всех мест поиск цвета: StartX StartY EndX EndY. init_arr %b (1 2) 433 560 433 590 433 620 // записать координаты всех мест клика: X Y. они 100% рабочие тк они с другого проекта и там все работает.
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|