Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: showtime on October 27, 2014, 08:19:39 PM
-
Почему-то скрипт не видит изображения, когда они точно есть в области.
Работает будто игнорируя IF_PICTURE_IN..
Ингорируемый кусок:
GETSCREEN
IF_PICTURE_IN (711,53, 1016,783, "1.bmp", "2.bmp", "3.bmp", "4.bmp","5.bmp", -1, 100)
WAITMS(100)
LCLICK($_return1, $_return2)
WAITMS(100)
LCLICK(773,768) // !!!ЗАБРАТЬ ОКНО 3
goto(1) // возвращается в GETSCREEN
END_IF
-
Потому что в IF_PICTURE_IN допустимо указывать 1 картинку. То что ты хочешь реализуется так.
GETSCREEN
IF_PICTURE_IN (711,53, 1016,783, "1.bmp", -1, 100)
WAITMS(100)
LCLICK($_return1, $_return2)
WAITMS(100)
LCLICK(773,768) // !!!ЗАБРАТЬ ОКНО 3
ELSE
IF_PICTURE_IN (711,53, 1016,783, "2.bmp", -1, 100)
WAITMS(100)
LCLICK($_return1, $_return2)
WAITMS(100)
LCLICK(773,768) // !!!ЗАБРАТЬ ОКНО 3
ELSE
IF_PICTURE_IN (711,53, 1016,783, "3.bmp", -1, 100)
WAITMS(100)
LCLICK($_return1, $_return2)
WAITMS(100)
LCLICK(773,768) // !!!ЗАБРАТЬ ОКНО 3
ELSE
IF_PICTURE_IN (711,53, 1016,783, "4.bmp", -1, 100)
WAITMS(100)
LCLICK($_return1, $_return2)
WAITMS(100)
LCLICK(773,768) // !!!ЗАБРАТЬ ОКНО 3
ELSE
IF_PICTURE_IN (711,53, 1016,783, "5.bmp", -1, 100)
WAITMS(100)
LCLICK($_return1, $_return2)
WAITMS(100)
LCLICK(773,768) // !!!ЗАБРАТЬ ОКНО 3
ELSE
WAITMS(50)
END_IF
END_IF
END_IF
END_IF
END_IF
goto(1) // возвращается в GETSCREEN
Эта строчка работать не будет, переход возможен только на метки. Если это весь скрипт то гото тут вообще никчему.
-
goto(1) // возвращается в GETSCREEN
Эта строчка работать не будет, переход возможен только на метки. Если это весь скрипт то гото тут вообще никчему.
Не весь, я хочу что бы в случае найденной картинки он забирал вещь и повторил поиск.
И лишь в случае когда поиск не дает результатов шел дальше
-
Тогда пиши сразу по умному, используя цикл
$check = 0
WHILE($check = 0) // цикл крутится пока переменная равна 0
GETSCREEN
IF_PICTURE_IN (711,53, 1016,783, "1.bmp", -1, 100)
WAITMS(100)
LCLICK($_return1, $_return2)
WAITMS(100)
LCLICK(773,768) // !!!ЗАБРАТЬ ОКНО 3
WAITMS(100)
ELSE
IF_PICTURE_IN (711,53, 1016,783, "2.bmp", -1, 100)
WAITMS(100)
LCLICK($_return1, $_return2)
WAITMS(100)
LCLICK(773,768) // !!!ЗАБРАТЬ ОКНО 3
WAITMS(100)
ELSE
IF_PICTURE_IN (711,53, 1016,783, "3.bmp", -1, 100)
WAITMS(100)
LCLICK($_return1, $_return2)
WAITMS(100)
LCLICK(773,768) // !!!ЗАБРАТЬ ОКНО 3
WAITMS(100)
ELSE
IF_PICTURE_IN (711,53, 1016,783, "4.bmp", -1, 100)
WAITMS(100)
LCLICK($_return1, $_return2)
WAITMS(100)
LCLICK(773,768) // !!!ЗАБРАТЬ ОКНО 3
WAITMS(100)
ELSE
IF_PICTURE_IN (711,53, 1016,783, "5.bmp", -1, 100)
WAITMS(100)
LCLICK($_return1, $_return2)
WAITMS(100)
LCLICK(773,768) // !!!ЗАБРАТЬ ОКНО 3
WAITMS(100)
ELSE
WAITMS(50)
$check = 1 // не найдено, изменяем на 1, прерываем цикл
END_IF
END_IF
END_IF
END_IF
END_IF
END_CYC
-
Возникла трудность с поиском текстовой картинки..
Вот такую - не видит, либо распознает ошибочно ее в другом месте отсюда $return совсем не те что нужно
LCLICK(589,998) // 16777215 окно 1
WAITMS(500)
$check = 0
//кнопка забрать
$c = 770
$h = 999
//область лута
$e = 713
$t = 305
$k = 1010
$u = 1006
WHILE($check = 0) // цикл крутится пока переменная равна 0
GETSCREEN
IF_PICTURE_IN ($e,$t, $k,$u, "1.bmp", -1, 100)
WAITMS(100)
LCLICK($_return1, $_return2)
WAITMS(100)
SCREENSHOT
WAITMS(100)
LCLICK($c,$h) // !!!ЗАБРАТЬ
WAITMS(100)
ELSE
IF_PICTURE_IN ($e,$t, $k,$u, "2.bmp", -1, 100)
WAITMS(100)
LCLICK($_return1, $_return2)
WAITMS(100)
SCREENSHOT
WAITMS(100)
LCLICK($c,$h) // !!!ЗАБРАТЬ
WAITMS(100)
ELSE
IF_PICTURE_IN ($e,$t, $k,$u, "3.bmp", -1, 100)
WAITMS(100)
LCLICK($_return1, $_return2)
WAITMS(100)
LCLICK($c,$h) // !!!ЗАБРАТЬ
WAITMS(100)
ELSE
IF_PICTURE_IN ($e,$t, $k,$u, "4.bmp", -1, 100)
WAITMS(100)
LCLICK($_return1, $_return2)
WAITMS(100)
LCLICK($c,$h) // !!!ЗАБРАТЬ
WAITMS(100)
ELSE
IF_PICTURE_IN ($e,$t, $k,$u, "5.bmp", -1, 100)
WAITMS(100)
LCLICK($_return1, $_return2)
WAITMS(100)
LCLICK($c,$h) // !!!ЗАБРАТЬ
WAITMS(100)
ELSE
IF_PICTURE_IN ($e,$t, $k,$u, "6.bmp", -1, 100)
WAITMS(100)
LCLICK($_return1, $_return2)
WAITMS(100)
LCLICK($c,$h) // !!!ЗАБРАТЬ
WAITMS(100)
ELSE
IF_PICTURE_IN ($e,$t, $k,$u, "7.bmp", -1, 100)
WAITMS(100)
LCLICK($_return1, $_return2)
WAITMS(100)
LCLICK($c,$h) // !!!ЗАБРАТЬ
WAITMS(100)
ELSE
WAITMS(50)
$check = 1 // не найдено, изменяем на 1, прерываем цикл
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_CYC
-
Скорее всего не находит. Находить не там может только если такое изображение есть ещё.
Используй процент совпадения.
IF_PICTURE_IN ($e,$t, $k,$u, "6.bmp", -1, 90)
Величину нужно подобрать.
И ещё.... Зачем такая простыня? Можно же сократить:
LCLICK(589,998) // 16777215 окно 1
WAITMS(500)
$check = 0
//область лута
$e = 713
$t = 305
$k = 1010
$u = 1006
WHILE($check = 0) // цикл крутится пока переменная равна 0
GETSCREEN
IF_PICTURE_IN ($e,$t, $k,$u, "1.bmp", -1, 100)
ELSE
IF_PICTURE_IN ($e,$t, $k,$u, "2.bmp", -1, 100)
ELSE
IF_PICTURE_IN ($e,$t, $k,$u, "3.bmp", -1, 100)
ELSE
IF_PICTURE_IN ($e,$t, $k,$u, "4.bmp", -1, 100)
ELSE
IF_PICTURE_IN ($e,$t, $k,$u, "5.bmp", -1, 100)
ELSE
IF_PICTURE_IN ($e,$t, $k,$u, "6.bmp", -1, 90)
ELSE
IF_PICTURE_IN ($e,$t, $k,$u, "7.bmp", -1, 100)
ELSE
WAITMS(50)
$check = 1 // не найдено, изменяем на 1, прерываем цикл
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
IF($check = 0)
WAITMS(100)
LCLICK($_return1, $_return2)
WAITMS(100)
LCLICK(770,999) // !!!ЗАБРАТЬ
WAITMS(100)
END_IF
END_CYC
-
А ещё лучше и короче вот так:
LCLICK(589,998) // 16777215 окно 1
WAITMS(500)
$check = 1
WHILE($check < 8) // цикл крутится пока переменная меньше 8
GETSCREEN
IF_PICTURE_IN (713,305, 1010,1006, STRCONCAT($check, ".bmp"), -1, 90)
WAITMS(100)
LCLICK($_return1, $_return2)
WAITMS(100)
LCLICK(770,999) // !!!ЗАБРАТЬ
WAITMS(100)
$check = 0
END_IF
WAITMS(50)
INC($check)
END_CYC
-
Спасибо за очередную подсказку, а что до простыни.. я ж не спец, делал по примеру)
Кстати, вы убрали мои переменные отсюда
IF_PICTURE_IN (713,305, 1010,1006, STRCONCAT($check, ".bmp"), -1, 90)
LCLICK(770,999) // !!!ЗАБРАТЬ
Ввиду того что код в вашей цитате повторяется в моем скрипте 5 раз - это не желательно. Можно их вернуть?
А так же потерян SCREENSHOT при поиске 1.bmp и 2.bmp
-
LCLICK(589,998) // 16777215 окно 1
WAITMS(500)
$check = 0
//кнопка забрать
$c = 770
$h = 999
//область лута
$e = 713
$t = 305
$k = 1010
$u = 1006
WHILE($check = 0) // цикл крутится пока переменная равна 0
GETSCREEN
IF_PICTURE_IN ($e,$t, $k,$u, "1.bmp", -1, 100)
SCREENSHOT("1memory")
ELSE
IF_PICTURE_IN ($e,$t, $k,$u, "2.bmp", -1, 100)
SCREENSHOT("1rohan")
ELSE
IF_PICTURE_IN ($e,$t, $k,$u, "3.bmp", -1, 100)
ELSE
IF_PICTURE_IN ($e,$t, $k,$u, "4.bmp", -1, 100)
ELSE
IF_PICTURE_IN ($e,$t, $k,$u, "5.bmp", -1, 100)
ELSE
IF_PICTURE_IN ($e,$t, $k,$u, "6.bmp", -1, 90)
ELSE
IF_PICTURE_IN ($e,$t, $k,$u, "7.bmp", -1, 100)
ELSE
WAITMS(50)
$check = 1 // не найдено, изменяем на 1, прерываем цикл
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
IF($check = 0)
WAITMS(100)
LCLICK($_return1, $_return2)
WAITMS(200)
LCLICK($c,$h) // !!!ЗАБРАТЬ
WAITMS(100)
END_IF
END_CYC
С учетом вышеизложенного переделал
-
Кстати, вы убрали мои переменные отсюда...
А так же потерян SCREENSHOT при поиске 1.bmp и 2.bmp...
Та ради бога. Я думал и думаю что скриншот был отладочный.
Ввиду того что код в вашей цитате повторяется в моем скрипте 5 раз - это не желательно. Можно их вернуть?
Если код повторяется несколько раз, целесообразней вынести его в подпрограмму.
-
Кстати, вы убрали мои переменные отсюда...
А так же потерян SCREENSHOT при поиске 1.bmp и 2.bmp...
Та ради бога. Я думал и думаю что скриншот был отладочный.
Скриншот только в первых двух случаях, т.к они самые важные
Папка с кликером находится на google drive и запускается оттуда же. Соответственно как только скрипт соберется взять 1.bmp или 2.bmp я смогу это увидеть даже с мобильного устройства
-
// ПРОГРАММА СБОРА ЛУТА
SUB(search, $check, $e, $t, $k, $u, $c, $h)
WHILE($check = 0) // цикл крутится пока переменная равна 0
GETSCREEN
IF_PICTURE_IN ($e,$t, $k,$u, "1.bmp", -1, 100)
WAITMS(100)
LCLICK($_return1, $_return2)
WAITMS(100)
SCREENSHOT("1memory")
WAITMS(200)
LCLICK($c,$h) // !!!ЗАБРАТЬ
WAITMS(100)
ELSE
IF_PICTURE_IN ($e,$t, $k,$u, "2.bmp", -1, 100)
WAITMS(100)
LCLICK($_return1, $_return2)
WAITMS(100)
SCREENSHOT("1rohan")
WAITMS(200)
LCLICK($c,$h) // !!!ЗАБРАТЬ
WAITMS(100)
ELSE
IF_PICTURE_IN ($e,$t, $k,$u, "3.bmp", -1, 100)
WAITMS(100)
LCLICK($_return1, $_return2)
WAITMS(200)
LCLICK($c,$h) // !!!ЗАБРАТЬ
WAITMS(100)
ELSE
IF_PICTURE_IN ($e,$t, $k,$u, "4.bmp", -1, 100)
WAITMS(100)
LCLICK($_return1, $_return2)
WAITMS(200)
LCLICK($c,$h) // !!!ЗАБРАТЬ
WAITMS(100)
ELSE
IF_PICTURE_IN ($e,$t, $k,$u, "5.bmp", -1, 100)
WAITMS(100)
LCLICK($_return1, $_return2)
WAITMS(200)
LCLICK($c,$h) // !!!ЗАБРАТЬ
WAITMS(100)
ELSE
IF_PICTURE_IN ($e,$t, $k,$u, "6.bmp", -1, 100)
WAITMS(100)
LCLICK($_return1, $_return2)
WAITMS(200)
LCLICK($c,$h) // !!!ЗАБРАТЬ
WAITMS(100)
ELSE
IF_PICTURE_IN ($e,$t, $k,$u, "7.bmp", -1, 100)
WAITMS(100)
LCLICK($_return1, $_return2)
WAITMS(200)
LCLICK($c,$h) // !!!ЗАБРАТЬ
WAITMS(100)
ELSE
WAITMS(50)
$check = 1 // не найдено, изменяем на 1, прерываем цикл
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_CYC
END_SUB
// ПРОГРАММА СКИЛЫ ПО БОСУ
SUB(damage, $dm)
WHILE($dm < 5) // цикл крутится пока переменная меньше 5
LCLICK(518,994) // 8345622 топор
WAITMS(500)
INC($dm)
END_CYC
$dm = 1
WHILE($dm < 27) // цикл крутится пока переменная меньше 27
LCLICK(381,997) // 9921055 скилы
LCLICK(345,994) // 8812384 глвл
WAITMS(100)
INC($dm)
END_CYC
END_SUB
// ФАРМ С ЛУТОМ
// поиска лута
// $check
// область лута
// $e
// $t
// $k
// $u
// кнопка забрать
// $c
// $h
LCLICK(589,998) // 16777215 окно 1
WAITMS(500)
search (0, 713, 305, 1010, 1006, 770, 999) // сбор лута
WAITMS(100)
damage (1) // по босу
WAITMS(100)
LCLICK(1259,765) // 5321236 окно 2
WAITMS(100)
search(0, 1593, 48, 1894, 772, 1646, 766) // сбор лута
WAITMS(100)
MOVE(1398,339)
WAITMS(100)
LCLICK(1398,339) // 8355711 сундук
WAITMS(500)
RCLICK(1398,339) // 8355711 сундук
WAITMS(1500)
LCLICK(18,130) // 8355711 окно 3
WAITMS(500)
search(0, 712, 65, 1009, 750, 769, 767) // сбор лута
WAITMS(100)
Добавил подпрограммы.
Буду рад советам по упразднению (наверняка гуру напишут тоже самое в 10 строчек :D), кодер я еще тот
ps. move в строке 112 не ошибка, там без него белиберда получается. пришел опытным путем к такому решению
-
Ну как сократить я писал.
Переменные $check и $dm зачем передавать как параметры? Ведь это внутренние счётчики. Зачем захламлять.
// ПРОГРАММА СБОРА ЛУТА
SUB(search, $e, $t, $k, $u, $c, $h)
$check = 1
WHILE($check < 8) // цикл крутится пока переменная меньше 8
GETSCREEN
IF_PICTURE_IN ($e,$t, $k,$u, STRCONCAT($check, ".bmp"), -1, 90)
WAITMS(100)
LCLICK($_return1, $_return2)
IF($check = 1)
WAITMS(100)
SCREENSHOT("1memory")
END_IF
IF($check = 2)
WAITMS(100)
SCREENSHOT("1rohan")
END_IF
WAITMS(100)
LCLICK($c,$h) // !!!ЗАБРАТЬ
WAITMS(100)
$check = 0
END_IF
WAITMS(50)
INC($check)
END_CYC
END_SUB
// ПРОГРАММА СКИЛЫ ПО БОСУ
SUB(damage)
FOR($dm=0, $dm < 4)
LCLICK(518,994) // 8345622 топор
WAITMS(500)
END_CYC
FOR($dm=0, $dm < 26)
LCLICK(381,997) // 9921055 скилы
LCLICK(345,994) // 8812384 глвл
WAITMS(100)
END_CYC
END_SUB
LCLICK(589,998) // 16777215 окно 1
WAITMS(500)
search (713, 305, 1010, 1006, 770, 999) // сбор лута
WAITMS(100)
damage () // по босу
WAITMS(100)
LCLICK(1259,765) // 5321236 окно 2
WAITMS(100)
search(1593, 48, 1894, 772, 1646, 766) // сбор лута
WAITMS(100)
MOVE(1398,339)
WAITMS(100)
LCLICK(1398,339) // 8355711 сундук
WAITMS(500)
RCLICK(1398,339) // 8355711 сундук
WAITMS(1500)
LCLICK(18,130) // 8355711 окно 3
WAITMS(500)
search(712, 65, 1009, 750, 769, 767) // сбор лута
WAITMS(100)
-
спасибо! так обыграть со скриншотами не догадался