Что нового

[Время, дата] Два условия в одном цикле

CrazyKing

Новичок
Сообщения
24
Репутация
0
Добрый день!
Собственно есть сайт и два варианта развития событий:
1. Ошибка
2. Всё хорошо

Необходимо осуществлять проверку по пикселю. Один будет на ошибку, второй на всё ок.
Если мы находим пиксель с ошибкой, необходимо перейти по ссылке и опять произвести поиск.
Если пикселя с ошибкой нету, то сразу ищем второй пиксель, выполняем действия и выход из цикла.
Всё это необходимо в цикле, т.к. страница грузиться рандомно по времени, пиксель не сразу появляется.

Изначально было так, искал определённый пиксель в бесконечном цикле, после нахождения делал действия и выход.
Код:
While 1
$var3 = PixelGetColor(568, 240) ;координаты пикселя
$color3 =0x23290F ;цвет пикселя
	  if $var3 =$color3 Then
		MouseClick("left", 640, 835) ;Звезда
		sleep(5000)
		MouseClick("left", 640, 835) ;Звезда
		sleep(5000)
		MouseClick("left", 636, 657) ;Бонусы
		sleep(5000)
		MouseClick("left", 640, 835) ;Звезда
		sleep(5000)
		MouseClick("left", 640, 835) ;Звезда
		sleep(5000)
		MouseClick("left", 636, 657) ;Бонусы
	        sleep(3000)
		MouseClick("left", 108, 312) ; Выход
		sleep(5000)
		ExitLoop
	 EndIf
   Sleep(1000)
WEnd



Как это вижу я:
1. Переход по ссылке.
2. Два варианта:
а. Ищем первый пиксель, если есть то переходим по ссылке и заново проверяем пока не найдём второй пиксель.
б. Ищем второй пиксель, если нашли, то выполняем действия и выход.

Пробовал сделать два условия в одном цикле, не получилось. прошу помощи. Заранее спасибо!
 

ildar

Осваивающий
Сообщения
252
Репутация
30
Код:
Ищем второй пиксель, если нашли, то выполняем действия и выход
Если не нашел, то ищем бесконечно?
 
Автор
CrazyKing

CrazyKing

Новичок
Сообщения
24
Репутация
0
Если нет первого, то по любому должен быть второй, можно бесконечно, а можно и с попытками, штук 30, ну вдруг что ещё нехорошего выскочит.
 

ildar

Осваивающий
Сообщения
252
Репутация
30
Код:
While 1
	If PixelGetColor(568, 240) = 0x23290F Then  ;находим пиксель с ошибкой
		;переход по ссылке
	Else
		While 1
			If PixelGetColor(координаты 2-го пикселя) = цвет 2-го пикселя Then
					;Действия
					Exit		
				Else
			EndIf
			Sleep(XXX)
		WEnd
	EndIf
	Sleep(XXX)
WEnd
 
Автор
CrazyKing

CrazyKing

Новичок
Сообщения
24
Репутация
0
До 17:00 технические работы на сайте, попробую попозже, спасибо!
Сделал так:
Код:
$i_count4 = 15 
$i_count5 = 15 
While $i_count4
    If PixelGetColor(930 , 458) = 0x222608 Then  ;находим пиксель с ошибкой
	  _IENavigate ($oIE,"http://");переход по ссылке
	  $i_count4 -= 1
    Else
        While $i_count5
            If PixelGetColor(568, 240) = 0x23290F Then
				  MouseClick("left", 640, 835) ;Звезда
				 sleep(5000)
				 MouseClick("left", 640, 835) ;Звезда
				 sleep(5000)
				 MouseClick("left", 636, 657) ;Бонусы
				 sleep(5000)
				 MouseClick("left", 640, 835) ;Звезда
				 sleep(5000)
				 MouseClick("left", 640, 835) ;Звезда
				 sleep(5000)
				 MouseClick("left", 636, 657) ;Бонусы
				 sleep(3000)
				 MouseClick("left", 108, 312) ; Выход
				 sleep(5000)
				 ExitLoop
			  Else
				 $i_count4 -= 1
            EndIf
            Sleep(1000)
        WEnd
    EndIf
    Sleep(1000)
WEnd



Добавлено:
Сообщение автоматически объединено:

Да, всё ок, спасибо! :beer:
 
Автор
CrazyKing

CrazyKing

Новичок
Сообщения
24
Репутация
0
В конечном итоге сделал так:
Код:
While 1
    If PixelGetColor(930 , 458) = 0x222608 Then  ;находим пиксель с ошибкой
	  _IENavigate ($oIE,"http://www.thesettlersonline.ru/ru/play");переход по ссылке
    Else
        While 1
            If PixelGetColor(568, 240) = 0x23290F Then
			   MouseClick("left", 640, 835) ;Звезда
			   sleep(5000)
			   MouseClick("left", 640, 835) ;Звезда
			   sleep(5000)
			   MouseClick("left", 636, 657) ;Бонусы
			   sleep(5000)
			   MouseClick("left", 640, 835) ;Звезда
			   sleep(5000)
			   MouseClick("left", 640, 835) ;Звезда
			   sleep(5000)
			   MouseClick("left", 636, 657) ;Бонусы
			   sleep(3000)
			   MouseClick("left", 108, 312) ; Выход
			   sleep(5000)
			   ExitLoop 2
			  Else
            EndIf
            Sleep(1000)
        WEnd
    EndIf
    Sleep(1000)
WEnd


Не получилось ограничить цикл на 30 попыток, он его завершал до условия.
 
Верх