Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Adlet_Veltman on November 17, 2017, 10:11:55 PM
-
Здравствуйте знаниями не богат, поэтому не ругайте сильно за ошибки в скрипте. Как я уже сказал, знаний у меня не много, но мне надо написать довольно непростой скрипт.Сначала я опишу что из себя должен представлять этот цикл, а потом покажу, как я попытался это воплотить. Проблема в том, что программа при появление цвета 3 останавливается. Прошу исправить мои ошибки и рассказать, почему мой скрипт неверный в этих местах.
Выглядеть он должен так:
Сначала поиск нужного цвета в определённой области. В этой области может появиться только 3 цвета. При появления цвета 1 или появления цвета 2 нужно сделать левый клик в нужной точке(с этим я быстро справился). Всё это повторяется 14 раз. А при появление цвета 3 пока цикл не выполняется 14 раз, а должен начаться с начала с 0. Если цикл отработал 14 раз ни разу не наткнувшись на цвет 3 он должен закончиться. Дальше программа должна сделать один левый клик в указанной точке. Потом новый тот же цикл с тремя цветами, условия почти те же, только 7 раз, а не 14. И во втором цикле при появлении цвета 3 программа должна вернуться в начало, к циклу 1.
Как я попытался это воплотить(показал всё кроме номеров цветов, вместо них написал "цвет1", "цвет2" и "цвет3"):
$cheack = 0
FOR ( ($cheack = 0), ($cheack < 15) )
GETSCREEN
IF_PIXEL_IN(628,526,662,552, цвет1)
LCLICK(500,896)
WAIT(35)
ELSE
IF_PIXEL_IN(628,526,662,552, цвет2)
LCLICK(500,896)
WAIT(35)
ELSE
IF_PIXEL_IN(628,526,662,552,цвет3)
WAIT(35)
$cheack = 0
END_IF
END_IF
END_IF
END_CYC
$cheak = 15
FOR ( ($cheack < 23) & ($cheack > 14) )
LCLICL(688,752)
GETSCREEN
IF_PIXEL_IN(628,526,662,552, цвет1)
LCLICK(500,896)
WAIT(35)
ELSE
IF_PIXEL_IN(628,526,662,552, цвет2)
LCLICK(500,896)
WAIT(35)
ELSE
IF_PIXEL_IN(628,526,662,552,цвет3)
LCLICK(623,743)
WAIT(35)
$cheack = 0
END_IF
END_IF
END_IF
END_CYC
$cheack = 22
HALT
-
$check = 999
WHILE($check = 999)
FOR($check=0, $check<15)
GETSCREEN
IF_PIXEL_IN(628,526,662,552, цвет1)
LCLICK(500,896)
WAIT(35)
ELSE
IF_PIXEL_IN(628,526,662,552, цвет2)
LCLICK(500,896)
WAIT(35)
ELSE
IF_PIXEL_IN(628,526,662,552,цвет3)
WAIT(35)
$check = 0
END_IF
END_IF
END_IF
END_CYC
FOR($check=0, $check<8)
LCLICL(688,752)
GETSCREEN
IF_PIXEL_IN(628,526,662,552, цвет1)
LCLICK(500,896)
WAIT(35)
ELSE
IF_PIXEL_IN(628,526,662,552, цвет2)
LCLICK(500,896)
WAIT(35)
ELSE
IF_PIXEL_IN(628,526,662,552,цвет3)
LCLICK(623,743)
WAIT(35)
$check = 999
END_IF
END_IF
END_IF
END_CYC
END_CYC
HALT
-
$check = 999
WHILE($check = 999)
FOR($check=0, $check<15)
GETSCREEN
IF_PIXEL_IN(628,526,662,552, цвет1)
LCLICK(500,896)
WAIT(35)
ELSE
IF_PIXEL_IN(628,526,662,552, цвет2)
LCLICK(500,896)
WAIT(35)
ELSE
IF_PIXEL_IN(628,526,662,552,цвет3)
WAIT(35)
$check = 0
END_IF
END_IF
END_IF
END_CYC
FOR($check=0, $check<8)
LCLICL(688,752)
GETSCREEN
IF_PIXEL_IN(628,526,662,552, цвет1)
LCLICK(500,896)
WAIT(35)
ELSE
IF_PIXEL_IN(628,526,662,552, цвет2)
LCLICK(500,896)
WAIT(35)
ELSE
IF_PIXEL_IN(628,526,662,552,цвет3)
LCLICK(623,743)
WAIT(35)
$check = 999
END_IF
END_IF
END_IF
END_CYC
END_CYC
HALT
Большое спасибо программа перестала останавливаться, но до сих пор выполняется неправильно.
После выполнения 1 цикла 14 раз программа не переходит ко второму, а продолжает выполнять 1 цикл бесперерывно
-
Помощь теперь не нужна. Я решил сделать повторение другим способом. Заменил "FOR ($i, $i<30)...END_CYC" на
DEFINE($aaa,0) // вводим переменную для подсчета циклов
start:
INC ($aaa, 1) // после цикла переменная увеличивается на 1
IF($aaa = 30) // если счет циклов стал равен 30 , останавливаем выполнение скрипта
HALT
END_IF
GOTO (start) // если счет циклов не равен 30, возвращаемся к start:
Скрипт стал довольно громоздким и теперь для добавления новых циклов(что я и собираюсь сделать) нужно много работы и точности, но зато теперь всё работает исправно, без зацикливания и остановок раньше времени.
Если кому интересно, то теперь скрипт выглядит так:
DEFINE($aa,0)
start:
GETSCREEN
IF_PIXEL_IN(628,526,662,552, 0)
LCLICK(500,896)
WAIT(35)
INC($aa, 1)
IF($aa = 14)
DEFINE($ff, 0)
LCLICK(688,752)
start02:
GETSCREEN
IF_PIXEL_IN(628,526,662,552, 0)
LCLICK(500,896)
WAIT(35)
INC($ff, 1)
IF($ff = 7)
HALT
END_IF
GOTO(start02)
ELSE
IF_PIXEL_IN(628,526,662,552, 1710844)
LCLICK(500,896)
WAIT(35)
INC($ff, 1)
IF($ff = 7)
HALT
END_IF
GOTO(start02)
ELSE
IF_PIXEL_IN(628,526,662,552,1551428)
LCLICK(623,743)
WAIT(35)
INC($ff = 0)
INC($aa = 0)
GOTO(start)
END_IF
END_IF
END_IF
END_IF
GOTO (start)
ELSE
IF_PIXEL_IN(628,526,662,552, 1710844)
LCLICK(500,896)
WAIT(35)
INC($aa, 1)
IF($aa = 14)
DEFINE($ff, 0)
LCLICK(688,752)
start02:
GETSCREEN
IF_PIXEL_IN(628,526,662,552, 0)
LCLICK(500,896)
WAIT(35)
INC($ff, 1)
IF($ff = 7)
HALT
END_IF
GOTO(start02)
ELSE
IF_PIXEL_IN(628,526,662,552, 1710844)
LCLICK(500,896)
WAIT(35)
INC($ff, 1)
IF($ff = 7)
HALT
END_IF
GOTO(start02)
ELSE
IF_PIXEL_IN(628,526,662,552,1551428)
LCLICK(623,743)
WAIT(35)
INC($ff = 0)
INC($aa = 0)
GOTO(start)
END_IF
END_IF
END_IF
END_IF
GOTO (start)
ELSE
IF_PIXEL_IN(628,526,662,552,1551428)
WAIT(35)
$aa = 0
GOTO (start)
END_IF
END_IF
END_IF
HALT