UoKit.com Форумы > Кликер > UO Pilot
Страницы: 1, 2, 3, 4, 5, 6, 7, 8
Glosha
Цитата(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
Цитата(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
Цитата(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

Вверх
FREEON
Цитата(Glosha @ 19.8.2019, 14:51)

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

Вы при снятии координат и цвета делаете проверку последнего Ctrl + В
Вверх
Glosha
Цитата(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
Цитата(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
Цитата(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
Цитата(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
Цитата(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% рабочие тк они с другого проекта и там все работает.
Вверх
Fors1k
Цитата(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


Запускай вот этот, и присылай отчет из лога.
Вверх
Invision Power Board © 2001-2024 Invision Power Services, Inc.
Version for Pocket PC © 2006-2024, IPBest Studio.