Что нового

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

Feeze

Новичок
Сообщения
18
Репутация
1
Версия AutoIt: 3.

Описание: Нужно автоматизировать процес поиска пикселя по цвету в заданных координатах, если цвет не найден то производится левый клик мышкой в координатах (x2,y2), если найден то производится левый клик мышкой в координатах (x3,y3)

Примечания:
Пошагово:
"ЦВЕТ" = #FFFFFF,
Поиск ЦВЕТА в координатах (x,y) , ЕСЛИ "ЦВЕТ пикселя" = "ЦВЕТ", тогда ЛКМ (x1,y1) , СТОП.
Если "ЦВЕТ пикселя" ≠ "ЦВЕТ", тогда ЛКМ (x2,y2), задержка 5 секунд, и начать процедуру поиска сначала.

Заранее спасибо.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Код:
;color, x, y, x1, y1, x2, y2, clicks, speed, delay
Global $Color[10] = [0xFFFFFF, 10, 20, 15, 30, 30, 60, 1, 10, 5000]
While 1
	PixelSearch($Color[1], $Color[2], $Color[1], $Color[2], $Color[0])
	If Not @error Then
		MouseClick("left", $Color[3], $Color[4], $Color[7], $Color[8])
	Else
		MouseClick("left", $Color[5], $Color[6], $Color[7], $Color[8])
	EndIf
	Sleep($Color[9])
WEnd
 
Автор
F

Feeze

Новичок
Сообщения
18
Репутация
1
уточнение если цвет совпадает нажатие левой кнопки мыши по координатам пикселя, если нет то нажатие в других координатах..


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

прошу подправить /дополнить
Код:
Func MS()
    Sleep(2000)
 $aCoord_1=PixelSearch( 659, 517, 1, 0, 0xDFB961)   ; находит цвет
    Sleep(5000)
    If @error Then
          MouseClick('left',1255, 369, 1, 0) ; если ошибка(цвет не найден), то кликает по координатам.
    Else
          MouseClick('left',$aCoord_1[0], $aCoord_1[0], 1)    ;кликает если цвет найден, по координатам цвета пикселя из первого массива
  EndIf
EndFunc
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Код:
Func MS()
    Sleep(2000)
	$aCoord_1=PixelSearch( 659, 517, 1, 0, 0xDFB961)   ; находит цвет
    If @error Then
        MouseClick('left',1255, 369, 1, 0) ; если ошибка(цвет не найден), то кликает по координатам.
    Else
        MouseClick('left',$aCoord_1[0], $aCoord_1[1], 1)    ;кликает если цвет найден, по координатам цвета пикселя из первого массива
	EndIf
EndFunc

Зачем пауза после PixelSearch? Скрипт приостановит свою работу до тех пор пока не завершится текущая исполняемая команда. То есть если он и найдет у тебя цвет, то будет ждать 5 секунд в простое.
 
Автор
F

Feeze

Новичок
Сообщения
18
Репутация
1
скрипт не запускается в чем проблема??
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Я даже боюсь спросить. Если ты спрашиваешь, почему не запускается скрипт, зачем ты в него вносишь какие-либо изменения? :stars: То что я скинул у меня запускается на ура.
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
OffTopic:
Возможно автор не знает что такое функции и как с ними работать..
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
OffTopic:
Дак он сам же её и выложил
 
Автор
F

Feeze

Новичок
Сообщения
18
Репутация
1
Код:
HotKeySet("{F10}","ExitApp")
Func ExitApp() ;выходим по нажатию Ф10
   Exit
   EndFunc
Func MS()
    Sleep(2000)
    PixelSearch( 691, 621, 1, 0, 0x8E9082)   ; находит цвет
    If @error Then
        MouseClick('left',1255, 369, 3, 0) ; если ошибка(цвет не найден), то кликает по координатам.
    If Not @error Then
        MouseClick('left', 691, 621, 3, 0)    ;кликает если цвет найден, по координатам цвета пикселя из первого массива
    EndIf
   EndIf
 EndFunc


Вот полностью код. Не запускается на отрез. Извините но я новенький и не разбираюсь особо в этом.
Помогите его запустить. :stars:
 

Pat4005

Новичок
Сообщения
85
Репутация
4
А как ты собрался запускать функцию MS()? Ты её описал с помощью Func..EndFunc, но ведь нужно её запустить. Для запуска нужно в скрипте указать название ф-ции и (). Вот пример:
Код:
HotKeySet("{F10}","ExitApp")
HotKeySet("{F1}","MS") ;Вот здесь ты используешь, описанную ниже функцию MS()

;Если функцию нужно выполнить отдельно от HotKeySet, то она опять же должна быть вызвана - вот так просто: MS()

While 1 ;Это начало цикла. Цикл нужен для того, чтобы твой скрипт не завершился после первого выполнения.
	sleep(100) ; Пауза в 100 милисекунд разгружает(каким-то образом) процессор. Попробовав её убрать и запустить скрипт, ты сможешь увидеть, что твой процессор постоянно занят процессом Autoit.exe примерно на 50%
WEnd ;Это конец цикла. А так как условием цикла While была единица(1), которая не может быть чем-то другим кроме единицы, то скрипт будет выполняться, пока не будет нажата F10 

Func ExitApp() ;выходим по нажатию F10
   Exit
   EndFunc

Func MS()
    Sleep(2000)
    PixelSearch( 691, 621, 1, 0, 0x8E9082)   ; находит цвет
    If @error Then
        MouseClick('left',1255, 369, 3, 0) ; если ошибка(цвет не найден), то кликает по координатам.
    If Not @error Then
        MouseClick('left', 691, 621, 3, 0)    ;кликает если цвет найден, по координатам цвета пикселя из первого массива
    EndIf
   EndIf
 EndFunc
 

Pat4005

Новичок
Сообщения
85
Репутация
4
Нажимай назначенную F1 и будет выполняться при каждом нажатии.
 
Верх