Помощь - Поиск - Пользователи - Календарь
Полная версия: Вопрос по рабочим столам в Win10
UoKit.com Форумы > Кликер > UO Pilot
Страницы: 1, 2
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


Запускай вот этот, и присылай отчет из лога.
Glosha
Цитата(Fors1k @ 19.8.2019, 18:22) *

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

вообще нечего не находит, но твой скрипт от "Сегодня, 16:22" работает, но криво.. смотри че он делает:
пока все 3 кнопки активны он находит цвета и циклирует и ожидает отказа цвета, отрубаю 1, скрипт видит отказ цвета и кликает, на отказ в цифре 2 вообще не реагирует, отказ в цифре 3, все норм кликает... но все время кликает не по указанным координатам 433 560 433 590 433 620 , всегда в одну и туже точку 433 1070 и пиши в клики че хочешь, все равно кликнет в 433 1070(это низ рабочего окна)
Glosha
и кстати в скрипте от FREEON, тоже самое если привязать окно, то кликает в самый низ окна....но вот цвета не находит. попробовал не привязывать окно в скрипте Fors1k, кликает в нужное место, только 1 раз, остальные клики все в место первого клика
FREEON
используй findimage и не грузи народ...сложность нашол там где ее нет
Glosha
Цитата(FREEON @ 19.8.2019, 19:55) *

используй findimage и не грузи народ...сложность нашол там где ее нет

от Fors1k, скрипт работает четко(если не привязывать окно), только вот кликает в одно и тоже место....
Fors1k
Видео с работой скрипта
На видео я отключаю зеленый цвет на ячейке с цифрой 3, скрипт кликает в ячейку с цифрой 3 красного цвета, отключаю зеленый 1, клик в красный 1, отключил 2, клик в красный 2, на этом конец работы. Все клики разные и в нужные места. Как ты и просил. Скрипт, как видишь рабочий. Не знаю что еще добавить))
Где-то ошибку допускаешь ты.
Я сказал как найти ошибку (используя логи), ты не хочешь.
Скрипт из видео
Код
set workwindow 1184446//findwindow ("Manager") // указываем окно поиска
set delimiter ' '
init_arr %a (1 4) 46 91 124 107 47 149 127 165 45 209 129 222 // координаты для поиска
init_arr %b (1 2) 562 41 566 71 565 102  // координаты для клика
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 (4697456) %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
FREEON
Цитата(Fors1k @ 19.8.2019, 20:18) *

На видео

сбрось свой файл uopilot.ini подсветку синтекса заценю
Glosha
Цитата(Fors1k @ 19.8.2019, 20:18) *

Видео с работой скрипта
На видео я отключаю зеленый цвет на ячейке с цифрой 3, скрипт кликает в ячейку с цифрой 3 красного цвета, отключаю зеленый 1, клик в красный 1, отключил 2, клик в красный 2, на этом конец работы. Все клики разные и в нужные места. Как ты и просил. Скрипт, как видишь рабочий. Не знаю что еще добавить))
Где-то ошибку допускаешь ты.
Я сказал как найти ошибку (используя логи), ты не хочешь.
Скрипт из видео
Код
set workwindow 1184446//findwindow ("Manager") // указываем окно поиска
set delimiter ' '
init_arr %a (1 4) 46 91 124 107 47 149 127 165 45 209 129 222 // координаты для поиска
init_arr %b (1 2) 562 41 566 71 565 102  // координаты для клика
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 (4697456) %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


все работает четко, извиняюсь за вынос мозга.... проблема была в привязке окна, почему-то через
Код

set #handle findwindow ("Manager")  // найти окно
set workwindow #handle              // сделать его рабочим

глючит, я хз почему.... это не моя вина. привязал, как следует, но с этим окном, вот такое происходит. без привязки, работает идеально !!!!
Fors1k
Цитата(FREEON @ 19.8.2019, 20:44) *

сбрось свой файл uopilot.ini подсветку синтекса заценю

