Author Topic: работает только если все верно .... а оно не всегда так помогите пжж  (Read 2975 times)

0 Members and 1 Guest are viewing this topic.

Зануда

  • Активный участник
  • ***
  • Posts: 104
    • View Profile
Code: (clickermann) [Select]
GETSCREEN  ($xx+491,$yy-57,$xx+713,$yy+622)  //(908,50, 1130,729)
         IF_PICTURE_IN ($xx+491,$yy-57,$xx+713,$yy+622, "на ос.bmp", -1, 70)// если нашли то запоминаем где она
            LOGWRITE (" на ос")
            $x= $_return1
            $y= $_return2
            GETSCREEN ($x-549,$y-27, $x-501,$y+20)
            IF_PICTURE_IN ($x-549,$y-27, $x-501,$y+20, "нек на стр.bmp", -1, 70)// если вот это подтвердилось то  все дальше работает а если нет то не работает зависает((( из за того что на страницы эта кнопка может быть несколько раз а кликер ищет с ЛВУ и получаеться что он возвращается искать картинку и о5 натыкаеться на ту же но она не подходит нам как сделать чтоб если не подошла он кординаты запомнил и уже ее пропускал
               LOGWRITE ("это то что нам нада")
               m_move($x+RND(-5,5),$y+RND(-5,5))
               LCLICK($_xmouse,$_ymouse)
               m_move($x+500+RND(-5,5),$y+RND(-5,5))
             
               $time1 = $_time_t + 10
               WHILE($time1 > $_time_t)
                  GETSCREEN ($xx+501,$yy+449,$xx+722,$yy+588) //(918,556, 1139,695)
                  COLORMODE(6, $xx+501,$yy+449,$xx+722,$yy+588)
                  IF_PICTURE_IN ($xx+501,$yy-449,$xx+722,$yy+588, "нек б.bmp", -1, 70)
                     $time1 = 0
                     LOGWRITE ("нашли б")
                     m_move($_return1+RND(-2,2), $_return2+RND(-2,2))
                     LCLICK($_xmouse,$_ymouse)
                     
                     
                     $time2 = $_time_t + 10
                     WHILE($time2 > $_time_t)
                        GETSCREEN ($xx-25,$yy+328,$xx+280,$yy+537)//(399,465, 679,644)
                        IF_PICTURE_IN ($xx-25,$yy+328,$xx+280,$yy+537, "нап.bmp", -1, 70)
                         
                           $time2 = 0
                           m_move($_return1+RND(-2,2), $_return2+RND(-2,2))
                           LCLICK($_xmouse,$_ymouse)
                           WAITMS(rnd(1500,1700))
                        ELSE
                           LOGWRITE ("не нашли нап")
                           WAITMS(50)
                        END_IF
                     END_CYC
                  ELSE
                     LOGWRITE ("не нашли б")
                     WAITMS(50)
                  END_IF
               END_CYC
               
            ELSE
               
               LOGWRITE ("это не нек ")// нужно запомнить кординыты и игнорить 
               GOTO(skip)
            END_IF

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
В данном скрипте не хватает END_IF в конце, но раз это часть большого скрипта возможно ты его просто не скопировал.

Вот например картинка нашлась в координате 500,500
Code: (clickermann) [Select]
$x = 500
$y = 500

LOGWRITE ($x-549,",",$y-27,", ", $x-501,",",$y+20)
HALT
Лог:
Code: [Select]
9:46:02 -49,473, -1,520В этом случаи у тебя область поиска будет задана не верно!

Зануда

  • Активный участник
  • ***
  • Posts: 104
    • View Profile
Code: (clickermann) [Select]
$_xm1= 85
$_ym2= 49

SUB(mouse_move,$MOVE_END_X,$MOVE_END_Y)
   $MOVE_Start_X = $_xmouse
   $MOVE_Start_Y = $_ymouse
   $MOVE_X = $MOVE_Start_X
   $MOVE_Y = $MOVE_Start_Y
   
   $dist = DIST($MOVE_END_X,$MOVE_END_Y,$MOVE_Start_X,$MOVE_Start_Y)
   $MOVE_step = ($dist-1)/INT(SQRT($dist))
   $MOVE_X_step = ($MOVE_END_X-$MOVE_Start_X)/$MOVE_step
   $MOVE_Y_step = ($MOVE_END_Y-$MOVE_Start_Y)/$MOVE_step
   
   FOR($MOVE_i=0, $MOVE_i < INT($MOVE_step))
      $MOVE_X = $MOVE_X + $MOVE_X_step
      $MOVE_Y = $MOVE_Y + $MOVE_Y_step
      MOVE(INT($MOVE_X) + RND(-2,2), INT($MOVE_Y) + RND(-2,2))
      WAITMS($rnwait) // задержка при движении по точкам
   END_CYC
END_SUB

SUB(m_move,$M_X,$M_Y)
   $rnwait = RND(6,15) // случайная скорость
   $MOVE_MID_X = INT(($_xmouse+$M_X)/2)
   $MOVE_MID_Y = INT(($_ymouse+$M_Y)/2)
   $otx = INT(ABS($_xmouse - $M_X) * 0.12)
   $oty = INT(ABS($_ymouse - $M_Y) * 0.12)
   mouse_move($MOVE_MID_X+RND(-$otx,$otx), $MOVE_MID_Y+RND(-$oty,$oty))
   mouse_move($M_X,$M_Y)
   MOVE($M_X,$M_Y) //Передвинуть окончательно в заданную точку
END_SUB

IF($xx1212=0 )

   GETSCREEN
   IF_PICTURE_IN(0,0, $_xmax,$_ymax, "в.bmp")
      $xx = $_return1
      $yy = $_return2
      LOGSHOW (1, 49,102)
      LOGWRITE ("привязались")
      $xx1212=1
      $tim23 = $_time_t + 300
   ELSE
     
      LOGWRITE ("не привязались")
      HALT
      $xx1212=1
   END_IF
   
