Что нового

поиск пикселя определенного цвета в бесконечном цикле!!!

Сообщения
18
Репутация
-1
прошу прошенья 3 суток мученья и вот тема!имеется бесконечный цикл,в нем пытаюсь прописать поиск пикселя определенного цвета!тоесть если цвет совпадает должны выполняться нажатия клавишь
Код:
_1() ; Вызов функции
Func  _1()
    Local $i
    While 1
        $i += 1
        ConsoleWrite($i & @CRLF)
        Sleep(1000)
    _IENavigate($oIE, 'http://kolonisty.ru/main.php?blok=bots&rnd=1463178')
    _IELoadWait ($oIE)
Send("{TAB 11}")
Send("{ENTER}")
_IELoadWait ($oIE)
Send("{TAB 1}")
Send("{ENTER}")
_IELoadWait ($oIE)
Wend
Dim $iColor = "000903D2"    ; Цвет пикселя, на который нужно реагировать
Dim $iX  = "295"       ; Х - координата пикселя, на который нужно реагировать
Dim $iY = "353"        ; Y - координата пикселя, на который нужно реагировать
Dim $hWin = ""      ; Hendle - окна с игрой
Dim $sTitle = "Колонисты - Maxthon Browser 3.2.2.1000"    ; Текст заголовка вашего окна с запущенной игрой

Opt("PixelCoordMode", 2)

HotKeySet("{ESC}", "_Quit")

$hWin = WinGetHandle($sTitle)
WinActivate($hWin)

While 1

    If _ColorListener($iColor, $iX, $iY, $hWin) Then
        Send("{TAB 11}")
Send("{ENTER}")
        Sleep(1000)
    EndIf

    If _ColorListener($iColor, $iX, $iY, $hWin) Then
        Send("{TAB 11}")
Send("{ENTER}")
        Sleep(1000)
    EndIf

    Sleep(250)
WEnd

#cs
    $i_Color - Цвет пикселя, на который нужно реагировать
    $i_X - Х координата пикселя, на который нужно реагировать
    $i_Y - координата пикселя, на который нужно реагировать
    $h_Win - hendle окна с игрой
#ce

Func _ColorListener($i_Color, $i_X, $i_Y, $h_Win = 0)

    Local $iFrozen = 0

    While Hex($i_Color) = Hex(PixelGetColor($i_X, $i_Y, $h_Win))
        If Not $iFrozen Then
            ;ConsoleWrite("Цвет совпал! " & Hex(PixelGetColor($i_X, $i_Y, $hWin)) & @CRLF)
            Return 1
            $iFrozen = Not $iFrozen
        EndIf
    Sleep(250)
    WEnd

    Return 0
EndFunc ;==>_ColorListener

Func _Quit()
    Exit
EndFunc ;==>_Quit

EndIf
но выдает ошибку
ERROR: syntax error
Func
^
.au3(68,27) : ERROR: _Quit(): undefined function.
HotKeySet("{ESC}", "_Quit")
~~~~~~~~~~~~~~~~~~~~~~~~~~^
.au3(75,47) : ERROR: _ColorListener(): undefined function.
If _ColorListener($iColor, $iX, $iY, $hWin)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
.au3 - 3 error(s), 0 warning(s)
координаты беру с Autolt v3 Window info [info]>>>> Window <<<<
Title: Колонисты - Maxthon Browser 3.2.2.1000
Class: Maxthon3Cls_MainFrm
Position: 4, 188
Size: 500, 626
Style: 0x960F0000
ExStyle: 0x00000100
Handle: 0x0004038E

>>>> Control <<<<
Class: Maxthon3Cls_WebViewHost
Instance: 1
ClassnameNN: Maxthon3Cls_WebViewHost1
Name:
Advanced (Class): [CLASS:Maxthon3Cls_WebViewHost; INSTANCE:1]
ID: 1409
Text:
Position: 3, 113
Size: 494, 487
ControlClick Coords: 288, 52
Style: 0x56000000
ExStyle: 0x00000000
Handle: 0x00030412

