Author Topic: Не может найти пиксель  (Read 4454 times)

0 Members and 1 Guest are viewing this topic.

FarsH

  • Зашел в гости
  • *
  • Posts: 2
    • View Profile
Не может найти пиксель
« on: January 05, 2014, 02:56:39 PM »
Промучался часа 3 и не сдвинулся с точки. Итак задача :
1)На определенном месте ищет картинку (1), при нахождении щелкает на её центр, или хотя бы на неё,  а потом :
2) выполняет действия : клики, пождение по экрану зажатой мышью
3) Опять На определенном месте ищет картинку (2) если находит то щелкает на её центр, или хотя бы на неё,  а потом :
4)выполняет действия : клики, пождение по экрану зажатой мышью ( тоже самое,что и пункт 2)
5) Опять На определенном месте ищет картинку (3) и если не находит издает звук и щелкает мышью в точке нужной (постоянной)
6) Повторяется заново
 
Все я себе представляю в голове, но как говориться то ли дурак то ли лыжи не едут !
Не может найти ни картинку ( кстати хочу уточнить куда картинки ложить bmp ?) ни пиксель, вот простой мой код на пиксель, может я где что не понял:


[spoiler]LCLICK(1140,234)  // 10062664
WAITMS(1000)       // Так нужно )
GETSCREEN // скрин в оперативу
WAITMS(70)
IF_PIXEL_IN(1145,334, 9207629) // ищет пиксель
LCLICK(1145,334)  // 16444855 ( клик по пикселю )
WAITMS(64)
LCLICK(1168,810)  // 15985355 ( Тоже нужный клик)
ELSE          // иначе
LOGWRITE ("больше одного")  // занчит не нашел и нужно заного искать в другом месте
 WAITMS(64)
 IF_PIXEL_IN(1010,317, 9141312) //  (если там не найдет то тут 100% есть пиксель)
 WAITMS(64)
 LCLICK(1010,317)         // Щелк по найденому пикселю
END_IF
halt                          // ну и пока стоп, хотябы в этом разобраться
[/spoiler]



Конечно хотелось бы поиск по картинке, но там также найти не может...

Крис Тинка

  • Активный участник
  • ***
  • Posts: 171
    • View Profile
Re: Не может найти пиксель
« Reply #1 on: January 05, 2014, 03:27:54 PM »
 IF_PICTURE_IN ($x1, $y1, $x2, $y2, "textures\somefile.bmp"). Ищет картинку "somefile.bmp" находящуюся  в папке "textures" в заданной области. ($x1, $y1) - координаты верхнего левого угла, ($x2, $y2) - координаты правого нижнего угла. Координаты найденной картинки записываются в переменные $_return1 - координата X ,  $_return2 - координата - Y
Пример:
Code: (clickermann) [Select]
GETSCREEN //снимок
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\somefile.bmp") // ищет картинку
   LCLICK($_return1, $_return2) // клик по картинке
   // тут твои действия
END_IF


GETSCREEN //снимок
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\somefile2.bmp") // ищет картинку
   LCLICK($_return1, $_return2) // клик по картинке
   // тут твои действия
END_IF


GETSCREEN //снимок
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "textures\somefile3.bmp") // ищет картинку
   LCLICK($_return1, $_return2) // клик по картинке
   // тут твои действия
ELSE   // если не нашел
   beep(90,200) // звук системного динамика
   LCLICK($x1,$y1) // клик по координатам $x1,$y1
END_IF

IF_PIXEL_IN(1145,334, 9207629) // ищет пиксель
Не ищет пиксель. Для команды IF_PIXEL_IN задается область поиска, так же как для IF_PICTURE_IN.
Если нужно найти пиксель в конкретной точке, то для этого команда - PXL
Code: (clickermann) [Select]
getscreen
IF(PXL(1145,334) = 9207629)
   LCLICK(1145,334)
END_IF
« Last Edit: January 05, 2014, 03:39:17 PM by Крис Тинка »

FarsH

  • Зашел в гости
  • *
  • Posts: 2
    • View Profile
