Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: sitonacid on April 19, 2018, 09:22:42 PM
-
Добрый день! Прошу подсказать, что не так с моим кодом. Есть викторина, необходимо ее запустить, ответить на 5 вопросов, закрыть и запустить заново. Вопросы повторяются, но ответы на кнопках меняются постоянно местами, также надо подождать когда даст ответ оппонент (компьютер несколько секунд - 2-5), и так пять вопросов. Затем, после показания результатов, надо нажать завершить и нажать снова старт. Написал скрипт, не спорю, что он так себе, опыта мало. Задал поиск по картинке (кнопки старт), отметил координаты, затем прописал цикл в котором идет перебор картинок до нужной нам в этм вопросе, то есть верный вариант ответа, и соответственно нажатие на него, так пять раз. Затем нажатие на кнопку завершить при ее отображении по четко заданным координатам. В итоге кликает на старт (скорей всего просто от того что заданы координаты) затем зависает (скорей всего перебирает, но картинку не ищет), ничего не нажимает, когда появляется кнопка завершить, нажимает ее и потом запускает кликом на кнопку старт. Не могу разобраться, почему не ищет картинки и не кликает на них?
// 13.04.2018
#name "New Script"
GETSCREEN
IF_PICTURE_IN (277,150, 1099,713, "start.bmp", -1, 100)
LCLICK(526, 561)
WAITMS(500)
FOR($a, $a < 5)
GETSCREEN
IF_PICTURE_IN (257,220, 1132,064, "2.bmp", -1, 100)
LCLICK($_return1+170, $_return2+16)
WAIT(3)
END_IF
ELSE
IF_PICTURE_IN (257,220, 1132,064, "3.bmp", -1, 100)
LCLICK($_return1+170, $_return2+16)
WAIT(3)
END_IF
ELSE
IF_PICTURE_IN (257,220, 1132,064, "4.bmp", -1, 100)
LCLICK($_return1+170, $_return2+16)
WAIT(3)
END_IF
ELSE
IF_PICTURE_IN (257,220, 1132,064, "5.bmp", -1, 100)
LCLICK($_return1+170, $_return2+16)
WAIT(3)
END_IF
ELSE
IF_PICTURE_IN (257,220, 1132,064, "6.bmp", -1, 100)
LCLICK($_return1+170, $_return2+16)
WAIT(3)
END_IF
ELSE
IF_PICTURE_IN (257,220, 1132,064, "7.bmp", -1, 100)
LCLICK($_return1+170, $_return2+16)
WAIT(3)
END_IF
ELSE
IF_PICTURE_IN (257,220, 1132,064, "8.bmp", -1, 100)
LCLICK($_return1+170, $_return2+16)
WAIT(3)
END_IF
ELSE
IF_PICTURE_IN (257,220, 1132,064, "9.bmp", -1, 100)
LCLICK($_return1+170, $_return2+16)
WAIT(3)
END_IF
ELSE
IF_PICTURE_IN (257,220, 1132,064, "10.bmp", -1, 100)
LCLICK($_return1+170, $_return2+16)
WAIT(3)
END_IF
ELSE
IF_PICTURE_IN (257,220, 1132,064, "11.bmp", -1, 100)
LCLICK($_return1+170, $_return2+16)
WAIT(3)
END_IF
ELSE
IF_PICTURE_IN (257,220, 1132,064, "12.bmp", -1, 100)
LCLICK($_return1+170, $_return2+16)
WAIT(3)
END_IF
ELSE
IF_PICTURE_IN (257,220, 1132,064, "13.bmp", -1, 100)
LCLICK($_return1+170, $_return2+16)
WAIT(3)
END_IF
ELSE
IF_PICTURE_IN (257,220, 1132,064, "14.bmp", -1, 100)
LCLICK($_return1+170, $_return2+16)
WAIT(3)
END_IF
ELSE
IF_PICTURE_IN (257,220, 1132,064, "15.bmp", -1, 100)
LCLICK($_return1+170, $_return2+16)
WAIT(3)
END_IF
ELSE
IF_PICTURE_IN (257,220, 1132,064, "16.bmp", -1, 100)
LCLICK($_return1+170, $_return2+16)
WAIT(3)
END_IF
ELSE
IF_PICTURE_IN (257,220, 1132,064, "17.bmp", -1, 100)
LCLICK($_return1+170, $_return2+16)
WAIT(3)
END_IF
ELSE
IF_PICTURE_IN (257,220, 1132,064, "18.bmp", -1, 100)
LCLICK($_return1+170, $_return2+16)
WAIT(3)
END_IF
ELSE
IF_PICTURE_IN (257,220, 1132,064, "19.bmp", -1, 100)
LCLICK($_return1+170, $_return2+16)
WAIT(3)
END_IF
ELSE
IF_PICTURE_IN (257,220, 1132,064, "20.bmp", -1, 100)
LCLICK($_return1+170, $_return2+16)
WAIT(3)
END_IF
ELSE
IF_PICTURE_IN (257,220, 1132,064, "21.bmp", -1, 100)
LCLICK($_return1+170, $_return2+16)
WAIT(3)
END_IF
ELSE
IF_PICTURE_IN (257,220, 1132,064, "22.bmp", -1, 100)
LCLICK($_return1+170, $_return2+16)
WAIT(3)
END_IF
ELSE
IF_PICTURE_IN (257,220, 1132,064, "23.bmp", -1, 100)
LCLICK($_return1+170, $_return2+16)
WAIT(3)
END_IF
ELSE
IF_PICTURE_IN (257,220, 1132,064, "24.bmp", -1, 100)
LCLICK($_return1+170, $_return2+16)
WAIT(3)
END_IF
ELSE
IF_PICTURE_IN (257,220, 1132,064, "25.bmp", -1, 100)
LCLICK($_return1+170, $_return2+16)
WAIT(3)
END_IF
ELSE
IF_PICTURE_IN (257,220, 1132,064, "26.bmp", -1, 100)
LCLICK($_return1+170, $_return2+16)
WAIT(3)
END_IF
END_CYC
END_IF
GETSCREEN
IF_PICTURE_IN (283,305, 1001,467, "end.bmp", -1, 100)
LCLICK(628, 708)
WAITMS(500)
END_IF
-
Добрый)
Попробуйте немножко поменять 7 строчку: FOR($a=0, $a < 5)
Также не понятна область поиска:
IF_PICTURE_IN (257,220, 1132,064, "2.bmp", -1, 100). Скорее всего пропущена единица, ну или написан "0" вместо "9".
Для упрощения скрипта можно было бы использовать подпрограмму или просто зациклить поиск картинок (раз уж названия последовательные).
GETSCREEN
IF_PICTURE_IN (277,150, 1099,713, "start.bmp", -1, 100)
LCLICK(526, 561)
WAITMS(500)
FOR($a=0, $a < 5)
GETSCREEN
For($num=2,$num<27)
IF_PICTURE_IN (257,220, 1132,1064, STRCONCAT($num, ".bmp"), -1, 100)
LCLICK($_return1+170, $_return2+16)
WAIT(3)
END_IF
End_cyc
END_CYC
END_IF
GETSCREEN
IF_PICTURE_IN (283,305, 1001,467, "end.bmp", -1, 100)
LCLICK(628, 708)
WAITMS(500)
END_IF
Вообще, если викторина сложная и с большим количеством вопросов, может быть полезным (с т.зр. скорости и красоты кода) пользоваться не поиском картинок, а сравнением с хешсуммами верных ответов, хранящимися в ".ini". Но тогда надо, чтобы все координаты были постоянными и точными. Так что может и не надо.
-
Добрый)
Попробуйте немножко поменять 7 строчку: FOR($a=0, $a < 5)
Также не понятна область поиска:
IF_PICTURE_IN (257,220, 1132,064, "2.bmp", -1, 100). Скорее всего пропущена единица, ну или написан "0" вместо "9".
Для упрощения скрипта можно было бы использовать подпрограмму или просто зациклить поиск картинок (раз уж названия последовательные).
GETSCREEN
IF_PICTURE_IN (277,150, 1099,713, "start.bmp", -1, 100)
LCLICK(526, 561)
WAITMS(500)
FOR($a=0, $a < 5)
GETSCREEN
For($num=2,$num<27)
IF_PICTURE_IN (257,220, 1132,1064, STRCONCAT($num, ".bmp"), -1, 100)
LCLICK($_return1+170, $_return2+16)
WAIT(3)
END_IF
End_cyc
END_CYC
END_IF
GETSCREEN
IF_PICTURE_IN (283,305, 1001,467, "end.bmp", -1, 100)
LCLICK(628, 708)
WAITMS(500)
END_IF
Вообще, если викторина сложная и с большим количеством вопросов, может быть полезным (с т.зр. скорости и красоты кода) пользоваться не поиском картинок, а сравнением с хешсуммами верных ответов, хранящимися в ".ini". Но тогда надо, чтобы все координаты были постоянными и точными. Так что может и не надо.
У вас отличный код, действительно координаты совсем не те, ошибка в оси Y. Про возможность сократить число строк даже не догадывался. Сейчас попробуем. Спасибо огромное за совет!