Что нового

[Автоматизация] Оптимизация If-Endif внутри цикла while

ahees

Новичок
Сообщения
7
Репутация
0
Доброго времени суток. Только познаю все прелести autoit и есть некоторые вопросы/уточнения. Тренируюсь и в качестве примера пробую сделать обычный кликер по кнопкам. Долго мучился с заменой клика по координатам на клик по кнопке, но все же получилось. Но другая проблема - по кнопкам кликает, но когда задаю условие по цвету - нет. Часть проблемного кода:
Код:
While 1
	
;START BOTA	
;$var=Pixelsearch(711, 195,$x2,$y2, 0xB3A586,5) ;start
;if not @error then
$oLinks=_IETagNameGetCollection($oFrame, 'td')
For $oLink In $oLinks
    If StringInStr($oLink.getAttribute('onclick'), 'bots') And StringInStr($oLink.className, 'cb') Then
        _IEAction($oLink, 'click')
        ExitLoop
    EndIf
Next
;EndIf


;YDAR
;$var1=Pixelsearch(502, 231,$x2,$y2, 0xB8B7C3,5);ydar
;if not @error then
$oLinks=_IETagNameGetCollection($oFrame, 'td')
For $oLink In $oLinks
    If StringInStr($oLink.getAttribute('onclick'), 'CheckKick') And StringInStr($oLink.className, 'subm') Then
        _IEAction($oLink, 'click')
		
        ExitLoop
    EndIf
Next
;EndIf



;NEXT BOT
;$var2=Pixelsearch(428, 185,$x2,$y2, 0x707064,5);smena
;if not @error then
$oLinks=_IETagNameGetCollection($oFrame, 'span')
For $oLink In $oLinks
    If StringInStr($oLink.getAttribute('style'), 'vertical-align: middle') And StringInStr($oLink.getAttribute('title'), 'Напасть на монстра') Then
        _IEAction($oLink, 'click')
		
        ExitLoop
    EndIf
Next
;EndIf


WEnd

Сам скрипт работает(знаю что криво, да-да), но иногда бывают вылеты без участвия горячей клавиши для выхода. Буду рад любой помощи, что бы знать как оптимизировать данный "кусок" кода.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Попробуй так:
Код:
While 1
	$oLinks = _IETagNameGetCollection($oFrame, 'td')
	If IsObj($oLinks) Then
		$length = $oLinks.length
		For $item = 0 To $length - 1
			$oLink = $oLinks.item($item)
			If Not IsObj($oLink) Then ExitLoop

			If StringInStr($oLink.getAttribute('onclick'), 'bots') And StringInStr($oLink.className, 'cb') Then
				_IEAction($oLink, 'click')
				ExitLoop
			EndIf

		Next
	EndIf

	;и так далее

WEnd


Может вылетать из за For ... In ... она глючная.
 
Автор
A

ahees

Новичок
Сообщения
7
Репутация
0
inververs сказал(а):
Может вылетать из за For ... In ... она глючная.
Спасибо, работает как нужно!
Что бы не создавать новую тему с этим же кодом:
_IEAction($oLink, 'click') - если я правильно, то клик происходит только при наличии указаного элемента?(просто если это так, то отпадает проверка по цвету из-за которой тоже не работало)
 
Верх