END_IF
IF($tim23 < $_time_t)
   m_move($_xm1+RND(-2,2), $_ym2+RND(-2,2))
   LCLICK($_xmouse,$_ymouse)
   $tim23 = $_time_t + 300
   $t87=1
   //
END_IF



GETSCREEN  ($xx+547,$yy+519,$xx+598,$yy+610)  // (964,626,1015,717)
IF_PICTURE_IN ($xx+547,$yy+519,$xx+598,$yy+610, "череп.bmp", -1, 80)
   LOGWRITE ("нашли череп")
   IF($t87=1 )
      WAITMS(500)   
     
      $t87=0
   END_IF
   $tim23 = 0
   $tim23 = $_time_t + 300
   m_move($_return1+RND(-2,2), $_return2+RND(-2,2))
   LCLICK($_xmouse,$_ymouse)
   $ti=1
 
   skip1:
   
   $time = $_time_t + 10
   WHILE($time > $_time_t)
      GETSCREEN ($xx+98,$yy+514,$xx+162,$yy+591) //(515,621,579 ,698)
      IF_PICTURE_IN ($xx+98,$yy+514,$xx+162,$yy+591, "мне.bmp", -1, 70)
         $time = 0
         LOGWRITE ("нашли мне")
         IF($ti = 1)
            WAITMS(800) 
            $ti=0
         END_IF
         GETSCREEN ($xx+491,$yy-57,$xx+713,$yy+622)
         
         SCANPICTURE($ARR_SCAN, $xx+491,$yy-57,$xx+713,$yy+622, "на остров.bmp", -1, 70)
         LOGWRITE ("нашли на остров")
         $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)
           ($X, $Y)   // перемещаем курсор
            LOGWRITE ("X: ", $X, " Y: ", $Y)
            WAITMS(100)
            GETSCREEN ($x-549,$y-27, $x-501,$y+20)
            IF_PICTURE_IN ($x-549,$y-27, $x-501,$y+20, "то на стр.bmp", -1, 70)
               LOGWRITE ("это то жмякаем на остров")
               m_move($x+RND(-5,5),$y+RND(-5,5))
               LCLICK($_xmouse,$_ymouse)
               m_move($x+500+RND(-5,5),$y+RND(-5,5))
             
               $time1 = $_time_t + 10
               WHILE($time1 > $_time_t)
                  GETSCREEN ($xx+501,$yy+449,$xx+722,$yy+588) //(918,556, 1139,695)
                  COLORMODE(6, $xx+501,$yy+449,$xx+722,$yy+588)
                  IF_PICTURE_IN ($xx+501,$yy-449,$xx+722,$yy+588, "то.bmp", -1, 70)
                     $time1 = 0
                     LOGWRITE ("нашли тыкаем")
                     m_move($_return1+RND(-2,2), $_return2+RND(-2,2))
                     LCLICK($_xmouse,$_ymouse)
                   
                     
                     $time2 = $_time_t + 10
                     WHILE($time2 > $_time_t)
                        GETSCREEN ($xx-25,$yy+328,$xx+280,$yy+537)//(399,465, 679,644)
                        IF_PICTURE_IN ($xx-25,$yy+328,$xx+280,$yy+537, "напасть.bmp", -1, 70)
                           LOGWRITE ("нашли напасть")
                           $time2 = 0
                           m_move($_return1+RND(-2,2), $_return2+RND(-2,2))
                           LCLICK($_xmouse,$_ymouse)
                           WAITMS(rnd(1500,1700))
                        ELSE
                           LOGWRITE ("не нашли напасть")
                           WAITMS(50)
                        END_IF
                     END_CYC
                  ELSE
                     LOGWRITE ("не нашли ")
                     WAITMS(50)
                  END_IF
               END_CYC
               
            ELSE
               
               LOGWRITE ("это не то след стр")
               
            END_IF
           
           
           
         ELSE
            LOGWRITE ("не нашли на остров")
            GETSCREEN($xx+245,$yy+478,$xx+682,$yy+618) //(662,585, 1099,725)
            IF_PICTURE_IN ($xx+245,$yy+478,$xx+682,$yy+618, "след стр.bmp", -1, 70)
               LOGWRITE ("след сттр")
               m_move($_return1+RND(-2,2), $_return2+RND(-2,2))
               LCLICK($_xmouse,$_ymouse)
               
               
               m_move($_xmouse+100,$_ymouse)
               WAITMS(rnd(300,500))

UNDEFINE($ARR_SCAN)

               
               GOTO(skip1)
               ELSE
GOTO(ski)
            END_IF
         END_CYC
         
         
   
      ELSE
         
         WAITMS(50)
      END_IF
   END_CYC
   
   
END_IF
ski:
SUB(элики,$dname1)
   GETSCREEN  ($xx+37,$yy+436, $xx+657,$yy+561)
   IF_PICTURE_IN ($xx+37,$yy+436, $xx+657,$yy+561, $dname1, -1, 80)
   
         LOGWRITE ("юзаем:" ,$dname1,")
     
      m_move($_return1+RND(-10,10), $_return2+RND(-10,10))
      LCLICK($_xmouse,$_ymouse)
      WAITMS(rnd(400,600))   
     
   END_IF
END_SUB
GETSCREEN($xx+282,$yy+41, $xx+378,$yy+73)
IF_PICTURE_IN ($xx+282,$yy+41, $xx+378,$yy+73, "ход.bmp", -1, 80)
 
   элики("молния.bmp")
   элики("плевок.bmp")
 
   
   WAITMS(rnd(200,250))   
   
END_IF
 UNDEFINE($ARR_SCAN)
GETSCREEN ($xx+635,$yy-34,$xx+716,$yy+48)//(1052,73, 1133,155)
IF_PICTURE_IN (1052,73, 1133,155, "крестик.bmp", -1, 90)
   LOGWRITE ("нашли крестик")
   m_move($_return1+RND(-2,2), $_return2+RND(-2,2))
   LCLICK($_xmouse,$_ymouse)
   WAITMS(rnd(2000,4000)) 
   LOGCLEAR
   
   m_move($_return1+100+RND(-2,2), $_return2+RND(-20,20))
END_IF


WAITMS(rnd(50,90))
   вот так все работает как нужно но писали что с цыкла нельзя гото а я по другому не могу понять как сделать подправте чтоб было все правильно но работал  так же как вот сейчас

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Ошибка:
Строка 98
($X, $Y)   // перемещаем курсор - Куда MOVE делось? Сотри строку полностью если она тебе не нужна

Строка 147
ELSE вне условия посреди цикла WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))

