Версия кликера последняя? 4.10.003
Вот я выбросил все кроме записи в лог и никакого зацикливания. Все же рекомендую повтыкать запись в лог в каждый цикл и подпрограммы чтобы увидеть всю картину переходов.
// New Script
// Author: Anonymous
// Version: 1.0 (05.10.2014)
#name "New Script"
// Автоклики при пошаговом сражении.
// Враги не двигаются, расположены всегда на неизменных трёх местах, необходимо только находить живых (и самых опасных) на экране, а затем рядом кликов фокусировать на них "огонь" своих подопечных.
// Картинки живых и мёртвых противников различны.
// Есть внутриигровая кнопка "атаковать всеми силами первого попавшегося", что полезно когда сильных противников на экране больше нет.
$start = 0
$win = 0
$reward = 0
// в первую очередь на поле боя нужно валить джокеров, для этого и данная функция
// находим джокера по картинке и несколькими кликами приказываем всем своим атаковать его
// всего у нас три бойца, поэтому и блока команд три
sub (Джокер_фокус)
LOGWRITE ("Джокер_фокус")
end_sub
// когда приходит пора сражаться с боссами (10-я волна), необходимо жахнуть самыми мощными заклинаниями
// напоминаю, что наших бойцов трое
sub (Босс)
LOGWRITE ("Босс")
end_sub
// в начале 9-ой волны (как раз перед боссами) стоит подлечиться, это сильно повышает вероятность выживания команды.
sub (Лечение)
LOGWRITE ("Лечение")
end_sub
// перед очередным сражением мы находимся в данже, нужно нажать на кнопку "следующая битва"
// во-первых, я смотрю на вкладку фаерфокса, дабы убедиться что страница полностью загрузилась и нажимаю на кнопку "следующая битва"
// во-вторых, по одному характерному пикселю я начинаю проверять, вошли ли мы в битву
// если да, то меняем флажок и выходим из цикла
sub(Начать)
while ($start = 0)
LOGWRITE ("Начать start")
$start = 1
end_cyc
end_sub
// у-у-у-у
// сначала мы смотрим, какая это волна
// если 9-я, перед боссами, то один ход тратим на лечение
// если это 10-я волна, то дважды ультуем
sub(Сражение)
LOGWRITE ("Сражение")
if ($battle=9)
Лечение()
LOGWRITE ("battle=9")
end_if
if ($battle=10)
LOGWRITE ("battle=10")
Босс()
Босс()
end_if
// а вот и наш код по "обычному" закликиванию простых врагов (или ослабленных боссов)
// у нас может быть какая угодно волна (9-я и 10-я тоже) - после лечения/магии мы продолжаем лупить до победного
// вы видите два условия с Execute1.bmp и Execute2.bmp, так?
// кнопка "ударить" может иметь два разных вида, отсюда вложенный условный оператор, чтобы учесть оба значения
// сначала мы убеждаемся, что кнопка "ударить" имеет один из двух нужных видов (а это значит, что предыдущий удар дошёл до сервера и можно делать новый)
// затем вызываем функцию поиска/выставления атак на джокера
// затем просто жмём "исполнить"
// если мы ранее выставляли атаки, то ударим по джокеру
// если нет - игра сама найдёт цели для атаки
// люблю её за это!
while ($win = 0)
LOGWRITE ("win=0")
Джокер_фокус()
$win = 1
end_cyc
end_sub
// бывает две ситуации
// первое - нам дают сраный опыт или драгоценное золото, и мы можем просто нажать "взять и выйти"
// второе - нам дают сраный предмет и он не влезает в рюкзак, мы должны сначала продать его за ничтожную сумму денег, а затем уже только выходить обратно в данж
sub(Награда)
LOGWRITE ("Награда")
while ($reward = 0)
LOGWRITE ("reward=0")
$reward = 1 // прерываем цикл сбора награды
$start = 0 // разрешаем начать работу циклов по заходу в сражения
$win = 0 // и по самим сражениям
end_cyc
$reward = 0 // снова тут же разрешаем работу цикла наград, всё равно мы сейчас выйдем из функции
end_sub
// --------------------------------------------------------
// ---------- вот это место почему-то глючит --------------
// --------------------------------------------------------
// когда мы проходим 9-ть волн мобов, одну волну боссов и ещё 9-ть волн усиленных мобов, нам нужно просто нажать с интервалом на две кнопки - подлечиться и резетнуть данж, чтобы начать новый забег
sub (Сброс)
LOGWRITE ("Сброс")
Награда() // иногда при лечении могут дать какие-то говно-плюшки, их можно обработать этой же функцией
end_sub
//глобальный алгоритм:
logwrite("one more")
$battle = 0
while ($battle<19) // так мы проходим все 19-ть волн, да
inc($battle,1)
Начать()
Сражение()
Награда()
end_cyc
Сброс()
LOGWRITE ("Конец")
// короче фишка вот в чём
// посмотрите на "глобальный алгоритм"
// именно он проходится раз за разом парсером, именно отсюда вызываются все подпрограммы, вся херня
// я предполагаю, что при зацикленном повторении скрипта он раз за разом должен спамить в лог "one more"
// он раз за разом должен проходить все стадии зачистки данжа и лечения/резета после полного прохождения
// он не хочет
// он один раз пишет в лог "one more"
// один раз чистит данж
// и затем бесконечно повторяет лечение/резет, лечение/резет (т.е. функцию Сброс())
// в сбросе нет никаких циклов, там несколько простых команд
// эти команды должны выполниться один раз и всё, мы уходим из функции
// ЧОМУ ВСЁ НЕ ТАК, ГДЕ Я ЗАЛАЖАЛ??
HALT