Задача кликера такая, нужно при одном условии, найти другое условие, потом третье, если три условия совпадают, то мышкой кликает на последний объект. Строю программу таким образом:
Здесь скрипт реалистичного движения мышкой (пробовал его отключать, проблема не в нем.)
GETSCREEN
colormode(7)
IF_PICTURE_IN (0,0, $_xmax, $_ymax, "pic1.bmp", 75)
IF_PICTURE_IN (0,0, $_xmax, $_ymax, "pic2.bmp", 75)
IF_PICTURE_IN (0,0, $_xmax, $_ymax, "pic3.bmp", 75)
$xms=$_return1 + RND(-5,5)
$yms=$_return2 + RND(-5,5)
m_move($xms, $yms)
lclick($xms, $yms)
END_IF
END_IF
END_IF
В 90% случаев программа отрабатывает правильно, и дальше идет по циклу как нужно. Но бывает, как что-то находит и координата Х ошибочно идет нулевой. То есть в логах пишет координату У правильную, а вот Х с нулевым значением. И это постоянно проблема координаты Х. С У таких проблем ниразу не было. Пробовал другую версию кликера, проблема остается. Возможно что-то мешает в коде. Отследить закономерность, когда это случается - не могу. Может весь день отработать без проблем, а на следующий - снова такая беда.
Возможно это потому что поралельно, другими потоками, выполняются другие действия, но там сугубо отслежка идет, контроль того, что делает основная программа, и если что не так - то что в других потоках или запускает цикл заново, или сигнализирует мне о состоянии чего-то там.
Пример:
thread(t1)
GETSCREEN
colormode(7)
IF_PICTURE_IN (0,0, $_xmax, $_ymax, "pic4.bmp", 75)
beep(110,170)
END_IF
end_thread
И что самое интересное, делаю скрин экрана командой SCREENSHOT перед тем как двигать мышку и перед тем как жать на мышку и тут же записываю в лог координаты, которые находит кликер! То цель только по координате Х не совпадает. Сама цель статическая, она никуда не двигается, почему кликер иногда путает именно координату Х - не понятно. Менял уже и буквенные переменные координат Х, У ничего не меняется.
Есть массив типа: scanpicture, где тоже кликер кликает на найденный массив - там отрабатывается всегда правильно! Сбоев в последнем никогда не было!