Что нового

[Автоматизация] Поиск цветов пикселя в определенном порядке

Viktor19870628

Новичок
Сообщения
38
Репутация
0
Версия AutoIt: 3.14/2
Описание: Собрал благодаря вашей помощи вот такую конструкцию:
Код:
Global $Paused


HotKeySet("{F7}", "TogglePause")
HotKeySet("{F6}","_Exit")

Opt("PixelCoordMode", 1)
Opt("MouseCoordMode", 1)




While 1
    $Specnaz = PixelSearch(160, 190,160, 70,0xff2626,0,1)
If IsArray($Specnaz) = True Then
MouseDown('left')
Sleep(50)
MouseUp('left')
        Sleep(0)
    WEnd

Func TogglePause()
    $Paused = Not $Paused
        While $Paused
        sleep(100)
        ToolTip('Скрипт приостановлен"',0,0)
    WEnd
    ToolTip("")
EndFunc

Func _Exit()
    Exit
EndFunc

Вопрос: Как заставить скрипт искать три или четыре цвета которые расположились в определенном порядке в заданных координатах

Примечания:
Например 0xff0026 0xf82323 0xff2626 - такой порядок например нужный мне(значит скрипт кликает центр экрана)
или неправильный пример 0xff0026 0xff2626 0xf82323 -такой или любой другой вариант неправильный(значит скрипт ничего не делает)
 

sergioz

Знающий
Сообщения
39
Репутация
5
используй под каждый пиксель логическую переменную
пикс=0

цикл поиска
если нашел то пикс=1
концикла

дальше проверяешь условием
если пикс1 и пикс2 и пикс2 то что нам надо
иначе ненадо
 
Автор
V

Viktor19870628

Новичок
Сообщения
38
Репутация
0
Мне бы примерчик как это реализовать.а то с меня программист никакой.да и вечером после работы хрен осилю такие премудрости. :stars:
 

Dima1337

Осваивающий
Сообщения
186
Репутация
24
пример
Код:
HotKeySet('{Esc}','_exit')

global $Pause

While 1
	_check()
	Sleep(100)
WEnd

func _check()
	If Hex(PixelGetColor($x,$y)) = 'FF0026' And Hex(PixelGetColor($x2,$y2)) = 'F82323' And Hex(PixelGetColor($x3,$y3)) = 'FF2626' Then
		ControlClick('','','','')
	EndIf
EndFunc

func _exit()
	$Pause = Not $Pause
	While $Pause
		Sleep(10)
	WEnd
EndFunc
 
Автор
V

Viktor19870628

Новичок
Сообщения
38
Репутация
0
я как понимаю "PixelGetColor" медленнее.и на этом примере я как понимаю он будет сканировать все окно???
 

Dima1337

Осваивающий
Сообщения
186
Репутация
24
Viktor19870628 сказал(а):
я как понимаю "гетколор" медленнее.и на этом примере я как понимаю он будет сканировать все окно???
Ну относительно PixelSearch он побыстрее будет. Нет, он дает цвет конкретного пикселя по адресу $x и $y
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Viktor19870628 [?]
я как понимаю "гетколор" медленнее.и на этом примере я как понимаю он будет сканировать все окно???

Предупреждение За нарушение общих правил (пункт В.8):
Так как эта конференция называется "Русское сообщество AutoIt", язык общения на ней - Русский. Названия фирм или программных продуктов, аббревиатуры и т.д. должны быть написаны так, как они пишутся в оригинале, например не следует писать УСБ вместо USB. На форуме крайне не рекомендуется намеренно искажать русский язык и использовать "сетевой жаргон" на подобии "Аффтар выпей йадау!".


С уважением, ваш Глобальный модератор.





P.S. Вы элементарные правила пунктуации соблюдать не пробовали?
 
Автор
V

Viktor19870628

Новичок
Сообщения
38
Репутация
0
В моем случае сканировать нужно область экрана. Это можно как то вмонтировать в этот пример, а то получаеться 120 координат сканировать будет.
 
Автор
V

Viktor19870628

Новичок
Сообщения
38
Репутация
0
Код:
Global $Paused

HotKeySet("{F7}", "TogglePause")
HotKeySet("{F6}","_Exit")

Opt("PixelCoordMode", 1)
Opt("MouseCoordMode", 1)

While 1
PixelSearch(160, 70,160, 190,0x5F383D,0,1)
 If @error Then
	 Sleep (0)
 Else
	 PixelSearch(160, 70,160, 190,0x6F373B,0,1)
 If @error Then
	 Sleep (0)
 Else
	 PixelSearch(160, 70,160, 190,0x70373B,0,1)
 If @error Then
	 Sleep (0)
 Else
	 PixelSearch(160, 70,160, 190,0x76373B,0,1)
 If @error Then
	 Sleep (0)
Else
PixelSearch(160, 70,160, 190,0x993235,0,1)
If not @error Then
  MouseDown('left')
Sleep(1)
MouseUp('left')

Else

	EndIf
	EndIf
EndIf
EndIf
EndIf



Func TogglePause()
    $Paused = Not $Paused
        While $Paused
        sleep(100)
        ToolTip('Скрипт приостановлен"',0,0)
    WEnd
    ToolTip("")
EndFunc

Func _Exit()
    Exit
EndFunc

По идее должен в этой последовательности найти цвета и кликнуть. Но снова ложные срабатывания. Подскажите пожалуйста где я опять окосячился!!!
 
Верх