Строка 183
LOGWRITE ("юзаем:" ,$dname1,") - лишнее ,"

UNDEFINE($ARR_SCAN) написано не пойми где.
Обнулять массив нужно после цикла WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
либо до SCANPICTURE. Даже если массива еще нет то ошибки не будет.

Для начала разберись с ELSE на 147 строке.
Конечно же выпрыгивать через гото из циклов нельзя.

Зануда

  • Активный участник
  • ***
  • Posts: 104
    • View Profile
98 строку убрал и в 183 поправил а насчет  ELSE  Строка 147 я не понял куда его нужно пристроить это дложно делаться если не нашло   SCANPICTURE($ARR_SCAN, $xx+491,$yy-57,$xx+713,$yy+622, "на остров.bmp", -1, 70) а удаления масива понапихивал везде  :Dот того что если оно только после выхода и цыкла что то не то наврное из за того что в цыкле это если но ян з как исправить а работать и так работает как нада но все равно хотелось бы чтоб все было как нада а не через *опу ;D можете показать где оно должно быть  ???

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Исправил, теперь все корректно. Гото там вообще не нужны все решается логикой.

Code: (clickermann) [Select]
$_xm1= 85
$_ym2= 49

SUB(mouse_move,$MOVE_END_X,$MOVE_END_Y)
   $MOVE_Start_X = $_xmouse
   $MOVE_Start_Y = $_ymouse
   $MOVE_X = $MOVE_Start_X
   $MOVE_Y = $MOVE_Start_Y
   
   $dist = DIST($MOVE_END_X,$MOVE_END_Y,$MOVE_Start_X,$MOVE_Start_Y)
   $MOVE_step = ($dist-1)/INT(SQRT($dist))
   $MOVE_X_step = ($MOVE_END_X-$MOVE_Start_X)/$MOVE_step
   $MOVE_Y_step = ($MOVE_END_Y-$MOVE_Start_Y)/$MOVE_step
   
   FOR($MOVE_i=0, $MOVE_i < INT($MOVE_step))
      $MOVE_X = $MOVE_X + $MOVE_X_step
      $MOVE_Y = $MOVE_Y + $MOVE_Y_step
      MOVE(INT($MOVE_X) + RND(-2,2), INT($MOVE_Y) + RND(-2,2))
      WAITMS($rnwait) // задержка при движении по точкам
   END_CYC
END_SUB

SUB(m_move,$M_X,$M_Y)
   $rnwait = RND(6,15) // случайная скорость
   $MOVE_MID_X = INT(($_xmouse+$M_X)/2)
   $MOVE_MID_Y = INT(($_ymouse+$M_Y)/2)
   $otx = INT(ABS($_xmouse - $M_X) * 0.12)
   $oty = INT(ABS($_ymouse - $M_Y) * 0.12)
   mouse_move($MOVE_MID_X+RND(-$otx,$otx), $MOVE_MID_Y+RND(-$oty,$oty))
   mouse_move($M_X,$M_Y)
   MOVE($M_X,$M_Y) //Передвинуть окончательно в заданную точку
END_SUB

IF($xx1212=0 )
   
   GETSCREEN
   IF_PICTURE_IN(0,0, $_xmax,$_ymax, "в.bmp")
      $xx = $_return1
      $yy = $_return2
      LOGSHOW (1, 49,102)
      LOGWRITE ("привязались")
      $xx1212=1
      $tim23 = $_time_t + 300
   ELSE       
      LOGWRITE ("не привязались")
      HALT
      $xx1212=1
   END_IF
   
END_IF

IF($tim23 < $_time_t)
   m_move($_xm1+RND(-2,2), $_ym2+RND(-2,2))
   LCLICK($_xmouse,$_ymouse)
   $tim23 = $_time_t + 300
   $t87=1
END_IF



GETSCREEN  ($xx+547,$yy+519,$xx+598,$yy+610)  // (964,626,1015,717)
IF_PICTURE_IN ($xx+547,$yy+519,$xx+598,$yy+610, "череп.bmp", -1, 80)
   LOGWRITE ("нашли череп")
   IF($t87=1 )
      WAITMS(500)       
      $t87=0
   END_IF
   $tim23 = 0
   $tim23 = $_time_t + 300
   m_move($_return1+RND(-2,2), $_return2+RND(-2,2))
   LCLICK($_xmouse,$_ymouse)
   $ti=1
   
   $time = $_time_t + 10
   WHILE($time > $_time_t)
      GETSCREEN ($xx+98,$yy+514,$xx+162,$yy+591) //(515,621,579 ,698)
      IF_PICTURE_IN ($xx+98,$yy+514,$xx+162,$yy+591, "мне.bmp", -1, 70)
         $time = 0
         LOGWRITE ("нашли мне")
         IF($ti = 1)
            WAITMS(800)
            $ti=0
         END_IF
         
         UNDEFINE($ARR_SCAN) // перед поиском обнуляем массив
         GETSCREEN ($xx+491,$yy-57,$xx+713,$yy+622)
         SCANPICTURE($ARR_SCAN, $xx+491,$yy-57,$xx+713,$yy+622, "на остров.bmp", -1, 70)
         LOGWRITE ("нашли на остров")
         $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)
            WAITMS(100)
            GETSCREEN ($x-549,$y-27, $x-501,$y+20)
            IF_PICTURE_IN ($x-549,$y-27, $x-501,$y+20, "то на стр.bmp", -1, 70)
               LOGWRITE ("это то жмякаем на остров")
               m_move($x+RND(-5,5),$y+RND(-5,5))
               LCLICK($_xmouse,$_ymouse)
               m_move($x+500+RND(-5,5),$y+RND(-5,5))
               
               $time1 = $_time_t + 10
               WHILE($time1 > $_time_t)
                  GETSCREEN ($xx+501,$yy+449,$xx+722,$yy+588) //(918,556, 1139,695)
                  COLORMODE(6, $xx+501,$yy+449,$xx+722,$yy+588)
                  IF_PICTURE_IN ($xx+501,$yy-449,$xx+722,$yy+588, "то.bmp", -1, 70)
                     $time1 = 0
                     LOGWRITE ("нашли тыкаем")
                     m_move($_return1+RND(-2,2), $_return2+RND(-2,2))
                     LCLICK($_xmouse,$_ymouse)
                     
                     
                     $time2 = $_time_t + 10
                     WHILE($time2 > $_time_t)
                        GETSCREEN ($xx-25,$yy+328,$xx+280,$yy+537)//(399,465, 679,644)
                        IF_PICTURE_IN ($xx-25,$yy+328,$xx+280,$yy+537, "напасть.bmp", -1, 70)
                           LOGWRITE ("нашли напасть")
                           $time2 = 0
                           m_move($_return1+RND(-2,2), $_return2+RND(-2,2))
                           LCLICK($_xmouse,$_ymouse)
                           WAITMS(rnd(1500,1700))
                        ELSE
                           LOGWRITE ("не нашли напасть")
                           WAITMS(50)
                        END_IF
                     END_CYC
                  ELSE
                     LOGWRITE ("не нашли ")
                     WAITMS(50)
                  END_IF
               END_CYC
               
            ELSE
               
               LOGWRITE ("это не то след стр")
               
            END_IF
         END_CYC
         
         IF(ARRSIZE($ARR_SCAN) = 0) // если массив пуст, значит не нашли на остров.bmp
            LOGWRITE ("не нашли на остров")
            GETSCREEN($xx+245,$yy+478,$xx+682,$yy+618) //(662,585, 1099,725)
            IF_PICTURE_IN ($xx+245,$yy+478,$xx+682,$yy+618, "след стр.bmp", -1, 70)
               LOGWRITE ("след сттр")
               m_move($_return1+RND(-2,2), $_return2+RND(-2,2))
               LCLICK($_xmouse,$_ymouse)               
               
               m_move($_xmouse+100,$_ymouse)
               WAITMS(rnd(300,500))             
               
               $time = $_time_t + 10 // продлеваем цикл WHILE($time > $_time_t)
            ELSE
               $time = 0 // выход из цикла WHILE($time > $_time_t)
            END_IF
         END_IF
         
      ELSE
         
         WAITMS(50)
      END_IF
   END_CYC
   