Highlighter
[Highlighter]
Assembler=4473924,255,0
Character=4473924,43690,0
Comment=4473924,12303291,2
Float=4473924,11184810,0
Hexadecimal=4473924,11184742,0
Identifier=4473924,12303291,0
Number=4473924,11184810,0
Preprocessor=4473924,32768,2
Reserved Word=4473924,0,1
RW Array=4473924,14522777,1
RW CharParam=4473924,43690,0
RW ColorAndCord=4473924,43690,0
RW EndScript=4473924,7829469,1
RW For=4473924,43520,1
RW Function=4473924,14522777,1
RW Get=4473924,12303291,1
RW If=4473924,43520,0
RW Keyboard=4473924,12303291,1
RW LastObject=4473924,43690,0
RW Macros=4473924,12613568,1
RW Memory=4473924,14522777,1
RW Mouse=4473924,12303291,1
RW Msg=4473924,6710886,1
RW Other=4473924,14522777,1
RW Plugin=4473924,14522777,1
RW Proc=4473924,14522777,1
RW Script=4473924,7829469,1
RW Sub=4473924,12613568,1
RW Time=4473924,43690,0
RW Wait=4473924,12303291,1
RW Windows=4473924,14522777,1
Space=4473924,0,0
String=4473924,12303291,0
Symbol=4473924,8947848,0
RW Array List=
RW CharParam List=
RW ColorAndCord List=
RW EndScript List=
RW For List=
RW Function List=
RW Get List=
RW If List=
RW Keyboard List=
RW LastObject List=
RW Macros List=
RW Memory List=
RW Mouse List=
RW Msg List=
RW Other List=
RW Plugin List=
RW Proc List=
RW Script List=
RW Sub List=
RW Time List=
RW Wait List=
RW Windows List=
Glosha
delete
Glosha
не могу понять, если значение тут 1 цифра " init_arr %tw (1) 4 5 ", то работает корректно и правильно находит стол, но если больше 1 значение, начинается хаос с выбором стола.
code
Код
set delimiter ' '
set workwindow 394820
init_arr %a (1 4) 2354 560 2354 560 2354 590 2354 590 // записать координаты всех мест поиска цвета: StartX StartY EndX EndY.
init_arr %b (1 2) 2354 740 2354 770// записать координаты всех мест клика: X Y.
init_arr %tw (1) 4 5
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]
        wait 33s
         kleft 1058, 216 abs
         wait 3s
         set #ld linedelay
        set linedelay 40
        set #cw 1 // номер рабочего стола, в котором сейчас находится окно.
        set workwindow 394820 // окно, которое будем перемещать
        showwindow workwindow
        if #cw < %tw[#i]
        set #a 2
        else
        set #a 1
        end_if
        sendex_down {WindowsLeft}{Tab}
        sendex_up {WindowsLeft}{Tab}
        wait 350
        sendex_down ~{F10}
        wait 200
        sendex_up ~{F10}
        wait 200
        sendex {Down}
        wait 200
        sendex {Down}
        wait 200
        sendex {Right}
        wait 200
        repeat %tw[#i] - #a
        sendex {Down}
        end_repeat
        sendex {Enter}
        sendex {Escape}
        set linedelay #ld
        delete_array %tw -#i
        delete_array %a -#i
        delete_array %b -#i
        break
    end_if
end_for
end_while
Glosha
всем, спс! разобрался....
init_arr %a (1) // в скобках используется для координат.
init_arr %a 1 //без скобок символы.
ps. подскажите, а как в последний массив кода, который выше, добавить таймер?
Fors1k
Цитата(Glosha @ 21.8.2019, 12:12) *

не могу понять, если значение тут 1 цифра " init_arr %tw (1) 4 5 ", то работает корректно и правильно находит стол, но если больше 1 значение, начинается хаос с выбором стола.
code
Код
set delimiter ' '
set workwindow 394820
init_arr %a (1 4) 2354 560 2354 560 2354 590 2354 590 // записать координаты всех мест поиска цвета: StartX StartY EndX EndY.
init_arr %b (1 2) 2354 740 2354 770// записать координаты всех мест клика: X Y.
init_arr %tw (1) 4 5
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]
        wait 33s
         kleft 1058, 216 abs
         wait 3s
         set #ld linedelay
        set linedelay 40
        set #cw 1 // номер рабочего стола, в котором сейчас находится окно.
        set workwindow 394820 // окно, которое будем перемещать
        showwindow workwindow
        if #cw < %tw[#i]
        set #a 2
        else
        set #a 1
        end_if
        sendex_down {WindowsLeft}{Tab}
        sendex_up {WindowsLeft}{Tab}
        wait 350
        sendex_down ~{F10}
        wait 200
        sendex_up ~{F10}
        wait 200
        sendex {Down}
        wait 200
        sendex {Down}
        wait 200
        sendex {Right}
        wait 200
        repeat %tw[#i] - #a
        sendex {Down}
        end_repeat
        sendex {Enter}
        sendex {Escape}
        set linedelay #ld
        delete_array %tw -#i
        delete_array %a -#i
        delete_array %b -#i
        break
    end_if
end_for
end_while


init_arr %tw (1 1) 4 5 нужно записать так.
Цитата(Glosha @ 21.8.2019, 15:10) *

всем, спс! разобрался....
init_arr %a (1) // в скобках используется для координат.
init_arr %a 1 //без скобок символы.
ps. подскажите, а как в последний массив кода, который выше, добавить таймер?

Про единицу после %a разобрался неправильно, перечитай описание команды на вики.
Что такое таймер в массив?
Glosha
Цитата(Fors1k @ 22.8.2019, 3:33) *

init_arr %tw (1 1) 4 5 нужно записать так.

Про единицу после %a разобрался неправильно, перечитай описание команды на вики.
Что такое таймер в массив?

странно у меня без (1 1) все четко работает.... ок, исправлю и проверю.
ага нашел в вики (1 1) записать 1 значение с 1 элементом.
по поводу таймера. мне еще нужно, как вариант, чтобы кроме проверки цвета в кнопке был таймер временной, чтобы я например задал нужное время и даже если все 6 кнопок не дали отказ, пилот вышел из массива и пошел дальше.
Glosha
поправите пожалуйста если неправильно, но вроде работает (таймер)
код
Код
set delimiter ' '
set workwindow 394820
set #timeout timer + 30000  // устанавливает значение timer
set #cw 1 // номер рабочего стола, в котором сейчас находится окно.
init_arr %a (1 4) 2354 560 2354 560 2354 590 2354 590 2354 620 2354 620 2354 650 2354 650 2354 680 2354 680 2354 710 2354 710 // записать координаты всех мест
init_arr %b (1 2) 2354 560 2354 590 2354 620 2354 650 2354 680 2354 710// записать координаты всех мест клика: X Y.
while size(%a) > 0 or timer < #timeout
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
if timer >= #timeout    // если вышло время
break
end_if
end_while
end_script
Fors1k
Цитата(Glosha @ 23.8.2019, 12:43) *

поправите пожалуйста если неправильно, но вроде работает (таймер)
код
Код
set delimiter ' '
set workwindow 394820
set #timeout timer + 30000  // устанавливает значение timer
set #cw 1 // номер рабочего стола, в котором сейчас находится окно.
init_arr %a (1 4) 2354 560 2354 560 2354 590 2354 590 2354 620 2354 620 2354 650 2354 650 2354 680 2354 680 2354 710 2354 710 // записать координаты всех мест
init_arr %b (1 2) 2354 560 2354 590 2354 620 2354 650 2354 680 2354 710// записать координаты всех мест клика: X Y.
while size(%a) > 0 or timer < #timeout
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
if timer >= #timeout    // если вышло время
break
end_if
end_while
end_script


код
Код
set delimiter ' '
set workwindow 394820
set #timeout 30000  // установить значение #timeout
set #cw 1 // номер рабочего стола, в котором сейчас находится окно.
init_arr %a (1 4) 2354 560 2354 560 2354 590 2354 590 2354 620 2354 620 2354 650 2354 650 2354 680 2354 680 2354 710 2354 710 // записать координаты всех мест
init_arr %b (1 2) 2354 560 2354 590 2354 620 2354 650 2354 680 2354 710// записать координаты всех мест клика: X Y.
while size(%a) > 0 and timer < #timeout
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
Glosha
Цитата(Fors1k @ 23.8.2019, 13:34) *

код
Код
set delimiter ' '
set workwindow 394820
set #timeout 30000  // установить значение #timeout
set #cw 1 // номер рабочего стола, в котором сейчас находится окно.
init_arr %a (1 4) 2354 560 2354 560 2354 590 2354 590 2354 620 2354 620 2354 650 2354 650 2354 680 2354 680 2354 710 2354 710 // записать координаты всех мест
init_arr %b (1 2) 2354 560 2354 590 2354 620 2354 650 2354 680 2354 710// записать координаты всех мест клика: X Y.
while size(%a) > 0 and timer < #timeout
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



таймер, указывается только в миллисекундах? 2m или 2h не катит?
Fors1k
Цитата(Glosha @ 22.8.2019, 10:56) *

странно у меня без (1 1) все четко работает.... ок, исправлю и проверю.
ага нашел в вики (1 1) записать 1 значение с 1 элементом.

(1 1) означает записывать элементы, начиная с 1ой строки, и по 1 элементу в каждую строку.
init_arr %tw (1 1) 4 5 Результат:
Строка 1: 4
Строка 2: 5
Дальше в коде ты обращаешься к массиву через %tw[#i].
%tw[1] будет равно 4 (взяли элемент из 1ой строки).
%tw[2] будет равно 5 (взяли элемент из 2ой строки).


Цитата(Glosha @ 23.8.2019, 13:43) *

таймер, указывается только в миллисекундах? 2m или 2h не катит?
Цитата(Fors1k @ 5.8.2019, 19:46) *

Нюансы такого плана ты можешь узнать на вики.
Glosha
разобрался
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.