Author Topic: PXLCOUNT не как не могу найти решение этой задачи  (Read 2722 times)

0 Members and 1 Guest are viewing this topic.

Geslee

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Добрый день всем, кто посетил эту тему.
Не как не могу понять и найти решение свой задаче к примеру

$count0 = PXLCOUNT(0,184, 0,518,3260259) в этой полоске пикселей может быть каждый раз по разному в любой момент, хотел подсчитать количество пиксели наиболее большое ,
и что бы запоминал то количество которое самое большое пикселей и не брал результат меньшего а только больше своего который все время меняется.
$count1 = PXLCOUNT(0,184, 0,518,3260259) в этой полоске хотел подсчитать количество пиксели в данный момент ,
и что бы запоминал то количество которое  в данный момент
как только в $count0 будет пикселей на 10 больше чем в $count1 то происходит действие LCLICK(1601,413) и счётчик обновляется и начинает всё сначала.
если в $count0 будет пикселей больше на 5 или 1 или равно чем  в $count1 то действий не каких не будет а будет продолжать сверять между ними данные.
Помогите пожалуйста :) спасибо за помощь заранее  ;)

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Code: (clickermann) [Select]
GETSCREEN
$count0 = PXLCOUNT(0,184, 0,518,3260259)
IF($count0 > $count0_temp)
   $count0_temp = $count0
END_IF

WAIT(1)

GETSCREEN
$count1 = PXLCOUNT(0,184, 0,518,3260259)
IF($count0_temp-$count1 > 10)
   $count0_temp = 0
   LCLICK(1601,413)
   WAITMS(500)
END_IF

WAIT(1)

Geslee

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Спасибо большое попробую потеснить  :)

Geslee

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Ещё раз спасибо
есть ещё один вопрос а как можно сделать тоже самое но тока  разницу в 10 процентах
и второй вопрос а как будет выглядеть сценарий если если будет сохранять меньшее число пикселе и сравнивать их стем количеством что есть на данный момент
почти тоже самое что было в первом вопросе ток наоборот   ???
спасибо заранее  :)
« Last Edit: February 23, 2019, 12:02:43 AM by Geslee »

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
Code: (clickermann) [Select]
// В этом скрипте уже задано максимальное значение
#DEFINE MAX_PIXELS:30

GETSCREEN                       (0, 184, 0, 518)
$current_pixel_count = PXLCOUNT (0, 184, 0, 518, 3260259)