END_IF

SUB(элики,$dname1)
   GETSCREEN  ($xx+37,$yy+436, $xx+657,$yy+561)
   IF_PICTURE_IN ($xx+37,$yy+436, $xx+657,$yy+561, $dname1, -1, 80)       
      LOGWRITE ("юзаем:" ,$dname1)       
      m_move($_return1+RND(-10,10), $_return2+RND(-10,10))
      LCLICK($_xmouse,$_ymouse)
      WAITMS(rnd(400,600))       
   END_IF
END_SUB

GETSCREEN($xx+282,$yy+41, $xx+378,$yy+73)
IF_PICTURE_IN ($xx+282,$yy+41, $xx+378,$yy+73, "ход.bmp", -1, 80)     
   элики("молния.bmp")
   элики("плевок.bmp")     
   WAITMS(rnd(200,250))   
END_IF

GETSCREEN ($xx+635,$yy-34,$xx+716,$yy+48)//(1052,73, 1133,155)
IF_PICTURE_IN (1052,73, 1133,155, "крестик.bmp", -1, 90)
   LOGWRITE ("нашли крестик")
   m_move($_return1+RND(-2,2), $_return2+RND(-2,2))
   LCLICK($_xmouse,$_ymouse)
   WAITMS(rnd(2000,4000))
   LOGCLEAR   
   m_move($_return1+100+RND(-2,2), $_return2+RND(-20,20))
END_IF

WAITMS(rnd(50,90))

Зануда

  • Активный участник
  • ***
  • Posts: 104
    • View Profile
ой спасибо огромное :) просто я вчера сидел это все вобше угадывал методом тыка :-\

Зануда

  • Активный участник
  • ***
  • Posts: 104
    • View Profile
и все же нет не то  :'(  код то поправили но смысл теперь не тот он делает не так как нада (((((((((((((((((( :-[
разница в моем кривом варианте после того как он найдет на остров он провиряет то ли это если не то он возвращаеться и уже проверяет следующую картинку из масива если и это не то тогда возвращаеться назад проверять картинку из масива следующую если ее нет то выходит что картинки на остров больше нет значит след стр удаляем преждий масив и по новому если картинка есть проверяем то или не то если не то следующую  проверяем а в вашем примере выходит тоже самое что бы просто через условия сдела он ток первую найденую проверяет то ли это если не то то все аминь завис  :'(

Зануда

  • Активный участник
  • ***
  • Posts: 104
    • View Profile