>>>> Mouse <<<<
Position: 295, 353
Cursor ID: 0
Color: 0xCD5C5C[/info] в чем же проблема
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,320
Frol,
У Вас каша какая-то не работающая, а не код, ИМХО.
 
Автор
F
Сообщения
18
Репутация
-1
madmasles это не весь код !вот бесконечный цикл
Код:
_1() ; Вызов функции
Func  _1()
    Local $i
    While 1
        $i += 1
        ConsoleWrite($i & @CRLF)
        Sleep(1000)
    _IENavigate($oIE, 'http://kolonisty.ru/main.php?blok=bots&rnd=1463178')
    _IELoadWait ($oIE)
Send("{TAB 11}")
Send("{ENTER}")
_IELoadWait ($oIE)
Send("{TAB 1}")
Send("{ENTER}")
_IELoadWait ($oIE)
Wend
- кусочек кода тут все работает и так нужно чтоб тут искал определенный пиксель(цвет) пытаюсь внедрить вот этот код поиска пикселя в мои бесконечный цикл
Код:
Wend
Dim $iColor = "000903D2"    ; Цвет пикселя, на который нужно реагировать
Dim $iX  = "295"       ; Х - координата пикселя, на который нужно реагировать
Dim $iY = "353"        ; Y - координата пикселя, на который нужно реагировать
Dim $hWin = ""      ; Hendle - окна с игрой
Dim $sTitle = "Колонисты - Maxthon Browser 3.2.2.1000"    ; Текст заголовка вашего окна с запущенной игрой

Opt("PixelCoordMode", 2)

HotKeySet("{ESC}", "_Quit")

$hWin = WinGetHandle($sTitle)
WinActivate($hWin)

While 1

    If _ColorListener($iColor, $iX, $iY, $hWin) Then
        Send("{TAB 11}")
Send("{ENTER}")
        Sleep(1000)
    EndIf

    If _ColorListener($iColor, $iX, $iY, $hWin) Then
        Send("{TAB 11}")
Send("{ENTER}")
        Sleep(1000)
    EndIf

    Sleep(250)
WEnd

#cs
    $i_Color - Цвет пикселя, на который нужно реагировать
    $i_X - Х координата пикселя, на который нужно реагировать
    $i_Y - координата пикселя, на который нужно реагировать
    $h_Win - hendle окна с игрой
#ce

Func _ColorListener($i_Color, $i_X, $i_Y, $h_Win = 0)

    Local $iFrozen = 0

    While Hex($i_Color) = Hex(PixelGetColor($i_X, $i_Y, $h_Win))
        If Not $iFrozen Then
            ;ConsoleWrite("Цвет совпал! " & Hex(PixelGetColor($i_X, $i_Y, $hWin)) & @CRLF)
            Return 1
            $iFrozen = Not $iFrozen
        EndIf
    Sleep(250)
    WEnd

    Return 0
EndFunc ;==>_ColorListener

Func _Quit()
    Exit
EndFunc ;==>_Quit

EndIf
- не работает(пример брал с форума рабочии говорят


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

ну или если б я знал как наити координаты моего прямоугольника по Autolt v3 Window info было бы проше !можно б было попробовать сделать так
Код:
While 1
    PixelSearch(693, 195, 693, 195, 0x495054)
    If Not @error Then
    Sleep(50)
Send("{TAB 11}")
Send("{ENTER}")
        Sleep(1000)
    EndIf
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Frol

Ваш код не работает из-за того что вы пытаетесь написать функции _Quit и _ColorListener ВНУТРИ функции _1.

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

Если Вам известны координаты пикселя и точный цвет, то берите уже PixelGetColor, а не PixelSearch
 
Автор
F
Сообщения
18
Репутация
-1
C2H5OH Если Вам известны координаты пикселя и точный цвет, то берите уже PixelGetColor, а не PixelSearch!!!!
в PixelGetColor ищет цвет в окне а мне надо в определенном прямоугольнике!вот скрин


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

поясняю тоемсть идет у меня бесконечный цикл нападает на моба и при помоши таб ентер бьет его!а пытаюсь сделать чтоб в этом цикле находил цвет !если находит аранжевый то жал 11 рах таб и ентер-тоесть пил зелье здоровья
 

winstan

Эксплотатор)
Сообщения
406
Репутация
78
Frol
в первом посте код,
Код:
#cs
    $i_Color - Цвет пикселя, на который нужно реагировать
    $i_X - Х координата пикселя, на который нужно реагировать
    $i_Y - координата пикселя, на который нужно реагировать
    $h_Win - hendle окна с игрой
