Что нового

Как выполнить действие, при появлении на экране пикселей определенного цвета

Автор
B

Bigi

Новичок
Сообщения
21
Репутация
0
Garrett [?]
Запустите этот скрипт в SciTE, потом зайдите в меню "Вид" и снимите галочку с "Панель инструментов", потом снова поставьте.
В консоли вы увидите эмуляцию функции Send
Снимал галочку и снова ставил обратно но нечего не изменилось к сожалению
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Bigi [?]
Снимал галочку и снова ставил обратно но нечего не изменилось к сожалению
Понял, у вас наверно нестандартная тема Windows!!! :wall_brake:
Попробуйте так:

Код:
; СНАЧАЛА ЗАПУСТИТЕ ОКНО С ИГРОЙ!!!
; Потом перейдите в StiTE и запустите скрипт.
Dim $iColor = ""	; Цвет пикселя, на который нужно реагировать
Dim $iX  = ""		; Х - координата пикселя, на который нужно реагировать
Dim $iY = ""		; Y - координата пикселя, на который нужно реагировать
Dim $hWin = ""		; Hendle - окна с игрой
Dim $sTitle = ""	; Текст заголовка вашего окна с запущенной игрой

Opt("PixelCoordMode", 2)

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

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

While 1

	If _ColorListener($iColor, $iX, $iY, $hWin) Then 
		Send('1')
		Sleep(1000)
	EndIf
	
	If _ColorListener($iColor, $iX, $iY, $hWin) Then 
		Send('2')
		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)

	
	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
		EndIf
	Sleep(250)
	WEnd

	Return 0
EndFunc ;==>_ColorListener

Func _Quit()
    Exit
EndFunc ;==>_Quit
 
Автор
B

Bigi

Новичок
Сообщения
21
Репутация
0
как бы сказать,начело проверять на цвет но не срабатывают опятьже кнопки 1 и 2
 
Автор
B

Bigi