Code: (clickermann) [Select]
$_xm1= 85
$_ym2= 49

SUB(mouse_move,$MOVE_END_X,$MOVE_END_Y)
   $MOVE_Start_X = $_xmouse
   $MOVE_Start_Y = $_ymouse
   $MOVE_X = $MOVE_Start_X
   $MOVE_Y = $MOVE_Start_Y
   
   $dist = DIST($MOVE_END_X,$MOVE_END_Y,$MOVE_Start_X,$MOVE_Start_Y)
   $MOVE_step = ($dist-1)/INT(SQRT($dist))
   $MOVE_X_step = ($MOVE_END_X-$MOVE_Start_X)/$MOVE_step
   $MOVE_Y_step = ($MOVE_END_Y-$MOVE_Start_Y)/$MOVE_step
   
   FOR($MOVE_i=0, $MOVE_i < INT($MOVE_step))
      $MOVE_X = $MOVE_X + $MOVE_X_step
      $MOVE_Y = $MOVE_Y + $MOVE_Y_step
      MOVE(INT($MOVE_X) + RND(-2,2), INT($MOVE_Y) + RND(-2,2))
      WAITMS($rnwait) // задержка при движении по точкам
   END_CYC
END_SUB

SUB(m_move,$M_X,$M_Y)
   $rnwait = RND(6,15) // случайная скорость
   $MOVE_MID_X = INT(($_xmouse+$M_X)/2)
   $MOVE_MID_Y = INT(($_ymouse+$M_Y)/2)
   $otx = INT(ABS($_xmouse - $M_X) * 0.12)
   $oty = INT(ABS($_ymouse - $M_Y) * 0.12)
   mouse_move($MOVE_MID_X+RND(-$otx,$otx), $MOVE_MID_Y+RND(-$oty,$oty))
   mouse_move($M_X,$M_Y)
   MOVE($M_X,$M_Y) //Передвинуть окончательно в заданную точку
END_SUB

IF($xx1212=0 )
   
   GETSCREEN
   IF_PICTURE_IN(0,0, $_xmax,$_ymax, "в.bmp")
      $xx = $_return1
      $yy = $_return2
      LOGSHOW (1, 49,102)
      LOGWRITE ("привязались")
      $xx1212=1
      $tim23 = $_time_t + 300
   ELSE
      LOGWRITE ("не привязались")
      HALT
      $xx1212=1
   END_IF
   
END_IF

IF($tim23 < $_time_t)
   m_move($_xm1+RND(-2,2), $_ym2+RND(-2,2))
   LCLICK($_xmouse,$_ymouse)
   $tim23 = $_time_t + 300
   $t87=1
END_IF



GETSCREEN  ($xx+547,$yy+519,$xx+598,$yy+610)  // (964,626,1015,717)
IF_PICTURE_IN ($xx+547,$yy+519,$xx+598,$yy+610, "череп.bmp", -1, 80)
   LOGWRITE ("нашли череп")
   IF($t87=1 )
      WAITMS(500)
      $t87=0
   END_IF
   $tim23 = 0
   $tim23 = $_time_t + 300
   m_move($_return1+RND(-2,2), $_return2+RND(-2,2))
   LCLICK($_xmouse,$_ymouse)
   $ti=1
   
   $time = $_time_t + 10
   WHILE($time > $_time_t)
      GETSCREEN ($xx+98,$yy+514,$xx+162,$yy+591) //(515,621,579 ,698)
      IF_PICTURE_IN ($xx+98,$yy+514,$xx+162,$yy+591, "мне.bmp", -1, 70)
         $time = 0
         LOGWRITE ("нашли мне")
         IF($ti = 1)
            WAITMS(800)
            $ti=0
         END_IF
         
         UNDEFINE($ARR_SCAN) // перед поиском обнуляем массив
         GETSCREEN ($xx+491,$yy-57,$xx+713,$yy+622)
         SCANPICTURE($ARR_SCAN, $xx+491,$yy-57,$xx+713,$yy+622, "на остров.bmp", -1, 70)
         LOGWRITE ("нашли на остров")
         $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)
            WAITMS(100)
            GETSCREEN ($x-549,$y-27, $x-501,$y+20)
            IF_PICTURE_IN ($x-549,$y-27, $x-501,$y+20, "то на стр.bmp", -1, 70)
               LOGWRITE ("это то жмякаем на остров")
               m_move($x+RND(-5,5),$y+RND(-5,5))
               LCLICK($_xmouse,$_ymouse)
               m_move($x+500+RND(-5,5),$y+RND(-5,5))
               
               $time1 = $_time_t + 10
               WHILE($time1 > $_time_t)
                  GETSCREEN ($xx+501,$yy+449,$xx+722,$yy+588) //(918,556, 1139,695)
                  COLORMODE(6, $xx+501,$yy+449,$xx+722,$yy+588)
                  IF_PICTURE_IN ($xx+501,$yy-449,$xx+722,$yy+588, "то.bmp", -1, 70)
                     $time1 = 0
                     LOGWRITE ("нашли тыкаем")
                     m_move($_return1+RND(-2,2), $_return2+RND(-2,2))
                     LCLICK($_xmouse,$_ymouse)
                     
                     
                     $time2 = $_time_t + 10
                     WHILE($time2 > $_time_t)
                        GETSCREEN ($xx-25,$yy+328,$xx+280,$yy+537)//(399,465, 679,644)
                        IF_PICTURE_IN ($xx-25,$yy+328,$xx+280,$yy+537, "напасть.bmp", -1, 70)
                           LOGWRITE ("нашли напасть")
                           $time2 = 0
                           m_move($_return1+RND(-2,2), $_return2+RND(-2,2))
                           LCLICK($_xmouse,$_ymouse)
                           WAITMS(rnd(1500,1700))
                        ELSE
                           LOGWRITE ("не нашли напасть")
                           WAITMS(50)
                        END_IF
                     END_CYC
                  ELSE
                 
                     LOGWRITE ("не нашли. выход")
                     WAITMS(50)
                  END_IF
               END_CYC
               
            ELSE