#ce

перед этим поставь
Код:
EndFunc

а в конце удали
Код:
EndIf


в посте http://autoit-script.ru/index.php/topic,7993.msg54272.html#msg54272
в 1скрипте в конце должен быть конец функции
Код:
EndFunc

в 2 скрипте
в начале
Код:
Wend
не понимаю зачем он там
в конце
Код:
EndIf
тагже не нужно
в3 скрипте я понимаю что цикл бесконечный, но даже у бесконечного должен быть канец ,а в конце должен быть
Код:
wend
 
Автор
F
Сообщения
18
Репутация
-1
а по конкретнее можно а то я на исправлял и добавилось еще куча ошибок!пожавлуйста
 

winstan

Эксплотатор)
Сообщения
406
Репутация
78
1.1
Код:
_1() ; Вызов функции
Func  _1()
    Local $i
    While 1
        $i += 1
        ConsoleWrite($i & @CRLF)
        Sleep(1000)
    _IENavigate($oIE, 'http://kolonisty.ru/main.php?blok=bots&rnd=1463178')
    _IELoadWait ($oIE)
Send("{TAB 11}")
Send("{ENTER}")
_IELoadWait ($oIE)
Send("{TAB 1}")
Send("{ENTER}")
_IELoadWait ($oIE)
Wend


Dim $iColor = "000903D2"    ; Цвет пикселя, на который нужно реагировать
Dim $iX  = "295"       ; Х - координата пикселя, на который нужно реагировать
Dim $iY = "353"        ; Y - координата пикселя, на который нужно реагировать
Dim $hWin = ""      ; Hendle - окна с игрой
Dim $sTitle = "Колонисты - Maxthon Browser 3.2.2.1000"    ; Текст заголовка вашего окна с запущенной игрой

Opt("PixelCoordMode", 2)

HotKeySet("{ESC}", "_Quit")

$hWin = WinGetHandle($sTitle)
WinActivate($hWin)

While 1

    If _ColorListener($iColor, $iX, $iY, $hWin) Then
        Send("{TAB 11}")
Send("{ENTER}")
        Sleep(1000)
    EndIf

    If _ColorListener($iColor, $iX, $iY, $hWin) Then
        Send("{TAB 11}")
Send("{ENTER}")
        Sleep(1000)
    EndIf

    Sleep(250)
WEnd
EndFunc
#cs
    $i_Color - Цвет пикселя, на который нужно реагировать
    $i_X - Х координата пикселя, на который нужно реагировать
    $i_Y - координата пикселя, на который нужно реагировать
    $h_Win - hendle окна с игрой
#ce

Func _ColorListener($i_Color, $i_X, $i_Y, $h_Win = 0)

    Local $iFrozen = 0

    While Hex($i_Color) = Hex(PixelGetColor($i_X, $i_Y, $h_Win))
        If Not $iFrozen Then
            ;ConsoleWrite("Цвет совпал! " & Hex(PixelGetColor($i_X, $i_Y, $hWin)) & @CRLF)
            Return 1
            $iFrozen = Not $iFrozen
        EndIf
    Sleep(250)
    WEnd

    Return 0
EndFunc ;==>_ColorListener

