Author Topic: Помогите с количеством повторений цикла  (Read 2756 times)

0 Members and 3 Guests are viewing this topic.

spelik

  • Зашел в гости
  • *
  • Posts: 1
    • View Profile
Подскажите пожалуйста. Как сделать если условие не выполняется (допустим 3 раза) чтобы скрипт переходил дальше по коду?
Code: [Select]
1:
$time = $_time_t + 10
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,224, 363,440, "file2.bmp", -1, 100)
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      MOVE(309,239)
      LDOWN(309,239)
      WAITMS(500)
      LUP(309,239)
      WAIT(5)
      MOVE(103,387)
      LDOWN(103,387)
      WAITMS(500)
      LUP(103,387)
      WAIT(15)
      GOTO(1)
     
   END_IF
END_CYC
« Last Edit: April 07, 2017, 02:28:19 PM by spelik »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
А зачем тогда написано в течении 10 секунд?
И так по GOTO выпрыгивать нельзя.

Максимум 3 поиска. Нашёл - идёт дальше. Не нашёл за 3 раза - идёт дальше.
Code: (clickermann) [Select]
FOR($find=0, $find < 3)
    GETSCREEN
    IF_PICTURE_IN(0,224, 363,440, "file2.bmp")
        $find = 10
        LCLICK($_return1, $_return2)
        WAITMS(100)
    ELSE
        MOVE(309,239)
        LDOWN(309,239)
        WAITMS(500)
        LUP(309,239)
        WAIT(5)
        MOVE(103,387)
        LDOWN(103,387)
        WAITMS(500)
        LUP(103,387)
        WAIT(15)
    END_IF
END_CYC
« Last Edit: April 07, 2017, 02:54:53 PM by Vint »


Dimitriy

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
А зачем тогда написано в течении 10 секунд?
И так по GOTO выпрыгивать нельзя.

Максимум 3 поиска. Нашёл - идёт дальше. Не нашёл за 3 раза - идёт дальше.
[spoiler]
Code: (clickermann) [Select]
FOR($find=0, $find < 3)
    GETSCREEN
    IF_PICTURE_IN(0,224, 363,440, "file2.bmp")
        $find = 10
        LCLICK($_return1, $_return2)
        WAITMS(100)
    ELSE
        MOVE(309,239)
        LDOWN(309,239)
        WAITMS(500)
        LUP(309,239)
        WAIT(5)
        MOVE(103,387)
        LDOWN(103,387)
        WAITMS(500)
        LUP(103,387)
        WAIT(15)
    END_IF
END_CYC
[/spoiler]