// вот тут как сделать чтоб если картинка на остров есть но это на нужный нам остров потому что картинка острова "то" нам не подходит и нужно вернуться проверки следующей картинки на остров на тей же страницы но пропуская эту что только что проверели и если не провереных картинок на остров уже нет то тогда след страница и удаления масива потому что там о5 нада искать эти картинки
               LOGWRITE ("это не то след стр")
               
            END_IF
         END_CYC
         
         IF(ARRSIZE($ARR_SCAN) = 0) // если массив пуст, значит не нашли на остров.bmp
            LOGWRITE ("не нашли на остров")
            GETSCREEN($xx+245,$yy+478,$xx+682,$yy+618) //(662,585, 1099,725)
            IF_PICTURE_IN ($xx+245,$yy+478,$xx+682,$yy+618, "след стр.bmp", -1, 70)
               LOGWRITE ("след сттр")
               m_move($_return1+RND(-2,2), $_return2+RND(-2,2))
               LCLICK($_xmouse,$_ymouse)
               
               m_move($_xmouse+100,$_ymouse)
               WAITMS(rnd(300,500))
               
               $time = $_time_t + 10 // продлеваем цикл WHILE($time > $_time_t)
            ELSE
               $time = 0 // выход из цикла WHILE($time > $_time_t)
            END_IF
         END_IF
         
      ELSE
         
         WAITMS(50)
      END_IF
   END_CYC
   
END_IF

SUB(элики,$dname1)
   GETSCREEN  ($xx+37,$yy+436, $xx+657,$yy+561)
   IF_PICTURE_IN ($xx+37,$yy+436, $xx+657,$yy+561, $dname1, -1, 80)
      LOGWRITE ("юзаем:" ,$dname1)
      m_move($_return1+RND(-10,10), $_return2+RND(-10,10))
      LCLICK($_xmouse,$_ymouse)
      WAITMS(rnd(400,600))
   END_IF
END_SUB

GETSCREEN($xx+282,$yy+41, $xx+378,$yy+73)
IF_PICTURE_IN ($xx+282,$yy+41, $xx+378,$yy+73, "ход.bmp", -1, 80)
   элики("молния.bmp")
   элики("плевок.bmp")
   WAITMS(rnd(200,250))
END_IF

GETSCREEN ($xx+635,$yy-34,$xx+716,$yy+48)//(1052,73, 1133,155)
IF_PICTURE_IN (1052,73, 1133,155, "крестик.bmp", -1, 90)
   LOGWRITE ("нашли крестик")
   m_move($_return1+RND(-2,2), $_return2+RND(-2,2))
   LCLICK($_xmouse,$_ymouse)
   WAITMS(rnd(2000,4000))
   LOGCLEAR
   m_move($_return1+100+RND(-2,2), $_return2+RND(-20,20))
END_IF

WAITMS(rnd(50,90))


dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
и все же нет не то  :'(  код то поправили но смысл теперь не тот он делает не так как нада (((((((((((((((((( :-[
разница в моем кривом варианте после того как он найдет на остров он провиряет то ли это если не то он возвращаеться и уже проверяет следующую картинку из масива если и это не то тогда возвращаеться назад проверять картинку из масива следующую если ее нет то выходит что картинки на остров больше нет значит след стр удаляем преждий масив и по новому если картинка есть проверяем то или не то если не то следующую  проверяем а в вашем примере выходит тоже самое что бы просто через условия сдела он ток первую найденую проверяет то ли это если не то то все аминь завис  :'(
Казнить нельзя помиловать.

Зануда

  • Активный участник
  • ***
  • Posts: 104
    • View Profile