Func _Quit()
    Exit
EndFunc ;==>_Quit


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

2.1
Код:
_1() ; Вызов функции
Func  _1()
    Local $i
    While 1
        $i += 1
        ConsoleWrite($i & @CRLF)
        Sleep(1000)
    _IENavigate($oIE, 'http://kolonisty.ru/main.php?blok=bots&rnd=1463178')
    _IELoadWait ($oIE)
Send("{TAB 11}")
Send("{ENTER}")
_IELoadWait ($oIE)
Send("{TAB 1}")
Send("{ENTER}")
_IELoadWait ($oIE)
Wend
EndFunc

2.2
Код:
Dim $iColor = "000903D2"    ; Цвет пикселя, на который нужно реагировать
Dim $iX  = "295"       ; Х - координата пикселя, на который нужно реагировать
Dim $iY = "353"        ; Y - координата пикселя, на который нужно реагировать
Dim $hWin = ""      ; Hendle - окна с игрой
Dim $sTitle = "Колонисты - Maxthon Browser 3.2.2.1000"    ; Текст заголовка вашего окна с запущенной игрой

Opt("PixelCoordMode", 2)

HotKeySet("{ESC}", "_Quit")

$hWin = WinGetHandle($sTitle)
WinActivate($hWin)

While 1

    If _ColorListener($iColor, $iX, $iY, $hWin) Then
        Send("{TAB 11}")
Send("{ENTER}")
        Sleep(1000)
    EndIf

    If _ColorListener($iColor, $iX, $iY, $hWin) Then
        Send("{TAB 11}")
Send("{ENTER}")
        Sleep(1000)
    EndIf

    Sleep(250)
WEnd

#cs
    $i_Color - Цвет пикселя, на который нужно реагировать
    $i_X - Х координата пикселя, на который нужно реагировать
    $i_Y - координата пикселя, на который нужно реагировать
    $h_Win - hendle окна с игрой
#ce

Func _ColorListener($i_Color, $i_X, $i_Y, $h_Win = 0)

    Local $iFrozen = 0

    While Hex($i_Color) = Hex(PixelGetColor($i_X, $i_Y, $h_Win))
        If Not $iFrozen Then
            ;ConsoleWrite("Цвет совпал! " & Hex(PixelGetColor($i_X, $i_Y, $hWin)) & @CRLF)
            Return 1
            $iFrozen = Not $iFrozen
        EndIf
    Sleep(250)
    WEnd

    Return 0
EndFunc ;==>_ColorListener

Func _Quit()
    Exit
EndFunc ;==>_Quit
2.3
Код:
While 1
    PixelSearch(693, 195, 693, 195, 0x495054)
    If Not @error Then
    Sleep(50)
Send("{TAB 11}")
Send("{ENTER}")
        Sleep(1000)
    EndIf
wend
 
Автор
F
Сообщения
18
Репутация
-1
все равно не ищет цвет может и ищет но не нажимает клавиши таб 11 раз и ентер!я и говорю все мозги кипят
 
Автор
F
Сообщения
18
Репутация
-1
все попробовал не хочет искать пиксель 0xCD5C5C и нажимать комбинацию клавишь!буду думать может еще как нибудь сделать можно
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Код:
While 1
    $win_pos = WinGetCaretPos ( )
    If Not @error Then
       PixelSearch($win_pos[0]+267, $win_pos[1]+164, $win_pos[0]+296, $win_pos[1]+175, 0xCD5C5C, 10)
        If Not @error Then
           Sleep(50)
           Send("{TAB 11}") 
           Send("{ENTER}")
           Sleep(1000)
        EndIf
    EndIf
Wend
 

running-frag

why me?
Сообщения
441
Репутация
60
OffTopic:
я не перестаю удивляться админам и модерам этого форума, вам памятники надо ставить за терпение и выдержку
глядя на топик одни эпитеты напрашиваются
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
964
Скрипт должен найти пиксель на кнопке "В игру!" и кликнет по ней пять, раз.
Код:
OnAutoItExitRegister('_Exit')
#include <IE.au3>

