Что нового

проверка цвета пикселя

Статус
Закрыто для дальнейших ответов.

mini

нинзя-черепангел
Сообщения
44
Репутация
1
Как организовать проверку цвета пикселя?
если цвет пикселя равен цвету икс, то
делать движение игрек
Если нет, то ждать пока не будет цвет равен


Либо скрипт стоит на паузе пока пиксель не станет данного цвета...
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
mini
Читай хелп
Код:
Help->PixelGetColor
 
Автор
M

mini

нинзя-черепангел
Сообщения
44
Репутация
1
Код:
 $var = PixelGetColor(x, y) ; цвет пикселя на данный момент времени
 $cvet =zzz ;цвет, который нужен мне
if $var =$cvet Then
трали вали ;делается действие


EndIf
это может быть готовым скриптом (понятное дело, если заменить слова трали вали на конкретное действие на языке автоит)и будет ли это ответом на мой первый пост?
И подскажите, пожалуйста, как можно сделать, чтобы проверка проходила только в определённый момент времени. Тоесть я командой в теле скриптазапускаю проверку и если результат положительный то запускается действие, а если нет, то проверка не происходит пока опять не потребуется
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
mini [?]
будет ли это ответом на мой первый пост
нет. твой скрипт сделает проверку один раз и закроется.
для периодической проверки надо ставить цикл
Код:
While 1
	$var = PixelGetColor(x, y) ; цвет пикселя на данный момент времени
	$cvet =zzz ;цвет, который нужен мне
	if $var =$cvet Then
	   трали вали ;делается действие
	EndIf
	Sleep(100)
WEnd


как можно сделать
самый лучший способ это записать порядок необходимых действий на бумаге человеческим языком на атомарном уровне. типа
сделать действие А
сделать действие Б
и т.д.
потом попытаться перевести полученное на интуитивном уровне на англ. язык и по ключевым словам сделать поиск в хелпе, у меня так получается выполнить 95% нужных вещей. хелп в AutoIt самый грамотно-оформленный который я когда либо видел.
по поводу второго вопроса
проверка времени производится сравнением системных часов с нужными параметрами
Код:
$hr = 9
$min = 30
While 1
	$var = PixelGetColor(x, y) ; цвет пикселя на данный момент времени
	$cvet =zzz ;цвет, который нужен мне
	if $var =$cvet AND (@HOUR = $hr AND @MIN = $min) Then
	   трали вали ;делается действие
	EndIf
	Sleep(100)
WEnd
 
Автор
M

mini

нинзя-черепангел
Сообщения
44
Репутация
1
о! это примерно то, что я хотел
Код:
While 1
    $var = PixelGetColor(x, y) ; цвет пикселя на данный момент времени
    $cvet =zzz ;цвет, который нужен мне
    if $var =$cvet Then
       трали вали ;делается действие
    EndIf
    Sleep(100)
WEnd


а как можно сделать чтобы проверка спала(sleep я имею ввиду) пока не вызовут командой?
догадываюсь что там замешанна команда until, но вот как именно её сюда вставить...
хотя...
тут идея появилась... в скрипте же можно поставить команду goto proverka и тогда будет у скрипта примерно такой вид:
Код:
:proverka
$var = PixelGetColor(x, y) ; цвет пикселя на данный момент времени
$cvet =zzz ;цвет, который нужен мне
if $var =$cvet Then
трали вали ;делается действие
EndIf

Я правильно понял?



Сорри!! Только что узнал что команды gotoв третьей версие уже нет... Обьясните, пожалуйста, как это грамотно оформить при помощи команд, заменяющих goto.
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1 517
Репутация
321
Решение твое вижу через HotKeySet :smile:
Код:
HotkeySet("{F2}","proverka")
While 1
   Sleep(100)
WEnd
Func proverka()
$var = PixelGetColor(x, y) ; цвет пикселя на данный момент времени
$cvet =zzz ;цвет, который нужен мне
if $var =$cvet Then
;делается действие трали вали
EndIf
EndFunc
 
Автор
M

mini

нинзя-черепангел
Сообщения
44
Репутация
1
Kaster сказал(а):
Код:
While 1
	$var = PixelGetColor(x, y) ; цвет пикселя на данный момент времени
	$cvet =zzz ;цвет, который нужен мне
	if $var =$cvet Then
	   трали вали ;делается действие
	EndIf
	Sleep(100)