и все же нет не то  :'(  код то поправили но смысл теперь не тот он делает не так как нада (((((((((((((((((( :-[
разница в моем кривом варианте после того как он найдет на остров он провиряет то ли это если не то он возвращаеться и уже проверяет следующую картинку из масива если и это не то тогда возвращаеться назад проверять картинку из масива следующую если ее нет то выходит что картинки на остров больше нет значит след стр удаляем преждий масив и по новому если картинка есть проверяем то или не то если не то следующую  проверяем а в вашем примере выходит тоже самое что бы просто через условия сдела он ток первую найденую проверяет то ли это если не то то все аминь завис  :'(
Казнить нельзя помиловать.
меня? :-[ или код? ???

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Да и тебя и твою училку русского языка! Надо знаки препинания писать и не делать ошибок, при том что тот же браузер может проверить ошибки.

Исправлено
Code: (clickermann) [Select]
$_xm1= 85
$_ym2= 49

SUB(mouse_move,$MOVE_END_X,$MOVE_END_Y)
   $MOVE_Start_X = $_xmouse
   $MOVE_Start_Y = $_ymouse
   $MOVE_X = $MOVE_Start_X
   $MOVE_Y = $MOVE_Start_Y
   
   $dist = DIST($MOVE_END_X,$MOVE_END_Y,$MOVE_Start_X,$MOVE_Start_Y)
   $MOVE_step = ($dist-1)/INT(SQRT($dist))
   $MOVE_X_step = ($MOVE_END_X-$MOVE_Start_X)/$MOVE_step
   $MOVE_Y_step = ($MOVE_END_Y-$MOVE_Start_Y)/$MOVE_step
   
   FOR($MOVE_i=0, $MOVE_i < INT($MOVE_step))
      $MOVE_X = $MOVE_X + $MOVE_X_step
      $MOVE_Y = $MOVE_Y + $MOVE_Y_step
      MOVE(INT($MOVE_X) + RND(-2,2), INT($MOVE_Y) + RND(-2,2))
      WAITMS($rnwait) // задержка при движении по точкам
   END_CYC
END_SUB

SUB(m_move,$M_X,$M_Y)
   $rnwait = RND(6,15) // случайная скорость
   $MOVE_MID_X = INT(($_xmouse+$M_X)/2)
   $MOVE_MID_Y = INT(($_ymouse+$M_Y)/2)
   $otx = INT(ABS($_xmouse - $M_X) * 0.12)
   $oty = INT(ABS($_ymouse - $M_Y) * 0.12)
   mouse_move($MOVE_MID_X+RND(-$otx,$otx), $MOVE_MID_Y+RND(-$oty,$oty))
   mouse_move($M_X,$M_Y)
   MOVE($M_X,$M_Y) //Передвинуть окончательно в заданную точку
END_SUB

IF($xx1212=0 )
   
   GETSCREEN
   IF_PICTURE_IN(0,0, $_xmax,$_ymax, "в.bmp")
      $xx = $_return1
      $yy = $_return2
      LOGSHOW (1, 49,102)
      LOGWRITE ("привязались")
      $xx1212=1
      $tim23 = $_time_t + 300
   ELSE
      LOGWRITE ("не привязались")
      HALT
      $xx1212=1
   END_IF
   
END_IF

IF($tim23 < $_time_t)
   m_move($_xm1+RND(-2,2), $_ym2+RND(-2,2))
   LCLICK($_xmouse,$_ymouse)
   $tim23 = $_time_t + 300
   $t87=1
END_IF



GETSCREEN  ($xx+547,$yy+519,$xx+598,$yy+610)  // (964,626,1015,717)
IF_PICTURE_IN ($xx+547,$yy+519,$xx+598,$yy+610, "череп.bmp", -1, 80)
   LOGWRITE ("нашли череп")
   IF($t87=1 )
      WAITMS(500)
      $t87=0
   END_IF
   $tim23 = 0
   $tim23 = $_time_t + 300
   m_move($_return1+RND(-2,2), $_return2+RND(-2,2))
   LCLICK($_xmouse,$_ymouse)
   $ti=1
   
   $time = $_time_t + 10
   WHILE($time > $_time_t)
      GETSCREEN ($xx+98,$yy+514,$xx+162,$yy+591) //(515,621,579 ,698)
      IF_PICTURE_IN ($xx+98,$yy+514,$xx+162,$yy+591, "мне.bmp", -1, 70)
         $time = 0
         LOGWRITE ("нашли мне")
         IF($ti = 1)
            WAITMS(800)
            $ti=0
         END_IF
         
         UNDEFINE($ARR_SCAN) // перед поиском обнуляем массив
         GETSCREEN ($xx+491,$yy-57,$xx+713,$yy+622)
         SCANPICTURE($ARR_SCAN, $xx+491,$yy-57,$xx+713,$yy+622, "на остров.bmp", -1, 70)
         LOGWRITE ("нашли на остров")
         $ARR_NUM = 0
         $check_ostrov = 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)
            WAITMS(100)
            GETSCREEN ($x-549,$y-27, $x-501,$y+20)
            IF_PICTURE_IN ($x-549,$y-27, $x-501,$y+20, "то на стр.bmp", -1, 70)
               LOGWRITE ("это то жмякаем на остров")
               m_move($x+RND(-5,5),$y+RND(-5,5))
               LCLICK($_xmouse,$_ymouse)
               m_move($x+500+RND(-5,5),$y+RND(-5,5))
               
               $time1 = $_time_t + 10
               WHILE($time1 > $_time_t)
                  GETSCREEN ($xx+501,$yy+449,$xx+722,$yy+588) //(918,556, 1139,695)
                  COLORMODE(6, $xx+501,$yy+449,$xx+722,$yy+588)
                  IF_PICTURE_IN ($xx+501,$yy-449,$xx+722,$yy+588, "то.bmp", -1, 70)
                     $time1 = 0
                     LOGWRITE ("нашли тыкаем")
                     m_move($_return1+RND(-2,2), $_return2+RND(-2,2))
                     LCLICK($_xmouse,$_ymouse)
                     
                     
                     $time2 = $_time_t + 10
                     WHILE($time2 > $_time_t)
                        GETSCREEN ($xx-25,$yy+328,$xx+280,$yy+537)//(399,465, 679,644)
                        IF_PICTURE_IN ($xx-25,$yy+328,$xx+280,$yy+537, "напасть.bmp", -1, 70)
                           LOGWRITE ("нашли напасть")
                           $time2 = 0
                           m_move($_return1+RND(-2,2), $_return2+RND(-2,2))
                           LCLICK($_xmouse,$_ymouse)
                           WAITMS(rnd(1500,1700))
                        ELSE
                           LOGWRITE ("не нашли напасть")
                           WAITMS(50)
                        END_IF
                     END_CYC
                  ELSE
                     
                     LOGWRITE ("не нашли. выход")
                     WAITMS(50)
                  END_IF
               END_CYC
              $check_ostrov = 1 // помечаем что хотя бы 1 картинка подходит под условия
            ELSE 
               LOGWRITE ("это не то след стр")                 
            END_IF
         END_CYC
         
         IF($check_ostrov = 0) // если флаг = 0, значит не нашли "то на стр.bmp"
            LOGWRITE ("не нашли на остров")
            GETSCREEN($xx+245,$yy+478,$xx+682,$yy+618) //(662,585, 1099,725)
            IF_PICTURE_IN ($xx+245,$yy+478,$xx+682,$yy+618, "след стр.bmp", -1, 70)
               LOGWRITE ("след сттр")
               m_move($_return1+RND(-2,2), $_return2+RND(-2,2))
               LCLICK($_xmouse,$_ymouse)
               
               m_move($_xmouse+100,$_ymouse)
               WAITMS(rnd(300,500))
               
               $time = $_time_t + 10 // продлеваем цикл WHILE($time > $_time_t)
            ELSE
               $time = 0 // выход из цикла WHILE($time > $_time_t)
            END_IF
         END_IF
         
      ELSE
         
         WAITMS(50)
      END_IF
   END_CYC
   
