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

4 страниц V < 1 2 3 4 >  
Ответить в эту темуОткрыть новую тему
> Вопрос по рабочим столам в Win10
FREEON
сообщение 18.8.2019, 15:32
Сообщение #41


*****

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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Glosha
сообщение 18.8.2019, 19:34
Сообщение #42


**

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 пикселя


откатил систему и все заработало. не знаю точно, но мне кажется багнулось, после того, как ушел в спящий режим с работающим скриптом.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Glosha
сообщение 18.8.2019, 20:48
Сообщение #43


**

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



не совсем то, что мне нужно... здесь координаты цвета и клика в одной точки, а мне нужен клик в другой тк, это действие след уровня.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 18.8.2019, 22:03
Сообщение #44


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1319
Пользователь №: 18.346
Возраст: 25



Цитата(Glosha @ 18.8.2019, 20:48) *

не совсем то, что мне нужно... здесь координаты цвета и клика в одной точки, а мне нужен клик в другой тк, это действие след уровня.

мысли читать не умею вы опишите точки где идет поиск и где нужно сделать клик, либо нарисуйте схему... т.к. возможны различные варианты
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Glosha
сообщение 18.8.2019, 22:45
Сообщение #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 точки без нужного цвета.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 18.8.2019, 23:49
Сообщение #46


*****

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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 19.8.2019, 2:30
Сообщение #47


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 2420
Пользователь №: 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


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Glosha
сообщение 19.8.2019, 10:47
Сообщение #48


**

Neophyte
Сообщений: 47
Регистрация: 4.8.2019
Группа: Пользователи
Наличность: 0
Пользователь №: 19.375



спасибо огромное всем за помощь!

пс. подскажите, у меня пилот при составление координат цепляется к размеру кнопки, а не всего окна программы, но у меня там 15 кнопок и все одинакового размера... можно, как-то акцентировать на все окно? или только через "abs"?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Glosha
сообщение 19.8.2019, 12:48
Сообщение #49


**

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


не работает у меня твой код, все время типо нашел цвет циклит, даже если нет там вообще нечего
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 19.8.2019, 13:25
Сообщение #50


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1319
Пользователь №: 18.346
Возраст: 25



Цитата(Glosha @ 19.8.2019, 10:47) *

пс. подскажите, у меня пилот при составление координат цепляется к размеру кнопки, а не всего окна программы, но у меня там 15 кнопок и все одинакового размера... можно, как-то акцентировать на все окно? или только через "abs"?

можно, но это дело случая может сработать а может и нет...но суть такова просто снимаете координаты относительно первого привязанного окна .
Что под этим подразумеваю? ну нам нужно сделать привязку к окну где будем работать. Затем переходим в настройки пилота, далее выпавшем меню нажимаем Настройки, далее вкладка Mouse, Ищем строку Отображать координаты курсора и выбираем Относительные жмем Save. Всё теперь вверху пилота пишутся координаты при смещении курсора. Дале наводим курсор на кнопку но не снимая координаты(не нажимая ctrl+a) и не убирая мышку, переписываем относительные координаты на листик или запоминаем если память хорошая и затем вставляем в свой скрипт.
Ну либо через паинт или некоторые утилиты окна так же можно снимать положение точек относительно точки начала отсчета окна.
Но это либо будет работать либо нет. Есче как вариант можно через название окон кнопок попробовать...но первый это более сложный вариант
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Glosha
сообщение 19.8.2019, 14:20
Сообщение #51


**

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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 19.8.2019, 14:40
Сообщение #52


*****

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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Glosha
сообщение 19.8.2019, 14:51
Сообщение #53


**

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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 19.8.2019, 15:52
Сообщение #54


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1319
Пользователь №: 18.346
Возраст: 25



Цитата(Glosha @ 19.8.2019, 14:51) *

не, там вторая точка 429 650
все равно проскакивает цикл, хотя цвет есть.
вот такое все четко работает

Вы при снятии координат и цвета делаете проверку последнего Ctrl + В
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Glosha
сообщение 19.8.2019, 16:12
Сообщение #55


**

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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 19.8.2019, 16:22
Сообщение #56


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 2420
Пользователь №: 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 - это, я так понимаю, координаты одной из кнопок, где проверяешь цвет. Дай на всякий случай координаты всех кнопок, в которых ищешь цвет, и куда кликать.


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Glosha
сообщение 19.8.2019, 16:43
Сообщение #57


**

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.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 19.8.2019, 17:01
Сообщение #58


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 2420
Пользователь №: 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. Если ты говоришь, что не произошло вообще ничего, то это невозможно.
Присылай запущенный код целиком, где-то должна быть ошибка.

Клик должен быть в том же окне, в котором идет поиск?


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Glosha
сообщение 19.8.2019, 17:39
Сообщение #59


**

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% рабочие тк они с другого проекта и там все работает.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 19.8.2019, 18:22
Сообщение #60


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 2420
Пользователь №: 18.746



Цитата(Glosha @ 19.8.2019, 17:39) *


Проверил прямо на твоем скриншоте. Итог в логе: net cveta v knopke 1 , далее бесконечная проверка кнопки 2 и 3. Все работает как должно.

Что-то типа режима отладки:
Код
set workwindow findwindow ("Manager") // указываем окно поиска
log workwindow // отчет. нашел ли окно
set windowpos 1, 515
set delimiter ' '
init_arr %a (1 4) 433 890 433 890 433 920 433 920 433 950 433 950 // координаты для поиска
init_arr %b (1 2) 433 560 433 590 433 620 // координаты для клика
log size(%a)  // отчет. получил ли размер массива
while size(%a) > 0
log voshli v while   // отчет. получил ли размер массива
for #i 1 size(%a)
    log voshli v for  // отчет. получил ли размер массива
    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)
    log результат поиска: #fc  // отчет. должен быть не меньше нуля
    if  #fc = 0
        log cvet ne naiden  // отчет. не нашли цвет. Далее делается клик. Курсор должен уехать в точку клика.
        kleft %b[#i]
        log %b[#i]  // отчет. проверяем туда ли был сделан клик.
        delete_array %a -#i
        delete_array %b -#i
        break
    end_if
    log cvet naiden  // отчет. проверенная кнопка подсвечена.
end_for
end_while
log цвет больше нигде не найден // отчет. все кнопки погасли, заканчиваем работу.
end_script


Запускай вот этот, и присылай отчет из лога.


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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