Banknot
Новичок
- Сообщения
- 2
- Репутация
- 0
Здравствуйте, форумчане. Я только начал пользоваться AutoIt, так что вопрос, скорее всего, совсем нубский, поэтому задам его в общих.
Собственно, если упростить, в игре в различные моменты времени появляется кнопка на экране. Появляется всегда в одном и том же месте, одного из двух цветов. Исчезает после клика на нее. Скрипту просто требуется отслеживать появление кнопки и нажимать, если появилась. Кажется, все элементарно.
Вот что у меня получилось.
Неправильно работает вот эта строчка
PixelGetColor определяет цвет пикселя не по координатам $xMouse и $yMouse, которые были заданы в Calibr(), а по координатам курсора. Если курсор оставить на кнопке, то скрипт работает правильно, а вот если мышку отодвинуть подальше, чтобы цвет пикселей под ней был другой, то определить, есть ли кнопка, не получается.
Функция Calibr() же запускается только в начали при нажатии F7 и больше никак не влияет на переменные $xMouse, $yMouse.
И самое интересное, что функция MouseClick в той же строке с теми же координатами $xMouse, $yMouse работает правильно и двигает курсор в то место, которое задано при запуске Calibr().
Что-то здесь не сходится.
В конце еще описание работы скрипта под спойлером.
Помогите, пожалуйста. У меня кончились идеи, почему так происходит.
Собственно, если упростить, в игре в различные моменты времени появляется кнопка на экране. Появляется всегда в одном и том же месте, одного из двух цветов. Исчезает после клика на нее. Скрипту просто требуется отслеживать появление кнопки и нажимать, если появилась. Кажется, все элементарно.
Вот что у меня получилось.
Код:
$cvet1=0xC75243 ;Цвет кнопки 1
$cvet2=0xC75344 ;Цвет кнопки 2
$xMouse=0;
$yMouse=0;
MsgBox(0,"Начало.","Бла-бла-бла.")
WinWaitActive("название игры")
MsgBox(0, "Название окна", "Бла-бла-бла")
$work=1
$auto=0
Func Calibr()
$MousePos=MouseGetPos();
$xMouse=$MousePos[0]
$yMouse=$MousePos[1]
MsgBox (0, "Название окна", "Бла-бла-бла.")
EndFunc
Func Automat()
MsgBox(0, "Название окна", "Бла-бла-бла")
$auto=1;
EndFunc
Func StopIt()
$work=0;
$auto=0;
MsgBox(0, "Завершение", "Бла-бла-бла")
EndFunc
HotKeySet("{F8}","Automat")
HotKeySet("{F9}","StopIt")
HotKeySet("{SPACE}","StopIt")
HotKeySet("{F7}","Calibr")
While $work=1
If $auto=1 then ToolTip("Бла-бла-бла")
Sleep(Random(1000,2000));
If ($auto=1) And ((PixelGetColor($xMouse,$yMouse)=$cvet1) OR (PixelGetColor($xMouse,$yMouse)=$cvet2)) then MouseClick("left", $xMouse, $yMouse, 1, 10)
WEnd
Неправильно работает вот эта строчка
Код:
If ($auto=1) And ((PixelGetColor($xMouse,$yMouse)=$cvet1) OR (PixelGetColor($xMouse,$yMouse)=$cvet2)) then MouseClick("left", $xMouse, $yMouse, 1, 10)
PixelGetColor определяет цвет пикселя не по координатам $xMouse и $yMouse, которые были заданы в Calibr(), а по координатам курсора. Если курсор оставить на кнопке, то скрипт работает правильно, а вот если мышку отодвинуть подальше, чтобы цвет пикселей под ней был другой, то определить, есть ли кнопка, не получается.
Функция Calibr() же запускается только в начали при нажатии F7 и больше никак не влияет на переменные $xMouse, $yMouse.
И самое интересное, что функция MouseClick в той же строке с теми же координатами $xMouse, $yMouse работает правильно и двигает курсор в то место, которое задано при запуске Calibr().
Что-то здесь не сходится.
В конце еще описание работы скрипта под спойлером.
В начале все стандартно, скидываем переменные, задаем цвета, ждем открытия нужного окна.
Потом пользователь должен навести курсор на кнопку, когда она появится и нажимает F7.
Скрипт записывает координаты курсора в переменные $xMouse, $yMouse.
Потом пользователь нажимает F8 и запускается основная часть.
Скрипт ждет немного и проверяет, не появилась ли одна из двух кнопок. Если появилась, то нажимает на нее и ждет дальше.
При нажатии на пробел или F9 программа заканчивает работу.
Потом пользователь должен навести курсор на кнопку, когда она появится и нажимает F7.
Скрипт записывает координаты курсора в переменные $xMouse, $yMouse.
Потом пользователь нажимает F8 и запускается основная часть.
Скрипт ждет немного и проверяет, не появилась ли одна из двух кнопок. Если появилась, то нажимает на нее и ждет дальше.
При нажатии на пробел или F9 программа заканчивает работу.
Помогите, пожалуйста. У меня кончились идеи, почему так происходит.