Что нового

Поиск пикселей и клик

RaDuGa

Новичок
Сообщения
5
Репутация
0
Я пытаюсь написать скрипт, где программа постоянно ищет возникающие объекты (через цвет пикселя) по их приоритету, которые еще и меняют позицию и кликает на них.
1. У меня не выходит сделать приоритет поиска. Если я задаю после if следующим действиями ElseIf, то ищется только первый объект, даже если его нету, а вот поставил везде if, так он хотя бы по всем по разу наводит, но и кликает не всегда почему-то.
2. Кликает не всегда - это уже вторая проблема, но на все объекты по цвету найденные мышку наводит. Заранее отвечу на предположение, которое может возникнуть, полагаю:
«Может объект меняет цвет или он маленький?» - Нет, объект без лупы видно, при чем он весь одним цветом без эффектов, как заливкой (не считая рамки).
Код:
While 1
   Sleep(100)
WEnd

Func OpenPum()

   While 1
      $coordOne = PixelSearch(116, 141, 1531, 849, 0xF177DD)
      $coordTwo = PixelSearch(116, 141, 1531, 849, 0x768DFC)
      $coordThree = PixelSearch(116, 141, 1531, 849, 0xFC7677)
      $coordFor = PixelSearch(116, 141, 1531, 849, 0xFFE869)

      If @error = 0 then
      if IsArray($coordOne) Then MouseClick("left", $coordOne[0], $coordOne[1])
      if IsArray($coordTwo) Then MouseClick("left", $coordTwo[0], $coordTwo[1])
      if IsArray($coordThree) Then MouseClick("left", $coordThree[0], $coordThree[1])
      if IsArray($coordFor) Then MouseClick("left", $coordFor[0], $coordFor[1])

      Sleep(3000)

      else
      endif
   WEnd
EndFunc
[AUTOIT]
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
сделать приоритет поиска
Код:
; вариант 1
While Sleep(3000)
  $coord = PixelSearch(116, 141, 1531, 849, 0xF177DD)
  If @error Then
    $coord = PixelSearch(116, 141, 1531, 849, 0x768DFC)
    If @error Then
      $coord = PixelSearch(116, 141, 1531, 849, 0xFC7677)
      If @error Then $coord = PixelSearch(116, 141, 1531, 849, 0xFFE869)
    EndIf
  EndIf
  If IsArray($coord) Then MouseClick("left", $coord[0], $coord[1])
WEnd

; вариант 2
Global $aColor[] = [0xF177DD,0x768DFC,0xFC7677,0xFFE869]
While Sleep(3000)
  For $i = 0 To UBound($aColor) - 1
    $coord = PixelSearch(116, 141, 1531, 849, $aColor[$i])
    If Not @error Then
      MouseClick("left", $coord[0], $coord[1])
      ExitLoop
    EndIf
  Next
WEnd

Кликает не всегда
Попробуйте увеличить задержку между нажатием и отпусканием кнопки мыши
Код:
Opt("MouseClickDownDelay", 55)
 
Автор
R

RaDuGa

Новичок
Сообщения
5
Репутация
0
Спасибо за решение, все ок, только мышка мажет, в движении объектов нажимает на их предыдущее положение.
 
Верх