Что нового

[Элементы GUI] Выход из цикла

xamd

AION bot developer
Сообщения
66
Репутация
24
Есть некий цикл

Код:
Func attack() ; Функция атаки

	$color = PixelGetColor(591, 44) ; Берем начальный цвет хп моба, с которым будем сравнивать

	If $color = "0xC61D1D" Then

		Do
			kill() ; Набор кнопок для убийства моба
		Until PixelGetColor(591, 44) = "0x3A382E" ; Выход из цикла, как только моб умрет

	EndIf

	loot() ; Лутаем добычу
	Return start() ; Возвращаемся к поиску цели


EndFunc

Как организовать прерывания цикла через GUI форму. Жму на кнопку, которая должна останавливать скрипт - ноль реакции. Предполагаю, дело в том, что когда крутится цикл, он не отлавливает нажатие клавиши, т.к. при обычных условиях скрипт выключается на ура(обычные условия - когда чар просто бегает или регенится, т.е. где не используется цикл)


P.S. При создании темы были ошибки, 2 раза постил, писало Bad Gateway, поэтому получился даблпостинг темы. Удалите пожалуйста темы-твинки, у самого прав не хватает. Заранее сердечно извиняюсь за предоставленные неудобства
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Вот типичная схема выхода из цикла:
Код:
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $Button1 ; когда нажата кнопка...
			ExitLoop ; выходим из цикла
	EndSwitch
WEnd
 
Автор
X

xamd

AION bot developer
Сообщения
66
Репутация
24
Знаю, пробывал, никакого результата
Есть ещё варианты прерывания?

P.S. Может заменить Do ... Until на какую-либо другую конструкцию, ибо при таком цикле GUI не отвечает даже на кнопку закрытия...
 

SyDr

Сидра
Сообщения
651
Репутация
158
Код:
If GUIGetMsg() = $Button1 Then Return 0

Вставь это везде, где тебе надо прекращать выполнение твоего цикла.

И у тебя это не цикл, а функция. Причём составлена неверно (наверное. У тебя ведь функция start может вызывать функцию attack?). В AutoIt есть ограничение на число рекурсивных вызовов.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
В таких случаях используется режим событий (OnEvent Mode), ну или в цикле отлавливается событие по GUIGetMsg().
 
Автор
X

xamd

AION bot developer
Сообщения
66
Репутация
24
Благодарю, вопрос решен. Сначало было хотел написать, что не получилось, но в последний момент решил немного поменять структуру программы :smile: Раньше у меня был файл с формой, куда подключался файл с функциями, теперь перенес файл с функциями в файл с формой, всё работает! Спасибо за советы, вы мне очень помогли!
 
Верх