END_IF

SUB(элики,$dname1)
   GETSCREEN  ($xx+37,$yy+436, $xx+657,$yy+561)
   IF_PICTURE_IN ($xx+37,$yy+436, $xx+657,$yy+561, $dname1, -1, 80)
      LOGWRITE ("юзаем:" ,$dname1)
      m_move($_return1+RND(-10,10), $_return2+RND(-10,10))
      LCLICK($_xmouse,$_ymouse)
      WAITMS(rnd(400,600))
   END_IF
END_SUB

GETSCREEN($xx+282,$yy+41, $xx+378,$yy+73)
IF_PICTURE_IN ($xx+282,$yy+41, $xx+378,$yy+73, "ход.bmp", -1, 80)
   элики("молния.bmp")
   элики("плевок.bmp")
   WAITMS(rnd(200,250))
END_IF

GETSCREEN ($xx+635,$yy-34,$xx+716,$yy+48)//(1052,73, 1133,155)
IF_PICTURE_IN (1052,73, 1133,155, "крестик.bmp", -1, 90)
   LOGWRITE ("нашли крестик")
   m_move($_return1+RND(-2,2), $_return2+RND(-2,2))
   LCLICK($_xmouse,$_ymouse)
   WAITMS(rnd(2000,4000))
   LOGCLEAR
   m_move($_return1+100+RND(-2,2), $_return2+RND(-20,20))
END_IF

WAITMS(rnd(50,90))

Зануда

  • Активный участник
  • ***
  • Posts: 104
    • View Profile
извеняйте у меня не было училки по русском  :-X  спасибо надеюс теперь будет как нужно работать :) и код красивый будет  :D

Зануда

  • Активный участник
  • ***
  • Posts: 104
    • View Profile
все проверил работает как и нужно да еще и код теперь правильный без косяков спасибо огромное  ;) :) кстати кто шарит и у кого есть время  рожуйте как для самого чайника  ;D по поводу цыкла с  масивом хоть там и есть комментарии но я все равно что то не вехал  :-\
Code: (clickermann) [Select]
UNDEFINE($ARR_SCAN) // перед поиском обнуляем массив
         GETSCREEN ($xx+491,$yy-57,$xx+713,$yy+622)
         SCANPICTURE($ARR_SCAN, $xx+491,$yy-57,$xx+713,$yy+622, "на остров.bmp", -1, 70)
         LOGWRITE ("нашли на остров")
         $ARR_NUM = 0
         $check_ostrov = 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)
            WAITMS(100)
            GETSCREEN ($x-549,$y-27, $x-501,$y+20)
            IF_PICTURE_IN ($x-549,$y-27, $x-501,$y+20, "то на стр.bmp", -1, 70)
               LOGWRITE ("это то жмякаем на остров")
               m_move($x+RND(-5,5),$y+RND(-5,5))
               LCLICK($_xmouse,$_ymouse)
               m_move($x+500+RND(-5,5),$y+RND(-5,5))
 
               $time1 = $_time_t + 10
               WHILE($time1 > $_time_t)
                  GETSCREEN ($xx+501,$yy+449,$xx+722,$yy+588) //(918,556, 1139,695)
                  COLORMODE(6, $xx+501,$yy+449,$xx+722,$yy+588)
                  IF_PICTURE_IN ($xx+501,$yy-449,$xx+722,$yy+588, "то.bmp", -1, 70)
                     $time1 = 0
                     LOGWRITE ("нашли тыкаем")
                     m_move($_return1+RND(-2,2), $_return2+RND(-2,2))
                     LCLICK($_xmouse,$_ymouse)
 
 
                     $time2 = $_time_t + 10
                     WHILE($time2 > $_time_t)
                        GETSCREEN ($xx-25,$yy+328,$xx+280,$yy+537)//(399,465, 679,644)
                        IF_PICTURE_IN ($xx-25,$yy+328,$xx+280,$yy+537, "напасть.bmp", -1, 70)
                           LOGWRITE ("нашли напасть")
                           $time2 = 0
                           m_move($_return1+RND(-2,2), $_return2+RND(-2,2))
                           LCLICK($_xmouse,$_ymouse)
                           WAITMS(rnd(1500,1700))
                        ELSE
                           LOGWRITE ("не нашли напасть")
                           WAITMS(50)
                        END_IF
                     END_CYC
                  ELSE
 
                     LOGWRITE ("не нашли. выход")
                     WAITMS(50)
                  END_IF
               END_CYC
              $check_ostrov = 1 // помечаем что хотя бы 1 картинка подходит под условия
            ELSE 
               LOGWRITE ("это не то след стр")                 
            END_IF
         END_CYC
 
         IF($check_ostrov = 0) // если флаг = 0, значит не нашли "то на стр.bmp"
            LOGWRITE ("не нашли на остров")
            GETSCREEN($xx+245,$yy+478,$xx+682,$yy+618) //(662,585, 1099,725)
            IF_PICTURE_IN ($xx+245,$yy+478,$xx+682,$yy+618, "след стр.bmp", -1, 70)
               LOGWRITE ("след сттр")
               m_move($_return1+RND(-2,2), $_return2+RND(-2,2))
               LCLICK($_xmouse,$_ymouse)
 
               m_move($_xmouse+100,$_ymouse)
               WAITMS(rnd(300,500))
 
               $time = $_time_t + 10 // продлеваем цикл WHILE($time > $_time_t)
            ELSE
               $time = 0 // выход из цикла WHILE($time > $_time_t)
            END_IF
         END_IF