Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: sovaxa on June 03, 2019, 02:13:09 PM
-
GETSCREEN
//0000000000000000000000000000
IF(((PXLCOUNT(1150,230, 1165,250, 3223857) > 0) &
(SCANPICTURE (1170,220, 1200,255, "3.bmp")))
WAITMS(100)
LCLICK(1250,115)
WAITMS(100)
DBLCLICK(1250,115)
WAITMS(100)
DBLCLICK(1250,600)
WAITMS(100)
KEYPRESS(#3)
WAITMS(100)
LCLICK(1355,670)
WAIT(50)
ELSE
END_IF
-
Завязывай уже лепить свои вопросы в "Использование"!
Зачем ты засунул в условие SCANPICTURE? Эта функция за место себя ничего не возвращает. Она записывает все найденные координаты в указанный массив. Данная функция пишется только отдельной строкой.
GETSCREEN
IF_PICTURE_IN (1170,220, 1200,255, "3.bmp", -1, 100)
IF(PXLCOUNT(1150,230, 1165,250, 3223857) > 0)
WAITMS(100)
LCLICK(1250,115)
WAITMS(100)
DBLCLICK(1250,115)
WAITMS(100)
DBLCLICK(1250,600)
WAITMS(100)
KEYPRESS(#3)
WAITMS(100)
LCLICK(1355,670)
WAIT(50)
END_IF
END_IF
-
IF_PICTURE_IN (1170,220, 1200,255, "3.bmp", -1, 100)
эта функция находит заданную картинку 3.bmp в 1170,220, 1200,255 этом квадрате?
-
GETSCREEN
//0
IF_PICTURE_IN (1150,220, 1200,255, "0.bmp", -1, 100)
IF(PXLCOUNT(1150,130, 1200,160, 6471470) > 0)
WAITMS(100)
LCLICK(1250,115)
WAITMS(100)
DBLCLICK(1250,115)
WAITMS(100)
DBLCLICK(1250,600)
WAITMS(100)
KEYPRESS(#0)
WAITMS(100)
LCLICK(1355,670)
WAIT(50)
ELSE
//4
IF_PICTURE_IN (1150,220, 1200,255, "4.bmp", -1, 100)
IF(PXLCOUNT(1150,130, 1200,160, 6471470) > 0)
WAITMS(100)
LCLICK(1250,115)
WAITMS(100)
DBLCLICK(1250,115)
WAITMS(100)
DBLCLICK(1250,600)
WAITMS(100)
KEYPRESS(#4)
WAITMS(100)
LCLICK(1355,670)
WAIT(50)
END_IF
END_IF
END_IF
END_IF
WAITMS(50)
выполняется только первое условие,
IF_PICTURE_IN (1150,220, 1200,255, "0.bmp", -1, 100)
IF(PXLCOUNT(1150,130, 1200,160, 6471470) > 0)
а если его нет должно выполняться второе.
IF_PICTURE_IN (1150,220, 1200,255, "4.bmp", -1, 100)
IF(PXLCOUNT(1150,130, 1200,160, 6471470) > 0)
не получается.
помогите разобраться
-
выполняется только первое условие,
Ну разве ты не видишь что если IF_PICTURE_IN (1150,220, 1200,255, "0.bmp", -1, 100) не найдено то и остальной код не будет выполняться потому как он находится в этом условии функции?!
Чтобы это работало нужно написать "второе условие" для каждой части первых двух условий
GETSCREEN
//0
IF_PICTURE_IN (1150,220, 1200,255, "0.bmp", -1, 100)
IF(PXLCOUNT(1150,130, 1200,160, 6471470) > 0)
WAITMS(100)
LCLICK(1250,115)
WAITMS(100)
DBLCLICK(1250,115)
WAITMS(100)
DBLCLICK(1250,600)
WAITMS(100)
KEYPRESS(#0)
WAITMS(100)
LCLICK(1355,670)
WAIT(50)
ELSE
IF_PICTURE_IN (1150,220, 1200,255, "4.bmp", -1, 100)
IF(PXLCOUNT(1150,130, 1200,160, 6471470) > 0)
WAITMS(100)
LCLICK(1250,115)
WAITMS(100)
DBLCLICK(1250,115)
WAITMS(100)
DBLCLICK(1250,600)
WAITMS(100)
KEYPRESS(#4)
WAITMS(100)
LCLICK(1355,670)
WAIT(50)
END_IF
END_IF
END_IF
ELSE
IF_PICTURE_IN (1150,220, 1200,255, "4.bmp", -1, 100)
IF(PXLCOUNT(1150,130, 1200,160, 6471470) > 0)
WAITMS(100)
LCLICK(1250,115)
WAITMS(100)
DBLCLICK(1250,115)
WAITMS(100)
DBLCLICK(1250,600)
WAITMS(100)
KEYPRESS(#4)
WAITMS(100)
LCLICK(1355,670)
WAIT(50)
END_IF
END_IF
END_IF
Выглядит громоздко и не оптимально для редактирования.
Условие "IF(PXLCOUNT(1150,130, 1200,160, 6471470) > 0)" одинаково для обоих вариантов. Поэтому пишем так.
GETSCREEN
IF(PXLCOUNT(1150,130, 1200,160, 6471470) > 0)
//0
IF_PICTURE_IN (1150,220, 1200,255, "0.bmp", -1, 100)
WAITMS(100)
LCLICK(1250,115)
WAITMS(100)
DBLCLICK(1250,115)
WAITMS(100)
DBLCLICK(1250,600)
WAITMS(100)
KEYPRESS(#0)
WAITMS(100)
LCLICK(1355,670)
WAIT(50)
ELSE
//4
IF_PICTURE_IN (1150,220, 1200,255, "4.bmp", -1, 100)
WAITMS(100)
LCLICK(1250,115)
WAITMS(100)
DBLCLICK(1250,115)
WAITMS(100)
DBLCLICK(1250,600)
WAITMS(100)
KEYPRESS(#4)
WAITMS(100)
LCLICK(1355,670)
WAIT(50)
END_IF
END_IF
END_IF
WAITMS(50)
-
Продолжаем оптимизировать код. Помещаем повторяющийся код в подпрограмму.
SUB(prog1, $key)
WAITMS(100)
LCLICK(1250,115)
WAITMS(100)
DBLCLICK(1250,115)
WAITMS(100)
DBLCLICK(1250,600)
WAITMS(100)
KEYPRESS($key)
WAITMS(100)
LCLICK(1355,670)
WAIT(50)
END_SUB
GETSCREEN
IF(PXLCOUNT(1150,130, 1200,160, 6471470) > 0)
//0
IF_PICTURE_IN (1150,220, 1200,255, "0.bmp", -1, 100)
prog1(#0) // вызов подпрограммы
ELSE
//4
IF_PICTURE_IN (1150,220, 1200,255, "4.bmp", -1, 100)
prog1(#4) // вызов подпрограммы
END_IF
END_IF
END_IF
WAITMS(50)
-
Спасибо. У меня еще один вопрос, количество таких условий ограничено?
//0
IF_PICTURE_IN (1150,220, 1200,255, "0.bmp", -1, 100)
prog1(#0) // вызов подпрограммы
-
Спасибо. У меня еще один вопрос, количество таких условий ограничено?
//0
IF_PICTURE_IN (1150,220, 1200,255, "0.bmp", -1, 100)
prog1(#0) // вызов подпрограммы
Не ограничено.
-
prog1(#0) здесь можно указывать как однозначные так и двузначные цифры?
-
prog1(#0) здесь можно указывать как однозначные так и двузначные цифры?
#0 - это константа кода клавиши, равна 48 что соответствует клавиши 0 (описание на последней странице справки)
Если ты хочешь печатать числа то воспользуйся KEYSTRING
SUB(prog1, $key)
WAITMS(100)
LCLICK(1250,115)
WAITMS(100)
DBLCLICK(1250,115)
WAITMS(100)
DBLCLICK(1250,600)
WAITMS(100)
KEYSTRING($key)
WAITMS(100)
LCLICK(1355,670)
WAIT(50)
END_SUB
GETSCREEN
IF(PXLCOUNT(1150,130, 1200,160, 6471470) > 0)
//0
IF_PICTURE_IN (1150,220, 1200,255, "0.bmp", -1, 100)
prog1(0) // вызов подпрограммы
ELSE
//4
IF_PICTURE_IN (1150,220, 1200,255, "4.bmp", -1, 100)
prog1(12345) // вызов подпрограммы (будет напечатано 12345)
END_IF
END_IF
END_IF
WAITMS(50)
-
Как можно объединить три условия?
IF_PICTURE_IN (1150,20, 1200,30, "0.bmp", -1, 100)
и
IF_PICTURE_IN (1150,40, 1200,50, "5.bmp", -1, 100)
и
IF_PICTURE_IN (1150,120, 1200,125, "9.bmp", -1, 100)
тогда выполнялось действие.
-
GETSCREEN
IF_PICTURE_IN (1150,20, 1200,30, "0.bmp", -1, 100)
IF_PICTURE_IN (1150,40, 1200,50, "5.bmp", -1, 100)
IF_PICTURE_IN (1150,120, 1200,125, "9.bmp", -1, 100)
// действие
END_IF
END_IF
END_IF