Автокликер 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)
- 
				спасибо! так обыграть со скриншотами не догадался