Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: 66kaban on March 03, 2020, 08:33:51 PM
-
нужен такой скрипт
кликаем в точку А
кликаем в точку Б
если в точке Б цвет 111, то кликаем в точку В. повторяем этот цикл пока в точке Б цвет не станет 222
если в точке Б цвет 222, то кликаем в точку Д.
waitms(600)
LCLICK(107,127) // клик в точке А
waitms(600)
LCLICK(1229,34) // клик в точке Б
waitms(600)
$check = 0
WHILE($check = 0) // Зацикливаем пока не найдём указанный цвет
GETSCREEN
IF(PXL(1229,34) = 111)
Lclick(867,802) // клик в точке В
WAITMS(600)
$check = 1 // Выходим из цикла
ELSE
WAIT(1)
END_IF
END_CYC
waitms(600)
$check = 0
GETSCREEN
IF(PXL(1229,34) = 222) // если в точке Б белый
Lclick(937,286) // клик в точке Д
WAITMS(600)
$check = 1 // Выходим из цикла
ELSE
WAIT(1)
END_IF
не получается создать цикл:
если в точке Б цвет 111, то кликаем в точку В. повторяем этот цикл пока в точке Б цвет не станет 222
-
Учитывая, что вопрос не по языку скрипта, а по алгоритму (это значит, что человек сам думать не особо хочет), мне все же интересно - из какого цикла ты выходишь в 23-ей строке...?
waitms(600)
LCLICK(107,127) // клик в точке А
waitms(600)
LCLICK(1229,34) // клик в точке Б
waitms(600)
$check = 0
WHILE($check = 0) // Зацикливаем пока не найдём указанный цвет
GETSCREEN
IF(PXL(1229,34) = 111)
Lclick(867,802) // клик в точке В
WAITMS(600)
$check = 1 // Выходим из цикла
ELSE
WAIT(1)
END_IF
END_CYC
waitms(600)
$check = 0
GETSCREEN
IF(PXL(1229,34) = 222) // если в точке Б белый
Lclick(937,286) // клик в точке Д
WAITMS(600)
$check = 1 // Выходим из цикла
ELSE
WAIT(1)
END_IF
-
И еще... Который раз на форуме вижу подобные вещи...
waitms(600)
LCLICK(107,127) // клик в точке А
waitms(600)
LCLICK(1229,34) // клик в точке Б
waitms(600)
$check = 0
WHILE($check = 0) // Зацикливаем пока не найдём указанный цвет
То есть два клика и за ними цикл, который крутится до тех пор, пока не появится результат этих кликов? А если что-то где-то подзависло, лагануло и так дале и клик не прошел...? Скрипт зависнет в цикле ожидания результата?
-
в итоге получился вот такой скрипт:
getScreen
if(PXL(17,167) = 255) // если пиксель "а" красный, то кликаем в него
Lclick(17,167)
waitms(300)
lclick(1588,75) // б
waitms(600)
getScreen(1588,75,1588,75)
while(pxl(1588,75)!16777215) // запускаем цикл, клик "б" "в", до тех пор пока в точке б не появится белый цвет
getScreen(1588,75,1588,75)
lclick(1588,75)
waitms(600)
lclick(1270,1000) // в
waitms(600)
end_cyc
скрипт работает, но проблема в том, что он повторяет цикл еще 1 раз после того как в "б" уже белый цвет. почему идет повтор? в итоге пришлось вот так сделать:
getScreen
if(PXL(17,167) = 255)
Lclick(17,167)
waitms(300)
elSe
waitms(220)
end_if
waitms(600)
getScreen(1588,75,1588,75)
while(pxl(1588,75)!16777215) // бел пикс
getScreen(1588,75,1588,75)
DBLCLICK(1588,75)
waitms(600)
lclick(1270,1000)
waitms(600)
getScreen
if(PXL(1588,75) = 16777215)
waitms(300)
elSe
waitms(220)
end_if
end_cyc
-
скрипт работает, но проблема в том, что он повторяет цикл еще 1 раз после того как в "б" уже белый цвет. почему идет повтор?
Где end_if от первого IF ?