IF( ($current_pixel_count != #FALSE) & ($current_pixel_count < MAX_PIXELS) )
   IF( ( (MAX_PIXELS - $current_pixel_count) / $current_pixel_count) * 100 > 10)
      PRINT("Разность > 10%")
   END_IF
END_IF


Code: (clickermann) [Select]
// В этом скрипте без разницы, потому что значения сортируются по возрастанию
FOR($i = 0, $i < 2)
   GETSCREEN            (0, 184, 0, 518)
   $count[$i] = PXLCOUNT(0, 184, 0, 518, 3260259)
   WAIT(1)
END_CYC

IF( ($count[0] * $count[1] != 0) & ($count[0] - $count[1] != 0) )
   ARRSORT($count) // Сортировка значений по возрастанию
   IF( ( ($count[1] - $count[0]) / $count[0]) * 100 > 10)
      PRINT("Разность > 10%")
   END_IF
END_IF

Code: (clickermann) [Select]
// Вот еще какой то пример
FOR($i = $info_update, $i < 2)
   GETSCREEN            (0, 184, 0, 518)
   $count[$i] = PXLCOUNT(0, 184, 0, 518, 3260259)
   WAIT(1)
   $info_update = 1 // С этого момента обновляем только второе значение
END_CYC

IF($count[1] < $count[0])
   PRINT( ( ($count[0] - $count[1]) / $count[1]) * 100 > 10) // Вернёт 1 если больше 10% и 0 если меньше
END_IF

IF($count[1] > $count[0]) // Если второе значение больше первого, то обновляем начиная с первого значения
   $info_update = 0
END_IF
« Last Edit: February 23, 2019, 07:03:51 AM by Космич »
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Ещё раз спасибо
есть ещё один вопрос а как можно сделать тоже самое но тока  разницу в 10 процентах

Code: (clickermann) [Select]
GETSCREEN
$count0 = PXLCOUNT(0,184, 0,518,3260259)
IF($count0 > $count0_temp)
   $count0_temp = $count0 // фиксируем наибольшее значение
END_IF

WAIT(1)

GETSCREEN
$count1 = PXLCOUNT(0,184, 0,518,3260259)
IF((($count0_temp-$count1)/$count0_temp)*100 > 10)
   $count0_temp = 0
   LCLICK(1601,413)
   WAITMS(500)
END_IF

WAIT(1)

и второй вопрос а как будет выглядеть сценарий если если будет сохранять меньшее число пикселе и сравнивать их стем количеством что есть на данный момент...

Code: (clickermann) [Select]
DEFINE($count0_temp, 9999999999)
GETSCREEN
$count0 = PXLCOUNT(0,184, 0,518,3260259)
IF($count0 < $count0_temp)
   $count0_temp = $count0 // фиксируем наименьшее значение
END_IF

WAIT(1)

GETSCREEN
$count1 = PXLCOUNT(0,184, 0,518,3260259)
IF((($count1-$count0_temp)/$count1)*100 > 10)
   UNDEFINE($count0_temp)
   LCLICK(1601,413)
   WAITMS(500)
END_IF

WAIT(1)
« Last Edit: February 23, 2019, 08:13:01 AM by Oraven »

Geslee

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Спасибо огромное всем за помощь буду тестировать задумку  :)

Geslee

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Добрый вечер все не как не могу понят в чем ошибка в строке 29 и 55
Code: (clickermann) [Select]
GETSCREEN
IF_PIXEL_IN(916,627, 948,666, 4833161,4831109,3127649,2994011)
   LCLICK(843,648)
 END_IF
GETSCREEN 
$count0 = PXLCOUNT(1361,182, 1361,518,3260259)
$count1 = PXLCOUNT(1329,182, 1329,518,3260259)
$count2 = PXLCOUNT(1297,182, 1297,518,3260259)
IF(($count0 + $count1 + $count1) > $count0_temp)
   $count0_temp = ($count0 + $count1 + $count2)
WAITMS(50)
 
  END_IF


GETSCREEN
$count3 = PXLCOUNT(1361,182, 1361,518,3260259)
$count4 = PXLCOUNT(1329,182, 1329,518,3260259)
$count5 = PXLCOUNT(1297,182, 1297,518,3260259)
$count1_temp = ( $count3 + $count4 + $count5)
IF($count3  = 0 )
   $count0_temp = 0
WAITMS(50)

   END_IF
 ELSE
WAITMS(50)
 
IF((($count0_temp-$count1_temp)/$count0_temp)*100 > 10)
   $count0_temp = 0
   LCLICK(1654,640)
     WAITMS(0)
 END_IF
ELSE
GETSCREEN
$count6 = PXLCOUNT(1361,182, 1361,518,3881949)
$count7 = PXLCOUNT(1329,182, 1329,518,3881949)
$count8 = PXLCOUNT(1297,182, 1297,518,3881949)
IF(($count6 + $count7 + $count8)  > $count2_temp)
$count2_temp = ($count6 + $count7 + $count8)
  END_IF
WAIT(0.1)

GETSCREEN
$count9 = PXLCOUNT(1361,182, 1361,518,3881949)
$count10 = PXLCOUNT(1329,182, 1329,518,3881949)
$count11 = PXLCOUNT(1297,182, 1297,518,3881949)
$count4_temp = ($count9 + $count10 + $count11)
IF($count9  = 0)   
   $count2_temp = 0
  END_IF
ELSE
WAITMS(50)

IF((($count2_temp-$count4_temp)/$count2_temp)*100 > 10)   
   $count2_temp = 0
   LCLICK(1654,640)
     WAITMS(0)
     
  END_IF

WAIT(0.1)
« Last Edit: March 01, 2019, 12:44:03 AM by Geslee »

Geslee

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
нашёл в чём ошибка 
IF((($count2_temp-$count4_temp)/$count2_temp)*100 > 10)
просто 0 на 0 не делится
IF((($count2_temp-$count4_temp)/($count2_temp+1))*100 > 10)
а тут получается 0 делим на один умножает на 100 результат 0 <10

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
нашёл в чём ошибка 

Ошибка в том что у тебя 3 ELSE вне условия

Code: (clickermann) [Select]
GETSCREEN
IF_PIXEL_IN(916,627, 948,666, 4833161,4831109,3127649,2994011)
   LCLICK(843,648)
END_IF

GETSCREEN
$count0 = PXLCOUNT(1361,182, 1361,518,3260259)
$count1 = PXLCOUNT(1329,182, 1329,518,3260259)
$count2 = PXLCOUNT(1297,182, 1297,518,3260259)
IF($count0 + $count1 + $count1 > $count0_temp)
   $count0_temp = $count0 + $count1 + $count2
   WAITMS(50)
END_IF

GETSCREEN
$count3 = PXLCOUNT(1361,182, 1361,518,3260259)
$count4 = PXLCOUNT(1329,182, 1329,518,3260259)
$count5 = PXLCOUNT(1297,182, 1297,518,3260259)
$count1_temp = $count3 + $count4 + $count5
IF($count3  = 0 )
   $count0_temp = 0
   WAITMS(50)
END_IF
//ELSE
WAITMS(50)

IF((($count0_temp-$count1_temp)/$count0_temp)*100 > 10)
   $count0_temp = 0
   LCLICK(1654,640)
   WAITMS(0)
END_IF
//ELSE
GETSCREEN
$count6 = PXLCOUNT(1361,182, 1361,518,3881949)
$count7 = PXLCOUNT(1329,182, 1329,518,3881949)
$count8 = PXLCOUNT(1297,182, 1297,518,3881949)
IF($count6 + $count7 + $count8 > $count2_temp)
   $count2_temp = $count6 + $count7 + $count8
END_IF
WAIT(0.1)

GETSCREEN
$count9 = PXLCOUNT(1361,182, 1361,518,3881949)
$count10 = PXLCOUNT(1329,182, 1329,518,3881949)
$count11 = PXLCOUNT(1297,182, 1297,518,3881949)
$count4_temp = $count9 + $count10 + $count11
IF($count9  = 0)
   $count2_temp = 0
END_IF
//ELSE
WAITMS(50)

IF((($count2_temp-$count4_temp)/$count2_temp)*100 > 10)
   $count2_temp = 0
   LCLICK(1654,640)
   WAITMS(0)   
END_IF

WAIT(0.1)

Geslee

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
ну это тоже но кода нет пикселя он выдает ошибку поэтому надо дописать +1
Code: (clickermann) [Select]
GETSCREEN
IF_PIXEL_IN(916,627, 948,666, 4833161,4831109,3127649,2994011)
   LCLICK(843,648)
END_IF
 
GETSCREEN
$count0 = PXLCOUNT(1361,182, 1361,518,3260259)
$count1 = PXLCOUNT(1329,182, 1329,518,3260259)
$count2 = PXLCOUNT(1297,182, 1297,518,3260259)
IF($count0 + $count1 + $count1 > $count0_temp)
   $count0_temp = $count0 + $count1 + $count2
   WAITMS(50)
END_IF
 
GETSCREEN
$count3 = PXLCOUNT(1361,182, 1361,518,3260259)
$count4 = PXLCOUNT(1329,182, 1329,518,3260259)
$count5 = PXLCOUNT(1297,182, 1297,518,3260259)
$count1_temp = $count3 + $count4 + $count5
IF($count3  = 0 )
   $count0_temp = 0
   WAITMS(50)
END_IF
//ELSE
WAITMS(50)
 
IF((($count0_temp-$count1_temp)/($count0_temp+1))*100 > 10)
   $count0_temp = 0
   LCLICK(1654,640)
   WAITMS(0)
END_IF
//ELSE
GETSCREEN
$count6 = PXLCOUNT(1361,182, 1361,518,3881949)
$count7 = PXLCOUNT(1329,182, 1329,518,3881949)
$count8 = PXLCOUNT(1297,182, 1297,518,3881949)
IF($count6 + $count7 + $count8 > $count2_temp)
   $count2_temp = $count6 + $count7 + $count8
END_IF
WAIT(0.1)
 
GETSCREEN
$count9 = PXLCOUNT(1361,182, 1361,518,3881949)
$count10 = PXLCOUNT(1329,182, 1329,518,3881949)
$count11 = PXLCOUNT(1297,182, 1297,518,3881949)
$count4_temp = $count9 + $count10 + $count11
IF($count9  = 0)
   $count2_temp = 0
END_IF
//ELSE
WAITMS(50)
 
IF((($count2_temp-$count4_temp)/($count2_temp+1))*100 > 10)
   $count2_temp = 0
   LCLICK(1654,640)
   WAITMS(0)   
END_IF
 
WAIT(0.1)