Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: dmutruk on September 13, 2013, 04:11:59 PM
-
LCLICK(427,207) //активирует нужное окошко
IF_PIXEL_IN (428,355, 439, 373, 2104698) // ищет нужный цвет в заданной области
WAITMS(500)
KEYPRESS(#w) // жмет клавишу после того как найдет
END_IF
WAITMS(1)
IF_PIXEL_IN (428,355, 439, 373, 2104698) // ищет нужный цвет в заданной области
WAITMS(500)
KEYPRESS(#r) // жмет клавишу после того как найдет
END_IF
WAITMS(1)
IF_PIXEL_IN (428,355, 439, 373, 2104698) // ищет нужный цвет в заданной области
WAITMS(500)
KEYPRESS(#w) // жмет клавишу после того как найдет
END_IF
WAITMS(1)
IF_PIXEL_IN (428,355, 439, 373, 2104698) // ищет нужный цвет в заданной области
WAITMS(500)
KEYPRESS(#q) // жмет клавишу после того как найдет
END_IF
WAIT(1)
KEYPRESS(#3) // жмет клавишу после того как найдет
WAITMS(500)
IF_PIXEL_IN (428,355, 439, 373, 2104698) // ищет нужный цвет в заданной области
WAITMS(500)
KEYPRESS(#r) // жмет клавишу после того как найдет
END_IF
Собственно, я хочу что бы программа искала нужный пиксель до тех пор пока он не появится, кода появится, нажала на клавишу. После того как нажмет, снова искала по заданным параметрам, до тех пор пока пиксель нужного цвета не появится там. А сейчас у меня оно все мгновенно делает и не останавливается на поиске(((
-
Где команда GETSCREEN?
Что, где ждёт? У тебя везде написано одинаково.
-
GETSCREEN - один раз в начале прописывать или все время перед новым поиском? Искать нужно все время в одном месте и один и тот же цвет, но действия разные нужно выполнять
-
Ну вот тебе ожидание
LCLICK(427,207) //активирует нужное окошко
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698) // ищет нужный цвет в заданной области
$check = 1
WAITMS(500)
KEYPRESS(#w) // жмет клавишу после того как найдет
Else
WAITMS(50)
END_IF
END_CYC
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698) // ищет нужный цвет в заданной области
$check = 1
WAITMS(500)
KEYPRESS(#r) // жмет клавишу после того как найдет
Else
WAITMS(50)
END_IF
END_CYC
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698) // ищет нужный цвет в заданной области
$check = 1
WAITMS(500)
KEYPRESS(#w) // жмет клавишу после того как найдет
Else
WAITMS(50)
END_IF
END_CYC
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698) // ищет нужный цвет в заданной области
$check = 1
WAITMS(500)
KEYPRESS(#q) // жмет клавишу после того как найдет
Else
WAITMS(50)
END_IF
END_CYC
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698) // ищет нужный цвет в заданной области
$check = 1
WAITMS(500)
KEYPRESS(#3) // жмет клавишу после того как найдет
Else
WAITMS(50)
END_IF
END_CYC
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698) // ищет нужный цвет в заданной области
$check = 1
WAITMS(500)
KEYPRESS(#r) // жмет клавишу после того как найдет
Else
WAITMS(50)
END_IF
END_CYC
-
Oraven Огромное тебе спасибо, поигрался с задержкой и все заработало на ура (инет слабый и грузит долго действия). Мне не удобно просить, но есть еще несколько заданий которые надо выполнить, это было начало :'(
LCLICK(427,207)
WAIT(3)
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
$check = 1
WAITMS(1)
KEYPRESS(#w)
Else
WAITMS(50)
END_IF
END_CYC
//Сюда нужно поиск заданного цвета пикселя, если найдет тот который нужно, прервала роботу циклов которые идут дальше и начала новые совсем. Который начинается с клика в заданную область (область отличается от расположения искомого пикселя). Если такого цвета нету, выполняются следующие команды.
//Вот сюда нужно сделать так что бы программа искала заданный цвет пикселя и если находит, то выполняются следующие команды. А если цвет изменился, выполнила нажатие клавиши (какой я сам напишу потом).
WAIT(6)
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
$check = 1
WAITMS(1)
KEYPRESS(#e)
Else
WAITMS(50)
END_IF
END_CYC
WAIT(6)
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
$check = 1
WAITMS(1)
KEYPRESS(#w)
Else
WAITMS(50)
END_IF
END_CYC
WAIT(6)
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
$check = 1
WAITMS(1)
KEYPRESS(#q)
Else
WAITMS(50)
END_IF
END_CYC
WAIT(6)
KEYPRESS(#3)
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
$check = 1
WAITMS(1)
KEYPRESS(#e)
Else
WAITMS(50)
END_IF
END_CYC
Буду очень благодарен если поможете мне закончить создание этой трудной для меня программки.
-
Как понял так и написал...
WAITMS(1) писать нет смысла, это почти то же самое как без задержки
start:
LCLICK(427,207)
WAIT(3)
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
$check = 1
WAITMS(1)
KEYPRESS(#w)
Else
WAITMS(50)
END_IF
END_CYC
//Сюда нужно поиск заданного цвета пикселя, если найдет тот который нужно, прервала роботу циклов которые идут дальше и начала новые совсем. Который начинается с клика в заданную область (область отличается от расположения искомого пикселя). Если такого цвета нету, выполняются следующие команды.
GETSCREEN
IF_PIXEL_IN(0,0, 600,600, 255)
GOTO(start) // переход к метке START
WAITMS(500)
END_IF
//Вот сюда нужно сделать так что бы программа искала заданный цвет пикселя и если находит, то выполняются следующие команды. А если цвет изменился, выполнила нажатие клавиши (какой я сам напишу потом).
GETSCREEN
IF_PIXEL_IN(0,0, 600,600, 255)
Else
KEYPRESS(#A) // нажатие клавиши
WAITMS(500)
END_IF
WAIT(6)
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
$check = 1
WAITMS(1)
KEYPRESS(#e)
Else
WAITMS(50)
END_IF
END_CYC
WAIT(6)
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
$check = 1
WAITMS(1)
KEYPRESS(#w)
Else
WAITMS(50)
END_IF
END_CYC
WAIT(6)
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
$check = 1
WAITMS(1)
KEYPRESS(#q)
Else
WAITMS(50)
END_IF
END_CYC
WAIT(6)
KEYPRESS(#3)
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
$check = 1
WAITMS(1)
KEYPRESS(#e)
Else
WAITMS(50)
END_IF
END_CYC
-
Спасибо, это работает отлично, так как мне и нужно.
//Сюда нужно поиск заданного цвета пикселя, если найдет тот который нужно, прервала роботу циклов которые идут дальше и начала новые совсем. Который начинается с клика в заданную область (область отличается от расположения искомого пикселя). Если такого цвета нету, выполняются следующие команды.
GETSCREEN
IF_PIXEL_IN(0,0, 600,600, 255)
GOTO(start) // переход к метке START
WAITMS(500)
END_IF
А вот это:
//Вот сюда нужно сделать так что бы программа искала заданный цвет пикселя и если находит, то выполняются следующие команды. А если цвет изменился, выполнила нажатие клавиши (какой я сам напишу потом).
GETSCREEN
IF_PIXEL_IN(0,0, 600,600, 255)
Else
KEYPRESS(#A) // нажатие клавиши
WAITMS(500)
END_IF
Получается как только к этому доходит очередь, оно нажимает клавишу А в любом случае. Обьясню подробней что именно мне нужно:
GETSCREEN
IF_PIXEL_IN(0,0, 600,600, 255) // К примеру, если находит цвет 255, то нужно что бы следующим действием было начало цикла "удар"(ниже написано, что я имел ввиду под "удар") и KEYPRESS(#A) не выполнялось. А если не находит цвет 255, то выполнить KEYPRESS(#A), а потом "удар"
Else
KEYPRESS(#A) // нажатие клавиши
WAITMS(500)
END_IF
//То что под этим комментарием назовем "удар"
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
$check = 1
KEYPRESS(#w)
Else
WAITMS(50)
END_IF
END_CYC
-
Объясню и тебе смысл "Else"
GETSCREEN
IF_PIXEL_IN(0,0, 600,600, 255)
// вот здесь код выполнится если пиксел найден
Else
// а здесь если пиксел не найден!!!
KEYPRESS(#A) // нажатие клавиши
WAITMS(500)
END_IF
так что ты ищешь неверный цвет
-
Действительно, сменил цвет и заработало. А можно сделать так:
GETSCREEN
// создать лог файл в который будут вносится все нажатые клавиши во время роботы программы
IF_PIXEL_IN(203,140, 208,146, 896)
Else
KEYPRESS(#4) // перед тем как нажать 4, открыть лог, проверить не нажималась ли 4 раньше, если нет, то нажать 4. Если нажималось, то пропустить.
Else
KEYPRESS(#5) // перед тем как нажать 5, открыть лог, проверить не нажималась ли 5 раньше, если нет, то нажать 5. Если нажималось, то пропустить.
Else,
KEYPRESS(#6) // перед тем как нажать 6, открыть лог, проверить не нажималась ли 6 раньше, если нет, то нажать 6. Если нажималось, то пропустить.
WAITMS(500)
END_IF
Тоисть за один цикл всей написанной программы можно только по 1 разу нажимать 4,5,6. А еще можно сделать что-то вот такое:
GETSCREEN
IF_PIXEL_IN(375,322,389,331,3969279)
GOTO(test.txt) // в файле test.txt написан цикл который нужно выполнить.
WAITMS(500)
END_IF
На сколько, если так можно сделать, это замедлит роботу программы?
-
В каждом условии допускается только одно Else!
Все это решается через серию условий и регулирующие их работу переменных.
IF(($check_4 = 1) & ($check_5 = 1) & ($check_6 = 1)) // если все клавиши были нажаты, сброс значений переменных
$check_4 = 0
$check_5 = 0
$check_6 = 0
END_IF
GETSCREEN
IF_PIXEL_IN(203,140, 208,146, 896)
Else
IF($check_4 = 0) // нажатие 4 если еще не нажималась
$check_4 = 1
KEYPRESS(#4)
WAITMS(500)
Else
IF($check_5 = 0) // нажатие 5 если еще не нажималась
$check_5 = 1
KEYPRESS(#5)
WAITMS(500)
Else
IF($check_6 = 0) // нажатие 6 если еще не нажималась
$check_6 = 1
KEYPRESS(#6)
WAITMS(500)
END_IF
END_IF
END_IF
END_IF
-
Все работает отлично. А можно сделать так:
start:
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
$check = 1
KEYPRESS(#w) // Что бы после того как нажатие этой кнопки, в этом цикле будет произведенно 10 раз, выполнить еще несколько кликов мишкой в заданные точки? И дальше продолжать без кликов еще 10 раз, и так 3 раза нужно.
GOTO(start)
Else
WAITMS(50)
END_IF
END_CYC
Это только пример, в программе там все немножко иначе, но смысл тот же.
-
Зачем GOTO(start) это бессмысленно
$check = 1
WHILE($check < 31)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
KEYPRESS(#w)
WAITMS(500)
// несколько кликов мышкой в заданные точки
IF(($check = 10) | ($check = 20) | ($check = 30))
LCLICK(10,10)
WAITMS(500)
LCLICK(10,10)
WAITMS(500)
LCLICK(10,10)
WAITMS(500)
END_IF
INC($check,1) //наращиваем переменную
Else
WAITMS(50)
END_IF
END_CYC
-
Я же говорил что это пример, в общем вот моя программа:
// активируем окно флеш
LCLICK(427,207)
WAITMS(500)
start:
// проверка закончен ли бой
GETSCREEN
IF_PIXEL_IN(375,322,389,331,3969279)
GOTO(finish) // переход к метке finish
WAITMS(500)
END_IF
WAITMS(300)
// проверка ХП
IF(($check_2 = 1) & ($check_3 = 1) & ($check_4 = 1) & ($check_5 = 1) & ($check_6 = 1)) // если все клавиши были нажаты, сброс значений переменных
$check_2 = 0
$check_3 = 0
$check_4 = 0
$check_5 = 0
$check_6 = 0
END_IF
GETSCREEN
IF_PIXEL_IN(203,140, 208,146, 896)
Else
IF($check_2 = 0) // нажатие 2 если еще не нажималась
$check_2 = 1
KEYPRESS(#2)
WAITMS(500)
Else
IF($check_3 = 0) // нажатие 3 если еще не нажималась
$check_3 = 1
KEYPRESS(#3)
WAITMS(500)
Else
IF($check_4 = 0) // нажатие 4 если еще не нажималась
$check_4 = 1
KEYPRESS(#4)
WAITMS(500)
Else
IF($check_5 = 0) // нажатие 5 если еще не нажималась
$check_5 = 1
KEYPRESS(#5)
WAITMS(500)
Else
IF($check_6 = 0) // нажатие 6 если еще не нажималась
$check_6 = 1
KEYPRESS(#6)
WAITMS(500)
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
// удар вперед
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
$check = 1
KEYPRESS(#w)
Else
WAITMS(50)
END_IF
END_CYC
WAIT(5)
// проверка закончен ли бой
GETSCREEN
IF_PIXEL_IN(375,322,389,331,3969279)
GOTO(finish) // переход к метке finish
WAITMS(500)
END_IF
WAIT(1)
// проверка ХП
IF(($check_2 = 1) & ($check_3 = 1) & ($check_4 = 1) & ($check_5 = 1) & ($check_6 = 1)) // если все клавиши были нажаты, сброс значений переменных
$check_2 = 0
$check_3 = 0
$check_4 = 0
$check_5 = 0
$check_6 = 0
END_IF
GETSCREEN
IF_PIXEL_IN(203,140, 208,146, 896)
Else
IF($check_2 = 0) // нажатие 2 если еще не нажималась
$check_2 = 1
KEYPRESS(#2)
WAITMS(500)
Else
IF($check_3 = 0) // нажатие 3 если еще не нажималась
$check_3 = 1
KEYPRESS(#3)
WAITMS(500)
Else
IF($check_4 = 0) // нажатие 4 если еще не нажималась
$check_4 = 1
KEYPRESS(#4)
WAITMS(500)
Else
IF($check_5 = 0) // нажатие 5 если еще не нажималась
$check_5 = 1
KEYPRESS(#5)
WAITMS(500)
Else
IF($check_6 = 0) // нажатие 6 если еще не нажималась
$check_6 = 1
KEYPRESS(#6)
WAITMS(500)
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
// удар вниз
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
$check = 1
KEYPRESS(#e)
Else
WAITMS(50)
END_IF
END_CYC
WAIT(5)
// проверка закончен ли бой
GETSCREEN
IF_PIXEL_IN(375,322,389,331,3969279)
GOTO(finish) // переход к метке finish
WAITMS(500)
END_IF
WAIT(1)
// проверка ХП
IF(($check_2 = 1) & ($check_3 = 1) & ($check_4 = 1) & ($check_5 = 1) & ($check_6 = 1)) // если все клавиши были нажаты, сброс значений переменных
$check_2 = 0
$check_3 = 0
$check_4 = 0
$check_5 = 0
$check_6 = 0
END_IF
GETSCREEN
IF_PIXEL_IN(203,140, 208,146, 896)
Else
IF($check_2 = 0) // нажатие 2 если еще не нажималась
$check_2 = 1
KEYPRESS(#2)
WAITMS(500)
Else
IF($check_3 = 0) // нажатие 3 если еще не нажималась
$check_3 = 1
KEYPRESS(#3)
WAITMS(500)
Else
IF($check_4 = 0) // нажатие 4 если еще не нажималась
$check_4 = 1
KEYPRESS(#4)
WAITMS(500)
Else
IF($check_5 = 0) // нажатие 5 если еще не нажималась
$check_5 = 1
KEYPRESS(#5)
WAITMS(500)
Else
IF($check_6 = 0) // нажатие 6 если еще не нажималась
$check_6 = 1
KEYPRESS(#6)
WAITMS(500)
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
// удар вперед
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
$check = 1
KEYPRESS(#w)
Else
WAITMS(50)
END_IF
END_CYC
WAIT(5)
// проверка закончен ли бой
GETSCREEN
IF_PIXEL_IN(375,322,389,331,3969279)
GOTO(finish) // переход к метке finish
WAITMS(500)
END_IF
WAIT(1)
// проверка ХП
IF(($check_2 = 1) & ($check_3 = 1) & ($check_4 = 1) & ($check_5 = 1) & ($check_6 = 1)) // если все клавиши были нажаты, сброс значений переменных
$check_2 = 0
$check_3 = 0
$check_4 = 0
$check_5 = 0
$check_6 = 0
END_IF
GETSCREEN
IF_PIXEL_IN(203,140, 208,146, 896)
Else
IF($check_2 = 0) // нажатие 2 если еще не нажималась
$check_2 = 1
KEYPRESS(#2)
WAITMS(500)
Else
IF($check_3 = 0) // нажатие 3 если еще не нажималась
$check_3 = 1
KEYPRESS(#3)
WAITMS(500)
Else
IF($check_4 = 0) // нажатие 4 если еще не нажималась
$check_4 = 1
KEYPRESS(#4)
WAITMS(500)
Else
IF($check_5 = 0) // нажатие 5 если еще не нажималась
$check_5 = 1
KEYPRESS(#5)
WAITMS(500)
Else
IF($check_6 = 0) // нажатие 6 если еще не нажималась
$check_6 = 1
KEYPRESS(#6)
WAITMS(500)
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
// удар вверх
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
$check = 1
KEYPRESS(#q)
Else
WAITMS(50)
END_IF
END_CYC
WAIT(5)
// проверка закончен ли бой
GETSCREEN
IF_PIXEL_IN(375,322,389,331,3969279)
GOTO(finish) // переход к метке finish
WAITMS(500)
END_IF
WAIT(1)
// проверка ХП
IF(($check_2 = 1) & ($check_3 = 1) & ($check_4 = 1) & ($check_5 = 1) & ($check_6 = 1)) // если все клавиши были нажаты, сброс значений переменных
$check_2 = 0
$check_3 = 0
$check_4 = 0
$check_5 = 0
$check_6 = 0
END_IF
GETSCREEN
IF_PIXEL_IN(203,140, 208,146, 896)
Else
IF($check_2 = 0) // нажатие 2 если еще не нажималась
$check_2 = 1
KEYPRESS(#2)
WAITMS(500)
Else
IF($check_3 = 0) // нажатие 3 если еще не нажималась
$check_3 = 1
KEYPRESS(#3)
WAITMS(500)
Else
IF($check_4 = 0) // нажатие 4 если еще не нажималась
$check_4 = 1
KEYPRESS(#4)
WAITMS(500)
Else
IF($check_5 = 0) // нажатие 5 если еще не нажималась
$check_5 = 1
KEYPRESS(#5)
WAITMS(500)
Else
IF($check_6 = 0) // нажатие 6 если еще не нажималась
$check_6 = 1
KEYPRESS(#6)
WAITMS(500)
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
// юзаем вамп
KEYPRESS(#1)
//удар вниз
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
$check = 1
KEYPRESS(#e)
WAIT(1)
GOTO(start) // последний удар ВЖК и возврат в начало цикла.
Else
WAITMS(50)
END_IF
END_CYC
// Если бой закончен
finish:
LCLICK(881,135)
WAIT(3)
LCLICK(275,205)
Вроде все правильно или можно всего этого добиться меньшим количеством циклов?
-
Вроде все правильно или можно всего этого добиться меньшим количеством циклов?
Не читал ничего про подпрограммы? Почитай. Куча одинаковых блоков, от которых в глазах рябит.
-
Повторяющийся код для компактности можно засунуть в СУБПРОГРАММУ. Следует помнить что из SUBa выпрыгивать по GOTO не рекомендовано.
// активируем окно флеш
LCLICK(427,207)
WAITMS(500)
start:
// проверка закончен ли бой
GETSCREEN
IF_PIXEL_IN(375,322,389,331,3969279)
GOTO(finish) // переход к метке finish
WAITMS(500)
END_IF
WAITMS(300)
// проверка ХП
GOSUB(XP)
// удар вперед
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
$check = 1
KEYPRESS(#w)
Else
WAITMS(50)
END_IF
END_CYC
WAIT(5)
// проверка закончен ли бой
GETSCREEN
IF_PIXEL_IN(375,322,389,331,3969279)
GOTO(finish) // переход к метке finish
WAITMS(500)
END_IF
WAIT(1)
// проверка ХП
GOSUB(XP)
// удар вниз
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
$check = 1
KEYPRESS(#e)
Else
WAITMS(50)
END_IF
END_CYC
WAIT(5)
// проверка закончен ли бой
GETSCREEN
IF_PIXEL_IN(375,322,389,331,3969279)
GOTO(finish) // переход к метке finish
WAITMS(500)
END_IF
WAIT(1)
// проверка ХП
GOSUB(XP)
// удар вперед
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
$check = 1
KEYPRESS(#w)
Else
WAITMS(50)
END_IF
END_CYC
WAIT(5)
// проверка закончен ли бой
GETSCREEN
IF_PIXEL_IN(375,322,389,331,3969279)
GOTO(finish) // переход к метке finish
WAITMS(500)
END_IF
WAIT(1)
// проверка ХП
GOSUB(XP)
// удар вверх
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
$check = 1
KEYPRESS(#q)
Else
WAITMS(50)
END_IF
END_CYC
WAIT(5)
// проверка закончен ли бой
GETSCREEN
IF_PIXEL_IN(375,322,389,331,3969279)
GOTO(finish) // переход к метке finish
WAITMS(500)
END_IF
WAIT(1)
// проверка ХП
GOSUB(XP)
// юзаем вамп
KEYPRESS(#1)
//удар вниз
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
$check = 1
KEYPRESS(#e)
WAIT(1)
GOTO(start) // последний удар ВЖК и возврат в начало цикла.
Else
WAITMS(50)
END_IF
END_CYC
// Если бой закончен
finish:
LCLICK(881,135)
WAIT(3)
LCLICK(275,205)
SUB(XP)
// проверка ХП
IF(($check_2 = 1) & ($check_3 = 1) & ($check_4 = 1) & ($check_5 = 1) & ($check_6 = 1)) // если все клавиши были нажаты, сброс значений переменных
$check_2 = 0
$check_3 = 0
$check_4 = 0
$check_5 = 0
$check_6 = 0
END_IF
GETSCREEN
IF_PIXEL_IN(203,140, 208,146, 896)
Else
IF($check_2 = 0) // нажатие 2 если еще не нажималась
$check_2 = 1
KEYPRESS(#2)
WAITMS(500)
Else
IF($check_3 = 0) // нажатие 3 если еще не нажималась
$check_3 = 1
KEYPRESS(#3)
WAITMS(500)
Else
IF($check_4 = 0) // нажатие 4 если еще не нажималась
$check_4 = 1
KEYPRESS(#4)
WAITMS(500)
Else
IF($check_5 = 0) // нажатие 5 если еще не нажималась
$check_5 = 1
KEYPRESS(#5)
WAITMS(500)
Else
IF($check_6 = 0) // нажатие 6 если еще не нажималась
$check_6 = 1
KEYPRESS(#6)
WAITMS(500)
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_SUB
-
Обьясни пожалуйста почему у меня в GOSUB(vozd) не корректно работает INC($check,1), тоисть, первый раз переменная равна 0, как и должно, второй и последующие переменная равна 1, почему не нарастает?
WAIT(1)
LCLICK(56,471) // переключатель слотов 2
WAIT(1)
LCLICK(34,261) // Гиг
WAIT(1)
LCLICK(1021,290) // выделение моба
WAIT(1)
LCLICK(15,470) // переключатель слотов 1
WAITMS(500)
LCLICK(420,267) // активация флеш окна
WAITMS(500)
start:
// проверка закончен ли бой
GETSCREEN
IF_PIXEL_IN(375,322,389,331,3969279)
GOTO(finish) // переход к метке finish
WAITMS(500)
END_IF
WAITMS(300)
// проверка ХП
GOSUB(XP)
// Цикл для использования воздаяния
GOSUB(vozd)
// удар вперед
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
$check = 1
KEYPRESS(#w)
Else
WAITMS(50)
END_IF
END_CYC
WAIT(2)
// проверка закончен ли бой
GETSCREEN
IF_PIXEL_IN(375,322,389,331,3969279)
GOTO(finish) // переход к метке finish
WAITMS(500)
END_IF
// проверка ХП
GOSUB(XP)
// удар вниз
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
$check = 1
KEYPRESS(#e)
Else
WAITMS(50)
END_IF
END_CYC
WAIT(2)
// проверка закончен ли бой
GETSCREEN
IF_PIXEL_IN(375,322,389,331,3969279)
GOTO(finish) // переход к метке finish
WAITMS(500)
END_IF
// проверка ХП
GOSUB(XP)
// удар вперед
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
$check = 1
KEYPRESS(#w)
Else
WAITMS(50)
END_IF
END_CYC
WAIT(2)
// проверка закончен ли бой
GETSCREEN
IF_PIXEL_IN(375,322,389,331,3969279)
GOTO(finish) // переход к метке finish
WAITMS(500)
END_IF
// проверка ХП
GOSUB(XP)
// удар вверх
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
$check = 1
KEYPRESS(#q)
Else
WAITMS(50)
END_IF
END_CYC
WAIT(2)
// проверка закончен ли бой
GETSCREEN
IF_PIXEL_IN(375,322,389,331,3969279)
GOTO(finish) // переход к метке finish
WAITMS(500)
END_IF
// проверка ХП
GOSUB(XP)
// юзаем вамп
KEYPRESS(#1)
//удар вниз
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
$check = 1
KEYPRESS(#e)
Else
WAITMS(50)
END_IF
END_CYC
GOTO(start) // последний удар ВЖК и возврат в начало цикла.
SUB(XP)
// проверка ХП
IF(($check_2 = 1) & ($check_3 = 1) & ($check_4 = 1) & ($check_5 = 1) & ($check_6 = 1)) // если все клавиши были нажаты, сброс значений переменных
$check_2 = 0
$check_3 = 0
$check_4 = 0
$check_5 = 0
$check_6 = 0
END_IF
GETSCREEN
IF_PIXEL_IN(203,140, 208,146, 896)
Else
IF($check_2 = 0) // нажатие 2 если еще не нажималась
$check_2 = 1
KEYPRESS(#2)
WAITMS(300)
Else
IF($check_3 = 0) // нажатие 3 если еще не нажималась
$check_3 = 1
KEYPRESS(#3)
WAITMS(300)
Else
IF($check_4 = 0) // нажатие 4 если еще не нажималась
$check_4 = 1
KEYPRESS(#4)
WAITMS(300)
Else
IF($check_5 = 0) // нажатие 5 если еще не нажималась
$check_5 = 1
KEYPRESS(#5)
WAITMS(300)
Else
IF($check_6 = 0) // нажатие 6 если еще не нажималась
$check_6 = 1
KEYPRESS(#6)
WAITMS(300)
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_SUB
// Если бой закончен
finish:
LCLICK(881,135)
WAIT(3)
LCLICK(275,205)
// Цикл для использования воздаяния
SUB(vozd)
WAIT(2)
WHILE($check < 100)
IF(($check = 0) | ($check = 2) | ($check = 4) // если верно, выполняется
LOGWRITE("Переменная: ", $check)
LOGWRITE("юзает воздаяние ")
LCLICK(56,471) // переключатель слотов 2
WAITMS(750)
LCLICK(33,219) // воздаяние
WAITMS(750)
LCLICK(15,470) // переключатель слотов 1
WAITMS(750)
LCLICK(420,267) // активация флеш окна
WAITMS(500)
INC($check,1)
Else
LOGWRITE("Переменная: ", $check)
LOGWRITE("не юзает")
INC($check,1)
END_IF
END_SUB
-
Как ты сам правильно заметил, после строки 226 нет END_CYC
И если у тебя INC($check,1) происходит в любом случае, вынеси его за IF? зачем писать 2 раза. А ещё правильней вместо WHILE использовать цикл FOR
-
Ошибка 1
Состовные условия должны иметь внутренние и внешние скобки
IF ( ($check = 0) | ($check = 2) | ($check = 4) )
Ошибка 2
Цикл WHILE должен завершаться END_CYC
WAIT(1)
LCLICK(56,471) // переключатель слотов 2
WAIT(1)
LCLICK(34,261) // Гиг
WAIT(1)
LCLICK(1021,290) // выделение моба
WAIT(1)
LCLICK(15,470) // переключатель слотов 1
WAITMS(500)
LCLICK(420,267) // активация флеш окна
WAITMS(500)
start:
// проверка закончен ли бой
GETSCREEN
IF_PIXEL_IN(375,322,389,331,3969279)
GOTO(finish) // переход к метке finish
WAITMS(500)
END_IF
WAITMS(300)
// проверка ХП
GOSUB(XP)
// Цикл для использования воздаяния
GOSUB(vozd)
// удар вперед
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
$check = 1
KEYPRESS(#w)
Else
WAITMS(50)
END_IF
END_CYC
WAIT(2)
// проверка закончен ли бой
GETSCREEN
IF_PIXEL_IN(375,322,389,331,3969279)
GOTO(finish) // переход к метке finish
WAITMS(500)
END_IF
// проверка ХП
GOSUB(XP)
// удар вниз
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
$check = 1
KEYPRESS(#e)
Else
WAITMS(50)
END_IF
END_CYC
WAIT(2)
// проверка закончен ли бой
GETSCREEN
IF_PIXEL_IN(375,322,389,331,3969279)
GOTO(finish) // переход к метке finish
WAITMS(500)
END_IF
// проверка ХП
GOSUB(XP)
// удар вперед
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
$check = 1
KEYPRESS(#w)
Else
WAITMS(50)
END_IF
END_CYC
WAIT(2)
// проверка закончен ли бой
GETSCREEN
IF_PIXEL_IN(375,322,389,331,3969279)
GOTO(finish) // переход к метке finish
WAITMS(500)
END_IF
// проверка ХП
GOSUB(XP)
// удар вверх
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
$check = 1
KEYPRESS(#q)
Else
WAITMS(50)
END_IF
END_CYC
WAIT(2)
// проверка закончен ли бой
GETSCREEN
IF_PIXEL_IN(375,322,389,331,3969279)
GOTO(finish) // переход к метке finish
WAITMS(500)
END_IF
// проверка ХП
GOSUB(XP)
// юзаем вамп
KEYPRESS(#1)
//удар вниз
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698)
$check = 1
KEYPRESS(#e)
Else
WAITMS(50)
END_IF
END_CYC
GOTO(start) // последний удар ВЖК и возврат в начало цикла.
SUB(XP)
// проверка ХП
IF(($check_2 = 1) & ($check_3 = 1) & ($check_4 = 1) & ($check_5 = 1) & ($check_6 = 1)) // если все клавиши были нажаты, сброс значений переменных
$check_2 = 0
$check_3 = 0
$check_4 = 0
$check_5 = 0
$check_6 = 0
END_IF
GETSCREEN
IF_PIXEL_IN(203,140, 208,146, 896)
Else
IF($check_2 = 0) // нажатие 2 если еще не нажималась
$check_2 = 1
KEYPRESS(#2)
WAITMS(300)
Else
IF($check_3 = 0) // нажатие 3 если еще не нажималась
$check_3 = 1
KEYPRESS(#3)
WAITMS(300)
Else
IF($check_4 = 0) // нажатие 4 если еще не нажималась
$check_4 = 1
KEYPRESS(#4)
WAITMS(300)
Else
IF($check_5 = 0) // нажатие 5 если еще не нажималась
$check_5 = 1
KEYPRESS(#5)
WAITMS(300)
Else
IF($check_6 = 0) // нажатие 6 если еще не нажималась
$check_6 = 1
KEYPRESS(#6)
WAITMS(300)
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_SUB
// Если бой закончен
finish:
LCLICK(881,135)
WAIT(3)
LCLICK(275,205)
// Цикл для использования воздаяния
SUB(vozd)
WAIT(2)
WHILE($check < 100)
IF(($check = 0) | ($check = 2) | ($check = 4)) // если верно, выполняется
LOGWRITE("Переменная: ", $check)
LOGWRITE("юзает воздаяние ")
LCLICK(56,471) // переключатель слотов 2
WAITMS(750)
LCLICK(33,219) // воздаяние
WAITMS(750)
LCLICK(15,470) // переключатель слотов 1
WAITMS(750)
LCLICK(420,267) // активация флеш окна
WAITMS(500)
INC($check,1)
Else
LOGWRITE("Переменная: ", $check)
LOGWRITE("не юзает")
INC($check,1)
END_IF
END_CYC
END_SUB
-
Ребят, а можно сделать что бы 2 цикла программы выполнялись одновременно? То есть, мне нужно что бы на протяжении всей той программы которую я выложил, выполнялся цикл с поиском цвета пикселя, если цвет появится такой как нужно, программа должна прерваться на любом этапе выполнения и перейти к новым задачам. А то сейчас после каждого цикла писать это действие нереально, программа будет медленно тогда работать( на поиски надо минимум 2 сек, а это много уже для меня.
-
Ну скажите хоть из WHILE можно выпрыгивать в LOAD или это тоже приведет к ошибке так же как и с GOTO ?
-
Ребят, а можно сделать что бы 2 цикла программы выполнялись одновременно? То есть, мне нужно что бы на протяжении всей той программы которую я выложил, выполнялся цикл с поиском цвета пикселя, если цвет появится такой как нужно, программа должна прерваться на любом этапе выполнения и перейти к новым задачам. А то сейчас после каждого цикла писать это действие нереально, программа будет медленно тогда работать( на поиски надо минимум 2 сек, а это много уже для меня.
убавь площадь поиска до минимума + цветокорреция
Ну скажите хоть из WHILE можно выпрыгивать в LOAD или это тоже приведет к ошибке так же как и с GOTO ?
можно, загружает сценарий и вьіполняет его
-
У меня выходит бред какой-то, нужно сделать так:
SUB(vpered)
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698) // Что бы искало не более 45 сек, если в течении 45 сек не было найдено выполнить команду GOTO(x).
$check = 1
KEYPRESS(#w)
Else
WAITMS(50)
END_IF
END_CYC
END_SUB
Через шаблон с WHILE не подходит, потому что мне нужно, если не найдет в течении 45 секунд, то приступит к последнему циклу в это программе, а не как с GOSUB выполнил и вернется заново туда же. Если без WHILE не обойтись, то пускай будет с ним, выскочу с помощью LOAD
-
У меня выходит бред какой-то, нужно сделать так:
SUB(vpered)
$check = 0
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698) // Что бы искало не более 45 сек, если в течении 45 сек не было найдено выполнить команду GOTO(x).
$check = 1
KEYPRESS(#w)
Else
WAITMS(50)
END_IF
END_CYC
END_SUB
Через шаблон с WHILE не подходит, потому что мне нужно, если не найдет в течении 45 секунд, то приступит к последнему циклу в это программе, а не как с GOSUB выполнил и вернется заново туда же. Если без WHILE не обойтись, то пускай будет с ним, выскочу с помощью LOAD
Если "делать правильно" то можно так:
SUB(vpered)
$check = 0
$time_wait = $_time_t+45 // 45 сек
WHILE(($check = 0) & ($time_wait > $_time_t))
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698) // Что бы искало не более 45 сек, если в течении 45 сек не было найдено выполнить команду GOTO(x).
$check = 1
KEYPRESS(#w)
Else
WAITMS(50)
END_IF
END_CYC
END_SUB
И там где вызываешь саб после вызова пишешь проверку и идёшь куда нужно (в пределах разумного)
GOSUB(vpered)
IF($check = 0)
GOTO(x)
END_IF
Если после твоего GOTO скоро будет завершение скрипта и скрипт не планируется эксплуатировать часами, можно забить и перейти сразу. Но это неправильно! Хоть ошибки не будет.
SUB(vpered)
$check = 0
$time_wait = $_time_t+45 // 45 сек
WHILE(($check = 0) & ($time_wait > $_time_t))
GETSCREEN
IF_PIXEL_IN (428,355, 439, 373, 2104698) // Что бы искало не более 45 сек, если в течении 45 сек не было найдено выполнить команду GOTO(x).
$check = 1
KEYPRESS(#w)
Else
WAITMS(50)
END_IF
END_CYC
IF($check = 0)
GOTO(x)
END_IF
END_SUB
-
Спасибо, сейчас попробую правильный и не правильный вариант)
-
Здравствуйте ребят, уже многому научился в этом кликере, сделал хороший скрипт, но случайно при сохранении другого, сохранил и заменил свой налаженный. Вот сам скрипт:
// Начало тела программы
IF($raduga = 0)
$time_raduga = $_time_t + 120
$raduga = 1
END_IF
GOSUB(napad)
body: // тело
LCLICK(422,268)
$usilok = 0 // для усилков
$var = 0 // для завершонки
$check_2 = 0
$check_3 = 0
$check_4 = 0
$check_5 = 0
$check_6 = 0
$banka = RND(4,8) // ожидание после юза банки
$time_end = 0 // на случай форс мажора
$check = 0 // присваиваем 0 чтобы цикл заработал
WHILE($check = 0)
GETSCREEN
IF_PIXEL_IN (473,414, 487,424, 145) // поиск круга удара
goSUB(XP)
// для использования усилков
GETSCREEN
IF_PIXEL_IN(584,234,587,236,122) // проверка хп монстра
INC($usilok,1)
INC($uz_usilok,1)
IF(($usilok > 0) & ($usilok < 6))
KEYPRESS(#1)
else
IF(($usilok > 5) & ($usilok < 11))
KEYPRESS(#2)
END_IF
END_IF
END_IF
if($key = 0) // условие для удара вперед
KEYPRESS(#w)
$key = 1
else
if($key = 1) // условие для удара вниз
KEYPRESS(#e)
$key = 0
END_IF
END_IF
WAIT(1) // ожидание после нажатия клавиши удара
Else
WAITMS(50)
GETSCREEN
IF_PICTURE_IN (450,400,530,433,"exit.bmp") // поиск окна "победы"
$check = 1 // при этом цикл боя не будет продолжаться
DBLCLICK(487,420) // нажатие на выход с боя
WAIT(1)
WHILE($var = 0)
GETSCREEN
IF_PIXEL_IN(85,256,87,258,11194089)
$var = 1
LCLICK(290,205) // Нажатие на вкладку завершонных боев
WAITMS(700)
else
WAITMS(50)
LCLICK(882,131) // нажатие на "Боя" в верхней панели
WAITMS(2000)
END_IF
END_CYC
END_IF
END_IF
END_CYC
// то что происходит когда выходит с боя
IF($time_raduga < $_time_t)
// Цикл для отчета
END_IF
LOAD("bot_raduga.cms")
//"ПОДПРОГРАММЫ"//
// проверка ХП
SUB(XP)
GETSCREEN
IF_PIXEL_IN(286,234,290,236, 54)
IF($check_2 = 0) // юз первой банки
$check_2 = 1
IF($_time_t > $time_xp) // проверка тайма банки
KEYPRESS(#3)
INC($uz_banok,1) // для отчета по количеству использованых банок
$time_xp = $_time_t + 21 // присваиваем тайм на использование банки
WAIT($banka) // ожидание после юза банки
END_IF
Else
IF($check_3 = 0) // юз второй банки
$check_3 = 1
IF($_time_t > $time_xp)
KEYPRESS(#4)
INC($uz_banok,1)
$time_xp = $_time_t + 21
WAIT($banka)
END_IF
Else
IF($check_4 = 0) // юз третей банки
$check_4 = 1
IF($_time_t > $time_xp)
KEYPRESS(#5)
INC($uz_banok,1)
$time_xp = $_time_t + 21
WAIT($banka)
END_IF
Else
IF($check_5 = 0) // юз 4й банки
$check_5 = 1
IF($_time_t > $time_xp)
KEYPRESS(#6)
INC($uz_banok,1)
$time_xp = $_time_t + 21
WAIT($banka)
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_SUB
// Поиск завершонки и нападение по ней
SUB(napad)
$if = 0
$list = 1
$ckic = RND(200,300) // промежуток между кликами на завершонку
napad:
GETSCREEN
IF_PIXEL_IN(473,414, 487,424, 145)
GOTO(body)
END_IF
WAIT(1)
GETSCREEN
IF_PICTURE_IN (124,186,290,554, "ник.bmp")
$x_min = $_return1
$y_min = $_return2 - 30
$x_max = $_return1 + 350
$y_max = $_return2 + 100
GETSCREEN
IF_PICTURE_IN ($x_min,$y_min,$x_max,$y_max, "мечь.bmp")
$time_end = $_time_t + 30 // если в течении 30 сек не нападает, значит збой программы и завершение.
WHILE(($if = 0) & ($time_end > $_time_t))
BEEP(1000,200)
move($_return1+6, $_return2+3)
WAITMS($ckic)
LCLICK($_return1+6, $_return2+3)
GETSCREEN
IF_PIXEL_IN(473,414, 487,424, 145) // поиск круга боя
$if = 1 // если найдет круг боя, начало боя.
END_IF
END_CYC
IF($if = 1)
GOTO(body) // переход к началу боя
END_IF
END_IF
else
LCLICK(86,337)
WAITMS(100)
WHEELDOWN (3)
WAITMS(500)
END_IF
GETSCREEN
IF_PIXEL_IN(473,414, 487,424, 145)
GOTO(body)
END_IF
GETSCREEN
IF_PICTURE_IN (124,186,290,554, "ник.bmp")
$x_min = $_return1
$y_min = $_return2 - 30
$x_max = $_return1 + 350
$y_max = $_return2 + 100
GETSCREEN
IF_PICTURE_IN ($x_min,$y_min,$x_max,$y_max, "мечь.bmp")
$time_end = $_time_t + 30 // если в течении 30 сек не нападает, значит збой программы и завершение.
WHILE(($if = 0) & ($time_end > $_time_t))
move($_return1+6, $_return2+3)
WAITMS($ckic)
LCLICK($_return1+6, $_return2+3)
GETSCREEN
IF_PIXEL_IN(473,414, 487,424, 145) // поиск круга боя
$if = 1 // если найдет круг боя, начало боя.
END_IF
END_CYC
IF($if = 1)
GOTO(body) // переход к началу боя
END_IF
END_IF
else
LCLICK(86,337)
WAITMS(100)
WHEELDOWN (3)
WAITMS(500)
END_IF
GETSCREEN
IF_PICTURE_IN (124,186,290,554, "ник.bmp")
$x_min = $_return1
$y_min = $_return2 - 30
$x_max = $_return1 + 350
$y_max = $_return2 + 100
GETSCREEN
IF_PICTURE_IN ($x_min,$y_min,$x_max,$y_max, "мечь.bmp")
$time_end = $_time_t + 30 // если в течении 30 сек не нападает, значит збой программы и завершение.
WHILE(($if = 0) & ($time_end > $_time_t))
move($_return1+6, $_return2+3)
WAITMS($ckic)
LCLICK($_return1+6, $_return2+3)
GETSCREEN
IF_PIXEL_IN(473,414, 487,424, 145) // поиск круга боя
$if = 1 // если найдет круг боя, начало боя.
END_IF
END_CYC
IF($if = 1)
GOTO(body) // переход к началу боя
END_IF
END_IF
else
LCLICK(86,337)
WAITMS(100)
WHEELUP(6)
WAITMS(500)
END_IF
WAITMS(500)
IF($list = 1)
$list = 2
LCLICK(176,275)
WAITMS(600)
goto(napad)
Else
IF($list = 2)
$list = 3
LCLICK(196,275)
WAITMS(600)
goto(napad)
Else
IF($list = 3)
$list = 4
LCLICK(216,276)
WAITMS(600)
goto(napad)
Else
IF($list = 4)
$list = 5
LCLICK(236,275)
WAITMS(600)
goto(napad)
Else
IF($list = 5)
$list = 1
LCLICK(256,275)
WAITMS(600)
goto(napad)
END_IF
END_IF
END_IF
END_IF
END_IF
END_SUB
Вот смотрите в начале есть цикл WHILE в котором есть GOSUB(XP), вот когда уровень хп первый раз опускается до того как пиксель изменит цвет, выполняется использование банки жизни и дальше все идет бой, НО вот когда уровень хп снова опускается до уровня когда нужно использовать банку, оно почему-то ничего не использует, а попросту игнорирует и дальше выполняются удары. Раньше работало отлично, но саб этот был не внутри цикла WHILE, думаю это не может быть проблемой. Посмотрите, может где-то ошибку сделал, а то сам вроде никаких ошибок не вижу.
-
А тайм на использование банки $time_xp действительно один для всех?
Просто после использования первой у тебя на 21 секунду блокируются все по времени.
При этом по номерам он их пробегает и тратит чеки :)
$check с 3 по 5. После чего он уже ничего не использует даже по истечении 21 сек.
Я не знаю какая логика программы, но тут либо чекам присваиваться 1 должно внутри Ифа по времени.
Либо если одно время на всех IF с проверкой времени должен идти снаружи, а не внутри.
И да, после использования четвёртой не нужно их опять все включать?
-
А тайм на использование банки $time_xp действительно один для всех?
Да, тайм 1 на всех. Когда 1 раз использует банку, то в течении 20 сек нельзя использовать еще.
$check с 3 по 5. После чего он уже ничего не использует даже по истечении 21 сек
Вот после того как проходит 21 секунда и уровень хп опускается до нужного, цвет пикселя меняет цвет на нужный для программы, оно все равно не выполняет, не понимаю почему, вить условия все подходят
Вот сейчас попробую вынести проверку времени в самое начало, сразу же после поиска цвета, надеюсь все получится.
-
Да, тайм 1 на всех. Когда 1 раз использует банку, то в течении 20 сек нельзя использовать еще.
Тогда нужно вынести проверку времени на верхний уровень.
Вот после того как проходит 21 секунда и уровень хп опускается до нужного, цвет пикселя меняет цвет на нужный для программы, оно все равно не выполняет, не понимаю почему, вить условия все подходят
Вот сейчас попробую вынести проверку времени в самое начало, сразу же после поиска цвета, надеюсь все получится.
потому, что $check_3, $check_4, $check_5 у тебя уже 1 и не дают выполняться условию.
-
Спасибо Vint, разобрался, работает))
-
Вот уже примерно недельку ломаю голову на этим:
Нужно организовать поиск изображения которое может быть повернуто на все 180 градусов, подробнее дальше.
Есть картинка, http://pixs.ru/showimage/Bezimyanni_9183221_9576777.png (http://pixs.ru/showimage/Bezimyanni_9183221_9576777.png), на ней 2 камня. Вот эти камешки и есть то изображение которое нужно искать, но камешек этот может появится на экране не так как я его сохранил принт-скрином, а с поворотом на 0-180 градусов. Есть какие-то мысли по этому поводу? Пока у меня лишь 1 вариант, сохранить камешек и в фотошопе сделать все версии этого камешка, то есть 180 картинок, ну думаю долго перебирать будет, да и сделать такую кучу картинок муторное дело.
-
Ох и как же кликерманщики обходились раньше одной только функцией IF_PIXEL_IN???!!!
Тебе надо искать цвет пикселов из этого камня. Подобрать их поможет Unique Colors Search
http://crapware.aidf.org/forum/index.php?topic=42.msg572#msg572
Ну и цветокоррекция тоже приветствуется.
-
Охренеть вы тут развернули сценарий...) Очень поучительно было бы для многих, если бы в таких темах объяснялись команды, как в случае с "Else".
Объясню и тебе смысл "Else"
GETSCREEN
IF_PIXEL_IN(0,0, 600,600, 255)
// вот здесь код выполнится если пиксел найден
Else
// а здесь если пиксел не найден!!!
KEYPRESS(#A) // нажатие клавиши
WAITMS(500)
END_IF
Я, например, хоть понял, что это за команда, благодаря этой теме...)
-
А можно ли как нибуть сделать ожидание появления картинки, как вот есть для появления пикселя?
GETSCREEN
WHILE(PXL (100, 100) ! 255)
WAITMS (100)
GETSCREEN
END_CYC
А то варианты типа:
WHILE($var = 0)
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "somefile.bmp")
print("Найден в координатах X=", $_return1, ", Y=", $_return2)
LCLICK($_return1, $_return2)
$var = 1
else
waitms(50)
END_IF
END_CYC
надоели тем, что очень много переменных и путаешься если в комментариях не пишешь сразу для чего данная переменная
-
А можно ли как нибуть сделать ожидание появления картинки, как вот есть для появления пикселя?
GETSCREEN
WHILE(PXL (100, 100) ! 255)
WAITMS (100)
GETSCREEN
END_CYC
А то варианты типа:
WHILE($var = 0)
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "somefile.bmp")
print("Найден в координатах X=", $_return1, ", Y=", $_return2)
LCLICK($_return1, $_return2)
$var = 1
else
waitms(50)
END_IF
END_CYC
надоели тем, что очень много переменных и путаешься если в комментариях не пишешь сразу для чего данная переменная
]
nachalo:
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "somefile.bmp")
print("Найден в координатах X=", $_return1, ", Y=", $_return2)
LCLICK($_return1, $_return2)
goto(dalshe)
else
waitms(50)
goto(nachalo)
END_IF
dalshe:
мои любимые goto )))
ps. сори за отступы, редактировал на бегу)
-
А можно ли как нибуть сделать ожидание появления картинки, как вот есть для появления пикселя?
GETSCREEN
WHILE(PXL (100, 100) ! 255)
WAITMS (100)
GETSCREEN
END_CYC
А то варианты типа:
WHILE($var = 0)
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "somefile.bmp")
print("Найден в координатах X=", $_return1, ", Y=", $_return2)
LCLICK($_return1, $_return2)
$var = 1
else
waitms(50)
END_IF
END_CYC
надоели тем, что очень много переменных и путаешься если в комментариях не пишешь сразу для чего данная переменная
nachalo:
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "somefile.bmp")
print("Найден в координатах X=", $_return1, ", Y=", $_return2)
LCLICK($_return1, $_return2)
goto(dalshe)
else
waitms(50)
goto(nachalo)
END_IF
dalshe:
мои любимые goto )))
ps. сори за отступы, редактировал на бегу)
И в чём сокральный смысл такой экономии?
Сэкономил переменную "$var" но ввёл две метки "dalshe:" и "nachalo:", поменял шило на мыло попутно нафиг разломав стройный и понятный порядок выполнения. При этом увеличив код на 1 строку. :-\
Понятно из вопроса, что человек жаждет использовать IF_PICTURE_IN прямо в условии цикла WHILE. К сожалению так нельзя. Да это и не важно, размер кода увеличивается незначительно. Я переменных вообще не жалею.
Нужно просто использовать не безсмысленные var, а что нибудь понятнее.
"Безликие" переменные типа $i далее $j можно иногда использовать для организации конечных циклов, т.е. не содержащих вложенных циклов/подпрограмм. Максимум одно вложение. Внешнее $i внутреннее $j
Если вложений больше, для внешних (можно для всех, кроме маленьких незначащих) использовать осмысленные переменные для циклов.
(ох и написал... кроме меня это хоть кто нибудь понял? :) )
Со временем вырабатывается привычка делать, так то и так то. Путаться не будешь точно.
P. S. dmutruk используй для оформления кода не кнопку "Код", а выпадающий список "Код" - "Clickermann". Если конечно пишешь не с телефона (у меня с телефона пользоваться списком нельзя).
-
Здравствуйте, ребят, были проблемы с интернетом, не было возможности отписаться. Далее по делу:
Нужно просто использовать не безсмысленные var, а что нибудь понятнее.
"Безликие" переменные типа $i далее $j можно иногда использовать для организации конечных циклов, т.е. не содержащих вложенных циклов/подпрограмм. Максимум одно вложение. Внешнее $i внутреннее $j
Если вложений больше, для внешних (можно для всех, кроме маленьких незначащих) использовать осмысленные переменные для циклов.
(ох и написал... кроме меня это хоть кто нибудь понял? :) )
Ну я так в общем и делаю, но бывает иногда в коде меняю частично алгоритм и выходит что переменная либо стает ненужной (так как выше бывает 1 переменная на несколько однотипных задач) и в ходе анализа могу запутаться, бывает редко, но все же хотелось избавиться от этого использовав IF_PICTURE_IN прямо в условии цикла WHILE. Ну нельзя так нельзя, буду стараться быть внимательнее ;)
P. S. dmutruk используй для оформления кода не кнопку "Код", а выпадающий список "Код" - "Clickermann". Если конечно пишешь не с телефона (у меня с телефона пользоваться списком нельзя).
Дык я же так и делаю всегда, за исключением первого поста в этом топе (не знал что так можно тогда). Возможно ты имел в виду aden с его постом:
]
nachalo:
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "somefile.bmp")
print("Найден в координатах X=", $_return1, ", Y=", $_return2)
LCLICK($_return1, $_return2)
goto(dalshe)
else
waitms(50)
goto(nachalo)
END_IF
dalshe:
-
Дык я же так и делаю всегда, за исключением первого поста в этом топе (не знал что так можно тогда). Возможно ты имел в виду aden с его постом:
Сори. Из-за вложенности ответов неправильно написал. Это относилось к aden.
Всего лишь рекомендация. Так всем удобней читать форум.
-
Задам вопрос не по теме, но после того как получил бан за использовании сторонних программ, возник вопрос, какими способами отслеживаются такие программы как наш кликкер? Все действия которые делались, были все с рандомными задержками которые сам опытным путем определял дабы они были близки к моим) И еще, если отслеживание происходит через проверку моих процессов, то есть ли программы которые запретят доступ к моему компу от таких "вторжений") ::)