WEnd
что значит while 1 ? точнее что значит единица.
это значит что проверка будет постоянно выполняться?
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1 517
Репутация
321
mini [?]
Да. Еденица превращает цикл в бесконечный. Означает как
Код:
Пока 1=1
Делать действия бесконечно
Конец
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 551
Репутация
930
ПГК - не сработает если полученный цвет хотя бы на единицу отличается от эталонного. Используй конструкцию с PixelSearch.
 

Vlasssov

Осваивающий
Сообщения
428
Репутация
25
Вопрос возник такой вот. Если цикл постоянный, значит скрипт, как я понимаю, будет висеть в фоне пока его не выключить? При этом в исследуемом окне можно любые действия производить?
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1 517
Репутация
321
В этом скрипте получается именно так, но можно при нахождении нужного пикселя сделать выход из цикла.
 

NuclearBeer

Чайник
Сообщения
31
Репутация
0
Доброго времени суток, мне похожая вещь нужна


Код:
HotkeySet("{Space}","proverka")
While 1
   Sleep(100)
WEnd
Func proverka()
$var = PixelGetColor(x, y) ; цвет пикселя на данный момент времени
$cvet =zzz ;цвет, который нужен мне
if $var =$cvet Then
   MouseClick("left") ;делается действие трали вали
EndIf
EndFunc


правильно я понимаю - при нажатие пробел будет происходит поиск совпадения на цвет
(zzz) пикселя по координатам (Х,У) после его совпадения будет происходить действие (Л-клик) при нажатии пробел снова цикл прекратится?
так в чем моя беда как вбить этот цвет, скорее мне нужно диапазон цвета красный(15-35),зеленый(220-240), синий(30-50) и увеличить количество проверяемых пикселей до диапазона 50х50 пикселей в центре экрана... я так понимаю что мне нужно задать 2 переменных на вертикаль и горизонталь экрана... при моем разрешение 1920х1080 будет примерно так... 1920-50=1870/2=935!+50=985!....1080-50=1030/2=515!+50=565!....1 переменная в промежутке 935-985, 2 переменная 515-565.
если кому не сложно помогите пожалуйста довести до ума это дело)))
п.с. я просто дно в таких делах и как не стараюсь не могу я сам это сделать
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 702
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
(подробнее), а обычный код соответственно в тег [code]
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Модератор.
 

NuclearBeer

Чайник
Сообщения
31
Репутация
0
1 проблему решил командой pixelsearch, вопрос можно ли ввести интервал цвета ?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 702
Вы решили проигнорировать мое предупреждение?
 

NuclearBeer

Чайник
Сообщения
31
Репутация
0
Код:
HotKeySet ( "{ALT}" ,"_Exit")

While 1 
    PixelSearch( 50, 50, 50, 50, 0x21E927)
    If Not @error Then
        MouseClick("left")
    EndIf
WEnd

Func _Exit()
    Exit
EndFunc


вот что у меня вышло) Но вопрос - я так понимаю оно должно сканить диапазон пикселей по 50 во все стороны от центра экрана на наличие этого цвета 0x21E927? проблема в том что я не могу определить точный цвет... можно добавить какой то спектр?
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
963
NuclearBeer
Подведите курсор мыши к функции PixelSearch в коде выложенном вами выше, как только курсор меняется на pointer, не стесняясь нажмите ЛКМ.
Перейдя по ссылке и прочитав написанное, вы сами всё поймёте.
shade-variation [необязательный] Число от 0 до 255, показывающее, на сколько может отличаться красная, зелёная и синяя компоненты цвета. По умолчанию 0 (точное совпадение).
 

NuclearBeer

Чайник
Сообщения
31
Репутация
0
Код:
HotKeySet ( "{ALT}" ,"_Exit")

While 1 
    PixelSearch( 50, 50, 50, 50, 0x21E927[, shade-variation=25])
    If Not @error Then
        MouseClick("left")
    EndIf
WEnd

Func _Exit()
    Exit 
EndFunc


спасибо за совет, ну я уже вписывал этот параметр, и скрипт не запускается с этим параметром... если это именно то что нужно то как сделать что бы он не критовал? :scratch:
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
963
NuclearBeer
Ещё вот это обязательно почитайте.
Код:
Opt("PixelCoordMode", 2)
 
Статус
Закрыто для дальнейших ответов.
Верх