Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Terminator

Pages: [1]
1
Общие вопросы / Re: Как обьеденить циклы?
« on: February 21, 2015, 09:30:59 AM »
Здравствуйте.
Выбивает ошибку сценария http:http://clip2net.com/s/3cSiqNJ
По разному пробовал. Не хочет работать.
Всеж правильно везде. А он упрямый )

2
Общие вопросы / Re: Как обьеденить циклы?
« on: February 20, 2015, 05:28:28 PM »
Несколько раз прочитал статью Массивы http://crapware.aidf.org/forum/index.php?topic=319.0. Довольно доступно разжеванно )
Вроде не сложно. Дело практики.

Всеравно не могу врубиться:
1. для чего 2рая строка "MOVE($_xmax,0)"
2. почему так оформлен  этот сегмент:
Code: [Select]
   WHILE ($ARR_NUM < ARRSIZE($ARR))      //условие, где от порядкового номера зависит количество точек наведения?
      $digitX = $ARR[$ARR_NUM]
      $digitY = $ARR[$ARR_NUM+1]                  //переменная от следующего порядкового элемента массива? они же на одной оси.
      INC($ARR_NUM,2)                                      //что это значит?

3. последовательность work"x.bmp", work"x1.bmp" играют роль?  допустим, если надо в первую очередь выжимать 8рки (work"x1.bmp"),  просто разделить на отдельные подпрограммы?
Code: [Select]
SUB(work, $name)
END_SUB
work("8оранжевый.bmp")
work("8зеленый.bmp")
SUB(work, $name)
END_SUB
work("7оранжевый.bmp")
work("7зеленый.bmp")

4. как заставить работать с координатами, с начала списка массива?  или наоборот начать считывание координат с конца?  По инфе из статьи, такой скрипт кликает картинки начиная с последней добавленной координаты.

3
Общие вопросы / Re: Как обьеденить циклы?
« on: February 19, 2015, 08:59:33 PM »
Да вот учу. Очень нравится мне этот кликер. Столько возможностей. И сам процес увлекательеый.
Маленький минус, что в справке очень мало возможных примеров.  Гораздо легче осваивать уже на рабочих схемах при разных условиях.

Иначе, данных для сравнения и вывода взять негде.

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

4
Общие вопросы / Re: Как обьеденить циклы?
« on: February 19, 2015, 06:48:09 PM »
Ура! Я чувствовал, что можно покороче.
Вы - мастер )  А это код какого языка?

Прокоментируйте пожалуста вот эти сегменты. Ато с трудом вьезжаю.

начало подпрограммы:

Code: [Select]
SUB(work, $name)

Code: [Select]
  SCANPICTURE($ARR, $x, $y, $x1, $y1, $name)
   $ARR_NUM = 0
   WHILE ($ARR_NUM < ARRSIZE($ARR))
      $digitX = $ARR[$ARR_NUM]
      $digitY = $ARR[$ARR_NUM+1]
      INC($ARR_NUM,2)
      MOVE($digitX, $digitY)
      WAITMS(100)

Code: [Select]
work("7оранжевый.bmp")
work("7зеленый.bmp")
work("8оранжевый.bmp")
work("8зеленый.bmp")

5
Общие вопросы / Re: Как обьеденить циклы?
« on: February 19, 2015, 09:41:51 AM »
Так чтож, будет состоять из одних только подпрограмм одинаковых? 

Code: [Select]
             //ищем пиксел области
$check = 0
WHILE($check = 0)
 GETSCREEN (х, y, x1, y1)
   IF_PIXEL_IN (х, y, x1, y1, Бледный)
     $check = 1
    ELSE
   WAITMS(RND(100,200))
  move(100,500)
 END_IF
END_CYC

$x = a
$x1 = b
$x2.1 = c
$x2.2 = d

SUB (sub_1.7o)
  //Ищем 7 оранж

$check = 0                     
WHILE($check = 0)
  GETSCREEN ($x,y, $x1,y1)
    IF_PICTURE_IN ($x,y, $x1,y1, "7or.bmp")
    WAITMS(RND(10,50))
  $check = 1               
    WAITMS(RND(10,50))
    move($_return1, $_return2)   
  END_IF
