Автокликер Clickermann :: Форум
		Основной раздел => Общие вопросы => Topic started by: Sava on November 19, 2015, 07:30:15 AM
		
			
			- 
				Всем привет.
На одной странице должны выполняться 2 скрипта, один за другим. В случае если условие нахождения картинок выполняется (в общем скрипт трудится, действия совершаются), то все нормально, выполняются один за другим. Как только начинается откат картинок для входа в скрипты, происходит зацикливание на первом (l_o.cms) или на втором (k_o.cms) ... когда как ))
Лог:
[spoiler]
10:23:55 острова нет, вторая попытка
10:23:59 остров не обновился, ждем
10:24:04 охоты нет, вторая попытка
10:24:08 охоты нет, ждем
10:24:13 охоты нет, вторая попытка
10:24:17 охоты нет, ждем
10:24:22 охоты нет, вторая попытка
10:24:26 охоты нет, ждем
10:24:31 охоты нет, вторая попытка
[/spoiler]
Для l_o.cms
#include "l_o.cms"
wait (1)
#include "k_o.cms"
wait(1)
#include "d_l.cms" 
#name "l_o"
#logfile
move (rnd(100,400), rnd(150,700)) 
waitms(50)
getscreen
waitms(50)
					
	if_picture_in (0,0,$_xmax,$_ymax,"l_o.bmp")
	logwrite ("нашли остров")
	showlog (1)
	waitms(500)
			
		lclick ($_return1+rnd(40,180), $_return2+rnd(20,40))	
		waitms(50)
		move (rnd(100,400), rnd(150,700))
		wait(1)
		
	else
	logwrite ("острова нет, вторая попытка")
	showlog (1)
	keypress (#PAGEDOWN)
	wait(1)
	
getscreen
waitms(50)
					
	if_picture_in (0,0,$_xmax,$_ymax,"l_o.bmp")
	logwrite ("нашли остров")
	showlog (1)
	waitms(500)
			
		lclick ($_return1+rnd(40,180), $_return2+rnd(20,40))	
		waitms(50)
		move (rnd(100,400), rnd(150,700))
		wait(1)	
	
	else
	logwrite ("остров не обновился, ждем")
	showlog (1)
	wait(1)	
	goto(finish)
	
	end_if
			
	end_if	
					
										
				gettscreen
				waitms(50)
							
					if_picture_in (0,0,$_xmax,$_ymax,"l_o_begin.bmp")
					waitms(500)
									
						lclick ($_return1+rnd(30,90), $_return2+rnd(12,15))
						logwrite ("зашли на остров, начинается бой")
						showlog (1)
						waitms(50)
						move (rnd(100,400), rnd(150,700))
						wait(1)
																									
					end_if				
													
	for ($i, $i < 10)
			
						getscreen
						waitms(50)
						
							if_picture_in (0,0,$_xmax,$_ymax,"att_group.bmp")
							logwrite ("att")
							showlog (1)
		
								lclick ($_return1+10, $_return2+10)
								logwrite ("click att - ", $i)
								showlog (1)
								waitms(50)
								move (rnd(100,400), rnd(150,700))
								wait(1)
								
							end_if
							
									getscreen
					
										if_picture_in (0,0,$_xmax,$_ymax,"N.bmp")
										logwrite ("N")
										showlog (1)
										wait(15)
		
											lclick ($_return1+10, $_return2+10)
											logwrite ("click N - ", $i)
											showlog (1)
											waitms(50)
											move (rnd(100,400), rnd(150,700))
											wait (1)
																																										
										else
												
												if_picture_in (0,0,$_xmax,$_ymax,"l_o_end.bmp")
												logwrite ("l_o_end see")
												showlog (1)
				
													lclick ($_return1+10, $_return2+10)
													logwrite ("click l_o_end")
													showlog (1)
													waitms(50)
													move (rnd(100,400), rnd(150,700))
													wait(1)
													
												end_if
												
										end_if
			
	end_cyc
	$i = 0		
																
		finish:					
		wait(1)			
	
				
					
		
Для k_o.cms
#name "k_o"
#logfile
move (rnd(100,400), rnd(150,700)) 
waitms(50)
getscreen
					
	if_picture_in (0,0,$_xmax,$_ymax,"k_o.bmp")
	logwrite ("нашли oxoty")
	showlog (1)
	waitms(500)
			
		lclick ($_return1+rnd(40,180), $_return2+rnd(20,40))	
		waitms(50)
		move (rnd(100,400), rnd(150,700))
		wait(1)
					
	else
	
	logwrite ("охоты нет, вторая попытка")
	showlog (1)
	keypress (#PAGEDOWN)
	waitms(50)									
	
getscreen
					
	if_picture_in (0,0,$_xmax,$_ymax,"k_o.bmp")
	logwrite ("нашли oxoty")
	showlog (1)
	waitms(500)
			
		lclick ($_return1+rnd(40,180), $_return2+rnd(20,40))	
		waitms(50)
		move (rnd(100,400), rnd(150,700))
		wait(1)
		
	else
		
	logwrite ("охоты нет, ждем")
	showlog (1)
	goto(finish)
		
	end_if
	
	end_if		
	
	
			getscreen
			waitms(50)
							
				if_picture_in (0,0,$_xmax,$_ymax,"k_o_begin.bmp")
				
									
					lclick ($_return1+rnd(30,90), $_return2+rnd(12,15))
					logwrite ("зашли на oxoty")
					showlog (1)
					waitms(50)
					move (rnd(100,400), rnd(150,700))
					wait(1)
													
				end_if				
													
						 getscreen
						 waitms(50)
					
							 if_picture_in (0,0,$_xmax,$_ymax,"att_group.bmp")
							 logwrite ("att")
							 showlog (1)
		
									lclick ($_return1+10, $_return2+10)
							  	logwrite ("click att - ", $i)
									showlog (1)
									waitms(50)
									move (rnd(100,400), rnd(150,700))
									wait(1)
										
								end_if
								
						getscreen
						waitms(50)
						
							if_picture_in (0,0,$_xmax,$_ymax,"pred.bmp")
							logwrite ("pred")
							showlog (1)
							wait(15)
		
								lclick ($_return1+10, $_return2+10)
								logwrite ("охота на хищников")
								showlog (1)
								waitms(50)
								move (rnd(100,400), rnd(150,700))
								wait (1)
							
							end_if	
								
								
	for ($i, $i < 20)
			
		getscreen
					
			if_picture_in (0,0,$_xmax,$_ymax,"att_group.bmp")
			logwrite ("att")
			showlog (1)
		
				lclick ($_return1+10, $_return2+10)
				logwrite ("click att - ", $i)
				showlog (1)
				waitms(50)
				move (rnd(100,400), rnd(150,700))
				wait (1)	
																
		getscreen
					
				if_picture_in (0,0,$_xmax,$_ymax,"pred_next.bmp")
				logwrite ("Next")
				showlog (1)
				wait(15)
		
					lclick ($_return1+10, $_return2+10)
					logwrite ("click Next - ", $i)
					showlog (1)
					waitms(50)
					move (rnd(100,400), rnd(150,700))
					wait (1)
					
				else
				
		getscreen
		
			if_picture_in (0,0,$_xmax,$_ymax,"l_o_end.bmp")
			logwrite ("вижу награду")
			showlog (1)
				
				lclick ($_return1+10, $_return2+10)
				logwrite ("остров пройден")
				showlog (1)
				waitms(50)
				move (rnd(100,400), rnd(150,700))
				wait(1)
																	 
			end_if		
																																										
				end_if
				end_if	
				
	end_cyc
	$i = 0		
	
	finish:					
	
Если можно оптимизировать, улучшить как то написанное, напишите, буду признателен.
			 
			
			- 
				Ещё в первом скрипте стр. 51 gettscreen
Имя переменной цикла здесь не влияет, циклы не вложенные. Только с обнулением беда.
А вот две метки finish: сбивают работу с рельсов.
GOTO вообще здесь ни к чему. Для этого достаточно весь код который ты пропускаешь (основные действия) вставить прямо на место после обнаружения.
Т.к. у тебя таких мест получилось два, нужно избавится от них потому что они почти одинаковые.
Вот пример первого скрипта
#name "l_o"
#logfile
move (rnd(100,400), rnd(150,700))
waitms(50)
getscreen
waitms(50)
$isle = 0
FOR($isle=0, $isle < 2)
   if_picture_in (0,0,$_xmax,$_ymax,"l_o.bmp")
      $isle = 2
      logwrite ("нашли остров")
      showlog (1)
      waitms(500)
      lclick ($_return1+rnd(40,180), $_return2+rnd(20,40))
      waitms(50)
      move (rnd(100,400), rnd(150,700))
      wait(1)
      getscreen
      waitms(50)
      
      if_picture_in (0,0,$_xmax,$_ymax,"l_o_begin.bmp")
         waitms(500)
         lclick ($_return1+rnd(30,90), $_return2+rnd(12,15))
         logwrite ("зашли на остров, начинается бой")
         showlog (1)
         waitms(50)
         move (rnd(100,400), rnd(150,700))
         wait(1)
      end_if
      
      for ($i=0, $i < 10)
         getscreen
         waitms(50)
         
         if_picture_in (0,0,$_xmax,$_ymax,"att_group.bmp")
            logwrite ("att")
            showlog (1)
            lclick ($_return1+10, $_return2+10)
            logwrite ("click att - ", $i)
            showlog (1)
            waitms(50)
            move (rnd(100,400), rnd(150,700))
            wait(1)
         end_if
         
         getscreen
         
         if_picture_in (0,0,$_xmax,$_ymax,"N.bmp")
            logwrite ("N")
            showlog (1)
            wait(15)
            
            lclick ($_return1+10, $_return2+10)
            logwrite ("click N - ", $i)
            showlog (1)
            waitms(50)
            move (rnd(100,400), rnd(150,700))
            wait (1)
         else
            if_picture_in (0,0,$_xmax,$_ymax,"l_o_end.bmp")
               logwrite ("l_o_end see")
               showlog (1)
               
               lclick ($_return1+10, $_return2+10)
               logwrite ("click l_o_end")
               showlog (1)
               waitms(50)
               move (rnd(100,400), rnd(150,700))
               wait(1)
            end_if
         end_if
      end_cyc
   ELSE
      IF($isle = 0)
         logwrite ("острова нет, вторая попытка")
         keypress (#PAGEDOWN)
      ELSE
         logwrite ("остров не обновился, ждем")
      END_IF
      showlog (1)
      wait(1)
   END_IF
END_CYC
wait(1)
			 
			
			- 
				Спасибо большое, вечером проверю.
Версия clickermann 4.11.002.
Условие i=0 в for (i=0, i < 10) сразу дает обнуление по завершении цикла?
Не совсем понял про :
$isle = 0
FOR($isle=0, $isle < 2)
if_picture_in (0,0,$_xmax,$_ymax,"l_o.bmp")
      $isle = 2
...
 ELSE
      IF($isle = 0)
         logwrite ("острова нет, вторая попытка")
         keypress (#PAGEDOWN)
      ELSE
         logwrite ("остров не обновился, ждем")
      END_IF
      showlog (1)
      wait(1)
   END_IF
END_CYC
$isle < 2  означает что 2 попытки поиска острова? Тогда $isle=2 значит что остров найден? Почему $isle равно именно 2, а не 1? Единица же вроде верность подтверждает...
			 
			
			- 
				И еще, можно какой-нибудь командой разделить include'ы чтобы они не сливались?
			
 
			
			- 
				
Не совсем понял про :
$isle = 0
FOR($isle=0, $isle < 2)
if_picture_in (0,0,$_xmax,$_ymax,"l_o.bmp")
      $isle = 2
...
 ELSE
      IF($isle = 0)
         logwrite ("острова нет, вторая попытка")
         keypress (#PAGEDOWN)
      ELSE
         logwrite ("остров не обновился, ждем")
      END_IF
      showlog (1)
      wait(1)
   END_IF
END_CYC
$isle < 2  означает что 2 попытки поиска острова? Тогда $isle=2 значит что остров найден? Почему $isle равно именно 2, а не 1? Единица же вроде верность подтверждает...
Цикл  FOR($isle=0, $isle < 2)
имеет два прохода при $isle=0 и $isle=1
задавая $isle=2 мы прерываем цикл. На самом деле можно задать любое число при котором условие ($isle < 2) перестанет выполняться, т.е. $isle больше 1.