Author Topic: FOR сбивается.  (Read 2990 times)

0 Members and 1 Guest are viewing this topic.

FJ

  • Освоившийся
  • **
  • Posts: 59
    • View Profile
FOR сбивается.
« on: November 12, 2015, 12:38:46 AM »
Доброго дня форумчане.
Помогите пожалуйста, уже 2 час сижу, не понимаю где косяк. В общем первый цикл
Code: [Select]
FOR ( $gild_select_step_down = 0 , $gild_select_step_down < 12 ) Работает нормально, но если внутри цикла выполняется это условие
Code: [Select]
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "screens\temp\arm_club_1.bmp", -1, 100), то цикл начинает свой путь после этого условия.
Где подвох кроется?

Code: [Select]
GETSCREEN
IF_PICTURE_IN ( $Xmin , $Ymin , $Xmax , $Ymax , "screens\temp\gild_enter.bmp", -1, 100)
   waitms ($t1)
   
   again1:
   $gild_select_temp = 0
   again:
   $Xgild_select = $Xmin + 360
   $Ygild_select = $Ymin + 260
   $Xgild_select_step_right1 = 348
   $Xgild_select_step_right2 = 5
   $Ygild_select_step_down = 24
   $Xgild_nextlist = $Xmin + 713
   $Ygild_nextlist = $Ymin + 560
   
   FOR ( $gild_select_step_down = 0 , $gild_select_step_down < 12 )
     
      print ("t0")
     
      WAIT ( 1 )
      LDOWN( $Xgild_select , $Ygild_select )
      LUP( ($Xgild_select + $Xgild_select_step_right1 ) , $Ygild_select )
      KEYDOWN (#CTRL)
      WAITMS ($t0)
      KEYDOWN (#C)
      WAITMS ($t0)
      KEYUP (#C)
      KEYUP (#CTRL)
      WAITMS( $t1 )
      $gild_temp = FROMCLIP ()
      WAITMS( $t2 )
      LCLICK( $Xgild_select + $Xgild_select_step_right2  , $Ygild_select )
     
      WAIT ($t8)

      scan_gild_again:
      GETSCREEN
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "screens\temp\arm_club_0.bmp", -1, 100)
         WAIT ( $t7 )
         LCLICK($_return1, $_return2)
      else
         GOTO (scan_gild_again)
      END_IF
      WAIT ( $t7 )
      scan_arm_again:

      print ("t1-1")

      GETSCREEN
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "screens\temp\arm_club_1.bmp", -1, 100)
         WAITms ( $t3 )
         print ("ôàí çàãðóçèëñÿ")
         $Xpodarok = $Xmin
         next_arm:
         for ( $podarok = 0 , $podarok < 6 )
            GETSCREEN // íàõîäèì ôàíàòîê íà ïîäàðêè
            IF_PICTURE_IN ( $Xpodarok , $Ymin , $Xmax , $Ymax , "screens\temp\podarok.bmp", -1, 100)
               move($_return1, $_return2)
               $Xpodarok = $_return1 + 10
               waitms (600)
               //ñìîòðèì íà ðèíã?
               for ( $rang = 1 , $rang < 10 )
                  GETSCREEN // ñìîòðèì ïîäàðêè
                  IF_PICTURE_IN ( $Xmin , $Ymin + 300 , $Xmax , $Ymin + 396 , strconcat("screens\temp\rang\", $rang ,".bmp"), -1, 100)
                     if ( $rang = 9) // åñëè ôîíàòêà íà ðèíã, à åå íåò â áàçå - äîáàâëÿåì
                        SCREENSHOTEX ( $_return1 - 70 , $_return2 - 5 , $_return1 + 30 , $_return2 + 18, "temp\rang\9_" , 0 )
                        $_return1 $_return2
                        print ("íàéäåíà ôàíàòêà íà ðèíã, íî íåò â áàçå - ñêðèí ñäåëàë")
                     else
                        print ("ðèíã " , $rang , " " , $gild_temp)
                        GOTO (next_arm)
                     END_IF
                  END_IF
               END_CYC
            END_IF
         END_CYC
      else
         GOTO (scan_arm_again)
      END_IF
      WAITms ( $t3 )

      print ("t1-2")
     
     
      print ("âûõîäèì èç ãðóïïû ", $gild_temp)
      waitms ($t0)
      GETSCREEN //âûõîäèì èç ãðóïïû
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "screens\temp\XYmin.bmp", -1, 100)
         LCLICK($_return1, $_return2)
      END_IF
     
      print ("t2")
     
      WAIT ( $t6 )
     
     
      //ïåðåõîäèì ê ñëåäóþùåé ãðóïïå
     
      IF ( $gild_select_step_down = 11 ) // Êîãäà 12 ãðóïï ïåðåáðàëè, ïðîêðó÷èâàåì ñïèñîê ãðóïï íèæå   /11
         
         print ("t3")
         
         IF ( $gild_select_temp = 3 )
            print ("ñíîâà")
            FROMCLIP () = " "
            LCLICK( $Xgild_nextlist , $Ygild_nextlist ) // Çàãðóæàåì ñëåäóþùèé ñïèñîê ãðóïï
            $gild_select_temp = 0
            wait ( $t7 )
            GOTO ( again )
         END_IF
         print ("123")
         $Xgild_roll_down = 719 // $Xmin + $Xgild_roll_down // ëèñòàòü ñïèñîê ãðóïï íèæå ïî Õ
         $Ygild_roll_down = 529 // $Ymin + $Ygild_roll_down // ëèñòàòü ñïèñîê ãðóïï íèæå ïî Y
         FOR ( $gild_roll_down = 0 , $gild_roll_down < 12 )
            LCLICK ( $Xmin + $Xgild_roll_down , $Ymin + $Ygild_roll_down )
            print ( $gild_roll_down )
         END_CYC // Êîãäà 12 ãðóïï ïåðåáðàëè, ïðîêðó÷èâàåì ñïèñîê ãðóïï íèæå //
         $gild_select_temp = $gild_select_temp + 1
         FROMCLIP () = " "
         wait ( $t7 )
         GOTO ( again )
      END_IF
     
      print ("t4")
     
      print ($gild_select_step_down)
      print ("$gild_select_temp ", $gild_select_temp)
      $Ygild_select = $Ygild_select + $Ygild_select_step_down
      waitms ($t0)
     
      print ("t5")
     
   end_cyc // Øàã â íèç ê ñëåäóþùåé ãðóïïå //
END_IF

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: FOR сбивается.
« Reply #1 on: November 12, 2015, 08:20:57 AM »
Из циклов выпрыгивать нельзя, а то ты выпрыгнул а кликер уверен что ты все еще в цикле, и чем дальше тем больше путаницы.

FJ

  • Освоившийся
  • **
  • Posts: 59
    • View Profile
Re: FOR сбивается.
« Reply #2 on: November 12, 2015, 08:56:11 AM »
А в каком смысле выпрыгивать? все же происходит внутри одного цикла.
Не использовать goto?

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: FOR сбивается.
« Reply #3 on: November 12, 2015, 10:15:38 AM »
А в каком смысле выпрыгивать? все же происходит внутри одного цикла.
Не использовать goto?

Где же внутри одного?
Code: (clickermann) [Select]
GOTO (next_arm)выпрыгивает сразу из двух:
Code: (clickermann) [Select]
for ( $podarok = 0 , $podarok < 6 )
for ( $rang = 1 , $rang < 10 )

И оба
Code: (clickermann) [Select]
GOTO ( again )выпрыгивают из
Code: (clickermann) [Select]
FOR ( $gild_select_step_down = 0 , $gild_select_step_down < 12 )


FJ

  • Освоившийся
  • **
  • Posts: 59
    • View Profile
Re: FOR сбивается.
« Reply #4 on: November 12, 2015, 10:38:54 AM »
Блин, и вправду! :)
GOTO (next_arm) заменил на rang = 10
Работает так, как нужно, вроде, сейчас протестирую.
А вот GOTO ( again ) просто переносит нас в начало перед циклом FOR ( $gild_select_step_down = 0 , $gild_select_step_down < 12 ), где сбрасываются все координаты.
Конечно, может это все можно сделать по другому, более правильно, но у меня пока нет мыслей на этот счет, но буду обязательно оптимизировать! :)
Вот сегодня узнал, что выпрыгивать из цикла не желательно, теперь буду знать! Спасибо! :)

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: FOR сбивается.
« Reply #5 on: November 12, 2015, 11:22:52 AM »
Блин, и вправду! :)
GOTO (next_arm) заменил на rang = 10
Работает так, как нужно, вроде, сейчас протестирую.
там же ещё добавить
$podarok = 0 чтобы с начала внешний цикл пошёл. Ну это если нужно.
« Last Edit: November 12, 2015, 11:24:30 AM by Vint »


FJ

  • Освоившийся
  • **
  • Posts: 59
    • View Profile
Re: FOR сбивается.
« Reply #6 on: November 12, 2015, 11:00:00 PM »
Не, там как раз это нужно, смотрим первый подарок, находим тип подарка и к следующему, всего 6 подарков нужно посмотреть :)
Всем спасибо еще раз! :)

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: FOR сбивается.
« Reply #7 on: November 13, 2015, 08:25:06 AM »
Не, там как раз это нужно, смотрим первый подарок, находим тип подарка и к следующему, всего 6 подарков нужно посмотреть :)
Всем спасибо еще раз! :)
У тебя в начале было не так, поэтому и предположил. При переходе по GOTO ты каждый раз начинал с нуля.