END_CYC
  WAITMS(RND(10,50))
//Ищем первое окно
$check = 0
WHILE($check = 0)
   getscreen ($x2.1, y, x2.2, y1)
   IF_PIXEL_IN ($x2.1, y, x2.2, y1, Желтый)
       $check = 1
       WAITMS(RND(10,50))
LCLICK($_return1+9, $_return2+9)
   END_IF
END_CYC
  WAITMS(RND(10,50))
//ищем окно 2
$check = 0
WHILE($check = 0)
   getscreen (x, y, $x1, y2)
   IF_PIXEL_IN (x, y, $x1, y2, Синий)
         $check = 1
        WAITMS(RND(10,50))
      MOVE($_return1+9, $_return2+9)
   END_IF
END_CYC
  WAITMS(RND(10,50))
END_SUB

SUB (sub_1.8o)
END_SUB

SUB (sub_1.7z)
END_SUB
SUB (sub_1.8z)
END_SUB

SUB (sub_2.7o)
END_SUB
SUB (sub_2.7o)
END_SUB

Это правильно будет? и подпрограммы будут выполнятся последовательно, и между ними также можно дописывать код?
Подпрограмму можно вставлять в условия цикла?

6
Общие вопросы / Re: Как обьеденить циклы?
« on: February 19, 2015, 02:37:51 AM »
А если задать выполнения поиска цифр в разных ячейках отдельными потоками.
Как задать последовательность выполнения, когда они найдут цифры одновременно? 

Code: [Select]
Thread(7o)                                                  //Ищем 7 оранжевую                               
 $check = 0                                                               
  WHILE($check = 0)
   GETSCREEN (x, y, x1, y1)       
      IF_PICTURE_IN (x, y, x1, y1, "7оранжевый.bmp")                   
        $check = 1
        WAITMS(RND(10,50))
      move($_return1, $_return2)
    END_IF
  END_CYC
End_thread

Thread(7z)                                                  //Ищем 7 зеленую                           
 $check = 0                                                               
  WHILE($check = 0)
   GETSCREEN (x, y, x1, y1)       
      IF_PICTURE_IN (x, y, x1, y1, "7зеленый.bmp")                   
         $check = 1
        WAITMS(RND(10,50))
      move($_return1, $_return2)
   END_IF
 END_CYC
End_thread

7
Общие вопросы / Re: Как обьеденить циклы?
« on: February 18, 2015, 09:42:53 PM »
Ага. Благодарю.

8
Общие вопросы / Re: Как обьеденить циклы?
« on: February 18, 2015, 08:11:45 PM »
Как правильно написать "если 132, то выполнять далее" ?

Code: [Select]
$var=132
 IF(($var > 131) & ($var <133))
  GETSCREEN
   $count = PXLCOUNT (x,y, x1, y1, 0)
   $count=$var
  ELSE
 LCLICK(x+5,y+5)
END_CYC

9
Общие вопросы / Re: Как обьеденить циклы?
« on: February 18, 2015, 06:44:50 PM »
А у сумме выходит:     4 раза по 1 циклу из 5 циклов  , 1 из этих 5ти - 10 один в одном.
Кучерявое дерево какоето выходит.

100% есть возможность написать както иначе.

10
Общие вопросы / Re: Как обьеденить циклы?
« on: February 18, 2015, 06:39:19 PM »
Спасибо за советы. Сейчас буду исправлять.

GETSCREEN в начале не написал, потому, что оно все равно из пустого буфера ничего не должно найти. А после "WHILE(PXL(x,y) ! Бледный)" тоже самое  GETSCREEN (x, y, x1, y1).  Просто первый цикл будет холостой. Кажеться, это не должно влиять на скорость. Или я ошибаюсь?

По поводу поиска,. Не пойму как задать поиск следующей цифры после того как одну нашли и нажали. вставлять такойже цикл только с меньшей областью сканирования? это 10 одинаковых циклов один в одном выходит..  должен быть другой вариант.