Re: Не может найти пиксель
« Reply #2 on: January 06, 2014, 12:25:57 PM »
IF_PICTURE_IN ($x1, $y1, $x2, $y2, "textures\somefile.bmp"). Ищет картинку "somefile.bmp" находящуюся  в папке "textures" в заданной области. ($x1, $y1) - координаты верхнего левого угла, ($x2, $y2) - координаты правого нижнего угла. Координаты найденной картинки записываются в переменные $_return1 - координата X ,  $_return2 - координата - Y

Не ищет пиксель. Для команды IF_PIXEL_IN задается область поиска, так же как для IF_PICTURE_IN.
Если нужно найти пиксель в конкретной точке, то для этого команда - PXL
Code: (clickermann) [Select]
getscreen
IF(PXL(1145,334) = 9207629)
   LCLICK(1145,334)
END_IF


Про пиксель понял, да и в принципе мне все ясно, но похоже я что-то упускаю. Может привязка ? ( Alt+Q использую для привязки и для вставки точных координат пикселя и его цвета)
Ну не может он найти ни пиксель ни картинку в определенной области
Ну проще реально не куда, вот код всего на поиск 1 картинки или пикселя.
Code: (clickermann) [Select]
// Поиск пикселя

WAIT(1)
LCLICK(1538,37)  // 16707776
WAIT(1)
getscreen
 IF(PXL(1394,120) = 8616271)
LCLICK(1394,120)
   LOGWRITE ("ПИКСЕЛЬ НАЙДЕН !")
ELSE
    BEEP(800,200)
     LOGWRITE ("НЕ НАЙДЕНО !")
END_IF


//////////////////////////////////////////////////////////////////////
// Поиск картинки
WAIT(1)
LCLICK(1538,37)  // 16707776
WAIT(1)
getscreen
IF_PICTURE_IN (1332,72, 1579,530, "textures\4pik.bmp")
  LCLICK($_return1, $_return2)
   LOGWRITE ("КАРТИНКА НАШЛАСЬ !")
ELSE
    BEEP(800,200)
     LOGWRITE ("НЕ НАЙДЕНО !")
END_IF

Крис Тинка

  • Активный участник
  • ***
  • Posts: 171
    • View Profile
Re: Не может найти пиксель
« Reply #3 on: January 06, 2014, 08:45:57 PM »
Попробуй добавить ожидание пикселя/картинки
Code: (clickermann) [Select]
// Поиск пикселя

WAIT(1)
LCLICK(1538,37)  // 16707776
WAIT(1)
//--------------------------------
//ожидание пикселя
$time = $_time_t + 10 // 10 сек
getscreen
while((PXL (1394,120) ! 8616271) & ($time > $_time_t))
   WAITMS(100)
   getscreen
end_cyc
//--------------------------------
IF(PXL(1394,120) = 8616271)
   LCLICK(1394,120)
   LOGWRITE ("ПИКСЕЛЬ НАЙДЕН !")
ELSE
   BEEP(800,200)
   LOGWRITE ("НЕ НАЙДЕНО !")
END_IF


//////////////////////////////////////////////////////////////////////
// Поиск картинки

WAIT(1)
LCLICK(1538,37)  // 16707776
WAIT(1)
//--------------------------------
$check = 0
$time = $_time_t + 10 // 10 сек
while(($check = 0) & ($time > $_time_t))
   getscreen
   IF_PICTURE_IN (1332,72, 1579,530, "textures\4pik.bmp")
      $check = 1
      LCLICK($_return1, $_return2)
      LOGWRITE ("КАРТИНКА НАШЛАСЬ !")
   ELSE
      WAITMS(100)
   END_IF
end_cyc
if($check = 0)
   BEEP(800,200)
   LOGWRITE ("НЕ НАЙДЕНО !")
end_if

painfulangel

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Re: Не может найти пиксель
« Reply #4 on: January 10, 2014, 10:07:54 AM »
IF_PICTURE_IN (x, y, x2, y2, "file", [bgcolor], [currency])

Попробуй:
currency - необязательный параметр; точность поиска в процентах (1..99)

Т.е. если поставить вместо [currency] процент, например "80", то шанс нахождения картинки возрастет т.к. точность поиска уменьшено. Но производительность от этого пострадает (зависит от размеров площади поиска).