Что нового

Слежение за цветом в облости

shift72

Новичок
Сообщения
86
Репутация
2
В игре ХП представлены красной полоской в нижней левой части экрана. Задача использовать аптечку как только ХП станет меньше половины.
Итак следим за красным цветом в координатах где ХП ровно половина. Как только красный цвет исчезает, программа жмет например клавишу "1". (в примере сообщение)
Кое что нашел на форуме. Но с использованием проблема.

Код:
#include <GUIConstants.au3>
GUICreate ("Программа", 260, 230) 
$CTRL_btn1 = GUICtrlCreateButton ("Старт", 105, 50, 50, 30)
GUICtrlCreateLabel("Отключение клавишей F4 ", 20, 10)
HotKeySet('{F4}', '_Exec')
Func _Exec() ;закрытие по горячей клавише ф4
Exit
EndFunc   ;==>_Exec
GUISetState() 
While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
		 Case $CTRL_btn1
			While 1
   $color = PixelGetColor(60, 930)
   If '0x' & Hex($color, 6) = 0x924244 Then  MsgBox(0, "Сработало")
Wend
			EndSwitch
WEnd
Do
  $msg = GUIGetMsg()

Until $msg = $GUI_EVENT_CLOSE


Не срабатывает. В чем проблема?


ЗЫ извиняюсь за то что создал тему заново, кликнул на удалить в прошлой теме, и не проследил. Тема не удалилась... Повторяюсь: "Я извиняюсь"
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Попробуйте заменить строку

Код:
If '0x' & Hex($color, 6) = 0x924244 Then  MsgBox(0, "Сработало")


На

Код:
If Hex($color, 4) == 924244 Then  MsgBox(0, "Сработало")


И поставьте хоть какой Sleep, зачем такая нагрузка на процессор.
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
shift72
Обновил пост, проверьте еще раз.
 

sebun

Знающий
Сообщения
81
Репутация
5
Немного изменил твой пример для наглядности:

Код:
#include <GUIConstants.au3>
GUICreate ("Программа", 260, 230)
$CTRL_btn1 = GUICtrlCreateButton ("Старт", 105, 50, 50, 30)
GUICtrlCreateLabel("Отключение клавишей F4 ", 20, 10)
HotKeySet('{F4}', '_Exec')

Func _Exec() ;закрытие по горячей клавише ф4
	Exit
EndFunc   ;==>_Exec

GUISetState()

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
         Case $CTRL_btn1
            While 1
				$var = PixelGetColor(240, 300)
				If Not @error Then
					$color = '0x' & Hex($var, 6)
					If $color = 0x924244 Then
						MsgBox(0, "Сработало")
					Else
						TrayTip("Не найдено", "Текущий цвет" & $color, 1,1)
					EndIf
				EndIf
			Wend
        EndSwitch
WEnd

Do
  $msg = GUIGetMsg()

Until $msg = $GUI_EVENT_CLOSE

Поставь дескриптор окна PixelGetColor в качестве третьего параметра, так как он пытается читать собственное окно, которое ты создал через GUI.
 

Z_Lenar

Продвинутый
Сообщения
209
Репутация
52
Код:
#include <GUIConstants.au3>
GUICreate ("Программа", 260, 230)
$CTRL_btn1 = GUICtrlCreateButton ("Старт", 105, 50, 50, 30)
GUICtrlCreateLabel("Отключение клавишей F4 ", 20, 10)
HotKeySet('{F4}', '_Exec')

Opt("PixelCoordMode", 1)

Func _Exec() ;закрытие по горячей клавише ф4
    Exit
EndFunc   ;==>_Exec

GUISetState()

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
         Case $CTRL_btn1
            While 1
                $var = PixelGetColor(106, 158)
                If Not @error Then
                    $color = '0x' & Hex($var, 6)
                    If $color = 0xff9608 Then
                        TrayTip("Сработало",'kj', 100)
                    Else
                        TrayTip("Не найдено", "Текущий цвет" & $color, 1,1)
                    EndIf
                EndIf
				Sleep(100)
            Wend
        EndSwitch
WEnd

Do
  $msg = GUIGetMsg()

Until $msg = $GUI_EVENT_CLOSE
 
Верх