Author Topic: Помогите пожалуйста)  (Read 5472 times)

0 Members and 1 Guest are viewing this topic.

Злой_Волк

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
Помогите пожалуйста)
« on: October 11, 2013, 04:12:11 PM »
есть простой скрипт делающий снимок с экрана:
Code: [Select]
GETSCREEN
SCREENSHOT
при работе в обычном режиме все работает корректно, но как только делаю привязку к окну некоторых приложений, например к  Браузеру гугл хром, получается черное фото(черный прямоугольник) размером равным размеру окна браузера....

и еще подскажите пожалуйста сделал следующий код:

Code: [Select]
GETSCREEN
scanpicture($var, 0,0, $_xmax,$_ymax, "Cross.bmp")
IF(arrsize($var)>0)
   $y = arrpop($var)
   $x = arrpop($var)
   lclick($x, $y)
END_IF
//--------------------------------

lclick(1196,605)
WAITMS(1000)
lclick(793,497)
WAITMS(500)
lclick(1168,675)
WAITMS(1000)
lclick(783,479)
WAITMS(3000)
lclick(898,647)
WAITMS(1000)
//--------------------------------
GETSCREEN
scanpicture($var, 0,0, $_xmax,$_ymax, "Cross.bmp")
IF(arrsize($var2)>0)
   $y = arrpop($var2)
   $x = arrpop($var2)
   lclick($x, $y)
END_IF
GETSCREEN
scanpicture($var1, 0,0, $_xmax,$_ymax, "Lvl_up.bmp")
IF(arrsize($var1)>0)
   $y = arrpop($var1)
   $x = arrpop($var1)
   lclick($x, $y)
   LOGWRITE("Апп")
   lclick(895,353)
   WAITMS(10000)
   GETSCREEN
   scanpicture($var, 0,0, $_xmax,$_ymax, "Cross.bmp",)
   $y = arrpop($var)
   $x = arrpop($var)
   lclick($x, $y)
   lclick (870,171)
   GOTO(1)
END_IF
GETSCREEN
scanpicture($var, 0,0, $_xmax,$_ymax, "Cross.bmp")
IF(arrsize($var2)>0)
   $y = arrpop($var2)
   $x = arrpop($var2)
   lclick($x, $y)
END_IF
//--------------------------------
lclick(895,353)

я новичок простите за мой быдло код второй день пытаюсь с кликером разобраться вот объясните что я ни так ищу, ибо картинки он воспринимает  мягко говоря не с первого раза, программа пробегает по циклу раз 8 прежде чем распознает нужную картинку... картинки делал в пеинте делая снимки с экрана... помогите советом что не так :)

Johnny

  • Создатель
  • Герой форума
  • *
  • Posts: 593
    • View Profile
Re: Помогите пожалуйста)
« Reply #1 on: October 11, 2013, 04:34:11 PM »
1. сто милионов раз оговаривалось что оконный режим - оче хитрая штука и совсем не факт что будет работать. как ты правильно заметил, далеко не во всех приложениях и зависит это от самих приложений
2. раз уж ты решил попробовать массивов, то будь добр пример копируй целиком потмоу что вместо условия там идет цикл while. а так у тебя действительно поулчится полная фигня

Злой_Волк

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
Re: Помогите пожалуйста)
« Reply #2 on: October 11, 2013, 04:43:34 PM »
ну там 100% 1 такая картинка будет и соответственно если длинна массива больше 0(найдена картинка) то надо кликнуть по ней...
проблема в том что кликер не находит таковых в 90% случаев...
картинки приложил к сообщению мб с ними что ни так...
« Last Edit: October 11, 2013, 04:48:19 PM by Злой_Волк »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите пожалуйста)
« Reply #3 on: October 11, 2013, 04:57:44 PM »
Ты понимаешь что в таком случае кликер будет возвращать последнюю найденную картину. Кроме того массивы у тебя не обнуляются, в них возможно остаются данные.
В двух местах имя массивов несходится
scanpicture($var, 0,0, $_xmax,$_ymax, "Cross.bmp")
IF(arrsize($var2)>0)

Ну и GOTO(1) к чему?????

Не проще ли использовать IF_PICTURE_IN?
« Last Edit: October 11, 2013, 05:13:59 PM by Oraven »

Злой_Волк

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
Re: Помогите пожалуйста)
« Reply #4 on: October 11, 2013, 05:13:42 PM »
1.1)Ты понимаешь что в таком случае кликер будет возвращать последнюю найденную картину.
1.2)Кроме того массивы у тебя не обнуляются, в них возможно остаются данные.
2)В двух местах имя массивов несходится
scanpicture($var, 0,0, $_xmax,$_ymax, "Cross.bmp")
IF(arrsize($var2)>0)

3)Ну и GOTO(1) к чему?????
1.1) ну я говорю только начинаю разбираться с кликером...(и мне нужна только 1 картинка)
1.2)как в них будут оставаться данные если я их переопределяю вроди как?
2)хэх да есть косяк((( у меня до этого все массивы $var были... так же работало.. но всеровно спасибо незаметил бы...(
3)там тоже косяк хотел к началу отсылать.. метку прописать забыл...

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите пожалуйста)
« Reply #5 on: October 11, 2013, 05:16:43 PM »
Нет, функция scanpicture добавляет в массив $var координаты

Скажем такой пример:
scanpicture($var, 0,0, $_xmax,$_ymax, "Cross.bmp")
scanpicture($var, 0,0, $_xmax,$_ymax, "Cross2.bmp")
scanpicture($var, 0,0, $_xmax,$_ymax, "Cross3.bmp")

Все координаты всех найденных картинок и повторений будут записаны в массив $var



Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите пожалуйста)
« Reply #6 on: October 11, 2013, 05:18:40 PM »
Тебе не нужно использовать scanpicture а нужно использовать IF_PICTURE_IN

Злой_Волк

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
Re: Помогите пожалуйста)
« Reply #7 on: October 11, 2013, 05:47:57 PM »
Code: [Select]
p1:
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Cross.bmp")
   LCLICK($_return1, $_return2)
END_IF
//--------------------------------

lclick(1196,605)
WAITMS(1000)
lclick(793,497)
WAITMS(500)
lclick(1168,675)
WAITMS(1000)
lclick(783,479)
WAITMS(3000)
lclick(898,647)
WAITMS(1000)
//--------------------------------
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Cross.bmp")
   LCLICK($_return1, $_return2)
END_IF

GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Lvl_up.bmp")
   LCLICK($_return1, $_return2)
   LOGWRITE("Апп")
   lclick(895,353)
   WAITMS(10000)
   
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Cross.bmp")
      LCLICK($_return1, $_return2)
   END_IF
   
   lclick (870,171)
   GOTO(p1)
END_IF
//--------------------------------
lclick(895,353)
во спасибо так гораздо лучше)