Author Topic: Помогите кт оможет  (Read 2084 times)

0 Members and 2 Guests are viewing this topic.

darkgos

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Помогите кт оможет
« on: October 02, 2014, 03:38:31 PM »
есть проблема с переменными:
программа для подсчета пикселей в конкретном квадрате экрана, картинка меняется однако происходит следующее
 скрипт считает 1 раз а потом повторяет предыдущие значения по кругу хоть в программе и стоит обнуление переменных

вот программа :
Code: (clickermann) [Select]
LOGWRITE("начало")
LCLICK(471,284)
WAIT(1)
LCLICK(643,32)
WAIT(1)
DEFINE ($varA)
LOGWRITE("1:",$varA)
DEFINE ($varB)
LOGWRITE("2:",$varB)
DEFINE ($varC)
LOGWRITE("3:",$varC)
DEFINE ($varD)
LOGWRITE("4:",$varD)
RCLICK(1133,100)
RCLICK(1133,100)
RCLICK(1133,100)
RCLICK(1133,100)
WAITMS(70)
LCLICK(928,183)
LCLICK(928,183)
LCLICK(928,183)
WAIT(4)
$E=0
KEYDOWN(16)
LCLICK(1133,100)
KEYUP(16)
KEYDown(13)
WAIT(2)
KEYUP(13)
LCLICK(102,682)
WAIT(1)
$varA=PXLCOUNT(355,302,512,320,13435032)
LOGWRITE("1:",$varA)
$varB=PXLCOUNT(355,321,512,340,13435032)
LOGWRITE("2:",$varB)
$varC=PXLCOUNT(355,341,512,358,13435032)
LOGWRITE("3:",$varC)
$varD=PXLCOUNT(355,359,512,378,13435032)
LOGWRITE("4:",$varD)
IF(($varA=87)|($varA=90))
$E=$E+1
END_IF
IF(($varB=87)|($varB=90))
$E=$E+1
END_IF
IF(($varC=87)|($varC=90))
$E=$E+1
END_IF
IF(($varD=87)|($varD=90))
$E=$E+1
END_IF
LOGWRITE($E)
IF($E>0)
halt ("Готово")
END_IF
WAIT(2)
LOGWRITE("проход")
UNDEFINE ($varA)
LOGWRITE("1:",$varA)
UNDEFINE ($varB)
LOGWRITE("2:",$varB)
UNDEFINE ($varC)
LOGWRITE("3:",$varC)
UNDEFINE ($varD)
LOGWRITE("4:",$varD)

« Last Edit: October 02, 2014, 04:12:39 PM by Oraven »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Помогите кт оможет
« Reply #1 on: October 02, 2014, 04:16:10 PM »
Во первых нет GETSCREEN, или будешь искать только с открытым редактором?

UNDEFINE здесь лишее совсем, впрочем, как и DEFINE.

Он действительно каждый раз находит именно столько, сколько показывает.


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите кт оможет
« Reply #2 on: October 02, 2014, 04:22:04 PM »
Правильнее писать не $E=$E+1 а INC($E,1)
Да отсутствует GETSCREEN
Code: (clickermann) [Select]
LOGWRITE("начало")
LCLICK(471,284)
WAIT(1)
LCLICK(643,32)
WAIT(1)
DEFINE ($varA)
LOGWRITE("1:",$varA)
DEFINE ($varB)
LOGWRITE("2:",$varB)
DEFINE ($varC)
LOGWRITE("3:",$varC)
DEFINE ($varD)
LOGWRITE("4:",$varD)
RCLICK(1133,100)
RCLICK(1133,100)
RCLICK(1133,100)
RCLICK(1133,100)
WAITMS(70)
LCLICK(928,183)
LCLICK(928,183)
LCLICK(928,183)
WAIT(4)
$E=0
KEYDOWN(#SHIFT)
LCLICK(1133,100)
KEYUP(#SHIFT)
KEYDown(#ENTER)
WAIT(2)
KEYUP(#ENTER)
LCLICK(102,682)
WAIT(1)
GETSCREEN
$varA=PXLCOUNT(355,302,512,320,13435032)
LOGWRITE("1:",$varA)
$varB=PXLCOUNT(355,321,512,340,13435032)
LOGWRITE("2:",$varB)
$varC=PXLCOUNT(355,341,512,358,13435032)
LOGWRITE("3:",$varC)
$varD=PXLCOUNT(355,359,512,378,13435032)
LOGWRITE("4:",$varD)
IF(($varA=87)|($varA=90))
   INC($E,1)
END_IF
IF(($varB=87)|($varB=90))
   INC($E,1)
END_IF
IF(($varC=87)|($varC=90))
   INC($E,1)
END_IF
IF(($varD=87)|($varD=90))
   INC($E,1)
END_IF
LOGWRITE($E)
IF($E>0)
   LOGWRITE("Готово")
   halt
END_IF
WAIT(2)
LOGWRITE("проход")
UNDEFINE ($varA)
LOGWRITE("1:",$varA)
UNDEFINE ($varB)
LOGWRITE("2:",$varB)
UNDEFINE ($varC)
LOGWRITE("3:",$varC)
UNDEFINE ($varD)
LOGWRITE("4:",$varD)

darkgos

  • Зашел в гости
  • *
  • Posts: 5
    • View Profile
Re: Помогите кт оможет
« Reply #3 on: October 02, 2014, 04:22:47 PM »
нет , он считает правельно только первый раз, а потом постоенняо откудато вытягивает предыдущие данные
я и вставил UNdefine в надежде что он хоть так начнет затирать предыдущие значения
насчет GETSCREEN спасибо попробую хотя это окно игры!

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите кт оможет
« Reply #4 on: October 02, 2014, 04:26:41 PM »
При запуске кликер сделал один снимок его и рассматривает по кругу без GETSCREEN он ничего нового не увидит.
GETSCREEN - делает снимок в буфер программы которые в последствии и анализируют разные функции.