Opt("PixelCoordMode", 2)
Opt("MouseCoordMode", 2)

Dim $iCount = 0
Dim $iColor = "0x0050BF"    		; Цвет пикселя, на который нужно реагировать
Dim $iX  = "498"					; Х - координата пикселя, на который нужно реагировать
Dim $iY = "645"						; Y - координата пикселя, на который нужно реагировать
Dim $hWin = ""						; Hendle - окна с игрой
Dim $sTitle = "[CLASS:IEFrame]"    	; Текст заголовка вашего окна с запущенной игрой

$oIE = _IECreate("http://kolonisty.ru/")

AdlibRegister("_Listener")

While 1
	If Not WinExists($sTitle) Then
		Exit
	EndIf
	Sleep(100)
WEnd

Func _Listener()
	
	Local $o_Action
	
	If WinActive($sTitle) Then
		If _ColorListener($iColor, $iX, $iY, $hWin) Then
			If $iCount = 5 Then Exit
			MouseClick("Left", $iX, $iY)
			$iCount +=1
			Return 1
		EndIf
	EndIf
EndFunc ;==>_Listener

Func _ColorListener($i_Color, $i_X, $i_Y, $h_Win = 0)

    While Hex($i_Color) = Hex(PixelGetColor($i_X, $i_Y, $h_Win))
        If Not $i_Frozen Then
            ;ConsoleWrite("Цвет совпал! " & Hex(PixelGetColor($i_X, $i_Y, $hWin)) & @CRLF)
            Return 1
        EndIf
    Sleep(250)
    WEnd

    Return 0
EndFunc ;==>_ColorListener

Func _Exit()
	AdlibUnRegister("_Listener")
EndFunc ;==>_Exit
 
Автор
F
Сообщения
18
Репутация
-1
не куда не кликает :rofl: открывает браузер ие и все


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

может проше определить по тексту вернее !к примеру у меня 800/800 жизней это должно проверять!типа 800 жизней или больше то не чего не делать если 700/800 и меньше то выполнять допустим переход по ссылке!может так как нибудь будет проше!!
 
Автор
F
Сообщения
18
Репутация
-1
ну или реально ли сделать в моем бесконечном цикле клик по тексту или ссылке каждые 5 минут? вот тут
Код:
_1() ; Вызов функции
Func  _1()
    Local $i
    While 1
        $i += 1
        ConsoleWrite($i & @CRLF)
        Sleep(1000)
    _IENavigate($oIE, 'http://kolonisty.ru/main.php?blok=bots&rnd=1463178')
    _IELoadWait ($oIE)
Send("{TAB 11}")
Send("{ENTER}")
_IELoadWait ($oIE)
Send("{TAB 1}")
Send("{ENTER}")
_IELoadWait ($oIE) ; вот тут чтоб находил текст и  нажимал  или кликал на него                                                                                        
Wend
EndFunc
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
964
Frol [?]
не куда не кликает
rofl.gif
открывает браузер ие и все
Я не ясновидящий! Скрипт рабочий на 100% (проверен)
Могу биться об заклад, что ваша проблема в вас. Если вы хотите что бы вам помогли, (мой вам совет) вникайте в те вопросы, которые здесь вам задают!
Ещё неплохо бы, выложить как можно больше информации на форум о том, как вы и что делаете!
Я вас спросил в посте № 11 по поводу опции не спроста! Вы сможете мне объяснить, где эта опция находится, если вы всё поняли?
Так вот, если вы всё-таки правильно поняли, то выставьте эту опцию и найдите свои координаты и цвет пикселя для поиска в окне браузера, а после подставьте их в тело скрипта и проверьте.
 
Автор
F
Сообщения
18
Репутация
-1
выставлял я в опциях-клиент!ладно что нибдь придумаю !
 
Верх