Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Sava on November 19, 2015, 07:30:15 AM
-
Всем привет.
На одной странице должны выполняться 2 скрипта, один за другим. В случае если условие нахождения картинок выполняется (в общем скрипт трудится, действия совершаются), то все нормально, выполняются один за другим. Как только начинается откат картинок для входа в скрипты, происходит зацикливание на первом (l_o.cms) или на втором (k_o.cms) ... когда как ))
Лог:
[spoiler]
10:23:55 острова нет, вторая попытка
10:23:59 остров не обновился, ждем
10:24:04 охоты нет, вторая попытка
10:24:08 охоты нет, ждем
10:24:13 охоты нет, вторая попытка
10:24:17 охоты нет, ждем
10:24:22 охоты нет, вторая попытка
10:24:26 охоты нет, ждем
10:24:31 охоты нет, вторая попытка
[/spoiler]
Для l_o.cms
#include "l_o.cms"
wait (1)
#include "k_o.cms"
wait(1)
#include "d_l.cms"
#name "l_o"
#logfile
move (rnd(100,400), rnd(150,700))
waitms(50)
getscreen
waitms(50)
if_picture_in (0,0,$_xmax,$_ymax,"l_o.bmp")
logwrite ("нашли остров")
showlog (1)
waitms(500)
lclick ($_return1+rnd(40,180), $_return2+rnd(20,40))
waitms(50)
move (rnd(100,400), rnd(150,700))
wait(1)
else
logwrite ("острова нет, вторая попытка")
showlog (1)
keypress (#PAGEDOWN)
wait(1)
getscreen
waitms(50)
if_picture_in (0,0,$_xmax,$_ymax,"l_o.bmp")
logwrite ("нашли остров")
showlog (1)
waitms(500)
lclick ($_return1+rnd(40,180), $_return2+rnd(20,40))
waitms(50)
move (rnd(100,400), rnd(150,700))
wait(1)
else
logwrite ("остров не обновился, ждем")
showlog (1)
wait(1)
goto(finish)
end_if
end_if
gettscreen
waitms(50)
if_picture_in (0,0,$_xmax,$_ymax,"l_o_begin.bmp")
waitms(500)
lclick ($_return1+rnd(30,90), $_return2+rnd(12,15))
logwrite ("зашли на остров, начинается бой")
showlog (1)
waitms(50)
move (rnd(100,400), rnd(150,700))
wait(1)
end_if
for ($i, $i < 10)
getscreen
waitms(50)
if_picture_in (0,0,$_xmax,$_ymax,"att_group.bmp")
logwrite ("att")
showlog (1)
lclick ($_return1+10, $_return2+10)
logwrite ("click att - ", $i)
showlog (1)
waitms(50)
move (rnd(100,400), rnd(150,700))
wait(1)
end_if
getscreen
if_picture_in (0,0,$_xmax,$_ymax,"N.bmp")
logwrite ("N")
showlog (1)
wait(15)
lclick ($_return1+10, $_return2+10)
logwrite ("click N - ", $i)
showlog (1)
waitms(50)
move (rnd(100,400), rnd(150,700))
wait (1)
else
if_picture_in (0,0,$_xmax,$_ymax,"l_o_end.bmp")
logwrite ("l_o_end see")
showlog (1)
lclick ($_return1+10, $_return2+10)
logwrite ("click l_o_end")
showlog (1)
waitms(50)
move (rnd(100,400), rnd(150,700))
wait(1)
end_if
end_if
end_cyc
$i = 0
finish:
wait(1)
Для k_o.cms
#name "k_o"
#logfile
move (rnd(100,400), rnd(150,700))
waitms(50)
getscreen
if_picture_in (0,0,$_xmax,$_ymax,"k_o.bmp")
logwrite ("нашли oxoty")
showlog (1)
waitms(500)
lclick ($_return1+rnd(40,180), $_return2+rnd(20,40))
waitms(50)
move (rnd(100,400), rnd(150,700))
wait(1)
else
logwrite ("охоты нет, вторая попытка")
showlog (1)
keypress (#PAGEDOWN)
waitms(50)
getscreen
if_picture_in (0,0,$_xmax,$_ymax,"k_o.bmp")
logwrite ("нашли oxoty")
showlog (1)
waitms(500)
lclick ($_return1+rnd(40,180), $_return2+rnd(20,40))
waitms(50)
move (rnd(100,400), rnd(150,700))
wait(1)
else
logwrite ("охоты нет, ждем")
showlog (1)
goto(finish)
end_if
end_if
getscreen
waitms(50)
if_picture_in (0,0,$_xmax,$_ymax,"k_o_begin.bmp")
lclick ($_return1+rnd(30,90), $_return2+rnd(12,15))
logwrite ("зашли на oxoty")
showlog (1)
waitms(50)
move (rnd(100,400), rnd(150,700))
wait(1)
end_if
getscreen
waitms(50)
if_picture_in (0,0,$_xmax,$_ymax,"att_group.bmp")
logwrite ("att")
showlog (1)
lclick ($_return1+10, $_return2+10)
logwrite ("click att - ", $i)
showlog (1)
waitms(50)
move (rnd(100,400), rnd(150,700))
wait(1)
end_if
getscreen
waitms(50)
if_picture_in (0,0,$_xmax,$_ymax,"pred.bmp")
logwrite ("pred")
showlog (1)
wait(15)
lclick ($_return1+10, $_return2+10)
logwrite ("охота на хищников")
showlog (1)
waitms(50)
move (rnd(100,400), rnd(150,700))
wait (1)
end_if
for ($i, $i < 20)
getscreen
if_picture_in (0,0,$_xmax,$_ymax,"att_group.bmp")
logwrite ("att")
showlog (1)
lclick ($_return1+10, $_return2+10)
logwrite ("click att - ", $i)
showlog (1)
waitms(50)
move (rnd(100,400), rnd(150,700))
wait (1)
getscreen
if_picture_in (0,0,$_xmax,$_ymax,"pred_next.bmp")
logwrite ("Next")
showlog (1)
wait(15)
lclick ($_return1+10, $_return2+10)
logwrite ("click Next - ", $i)
showlog (1)
waitms(50)
move (rnd(100,400), rnd(150,700))
wait (1)
else
getscreen
if_picture_in (0,0,$_xmax,$_ymax,"l_o_end.bmp")
logwrite ("вижу награду")
showlog (1)
lclick ($_return1+10, $_return2+10)
logwrite ("остров пройден")
showlog (1)
waitms(50)
move (rnd(100,400), rnd(150,700))
wait(1)
end_if
end_if
end_if
end_cyc
$i = 0
finish:
Если можно оптимизировать, улучшить как то написанное, напишите, буду признателен.
-
Ещё в первом скрипте стр. 51 gettscreen
Имя переменной цикла здесь не влияет, циклы не вложенные. Только с обнулением беда.
А вот две метки finish: сбивают работу с рельсов.
GOTO вообще здесь ни к чему. Для этого достаточно весь код который ты пропускаешь (основные действия) вставить прямо на место после обнаружения.
Т.к. у тебя таких мест получилось два, нужно избавится от них потому что они почти одинаковые.
Вот пример первого скрипта
#name "l_o"
#logfile
move (rnd(100,400), rnd(150,700))
waitms(50)
getscreen
waitms(50)
$isle = 0
FOR($isle=0, $isle < 2)
if_picture_in (0,0,$_xmax,$_ymax,"l_o.bmp")
$isle = 2
logwrite ("нашли остров")
showlog (1)
waitms(500)
lclick ($_return1+rnd(40,180), $_return2+rnd(20,40))
waitms(50)
move (rnd(100,400), rnd(150,700))
wait(1)
getscreen
waitms(50)
if_picture_in (0,0,$_xmax,$_ymax,"l_o_begin.bmp")
waitms(500)
lclick ($_return1+rnd(30,90), $_return2+rnd(12,15))
logwrite ("зашли на остров, начинается бой")
showlog (1)
waitms(50)
move (rnd(100,400), rnd(150,700))
wait(1)
end_if
for ($i=0, $i < 10)
getscreen
waitms(50)
if_picture_in (0,0,$_xmax,$_ymax,"att_group.bmp")
logwrite ("att")
showlog (1)
lclick ($_return1+10, $_return2+10)
logwrite ("click att - ", $i)
showlog (1)
waitms(50)
move (rnd(100,400), rnd(150,700))
wait(1)
end_if
getscreen
if_picture_in (0,0,$_xmax,$_ymax,"N.bmp")
logwrite ("N")
showlog (1)
wait(15)
lclick ($_return1+10, $_return2+10)
logwrite ("click N - ", $i)
showlog (1)
waitms(50)
move (rnd(100,400), rnd(150,700))
wait (1)
else
if_picture_in (0,0,$_xmax,$_ymax,"l_o_end.bmp")
logwrite ("l_o_end see")
showlog (1)
lclick ($_return1+10, $_return2+10)
logwrite ("click l_o_end")
showlog (1)
waitms(50)
move (rnd(100,400), rnd(150,700))
wait(1)
end_if
end_if
end_cyc
ELSE
IF($isle = 0)
logwrite ("острова нет, вторая попытка")
keypress (#PAGEDOWN)
ELSE
logwrite ("остров не обновился, ждем")
END_IF
showlog (1)
wait(1)
END_IF
END_CYC
wait(1)
-
Спасибо большое, вечером проверю.
Версия clickermann 4.11.002.
Условие i=0 в for (i=0, i < 10) сразу дает обнуление по завершении цикла?
Не совсем понял про :
$isle = 0
FOR($isle=0, $isle < 2)
if_picture_in (0,0,$_xmax,$_ymax,"l_o.bmp")
$isle = 2
...
ELSE
IF($isle = 0)
logwrite ("острова нет, вторая попытка")
keypress (#PAGEDOWN)
ELSE
logwrite ("остров не обновился, ждем")
END_IF
showlog (1)
wait(1)
END_IF
END_CYC
$isle < 2 означает что 2 попытки поиска острова? Тогда $isle=2 значит что остров найден? Почему $isle равно именно 2, а не 1? Единица же вроде верность подтверждает...
-
И еще, можно какой-нибудь командой разделить include'ы чтобы они не сливались?
-
Не совсем понял про :
$isle = 0
FOR($isle=0, $isle < 2)
if_picture_in (0,0,$_xmax,$_ymax,"l_o.bmp")
$isle = 2
...
ELSE
IF($isle = 0)
logwrite ("острова нет, вторая попытка")
keypress (#PAGEDOWN)
ELSE
logwrite ("остров не обновился, ждем")
END_IF
showlog (1)
wait(1)
END_IF
END_CYC
$isle < 2 означает что 2 попытки поиска острова? Тогда $isle=2 значит что остров найден? Почему $isle равно именно 2, а не 1? Единица же вроде верность подтверждает...
Цикл FOR($isle=0, $isle < 2)
имеет два прохода при $isle=0 и $isle=1
задавая $isle=2 мы прерываем цикл. На самом деле можно задать любое число при котором условие ($isle < 2) перестанет выполняться, т.е. $isle больше 1.