Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Dimon on May 31, 2015, 06:22:38 PM
-
Цикл возникает там, где его по идее быть не должно....когда бой закончен, скрипт начинает применять лечение, вместо того, чтобы продолжить и перейти к следующему действию.
$check = 0 // начинаем бить
WHILE($check = 0)
GETSCREEN
COLORMODE(6)
IF_PIXEL_IN(1166,136, 1178,163, 4177791) // если нашли хп врага
$check1 = 0 // ищем свои хп
WHILE($check1 = 0)
GETSCREEN
COLORMODE(6)
IF_PIXEL_IN(314,135, 316,157, 4177791) //ищем полоску своих хп
$check1 = 0 //если нашли
GOTO(f1) //то переходим по метке
ELSE // если не нашли,продолжаем
LCLICK(274,375) // применяем бинт
WAITMS(200)
END_IF
f1://метка
LCLICK(1198, 149) //атакуем соперника
WAITMS(300)
ELSE
$check = 1 //если не нашли хп соперника, прерываем цикл и продолжаем
END_IF
END_CYC
-
Потому что там у тебя ошибка, и вообще правильнее видимо будет так
$check = 0 // начинаем бить
WHILE($check = 0)
GETSCREEN
COLORMODE(6)
IF_PIXEL_IN(1166,136, 1178,163, 4177791) // если нашли хп врага
IF_PIXEL_IN(314,135, 316,157, 4177791) //ищем полоску своих хп
LCLICK(1198, 149) //атакуем соперника
WAITMS(300)
ELSE // если не нашли,продолжаем
LCLICK(274,375) // применяем бинт
WAITMS(500)
END_IF
ELSE
$check = 1 //если не нашли хп соперника, прерываем цикл и продолжаем
END_IF
END_CYC
-
Спасибо огромное, а то уже бестолковку чуть не сломал, комбинируя с этим вопросом)
-
Если можно, укажите мою ошибку(ошибки), часть кода совсем не запускается(( заранее благодарю
s2: // метка2, ожидание хода
// ждем загрузку арены и своего хода
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PICTURE_IN (693,67, 743,98, "Hod_arena.bmp", -1, 30)
$check = 1
GOTO(s1) // перейти к метке 1 и начать бой
ELSE
WAITMS(50)
END_IF
END_CYC
s1:
// начинаем бой
WAIT(2)
$check = 0
WHILE($check = 0)
GETSCREEN
COLORMODE(6)
IF_PIXEL_IN(300,72, 411,98, 4177791) // если нашли свои хп
IF_PICTURE_IN (1017,63, 1065,184, "zvezda_arena.bmp", -1, 80) // ищем игрока
GETSCREEN
COLORMODE(6)
IF_PIXEL_IN($_return1-40,$_return2-31, $_return1+142,$_return2, 4177791) // если у игрока есть хп
WAIT(1)
LCLICK(274,382) // лечимся
WAIT(1)
LCLICK(274,337) //берем заряд
WAIT(1)
LCLICK($_return1, $_return2-7) //бьем игрока
WAIT(5)
GOTO(s2) //переход к метке 2
END_IF
ELSE // если не нашли игрока
GETSCREEN
IF_PICTURE_IN (950,60, 1165,200, "shturm_arena.bmp", -1, 75) // ищем бота
GETSCREEN
COLORMODE(6)
IF_PIXEL_IN($_return1-40,$_return2-31, $_return1+142,$_return2, 4177791) //если у бота есть хп
WAIT(1)
LCLICK(274,382) // лечимся
WAIT(1)
LCLICK(274,337) //берем заряд
WAIT(1)
LCLICK($_return1, $_return2-7) //бьем бота
WAIT(5)
GOTO(s2)// перейти к метке2
END_IF
ELSE
WAITMS(100)
END_IF
END_IF
END_IF
END_CYC
//бой закончен, выходим в меню
-
Нельзя выпрыгивать из циклов через ГОТО.
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PICTURE_IN (693,67, 743,98, "Hod_arena.bmp", -1, 30) // ждем загрузку арены и своего хода
// начинаем бой
WAIT(2)
GETSCREEN
COLORMODE(6)
IF_PIXEL_IN(300,72, 411,98, 4177791) // если нашли свои хп
IF_PICTURE_IN (1017,63, 1065,184, "zvezda_arena.bmp", -1, 80) // ищем игрока
IF_PIXEL_IN($_return1-40,$_return2-31, $_return1+142,$_return2, 4177791) // если у игрока есть хп
WAIT(1)
LCLICK(274,382) // лечимся
WAIT(1)
LCLICK(274,337) //берем заряд
WAIT(1)
LCLICK($_return1, $_return2-7) //бьем игрока
WAIT(5)
END_IF
ELSE
// если не нашли игрока
GETSCREEN
IF_PICTURE_IN (950,60, 1165,200, "shturm_arena.bmp", -1, 75) // ищем бота
GETSCREEN
COLORMODE(6)
IF_PIXEL_IN($_return1-40,$_return2-31, $_return1+142,$_return2, 4177791) //если у бота есть хп
WAIT(1)
LCLICK(274,382) // лечимся
WAIT(1)
LCLICK(274,337) //берем заряд
WAIT(1)
LCLICK($_return1, $_return2-7) //бьем бота
WAIT(5)
END_IF
ELSE
WAITMS(100)
END_IF
END_IF
END_IF
ELSE
// если нет Hod_arena.bmp
WAITMS(50)
END_IF
END_CYC
Смысл цикла
$check = 0 // задаем переменной значение
WHILE($check = 0) // в условии цикла, каждый раз в начале проверяется это значение
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 100)
$check = 1 // если в какой то момент мы изменим значение переменной, то цикл на следующем проходе не повторится! То есть произойдет выход из цикла
LCLICK($_return1, $_return2)
WAITMS(100)
ELSE
WAITMS(100)
END_IF
END_CYC
В твоем скрипте нужно какое то условие которое которое прекратит выполнение цикла, а выпрыгивать из цикла куда тебе захочется неьзя, это приводит к ошибкам.
Еще один момент
IF_PICTURE_IN (1017,63, 1065,184, "zvezda_arena.bmp", -1, 80) // ищем игрока
IF_PIXEL_IN($_return1-40,$_return2-31, $_return1+142,$_return2, 4177791) // если у игрока есть хп
WAIT(1)
LCLICK(274,382) // лечимся
WAIT(1)
LCLICK(274,337) //берем заряд
WAIT(1)
LCLICK($_return1, $_return2-7) // Возвращенные координаты в return относятся к "если у игрока есть хп" !!!
WAIT(5)
END_IF
Если нужно кликнуть по "zvezda_arena.bmp" то нужно сохранить значения в каких нибудь переменных.
IF_PICTURE_IN (1017,63, 1065,184, "zvezda_arena.bmp", -1, 80) // ищем игрока
$savx = $_return1
$savy = $_return2
IF_PIXEL_IN($savx-40,$savy-31, $savx+142,$savy, 4177791) // если у игрока есть хп
WAIT(1)
LCLICK(274,382) // лечимся
WAIT(1)
LCLICK(274,337) //берем заряд
WAIT(1)
LCLICK($savx, $savy-7) //бьем игрока
WAIT(5)
END_IF
-
IF_PICTURE_IN (1017,63, 1065,184, "zvezda_arena.bmp", -1, 80) // ищем игрока
IF_PIXEL_IN($_return1-40,$_return2-31, $_return1+142,$_return2, 4177791) // если у игрока есть хп
WAIT(1)
LCLICK(274,382) // лечимся
WAIT(1)
LCLICK(274,337) //берем заряд
WAIT(1)
LCLICK($_return1, $_return2-7) // Возвращенные координаты в return относятся к "если у игрока есть хп" !!!
WAIT(5)
END_IF
Так и задумывалось, т.е. по "звезде" проверяется местоположение игрока(оно может меняться), когда мы его находим, нужно проверить жив он или нет(по наличию полоски хп), далее если жив, то нужно кликнуть именно по полоске хп. за цикл я могу сделать только 1 действие(бой проходит пошагово)-ударить или игрока или бота(в приоритете игрок)