Автор Тема: [Автоматизация] Поиск цветов пикселя в определенном порядке  (Прочитано 394 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Viktor19870628 [?]

  • Новичок
  • *
  • Сообщений: 29
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Версия AutoIt: 3.14/2
Описание: Собрал благодаря вашей помощи вот такую конструкцию:
Код: AutoIt [Выделить]
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   -такой или любой другой вариант неправильный(значит скрипт ничего не делает) 

Русское сообщество AutoIt


Оффлайн sergioz [?]

  • Новичок
  • *
  • Сообщений: 37
  • Репутация: 4
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
используй под каждый пиксель логическую переменную
пикс=0

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

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

Оффлайн Viktor19870628 [?]

  • Новичок
  • *
  • Сообщений: 29

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Мне бы примерчик как это реализовать.а то с меня программист никакой.да и вечером после работы хрен осилю такие премудрости. :stars:

Оффлайн Dima1337 [?]

  • Новичок
  • *
  • Сообщений: 164
  • Репутация: 17
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
пример
Код: AutoIt [Выделить]
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


Правильный вопрос - полдела!

Русское сообщество AutoIt


Оффлайн Viktor19870628 [?]

  • Новичок
  • *
  • Сообщений: 29

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
я как понимаю "PixelGetColor" медленнее.и на этом примере я как понимаю он будет сканировать все окно???
« Последнее редактирование: Ноябрь 23, 2017, 16:07:58 от Viktor19870628 »

Оффлайн Dima1337 [?]

  • Новичок
  • *
  • Сообщений: 164
  • Репутация: 17
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
я как понимаю "гетколор" медленнее.и на этом примере я как понимаю он будет сканировать все окно???
Ну относительно PixelSearch он побыстрее будет. Нет, он дает цвет конкретного пикселя по адресу $x и $y

Оффлайн Garrett [?]

  • Глобальный модератор
  • *
  • Сообщений: 3999
  • Репутация: 960
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Viktor19870628  [?]
Цитировать
я как понимаю "гетколор" медленнее.и на этом примере я как понимаю он будет сканировать все окно???

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


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

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

Скорблю и помню.




Оффлайн Viktor19870628 [?]

  • Новичок
  • *
  • Сообщений: 29

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
В моем случае сканировать нужно область экрана. Это можно как то вмонтировать в этот пример, а то получаеться 120 координат сканировать будет.
« Последнее редактирование: Ноябрь 24, 2017, 15:56:13 от Garrett »

Русское сообщество AutoIt


Оффлайн Viktor19870628 [?]

  • Новичок
  • *
  • Сообщений: 29

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Код: AutoIt [Выделить]
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

По идее должен в этой последовательности найти цвета и кликнуть. Но снова ложные срабатывания. Подскажите пожалуйста где я опять окосячился!!!
« Последнее редактирование: Ноябрь 26, 2017, 13:00:20 от Viktor19870628 »

Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
13 Ответов
4436 Просмотров
Последний ответ Февраль 02, 2012, 19:43:32
от Zaramot
4 Ответов
3058 Просмотров
Последний ответ Июнь 13, 2012, 11:30:54
от madmasles
0 Ответов
1549 Просмотров
Последний ответ Январь 29, 2013, 16:50:58
от wisenlucky
6 Ответов
2613 Просмотров
Последний ответ Февраль 19, 2014, 19:03:41
от inververs
7 Ответов
2108 Просмотров
Последний ответ Март 04, 2014, 15:58:01
от Nissa
11 Ответов
2259 Просмотров
Последний ответ Ноябрь 18, 2014, 21:37:22
от madmasles
4 Ответов
1503 Просмотров
Последний ответ Ноябрь 27, 2014, 13:57:32
от Миха
2 Ответов
695 Просмотров
Последний ответ Декабрь 01, 2014, 14:26:31
от edyapd
13 Ответов
2730 Просмотров
Последний ответ Январь 15, 2015, 20:31:26
от Teacher
0 Ответов
411 Просмотров
Последний ответ Март 27, 2015, 14:25:48
от madmasles