Author Topic: Помощь по синстаксису  (Read 7472 times)

0 Members and 3 Guests are viewing this topic.

farmacedus

  • Освоившийся
  • **
  • Posts: 40
    • View Profile
Помощь по синстаксису
« on: April 23, 2015, 10:28:36 AM »
Всем привет. Ребят, нужно сделать такую вещь. Нужно чтоб кликер брал ник, вставлял в поле, нажимал искать и дальше уже производил некоторые действия, вопрос как сделать чтобы он шел по списку ников?

farmacedus

  • Освоившийся
  • **
  • Posts: 40
    • View Profile
Re: Помощь по синстаксису
« Reply #1 on: April 23, 2015, 11:05:43 AM »
И еще зачем убрали возможность делать скрин определенной области? Или её куда то перенесли?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помощь по синстаксису
« Reply #2 on: April 23, 2015, 11:08:43 AM »
Code: (clickermann) [Select]
FOR($a=1,$a<TFCOUNT("input.txt")+1) // цикл отработает все строки из файла input.txt
   TOCLIP(TFREAD("input.txt", $a)) // копируем текст из файла в буфер
   WAITMS(50)
   
   LCLICK(10,10) // клик по полю ввода
   WAITMS(50)
   
   KEYDOWN (#CTRL) // вставляем
   WAITMS (50)
   KEYDOWN (#V)
   WAITMS (50)
   KEYUP (#V)
   KEYUP (#CTRL)
   WAITMS(100)
   
   LCLICK(10,10) // клик по Искать
   WAITMS(50)
   // далее некоторые действия
   
END_CYC
HALT // после окончания цикла стоп

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помощь по синстаксису
« Reply #3 on: April 23, 2015, 11:10:33 AM »
Code: (clickermann) [Select]
GETSCREEN
SCREENSHOTEX(300,300, 600,600, "Image_", 0) // сделать скриншот в BMP
HALT

GETSCREEN
SCREENSHOTEX(300,300, 600,600, "Image_", 1) // сделать скриншот в JPG
HALT

farmacedus

  • Освоившийся
  • **
  • Posts: 40
    • View Profile
Re: Помощь по синстаксису
« Reply #4 on: April 23, 2015, 12:14:29 PM »
Code: (clickermann) [Select]
GETSCREEN
SCREENSHOTEX(300,300, 600,600, "Image_", 0) // сделать скриншот в BMP
HALT

GETSCREEN
SCREENSHOTEX(300,300, 600,600, "Image_", 1) // сделать скриншот в JPG
HALT
спасибо за ответы. Браться будут по 1 строке из файла ники?

farmacedus

  • Освоившийся
  • **
  • Posts: 40
    • View Profile
Re: Помощь по синстаксису
« Reply #5 on: April 23, 2015, 12:24:09 PM »
Code: (clickermann) [Select]
// вибор ника
LCLICK(1245,169)
WAITMS(500)
LCLICK(1245,169)
WAITMS(50)
KEYDOWN(#SHIFT)
LCLICK(1118,169)
KEYUP(#SHIFT)
WAITMS(50)
//вырезание ника
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#X)
WAITMS (50)
KEYUP (#X)
KEYUP (#CTRL)
WAITMS (50)

KEYPRESS(#DELETE)

//выделениеника в строке поиска
LCLICK(610,479)
WAITMS(500)
LCLICK(610,479)
WAITMS(50)
KEYDOWN(#SHIFT)
LCLICK(242,478)
KEYUP(#SHIFT)
WAITMS(50)
//удаление и вставка нового ника
KEYPRESS(#DELETE)
WAITMS (50)
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#V)
WAITMS (50)
KEYUP (#V)
KEYUP (#CTRL)
WAITMS (50)
//поиск и нажатия на искать

GETSCREEN
IF_PICTURE_IN (231,488, 440,740, "искать.bmp", -1, 100)
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF
//поиск изображения входящего сообщения
GETSCREEN
IF_PICTURE_IN (1173,293, 1258,938, "крестик.bmp", -1, 100)
   LCLICK($_return1, $_return2)
   WAITMS(100)
else
   WAITMS(50)
   //проверка на конверт и поиск кнопки отправить
   GETSCREEN
   SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "отправить2.bmp", -1, 100)
   $ARR_NUM = 0
   WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
      $X = $ARR_SCAN [$ARR_NUM]
      INC($ARR_NUM,1)
      $Y = $ARR_SCAN [$ARR_NUM]
      INC($ARR_NUM,1)
      IF_PIXEL_IN($X-599,$Y-0, $X+0,$Y+0, 16514039) // пиксель конверта (если есть конверт, то не жмет кнопку "отправить")
         WAITMS(1)
      ELSE
         $check = 1
         $ARR_NUM = 99999 // сброс цикла
         LCLICK($X, $Y)
         WAITMS(1000)
      END_IF
   END_IF
« Last Edit: April 23, 2015, 12:38:59 PM by Oraven »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помощь по синстаксису
« Reply #6 on: April 23, 2015, 12:38:44 PM »
Там у тебя в конце ошибки с завершениями
Code: (clickermann) [Select]
// вибор ника
LCLICK(1245,169)
WAITMS(500)
LCLICK(1245,169)
WAITMS(50)
KEYDOWN(#SHIFT)
LCLICK(1118,169)
KEYUP(#SHIFT)
WAITMS(50)
//вырезание ника
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#X)
WAITMS (50)
KEYUP (#X)
KEYUP (#CTRL)
WAITMS (50)

KEYPRESS(#DELETE)

//выделениеника в строке поиска
LCLICK(610,479)
WAITMS(500)
LCLICK(610,479)
WAITMS(50)
KEYDOWN(#SHIFT)
LCLICK(242,478)
KEYUP(#SHIFT)
WAITMS(50)
//удаление и вставка нового ника
KEYPRESS(#DELETE)
WAITMS (50)
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#V)
WAITMS (50)
KEYUP (#V)
KEYUP (#CTRL)
WAITMS (50)
//поиск и нажатия на искать

GETSCREEN
IF_PICTURE_IN (231,488, 440,740, "искать.bmp", -1, 100)
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF
//поиск изображения входящего сообщения
GETSCREEN
IF_PICTURE_IN (1173,293, 1258,938, "крестик.bmp", -1, 100)
   LCLICK($_return1, $_return2)
   WAITMS(100)
else
   WAITMS(50)
   //проверка на конверт и поиск кнопки отправить
   GETSCREEN
   SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "отправить2.bmp", -1, 100)
   $ARR_NUM = 0
   WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
      $X = $ARR_SCAN [$ARR_NUM]
      INC($ARR_NUM,1)
      $Y = $ARR_SCAN [$ARR_NUM]
      INC($ARR_NUM,1)
      IF_PIXEL_IN($X-599,$Y-0, $X+0,$Y+0, 16514039) // пиксель конверта (если есть конверт, то не жмет кнопку "отправить")
         WAITMS(1)
      ELSE
         $ARR_NUM = 99999 // сброс цикла
         LCLICK($X, $Y)
         WAITMS(1000)
      END_IF
   END_CYC
END_IF

farmacedus

  • Освоившийся
  • **
  • Posts: 40
    • View Profile
Re: Помощь по синстаксису
« Reply #7 on: April 23, 2015, 12:49:18 PM »
Там у тебя в конце ошибки с завершениями
Code: (clickermann) [Select]
// вибор ника
LCLICK(1245,169)
WAITMS(500)
LCLICK(1245,169)
WAITMS(50)
KEYDOWN(#SHIFT)
LCLICK(1118,169)
KEYUP(#SHIFT)
WAITMS(50)
//вырезание ника
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#X)
WAITMS (50)
KEYUP (#X)
KEYUP (#CTRL)
WAITMS (50)

KEYPRESS(#DELETE)

//выделениеника в строке поиска
LCLICK(610,479)
WAITMS(500)
LCLICK(610,479)
WAITMS(50)
KEYDOWN(#SHIFT)
LCLICK(242,478)
KEYUP(#SHIFT)
WAITMS(50)
//удаление и вставка нового ника
KEYPRESS(#DELETE)
WAITMS (50)
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#V)
WAITMS (50)
KEYUP (#V)
KEYUP (#CTRL)
WAITMS (50)
//поиск и нажатия на искать

GETSCREEN
IF_PICTURE_IN (231,488, 440,740, "искать.bmp", -1, 100)
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF
//поиск изображения входящего сообщения
GETSCREEN
IF_PICTURE_IN (1173,293, 1258,938, "крестик.bmp", -1, 100)
   LCLICK($_return1, $_return2)
   WAITMS(100)
else
   WAITMS(50)
   //проверка на конверт и поиск кнопки отправить
   GETSCREEN
   SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "отправить2.bmp", -1, 100)
   $ARR_NUM = 0
   WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
      $X = $ARR_SCAN [$ARR_NUM]
      INC($ARR_NUM,1)
      $Y = $ARR_SCAN [$ARR_NUM]
      INC($ARR_NUM,1)
      IF_PIXEL_IN($X-599,$Y-0, $X+0,$Y+0, 16514039) // пиксель конверта (если есть конверт, то не жмет кнопку "отправить")
         WAITMS(1)
      ELSE
         $ARR_NUM = 99999 // сброс цикла
         LCLICK($X, $Y)
         WAITMS(1000)
      END_IF
   END_CYC
END_IF
начиная с 48 строки не работает, по отдельности до 48 и после всё работает, вместе почему то нет.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помощь по синстаксису
« Reply #8 on: April 24, 2015, 10:18:38 AM »
Разберись с алгоритмом

Code: (clickermann) [Select]
//поиск изображения входящего сообщения
GETSCREEN
IF_PICTURE_IN (1173,293, 1258,938, "крестик.bmp", -1, 100)
   LCLICK($_return1, $_return2) // сработает если крестик.bmp найден
   WAITMS(100)
else
   // сработает если крестик.bmp не найден
WAITMS(50)
   //проверка на конверт и поиск кнопки отправить
   GETSCREEN
   SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "отправить2.bmp", -1, 100)
   $ARR_NUM = 0
   WHILE($ARR_NUM < ARRSIZE($ARR_SCAN)) // цикл сработает если отправить2.bmp найдено
      $X = $ARR_SCAN [$ARR_NUM]
      INC($ARR_NUM,1)
      $Y = $ARR_SCAN [$ARR_NUM]
      INC($ARR_NUM,1)
      IF_PIXEL_IN($X-599,$Y-0, $X+0,$Y+0, 16514039) // пиксель конверта (если есть конверт, то не жмет кнопку "отправить")
         WAITMS(1)
      ELSE
         $ARR_NUM = 99999 // сброс цикла
         LCLICK($X, $Y)
         WAITMS(1000)
      END_IF
   END_CYC // конец цикла
END_IF // конец крестик.bmp

farmacedus

  • Освоившийся
  • **
  • Posts: 40
    • View Profile
Re: Помощь по синстаксису
« Reply #9 on: April 24, 2015, 10:31:31 AM »
Разберись с алгоритмом

Code: (clickermann) [Select]
//поиск изображения входящего сообщения
GETSCREEN
IF_PICTURE_IN (1173,293, 1258,938, "крестик.bmp", -1, 100)
   LCLICK($_return1, $_return2) // сработает если крестик.bmp найден
   WAITMS(100)
else
   // сработает если крестик.bmp не найден
WAITMS(50)
   //проверка на конверт и поиск кнопки отправить
   GETSCREEN
   SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "отправить2.bmp", -1, 100)
   $ARR_NUM = 0
   WHILE($ARR_NUM < ARRSIZE($ARR_SCAN)) // цикл сработает если отправить2.bmp найдено
      $X = $ARR_SCAN [$ARR_NUM]
      INC($ARR_NUM,1)
      $Y = $ARR_SCAN [$ARR_NUM]
      INC($ARR_NUM,1)
      IF_PIXEL_IN($X-599,$Y-0, $X+0,$Y+0, 16514039) // пиксель конверта (если есть конверт, то не жмет кнопку "отправить")
         WAITMS(1)
      ELSE
         $ARR_NUM = 99999 // сброс цикла
         LCLICK($X, $Y)
         WAITMS(1000)
      END_IF
   END_CYC // конец цикла
END_IF // конец крестик.bmp
я разобрался, всё понятно как работает. Вот эта часть что ты скинул работает если без верхней части. В чем проблема?

farmacedus

  • Освоившийся
  • **
  • Posts: 40
    • View Profile
Re: Помощь по синстаксису
« Reply #10 on: April 24, 2015, 10:50:20 AM »
Цыкл не срабатывает не смотря на то что картинка есть и её находит.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Помощь по синстаксису
« Reply #11 on: April 24, 2015, 11:32:44 AM »
Как ты определил что находит?


farmacedus

  • Освоившийся
  • **
  • Posts: 40
    • View Profile
Re: Помощь по синстаксису
« Reply #12 on: April 24, 2015, 12:19:53 PM »
Как ты определил что находит?
если брать с всего кода только
GETSCREEN
IF_PICTURE_IN (231,488, 440,740, "искать.bmp", -1, 100)
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF

//поиск изображения входящего сообщения
GETSCREEN
IF_PICTURE_IN (1173,293, 1258,938, "крестик.bmp", -1, 100)
   LCLICK($_return1, $_return2) // сработает если крестик.bmp найден
   WAITMS(100)
else
   // сработает если крестик.bmp не найден
   WAITMS(50)
   //проверка на конверт и поиск кнопки отправить
   GETSCREEN
   SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "отправить2.bmp", -1, 100)
   $ARR_NUM = 0
   WHILE($ARR_NUM < ARRSIZE($ARR_SCAN)) // цикл сработает если отправить2.bmp найдено
      $X = $ARR_SCAN [$ARR_NUM]
      INC($ARR_NUM,1)
      $Y = $ARR_SCAN [$ARR_NUM]
      INC($ARR_NUM,1)
      IF_PIXEL_IN($X-599,$Y-0, $X+0,$Y+0, 16514039) // пиксель конверта (если есть конверт, то не жмет кнопку "отправить")
         WAITMS(1)
      ELSE
         $ARR_NUM = 99999 // сброс цикла
         LCLICK($X, $Y)
         WAITMS(1000)
      END_IF
   END_CYC // конец цикла
END_IF // конец крестик.bmp

то всё работает, картинку находит.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помощь по синстаксису
« Reply #13 on: April 24, 2015, 12:19:54 PM »
Заметил еще одно, отсутствует UNDEFINE($ARR_SCAN) без этого на повторном проходе цикл снова отработает по старым координатам.

Code: (clickermann) [Select]
// вибор ника
LCLICK(1245,169)
WAITMS(500)
LCLICK(1245,169)
WAITMS(50)
KEYDOWN(#SHIFT)
LCLICK(1118,169)
KEYUP(#SHIFT)
WAITMS(50)
//вырезание ника
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#X)
WAITMS (50)
KEYUP (#X)
KEYUP (#CTRL)
WAITMS (50)

KEYPRESS(#DELETE)

//выделениеника в строке поиска
LCLICK(610,479)
WAITMS(500)
LCLICK(610,479)
WAITMS(50)
KEYDOWN(#SHIFT)
LCLICK(242,478)
KEYUP(#SHIFT)
WAITMS(50)
//удаление и вставка нового ника
KEYPRESS(#DELETE)
WAITMS (50)
KEYDOWN (#CTRL)
WAITMS (50)
KEYDOWN (#V)
WAITMS (50)
KEYUP (#V)
KEYUP (#CTRL)
WAITMS (50)
//поиск и нажатия на искать

GETSCREEN
IF_PICTURE_IN (231,488, 440,740, "искать.bmp", -1, 100)
   LCLICK($_return1, $_return2)
   WAITMS(100)
END_IF
//поиск изображения входящего сообщения
GETSCREEN
IF_PICTURE_IN (1173,293, 1258,938, "крестик.bmp", -1, 100)
   LOGWRITE ("Найден крестик")
   LCLICK($_return1, $_return2)
   WAITMS(100)
else
   WAITMS(50)
   LOGWRITE ("проверка на конверт и поиск кнопки отправить")
   //проверка на конверт и поиск кнопки отправить
   GETSCREEN
   SCANPICTURE($ARR_SCAN, 0,0, $_xmax,$_ymax, "отправить2.bmp", -1, 100)
   $ARR_NUM = 0
   WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
      $X = $ARR_SCAN [$ARR_NUM]
      INC($ARR_NUM,1)
      $Y = $ARR_SCAN [$ARR_NUM]
      INC($ARR_NUM,1)
      IF_PIXEL_IN($X-599,$Y-0, $X+0,$Y+0, 16514039) // пиксель конверта (если есть конверт, то не жмет кнопку "отправить")
         WAITMS(1)
      ELSE
         LOGWRITE ("проверка на конверт и поиск кнопки отправить")
         $ARR_NUM = 99999 // сброс цикла
         LCLICK($X, $Y)
         WAITMS(1000)
      END_IF
   END_CYC
   UNDEFINE($ARR_SCAN) // очищаем массив координат
END_IF

Еще у тебя написано "если есть конверт" на самом деле клик происходит если пиксель 16514039 не найден
Code: (clickermann) [Select]
IF_PIXEL_IN($X-599,$Y-0, $X+0,$Y+0, 16514039) // пиксель конверта (если есть конверт, то не жмет кнопку "отправить")
   WAITMS(1) // если найден то ничего
ELSE
   // если не найден то
   LOGWRITE ("проверка на конверт и поиск кнопки отправить")
   $ARR_NUM = 99999 // сброс цикла
   LCLICK($X, $Y)
   WAITMS(1000)
END_IF
Может быть тут корень проблемы?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помощь по синстаксису
« Reply #14 on: April 24, 2015, 12:23:51 PM »
Опять же, если не понятно срабатывает или нет условие или цикл, нужно поместить внутрь его запись в лог. И по показаниям в логе в ходе работы скрипте уже можно сориентироваться.