Добрый день! Столкнулся с аналогичной проблемой как у ТС. Мне нужно, что бы он переходил дальше сразу после того как "нашел".
Сделал как Вы посоветовали. Но даже после того, как он "нашел", он все равно повторяет цикл ровно столько раз, сколько прописано в"$find < і", а не идет дальше :С
Может я не правильно понял?
Code: (clickermann) [Select]
FOR($find=0, $find < 50)
   
   getscreen     
   if_pixel_in(587, 377, 590, 380, 11250603)
      KEYPRESS(#ESC)
      WAITMS (50)
      KEYPRESS(#ENTER)
      WAITMS (50)
      KEYPRESS(#ENTER)
      WAITMS (1000)
   else               
      LCLICK(617,369)
      WAITMS (50)
      KEYPRESS(#DOWN)
      WAITMS (50)
      KEYDOWN (#CTRL)
      WAITMS (50)
      KEYDOWN (#C)
      WAITMS (50)
      KEYUP (#C)
      KEYUP (#CTRL)
      WAITMS (50)
      LCLICK(1111,666)
      WAITMS (50)
      LCLICK(969,666)
      KEYDOWN (#CTRL)
      WAITMS (50)
      KEYDOWN (#V)
      WAITMS (50)
      KEYUP (#V)
      KEYUP (#CTRL)
      WAITMS (50)
      LCLICK(1111,666)
      WAITMS (50)
      KEYDOWN (#CTRL)
      WAITMS (50)
      KEYDOWN (#C)
      WAITMS (50)
      KEYUP (#C)
      KEYUP (#CTRL)
      WAITMS (50)
      DBLCLICK(676,369)
      WAITMS (50)
      KEYPRESS(#BACKSPACE)
      WAITMS (50)
      KEYDOWN (#CTRL)
      WAITMS (50)
      KEYDOWN (#V)
      WAITMS (50)
      KEYUP (#V)
      KEYUP (#CTRL)
      WAITMS (50)
      KEYPRESS(#ENTER)
      WAITMS (50)
   end_if
   
END_CYC
« Last Edit: April 14, 2017, 04:06:35 PM by Dimitriy »

open_78

  • Активный участник
  • ***
  • Posts: 285
  • v4.13.014 x64
    • View Profile
Code: (clickermann) [Select]
FOR($find=0, $find < 50)
 
   getscreen     
   if_pixel_in(587, 377, 590, 380, 11250603)
      $find=99  //   <<<<<<<<<<
      KEYPRESS(#ESC)
      WAITMS (50)
      KEYPRESS(#ENTER)
      WAITMS (50)
      KEYPRESS(#ENTER)
      WAITMS (1000)
   else               
      LCLICK(617,369)
      WAITMS (50)
      KEYPRESS(#DOWN)
      WAITMS (50)
      KEYDOWN (#CTRL)
      WAITMS (50)
      KEYDOWN (#C)
      WAITMS (50)
      KEYUP (#C)
      KEYUP (#CTRL)
      WAITMS (50)
      LCLICK(1111,666)
      WAITMS (50)
      LCLICK(969,666)
      KEYDOWN (#CTRL)
      WAITMS (50)
      KEYDOWN (#V)
      WAITMS (50)
      KEYUP (#V)
      KEYUP (#CTRL)
      WAITMS (50)
      LCLICK(1111,666)
      WAITMS (50)
      KEYDOWN (#CTRL)
      WAITMS (50)
      KEYDOWN (#C)
      WAITMS (50)
      KEYUP (#C)
      KEYUP (#CTRL)
      WAITMS (50)
      DBLCLICK(676,369)
      WAITMS (50)
      KEYPRESS(#BACKSPACE)
      WAITMS (50)
      KEYDOWN (#CTRL)
      WAITMS (50)
      KEYDOWN (#V)
      WAITMS (50)
      KEYUP (#V)
      KEYUP (#CTRL)
      WAITMS (50)
      KEYPRESS(#ENTER)
      WAITMS (50)
   end_if
 
END_CYC
« Last Edit: April 14, 2017, 06:00:55 PM by open_78 »

Dimitriy

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
Огромное спасибо!

Dimitriy

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
И опять я с вопросами по циклам :)
Код сократил для простоты вопроса, но цикличность оставил как у меня.
Вопрос: когда условие 2-го блока выполняется положительно, он выполняется единожды, и потом начинает опять повторять ОСНОВНОЙ цикл с начала. Как его заставить идти дальше?
Пысы: еще такой вопросик, есть команда которая запускает скрипт с самого начала, независимо от того где она вставлена?
Code: (clickermann) [Select]
FOR($find=0, $find < 50)
   getscreen
   if_pixel_in(587, 377, 590, 380, 11250603)
      $find=99
      WAITMS (50)
      KEYPRESS(#ENTER)
///////////////////БЛОК 2////////////////////////////////
      FOR($find=0, $find < 15)
         getscreen
         if_picture_in(481, 354, 519, 394, "G.bmp")
            $find=30
            KEYPRESS(#END)
         else
            if_picture_in(481, 354, 519, 394, "krest.bmp")
               WAITMS (200)
               KEYPRESS(#ENTER)
            else
               WAITMS (500)
            end_if
         end_if
      END_CYC
///////////////////БЛОК 2////////////////////////////////
   else
      getscreen
      if_picture_in(847, 361, 858, 376, "pak.bmp")
         WAITMS (50)
         KEYPRESS(#DOWN)
      else
         WAITMS (50)
         KEYPRESS(#ENTER)
      end_if
   end_if
END_CYC
//////дальше это тут

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
У вложенных циклов переменные цикла должны быть разные! Не экономь на буквах :D

По второму вопросу. Такой команды нет, но так можно сделать. Ты точно уверен что это нужно?
« Last Edit: April 21, 2017, 08:40:41 PM by Vint »


Dimitriy

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
У вложенных циклов переменные цикла должны быть разные! Не экономь на буквах :D

По второму вопросу. Такой команды нет, но так можно сделать. Ты точно уверен что это нужно?
Действительно, спасибо! Жлоб я на буквы оказался :)
Скорее интересно просто было, помогло бы сэкономить несколько строчек кода

Андрей8462

  • Зашел в гости
  • *
  • Posts: 1
    • View Profile
Добрый вечер! есть скрипт для поиска определенной картинки и клика по ней, нужно переделать чтоб найдя картинку и кликнув по ней бот перешел в новую заданную точку и проделал там все то же самое а потом вернулся на предыдущее место и так бесконечно ) не подскажете как можно сделать это?
Code: (clickermann) [Select]
$time = $_time_t + 5
WHILE($time > $_time_t)
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 70)
$time=0
MOVE($_return1, $_return2)
WAITMS(100)
LCLICK($_return1, $_return2)
WAITMS(500)
LCLICK(846, 435)
WAITMS(100)
ELSE
WAITMS(50)
END_IF
END_CYC
WAITMS(500)
DBLCLICK(100,100)
« Last Edit: April 29, 2017, 09:44:15 AM by Oraven »