Что нового

несколько условий в цикле

kvitnitskiy

Новичок
Сообщения
56
Репутация
0
Доброго времени суток.
Подскажите пожалуйста, как организовать в цикле несколько условий. (браузерная игруха, Летняя рыбалка)
суть вот в чем:
нажать и держать кнопку, ожидая появления нужного пиксела,
в случае если нужный пиксел не появился, и кнопка исчезла, отжать и снова нажать кнопку.
пример кода ниже.
работает только первый пункт,
Код:
HotKeySet("{ESC}", "Terminate")
Func Terminate()
	 MouseUp ("left")
    Exit 0
EndFunc

Local $x = 690;Координата по Х начальной точки области, где появляется прогресс бар
Local $y = 370;Координата по Y начальной точки области, где появляется прогресс бар
Local $xwidth = 920;Координата по X конечной точки, где появляется прогресс бар
Local $yheight = 538;Координата по Y конечной точки, где появляется прогресс бар
Local $mx = 689;координата по X в которой удерживаем мышь.
Local $my =680;Координата по Y в которой удерживаем мышь.
;Local $clr = 0xF4E953 ;Жолтый
Local $clr = 0x42B334;
local $clr2 = 0xEEF0C4 ;кнопка закинуть
local $clr3 = 0x492923 ;Окно с рыбой

Local $cv2 = 0
Local $cv3 = 2
Local $cv = 6
Local $c = 1 ; переменная нужная чтобы, в случае сбоя  - цвет не найден вообще через какой то время можно было выйти с цикла
Local $time = 20;некое значение, сколько циклов нужно совершить и выйти с цикла, чтобы не повис скрипт когда пиксель по какой то причине не найден вообще

For $count =1 to 100
MouseMove ($mx, $my, 0)
MouseDown ("left")
Sleep(300)
MouseUP ("left")
Sleep(3000)

MouseDown ("left")


While 1
   $clrseach = PixelSearch ( $x, $y, $xwidth, $yheight, $clr, $cv, 0, 0)

   If Not @error Then
      MouseUp ("left")
	  sleep(250)
	  MouseDown ("left")
      ;ExitLoop

   ;ищем кнопку

$clrseach2 = PixelSearch ( 616, 647, 774, 713, $clr3, $cv2, 0, 0)
   If not @error Then
      MouseUp ("left")
	  sleep(2000)
	  MouseDown ("left")
      ;ExitLoop

	     ;окно с ыбой
   $clrseach3 = PixelSearch ( 629, 233, 734, 257, $clr3, $cv3, 0, 0)
   If Not  @error Then
    MouseUp ("left")
	  sleep(2000)
MouseMove(1007,236,20)
 MouseDown ("left")
MouseUp ("left")

  EndIf
    EndIf
	endif
   WEnd
   next
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
В данную игру не играл, но в вашем коде не нашел логических ошибок. Порядок действий указан вроде бы правильно. Отформатировал ваш код так, чтобы людям было удобнее его читать:
Код:
Opt("MustDeclareVars", 1)
HotKeySet("{ESC}", "Terminate")
Func Terminate()
     MouseUp ("left")
    Exit 0
EndFunc

Local $x = 690;Координата по Х начальной точки области, где появляется прогресс бар
Local $y = 370;Координата по Y начальной точки области, где появляется прогресс бар
Local $xwidth = 920;Координата по X конечной точки, где появляется прогресс бар
Local $yheight = 538;Координата по Y конечной точки, где появляется прогресс бар
Local $mx = 689;координата по X в которой удерживаем мышь.
Local $my =680;Координата по Y в которой удерживаем мышь.
;Local $clr = 0xF4E953 ;Жолтый
Local $clr = 0x42B334;
local $clr2 = 0xEEF0C4 ;кнопка закинуть
local $clr3 = 0x492923 ;Окно с рыбой

Local $cv2 = 0
Local $cv3 = 2
Local $cv = 6
Local $c = 1 ; переменная нужная чтобы, в случае сбоя  - цвет не найден вообще через какой то время можно было выйти с цикла
Local $time = 20;некое значение, сколько циклов нужно совершить и выйти с цикла, чтобы не повис скрипт когда пиксель по какой то причине не найден вообще

For $count =1 to 100
   MouseMove ($mx, $my, 0)
   MouseDown ("left")
   Sleep(300)
   MouseUP ("left")
   Sleep(3000)

   MouseDown ("left")

   Local $clrseach
   While 1
	  $clrseach = PixelSearch ( $x, $y, $xwidth, $yheight, $clr, $cv, 0, 0)
	  If Not @error Then
		 MouseUp ("left")
		 sleep(250)
		 MouseDown ("left")
		 ;ExitLoop

		 ;ищем кнопку
		 Local $clrseach2 = PixelSearch ( 616, 647, 774, 713, $clr3, $cv2, 0, 0)
		 If not @error Then
			MouseUp ("left")
			sleep(2000)
			MouseDown ("left")
			;ExitLoop

			;окно с rыбой
			Local $clrseach3 = PixelSearch ( 629, 233, 734, 257, $clr3, $cv3, 0, 0)
			If Not  @error Then
			   MouseUp ("left")
			   sleep(2000)
			   MouseMove(1007,236,20)
			   MouseDown ("left")
			   MouseUp ("left")
			EndIf
		 EndIf
	  EndIf 
   WEnd
Next

Изначально прописанная вами логика говорит о следующем:
1.1) Ищем что-то
2.1) Если что-то нашли, ищем кнопку
3.1) Если нашли, то ищем окно с рыбой
3.2) Если не нашли окно с рыбой - ничего не делаем
2.2) Если не нашли то ничего не делаем
1.2) Если не нашли то ничего не делаем
Что в принципе абсолютно логично.
 
Автор
K

kvitnitskiy

Новичок
Сообщения
56
Репутация
0
Немного не так .
1.1) Ищем что-то - наживаем кнопку, и ищем что то пока кнопка не исчезла.
2.1) Если что-то нашли, ищем кнопку , если исчезла, отжимаем мышь, ждем пару сеп появления кнопки и снова жмем.
3.1) Если нашли, то ищем окно с рыбой, паралельно ищем окно с рыбой.
3.2) Если не нашли окно с рыбой - ничего не делаем
2.2) Если не нашли то ничего не делаем
1.2) Если не нашли то ничего не делаем
 
Верх