Новичок
Сообщения
21
Репутация
0
Есть у каво ещо какие идею по данному скрипту,окно с игрой открывает а вот нажимать не хочет :(
Код:
; СНАЧАЛА ЗАПУСТИТЕ ОКНО С ИГРОЙ!!!
; Потом перейдите в StiTE и запустите скрипт.
Dim $iColor = 0x465D87    ; Цвет пикселя, на который нужно реагировать
Dim $Dip_Col = 50
Dim $iX  = 53       ; Х - координата пикселя, на который нужно реагировать
Dim $iY = 95        ; Y - координата пикселя, на который нужно реагировать
Dim $hWin = WinGetHandle("[ACTIVE]")     ; Hendle - окна с игрой
Dim $sTitle = "ACEonline_R"    ; Текст заголовка вашего окна с запущенной игрой

Opt("PixelCoordMode", 2)

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

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

While 1

    If _ColorListener($iColor, $iX, $iY, $hWin) Then
        Send('1')
        Sleep(1000)
    EndIf

    If _ColorListener($iColor, $iX, $iY, $hWin) Then
        Send('2')
        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
 
Автор
B

Bigi

Новичок
Сообщения
21
Репутация
0
Если защита от Send установлена на игру,почему тогда работает этот скрипт проста на нажатие
Код:
HotKeySet("{ESC}", "quit")

Dim $sTitle = "ACEonline_R"

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

    While 1
    send("1")
    sleep(300)
    send("2")
    sleep(300)
    WEnd
sleep(10)
WEnd


Func quit()
    Exit
EndFunc

Кстате если возможно добавить к скрипту функции Start\Pause чтобы можно былобы запускать тогда когда нужно.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Отлично! Значит, пойдем дальше! Вероятнее всего неправильные координаты или цвет пикселя.
Что "скажет" это скрипт.
Код:
; СНАЧАЛА ЗАПУСТИТЕ ОКНО С ИГРОЙ!!!
Dim $iColor = 0x465D87	; Цвет пикселя, на который нужно реагировать
Dim $iX  = 53		; Х - координата пикселя, на который нужно реагировать
Dim $iY = 59		; Y - координата пикселя, на который нужно реагировать
Dim $hWin			; Hendle - окна с игрой
Dim $sTitle = "ACEonline_R"	; Текст заголовка вашего окна с запущенной игрой

Opt("PixelCoordMode", 2)
Opt("MouseCoordMode", 2)
WinActivate($sTitle)
Sleep(500)
$hWin = WinGetHandle($sTitle)
$iCoord = PixelSearch( $iX, $iY, $iX, $iY, $iColor, 1, "", $hWin)
If IsArray($iCoord) Then
	MouseMove ($iCoord[0], $iCoord[1])
	MsgBox(0, "Соответствие найдено:", "Yippee! :) " & @CRLF & @CRLF & _
									   "Coord X: " & $iCoord[0] & @CRLF & _
									   "Coord Y: " & $iCoord[1] & @CRLF & _
									   "Color: " & Hex(PixelGetColor($iCoord[0], $iCoord[1], $hWin)))
Else
	MouseMove ($iX, $iY)
	MsgBox(0, "Соответствие НЕ найдено:", "Ops! :( " & @CRLF & @CRLF & _
										  "Coord X: " & $iX & @CRLF & _
										  "Coord Y: " & $iY & @CRLF & _
										  "Color: " & Hex(PixelGetColor($iX, $iY, $hWin)))
EndIf


PS. Мышка подскажет, где пиксел, по вашим координатам и какой там цвет!
 
Автор
B

Bigi

Новичок
Сообщения
21
Репутация
0
Уважаемый Garrett к сожалению Уезжаю в командировку,но по возвращению через недельку надеюсь продолжим тему :smile:
 
Автор
B

Bigi

Новичок
Сообщения
21
Репутация
0
Coord X:100
Coord Y:50
это точки на которых окраз и должна проводиться проверка.
Color:001B2230
Цвет на каторый и должен начать работать скрипт!
 
Сообщения
18
Репутация
-1
Garrett последовал вашему примеру подредактировал ваш пример под себя под свои скрипт и не получается вроде все правильно
Код:
_IENavigate($oIE, 'http://kolonisty.ru/main.php?blok=bots&rnd=1463178')
$oLinks = _IELinkGetCollection($oIE)
;Кнопка Пауза и Завершить
Global $Paused
HotKeySet("{F3}", "TogglePause")
HotKeySet("{F11}", "Terminate")

Func TogglePause()
    $Paused = NOT $Paused
    While $Paused
    sleep(50)
        ToolTip('Script is "Paused"',0,0)
    WEnd
    ToolTip("")
EndFunc
Func Terminate()
    Exit 0
EndFunc ;клавиши Пауза и Выход назначены
_IELoadWait ($oIE)
Send("{TAB 11}")
Send("{ENTER}")
_IELoadWait ($oIE)
Send("{TAB 1}")
Send("{ENTER}")
_IELoadWait ($oIE)
_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)
; Потом перейдите в StiTE и запустите скрипт.
Dim $iColor = 0xCD5C5C    ; Цвет пикселя, на который нужно реагировать
Dim $Dip_Col = 50
Dim $iX  = 295      ; Х - координата пикселя, на который нужно реагировать
Dim $iY = 357        ; Y - координата пикселя, на который нужно реагировать
Dim $hWin = WinGetHandle("[0x00520618]")     ; 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
WEnd
EndFunc
тоесть если свет совпадает то у меня не нажимает 11 раз таб потом ентер вот в чем проблема подскажите!а вот что говорит инфо [info]>>>> Window <<<<
Title: Колонисты - Maxthon Browser 3.2.2.1000
Class: Maxthon3Cls_MainFrm
Position: 4, 188
Size: 500, 626
Style: 0x960F0000
ExStyle: 0x00000100
Handle: 0x00060528

>>>> Control <<<<
Class: Internet Explorer_Server
Instance: 1
ClassnameNN: Internet Explorer_Server1
Name:
Advanced (Class): [CLASS:Internet Explorer_Server; INSTANCE:1]
ID:
Text:
Position: 3, 113
Size: 494, 487
ControlClick Coords: 288, 56
Style: 0x56000000
ExStyle: 0x00000000
Handle: 0x00520618

>>>> Mouse <<<<
Position: 295, 357
Cursor ID: 0
Color: 0xCD5C5C

>>>> StatusBar <<<<[/info]
 
Верх