Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Hooligan on January 28, 2019, 11:10:21 PM
-
Сначала происходит поиск монстра. Там все норм. Когда приходит на эту функцию бывает виснет.
Тупо код не выполняется пока на карту не нажмешь в любое пустое место. Не пойму что такое.
Так же хочу чтобы он отправлял определенное количество походов. К примеру 4 удачные отправки что бы он сделал. Но попытался не более 6 раз. Если за 6 раз не вышло удачно отправить 4 попытки из 6 прекратил выполнение. Ну и соответственно если сразу с первых 4 раз все прошло удачно тоже прекратил свои действия.
SUB(атаковать монстра)
$mon = 0
WHILE($mon < 2)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (90,495, 315,525, "monster attack banner.bmp", -1, 60)
// IF_PICTURE_IN (305,355, 365,420, "monster attack banner1.bmp", -1, 60)
$mon = 2
LOGWRITE(" есть баннер для атаки")
LCLICK(205,510)
WAITMS(1500)
ELSE
INC($mon)
LOGWRITE(" нет баннера атаки")
LOGWRITE(" ручной выбор")
LCLICK(200,345) //Бывает что ручной выбор не делает. стоит и тупит
WAITMS(1500)
// END_IF
END_IF
END_CYC
$mon1 = 0
WHILE($mon1 < 2)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (250,610, 269,630, "attack panel.bmp", -1, 50)
INC($mon1,2)
$mon2 = 0
LOGWRITE(" мы в меню атаки")
WAITMS(800)
ELSE
$mon1 = 3
$mon2 = 3
LOGWRITE(" не дошли до меню атаки")
END_IF
END_CYC
$mon2 = 0
IF($mon2 < 1)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (355,170, 390,200, "construction choice.bmp", -1, 60)
LOGWRITE(" построения отряда")
LCLICK($_return1, $_return2)
WAITMS(300)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (320,225, 340,245, "dragon cancellation.bmp", -1, 60)
LOGWRITE(" отмена дракона")
LCLICK($_return1, $_return2)
WAITMS(300)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (240,600, 280,635, "monster attack.bmp", -1, 60)
INC($monster)
LOGWRITE(" атакую")
LCLICK(325, 675)
WAITMS(800)
ELSE
LOGWRITE(" нет выбор построения")
ELSE
LOGWRITE(" не вижу отмены дракона")
ELSE
LOGWRITE(" нет выбор построения")
ELSE
LOGWRITE(" не вижу атака монстра")
END_IF
END_IF
END_IF
END_IF
END_SUB
//*****************************
SUB(ПОИСК МОНСТРОВ)
LOGWRITE("**ПОИСК МОНСТРОВ")
WAITMS(500)
на карту()
WAITMS(500)
$monster = 0
WHILE($monster < 4)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,400, 55,622, "quick resource search.bmp", -1, 60)
LOGWRITE(" вижу меню быстрый поиск")
LCLICK($_return1, $_return2)
WAITMS(500)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (66,659, 339,703, "search.bmp", -1, 60)
LOGWRITE(" вижу кнопку поиск")
LCLICK(45,535)
WAITMS(500)
END_IF
$lvl = rnd(2,5) // тут выбирается уровень монстра
switch($lvl)
case(1)
LCLICK(145,600)
LOGWRITE(" выбран 1 уровень")
case(2)
LCLICK(150,600)
LOGWRITE(" выбран 2 уровень")
case(3)
LCLICK(155,600)
LOGWRITE(" выбран 3 уровень")
case(4)
LCLICK(160,600)
LOGWRITE(" выбран 4 уровень")
case(5)
LCLICK(165,600)
LOGWRITE(" выбран 5 уровень")
case(6)
LCLICK(170,600)
LOGWRITE(" выбран 6 уровень")
case(7)
LCLICK(175,600)
LOGWRITE(" выбран 7 уровень")
case(8)
LCLICK(180,600)
LOGWRITE(" выбран 8 уровень")
case(9)
LCLICK(185,600)
LOGWRITE(" выбран 9 уровень")
case(10)
LCLICK(285,600)
LOGWRITE(" выбран 30 уровень")
end_switch
LCLICK(210,685)
WAITMS(1500)
//виснет в этом месте по логу
// в логе "выбран 2 уровень"
//далее завис
атаковать монстра()
ELSE
WAITMS(500)
LOGWRITE(" не вижу меню быстрого поиска")
come back()
на карту()
END_IF
LOGWRITE(" отрядов отправил:", $monster)
END_CYC
LOGWRITE("**END")
END_SUB
-
Не пойму что такое.
Почему у тебя 4 ELSE в одном условии??
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (240,600, 280,635, "monster attack.bmp", -1, 60)
INC($monster)
LOGWRITE(" атакую")
LCLICK(325, 675)
WAITMS(800)
ELSE
LOGWRITE(" нет выбор построения")
ELSE
LOGWRITE(" не вижу отмены дракона")
ELSE
LOGWRITE(" нет выбор построения")
ELSE
LOGWRITE(" не вижу атака монстра")
END_IF
-
Тут я уже от безвыходности пробовал все варианты
-
Не пойму что такое.
Почему у тебя 4 ELSE в одном условии??
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (240,600, 280,635, "monster attack.bmp", -1, 60)
INC($monster)
LOGWRITE(" атакую")
LCLICK(325, 675)
WAITMS(800)
ELSE
LOGWRITE(" нет выбор построения")
ELSE
LOGWRITE(" не вижу отмены дракона")
ELSE
LOGWRITE(" нет выбор построения")
ELSE
LOGWRITE(" не вижу атака монстра")
END_IF
SUB(атаковать монстра)
WAITMS(500)
$mon = 0
$mon1 = 0
$mon2 = 0
WHILE($mon < 2)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (90,495, 315,525, "monster attack banner.bmp", -1, 70)
IF_PICTURE_IN (305,355, 365,420, "monster attack banner1.bmp", -1, 70)
INC($mon,1)
LOGWRITE(" есть баннер для атаки")
LCLICK(205,510)
WAITMS(1500)
ELSE
LOGWRITE(" нет баннера атаки")
LOGWRITE(" ручной выбор")
LCLICK(200,345)
WAITMS(1500)
END_IF
END_IF
END_CYC
WHILE($mon1 = 0)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (250,610, 269,630, "attack panel.bmp", -1, 50)
$mon1 = 1
$mon2 = 0
LOGWRITE(" мы в меню атаки")
WAITMS(800)
ELSE
$mon1 = 1
LOGWRITE(" не дошли до меню атаки")
END_IF
END_CYC
IF($mon2 = 0)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (355,170, 390,200, "construction choice.bmp", -1, 60)
LOGWRITE(" построения отряда")
LCLICK($_return1, $_return2)
WAITMS(300)
ELSE
LOGWRITE(" нет выбор построения")
END_IF
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (320,225, 340,245, "dragon cancellation.bmp", -1, 60)
LOGWRITE(" отмена дракона")
LCLICK($_return1, $_return2)
WAITMS(300)
ELSE
LOGWRITE(" не вижу отмены дракона")
END_IF
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (240,600, 280,635, "monster attack.bmp", -1, 60)
INC($monster)
LOGWRITE(" атакую")
LCLICK(325, 675)
WAITMS(800)
ELSE
LOGWRITE(" не вижу атака монстра")
END_IF
END_IF
END_SUB
Сегодня на свежую голову просмотрел все. Поправил. Думаю верно. Но все же виснет код(((
Эта часть кода
WHILE($mon < 2)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (90,495, 315,525, "monster attack banner.bmp", -1, 70)
IF_PICTURE_IN (305,355, 365,420, "monster attack banner1.bmp", -1, 70)
INC($mon,1)
LOGWRITE(" есть баннер для атаки")
LCLICK(205,510)
WAITMS(1500)
ELSE
LOGWRITE(" нет баннера атаки")
LOGWRITE(" ручной выбор")
LCLICK(200,345)
WAITMS(1500)
END_IF
END_IF
END_CYC
-
Если виснет то значит "monster attack banner.bmp" не найдено. Кстати если не найдено то без всяких задержек начинаем искать снова и снова. Довольно таки напряжно.
Цикл завершится только если "monster attack banner.bmp" и "monster attack banner1.bmp" будут найдены 2а раза.
-
Если виснет то значит "monster attack banner.bmp" не найдено. Кстати если не найдено то без всяких задержек начинаем искать снова и снова. Довольно таки напряжно.
Цикл завершится только если "monster attack banner.bmp" и "monster attack banner1.bmp" будут найдены 2а раза.
Дело в том, что он не пишет о ненахождении картинки.
В остальном структура скрипта верна?
-
Если виснет то значит "monster attack banner.bmp" не найдено. Кстати если не найдено то без всяких задержек начинаем искать снова и снова. Довольно таки напряжно.
Цикл завершится только если "monster attack banner.bmp" и "monster attack banner1.bmp" будут найдены 2а раза.
Дело в том, что он не пишет о ненахождении картинки.
В остальном структура скрипта верна?
SUB(атаковать монстра)
$mon1 = 0
$mon2 = 0
WHILE($mon1 = 0)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (250,610, 269,630, "attack panel.bmp", -1, 50)
$mon1 = 1
$mon2 = 0
LOGWRITE(" мы в меню атаки")
WAITMS(800)
ELSE
$mon1 = 1
LOGWRITE(" не дошли до меню атаки")
END_IF
END_CYC
IF($mon2 = 0)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (355,170, 390,200, "construction choice.bmp", -1, 60)
LOGWRITE(" построения отряда")
LCLICK($_return1, $_return2)
WAITMS(300)
ELSE
LOGWRITE(" нет выбор построения")
END_IF
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (320,225, 340,245, "dragon cancellation.bmp", -1, 60)
LOGWRITE(" отмена дракона")
LCLICK($_return1, $_return2)
WAITMS(300)
ELSE
LOGWRITE(" не вижу отмены дракона")
END_IF
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (240,600, 280,635, "monster attack.bmp", -1, 60)
INC($monster)
LOGWRITE(" атакую")
LCLICK(325, 675)
WAITMS(800)
ELSE
$monster = 4 //тут верно я поставил переменную? Для остановки цикла в общем
LOGWRITE(" не вижу атака монстра")
END_IF
END_IF
END_SUB
//SUB(ПОИСК МОНСТРОВ)
LOGWRITE("**ПОИСК МОНСТРОВ")
WAITMS(500)
на карту()
WAITMS(500)
$monster = 0
WHILE($monster < 4)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,400, 55,622, "quick resource search.bmp", -1, 60)
LOGWRITE(" вижу меню быстрый поиск")
LCLICK($_return1, $_return2)
WAITMS(500)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (66,659, 339,703, "search.bmp", -1, 60)
LOGWRITE(" вижу кнопку поиск")
LCLICK(45,535)
WAITMS(500)
END_IF
$lvl = rnd(2,5) // тут выбирается уровень монстра
switch($lvl)
case(1)
LCLICK(145,600)
LOGWRITE(" выбран 1 уровень")
case(2)
LCLICK(150,600)
LOGWRITE(" выбран 2 уровень")
case(3)
LCLICK(155,600)
LOGWRITE(" выбран 3 уровень")
case(4)
LCLICK(160,600)
LOGWRITE(" выбран 4 уровень")
case(5)
LCLICK(165,600)
LOGWRITE(" выбран 5 уровень")
case(6)
LCLICK(170,600)
LOGWRITE(" выбран 6 уровень")
case(7)
LCLICK(175,600)
LOGWRITE(" выбран 7 уровень")
case(8)
LCLICK(180,600)
LOGWRITE(" выбран 8 уровень")
case(9)
LCLICK(185,600)
LOGWRITE(" выбран 9 уровень")
case(10)
LCLICK(285,600)
LOGWRITE(" выбран 30 уровень")
end_switch
WAITMS(500)
LCLICK(210,685)
WAITMS(3000)
$time = $_time_t + 5
WHILE($time > $_time_t)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (220,360, 275,415, "monster attack banner.bmp", -1, 70)
$time = 0
LOGWRITE(" есть баннер для атаки")
LCLICK(205,510)
WAITMS(1500)
атаковать монстра()
ELSE
$time = 0
LOGWRITE(" нет баннера атаки")
LOGWRITE(" ручной выбор")
LCLICK(200,345)
WAITMS(1500)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (220,360, 275,415, "monster attack banner.bmp", -1, 70)
$time = 0
LOGWRITE(" есть баннер для атаки")
LCLICK(205,510)
WAITMS(1500)
атаковать монстра()
END_IF
END_IF
END_CYC
ELSE
WAITMS(500)
LOGWRITE(" не вижу меню быстрого поиска")
come back()
на карту()
END_IF
LOGWRITE(" отрядов отправил:", $monster)
LOGWRITE("**END")
END_CYC
Вроде работает. Но есть еще вопрос. Куда мне воткнуть переменную $monster = 4 чтобы цикл не зацикливался и при нехватке походов их всего 4 или еще каком либо сбое прекратил работу
-
Вроде работает. Но есть еще вопрос. Куда мне воткнуть переменную $monster = 4 чтобы цикл не зацикливался и при нехватке походов их всего 4 или еще каком либо сбое прекратил работу
Это верно. Но вот цикл на строках 117-118
$time = $_time_t + 5
WHILE($time > $_time_t)
лишен всякого смысла, потому как найдена картинка "monster attack banner.bmp" или не найдена везде стоит $time = 0 То есть такой "цикл" больше одного раза выполняться в принципе не будет.
И почему там везде $mon2 = 0 ?
-
Это верно. Но вот цикл на строках 117-118
$time = $_time_t + 5
WHILE($time > $_time_t)
лишен всякого смысла, потому как найдена картинка "monster attack banner.bmp" или не найдена везде стоит $time = 0 То есть такой "цикл" больше одного раза выполняться в принципе не будет.
И почему там везде $mon2 = 0 ?
[/quote]
$mon =0 я понял что лишнее было. Т.к я эту переменную объявляю и так равной 0 с самого начала цикла.
$time поправил. Оставил после первой попытки поиска картинки.
-
SUB(атаковать монстра)
$mon1 = 0 //объявление переменной
$mon2 = 0 //объявление переменной
WHILE($mon1 = 0)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (250,610, 269,630, "attack panel.bmp", -1, 50)
$mon1 = 1
LOGWRITE(" мы в меню атаки")
WAITMS(800)
ELSE
$mon1 = 1
LOGWRITE(" не дошли до меню атаки")
END_IF
END_CYC
IF($mon2 = 0)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (355,170, 390,200, "construction choice.bmp", -1, 60)
LOGWRITE(" построения отряда")
LCLICK($_return1, $_return2)
WAITMS(300)
ELSE
LOGWRITE(" нет выбор построения")
END_IF
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (320,225, 340,245, "dragon cancellation.bmp", -1, 60)
LOGWRITE(" отмена дракона")
LCLICK($_return1, $_return2)
WAITMS(300)
ELSE
LOGWRITE(" не вижу отмены дракона")
END_IF
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (240,600, 280,635, "monster attack.bmp", -1, 60)
INC($monster,1)
LOGWRITE(" атакую")
LCLICK(325, 675)
WAITMS(800)
ELSE
$monster = 4 //завершение цикла
LOGWRITE(" не вижу атака монстра")
END_IF
END_IF
END_SUB
//SUB(ПОИСК МОНСТРОВ)
LOGWRITE("**ПОИСК МОНСТРОВ")
WAITMS(500)
на карту()
WAITMS(500)
$monster = 0
WHILE($monster < 4)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (0,400, 55,622, "quick resource search.bmp", -1, 60)
LOGWRITE(" вижу меню быстрый поиск")
LCLICK($_return1, $_return2)
WAITMS(1000)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (165,670, 200,695, "search.bmp", -1, 60)
LOGWRITE(" вижу кнопку поиск")
LCLICK(45,535)
WAITMS(500)
END_IF
$lvl = rnd(2,5) // тут выбирается уровень монстра
switch($lvl)
case(1)
LCLICK(145,600)
LOGWRITE(" выбран 1 уровень")
case(2)
LCLICK(150,600)
LOGWRITE(" выбран 2 уровень")
case(3)
LCLICK(155,600)
LOGWRITE(" выбран 3 уровень")
case(4)
LCLICK(160,600)
LOGWRITE(" выбран 4 уровень")
case(5)
LCLICK(165,600)
LOGWRITE(" выбран 5 уровень")
case(6)
LCLICK(170,600)
LOGWRITE(" выбран 6 уровень")
case(7)
LCLICK(175,600)
LOGWRITE(" выбран 7 уровень")
case(8)
LCLICK(180,600)
LOGWRITE(" выбран 8 уровень")
case(9)
LCLICK(185,600)
LOGWRITE(" выбран 9 уровень")
case(10)
LCLICK(285,600)
LOGWRITE(" выбран 30 уровень")
end_switch
WAITMS(500)
LCLICK(210,685)
WAITMS(3000)
$time = $_time_t + 3
WHILE($time > $_time_t)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (233,380, 265,408, "monster attack banner.bmp", -1, 70)
$time = 0
LOGWRITE(" есть баннер для атаки")
LCLICK($_return1-32, $_return2+125)
WAITMS(1500)
атаковать монстра()
ELSE
LOGWRITE(" нет баннера атаки")
LOGWRITE(" ручной выбор")
LCLICK(200, 350)
WAITMS(1500)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (220,360, 275,415, "monster attack banner.bmp", -1, 70)
LOGWRITE(" есть баннер для атаки")
LCLICK($_return1-32, $_return2+125)
WAITMS(1500)
атаковать монстра()
END_IF
END_IF
END_CYC
ELSE
WAITMS(500)
LOGWRITE(" не вижу меню быстрого поиска")
come back()
на карту()
END_IF
LOGWRITE(" отрядов отправил:", $monster)
END_CYC
LOGWRITE("**END")
//END_SUB
Спасибо дорогой друг. Теперь я разобрался. Очень помог. Заставил меня порассуждать над своей писаниной. Плюсик в карму)
-
Спасибо дорогой друг. Теперь я разобрался. Очень помог. Заставил меня порассуждать над своей писаниной. Плюсик в карму)
Ты нифига не разобрался... На самом деле первый же цикл также лишен всякого смысла
$mon1 = 0 //объявление переменной
$mon2 = 0 //объявление переменной
WHILE($mon1 = 0)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (250,610, 269,630, "attack panel.bmp", -1, 50)
$mon1 = 1
LOGWRITE(" мы в меню атаки")
WAITMS(800)
ELSE
$mon1 = 1
LOGWRITE(" не дошли до меню атаки")
END_IF
END_CYC
IF($mon2 = 0)
Нафига эти $mon1 = 0 и $mon2 = 0? Цикл WHILE($mon1 = 0) который выполняется 1 раз, найдено/не найдено все равно идем дальше, и условие IF($mon2 = 0) которое конечно же выполнится потому как сверху $mon2 = 0.
-
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (250,610, 269,630, "attack panel.bmp", -1, 50)
LOGWRITE(" мы в меню атаки")
WAITMS(800)
ELSE
$mon2 = 1
LOGWRITE(" не дошли до меню атаки")
END_IF
IF($mon2 = 0)
Нафига эти $mon1 = 0 и $mon2 = 0? Цикл WHILE($mon1 = 0) который выполняется 1 раз, найдено/не найдено все равно идем дальше, и условие IF($mon2 = 0) которое конечно же выполнится потому как сверху $mon2 = 0.
[/quote]
Я в тупике тогда)
Я так понимаю первый цикл вообще нужно убрать?
Убрать объявление переменных вверху
И при неудаче нахождения панели атаки присвоить переменной $mon2 значение выше 0,
для предотвращения срабатывания условия IF($mon2 = 0) ?
Так?)))
-
Теперь в этом есть смысл.
$mon2 = 0 //объявление переменной
Убрать объявление переменных вверху
Это не объявление переменных а присвоение им значения. Кликер сам объявляет переменные при первом упоминании.
Есть команда DEFINE которая объявляет и присваивает значение переменной при условии что такая переменная еще не существует.
DEFINE($mon2, 0) // Переменная $mon2 не существует, присваиваем значение 0
DEFINE($mon2, 1) // Переменная $mon2 уже существует, функция не работает
UNDEFINE($mon2) // Удаляем переменную $mon2
DEFINE($mon2, 1) // теперь функция сможет снова объявить переменную и присвоить ей значение.
-
Для меня все в новинку. Все новые функции. Куда мне их пристроить?
Почитал справку. Но примера я чет не увидел
Не понял реализацию всего этого в моем случае((((