В том то и вопрос. Как эти 4  тройных (одинаковых) цикла обьеденить. Точно ведь можно.  У меня не хаватает опыта.

Зачем ожидание? Ну, хочу убедиться, что все работает верно )  Потом перебью клик.

Ага перед ф5, надо навестись на края окна.
 

11
Общие вопросы / Как обьеденить циклы?
« on: February 18, 2015, 10:00:41 AM »
Здравствуйте.
Написал скрипт с помощью справки и похожих примеров , но некоторые фрагменты не работают или работают не правильно.
Не пойму как обьеденить циклы и как можно ускорить процесс. И вообще упростить код
Помогите пожалуйста )

Ситуация такая:
Есть ряд 10ти цифр
http://clip2net.com/s/3cFqvNV,
http://clip2net.com/s/3cF0MO7,
они меняются при смене комнаты (обновлении страници)  и мне нужно выбрать 2 заданных (в данном случае 7 и 8 ), и все из ряда если они есть.
Навожу курсор на цифру, она меняет фон http://clip2net.com/s/3cF1ndn, всплывает окно в произвольной области одной части экрана http://clip2net.com/s/3cFrxZ9.
Нажимаю его.  Снова всплывает окно в другой области http://clip2net.com/s/3cFrpDq. Нажать.
Затем следующая цифра. И в конце обновление страницы.

Что я написал:
Code: [Select]
         
                                                           // поиск бледного пикселя вокруг полоски с цифрами, понять, что страница обновилась
WHILE(PXL(x,y) ! Бледный)
      GETSCREEN (x, y, x1, y1)
      WAITMS(RND(100,200))
   END_IF
END_CYC


//$check = 0                                        //или так правильней?
//WHILE($check = 0)
//   GETSCREEN (x, y, x1, y1)
// IF_PIXEL_IN (x, y, x1, y1, Бледный)
//        $check = 1
//      WAITMS(RND(100,200))
//   END_IF
//END_CYC


           //Ищем 7 оранжевую
                                 
$check = 0                                                             
WHILE($check = 0)
   GETSCREEN (x, y, x1, y1)           //вся полоска
   IF_PICTURE_IN (x, y, x1, y1, "7оранжевый.bmp", -1)                   
      $check = 1
      move($_return1, $_return2)
      END_IF
END_CYC
//Проверяем выделение сегмента с цифрой. Бывает не выделяется и окно не всплывает.

getscreen ([$_return1, $_return2, $_return1+10, $_return2+10])
WHILE(PXL($_return1,$_return2) ! Фон цифры)
WAITMS(10)
  move($_return1-10, $_return2)
  WAITMS(10)
  move($_return1+10, $_return2)
  WAITMS(10)
  getscreen ([$_return1, $_return2, $_return1+10, $_return2+10])
END_CYC
//Ищем первое окно Готовности
$check = 0
WHILE($check = 0)
   getscreen (x, y, x1, y1)
   IF_PIXEL_IN (x, y, x1, y1, Желтый)
         $check = 1
      LCLICK($_return1, $_return2)
   END_IF
END_CYC
//Ищем второе окно GOD
$check = 0
WHILE($check = 0)
   getscreen (x, y, x1, y1)
   IF_PIXEL_IN (x, y, x1, y1, Синий)
         $check = 1
      WAITMS(RND(10,50))
      MOVE($_return1, $_return2)
      END_IF
END_CYC
                                                 //клик для продолжения
WHILE(iskeydown(1)=0)
   WAITMS(20)
   LCLICK($_return1, $_return2)
END_CYC

//Потом тоже самое для 7зеленый.bmp, 8оранжевый.bmp, 8зеленый.bmp.


//Может попробовать поиск по сумме черных пикселей в области?  только как узнать их  количество в символе?
//Или может както можно задать поиск просто по символу?

KEYPRESS(116)                 //f5 (обновление страници)    не срабатывает.


В итоге: когда цифра одна - выполняет.
А вот если цифр много..  приходится включать ручной режим )
Ковыряюсь 2 день.  Перечитываю пока справку. может чтото подходящее найдется.

Pages: [1]