Author Topic: Помогите разобраться  (Read 3292 times)

0 Members and 1 Guest are viewing this topic.

sanek83

  • Освоившийся
  • **
  • Posts: 64
    • View Profile
Помогите разобраться
« on: May 17, 2016, 10:07:42 AM »
Code: [Select]
SUB(переход, $pict)
   
   
   WHEELDOWN(8)
   MOVE(1300,380)
   $check = 0
   WHILE($check = 0)
      GETSCREEN
      COLORMODE(7)
      IF_PICTURE_IN (702,92, 1752,690, $pict, -1, 95)
         $check = 1
         LCLICK($_return1+10, $_return2+10)
         MOVE(1300,380)
         WAIT(1)
         
      ELSE
         WAITMS(50)
      END_IF
   END_CYC
END_SUB

SUB(охота, $pict)
   $q = 0
   WHILE($q = 0)
      GETSCREEN
      COLORMODE(7)
      IF_PICTURE_IN (202,197, 1732,909, "oxota0000.bmp", -1, 85) // клик ,бонус
         LCLICK($_return1+13, $_return2+73)
         WAIT(1)
      ELSE
         $q=1
         
         
      END_IF
   END_CYC
   skip:
   
   $check = 0
   WHILE($check = 0)
      GETSCREEN
      COLORMODE(7)
      IF_PICTURE_IN (649,408, 1214,921, "oxotzakrit0000.bmp", -1, 95)
         
         $check = 1
         
         WAIT(6)
      ELSE
         
         GETSCREEN
         IF_PIXEL_IN(913,777, 916,783, 5194010) //манна
            LCLICK(1209, 764)
            WAITMS(100)
         ELSE
            LCLICK(1075,762)
            WAIT(1)
           
            GETSCREEN
            IF_PIXEL_IN(377,172, 378,175, 1973822) // жизнь
               LCLICK(438, 808)// элик жизни
               WAITMS(100)
            END_IF
         END_IF
      END_IF
   END_CYC
   
   $var = 0
   WHILE($var = 0)
     
      GETSCREEN
      COLORMODE(7)
      IF_PICTURE_IN (202,197, 1732,909, "nagrada0000.bmp", -1, 95) // навести на добычу
         
         MOVE($_return1+46, $_return2+88)
         WAIT(1)
      END_IF
     
      WAIT(1)
      GETSCREEN
      COLORMODE(7)
      IF_PICTURE_IN (630,416, 1305,954, "moneta0000.bmp", -1, 95) // клик ,манета
         LCLICK($_return1, $_return2)
         WAIT(1)
      END_IF
     
     
      GETSCREEN
      COLORMODE(7)
      IF_PICTURE_IN (630,416, 1305,954, "prodat0000.bmp", -1, 95) // клик ,продать
         LCLICK($_return1+5, $_return2+3)
         WAIT(1)
      ELSE
         IF_PICTURE_IN (630,416, 1305,954, "vse0000.bmp", -1, 95) // клик , на все
            LCLICK($_return1+5, $_return2+3)
            WAIT(1)
         ELSE
           
            $var = 1
         END_IF
      END_IF
   END_CYC
   
   MOVE(1024,318)
   WAIT(2)
   
   
   
   GETSCREEN
   COLORMODE(7)
   IF_PICTURE_IN (630,416, 1305,954, "tuwki0000.bmp", -1, 90) // клик ,тушки
      LCLICK($_return1+52, $_return2+37)
      WAIT(1)
      MOVE(1024,318)
      IF_PICTURE_IN (630,416, 1305,954, "tuwki0000.bmp", -1, 90) // клик ,тушки
         LCLICK($_return1+52, $_return2+37)
         WAIT(1)
         MOVE(1024,318)
         
      END_IF
   END_IF
   
   GETSCREEN
   COLORMODE(7)
   IF_PICTURE_IN (630,416, 1305,954, "oxotzakrit0000.bmp", -1, 95) // клик ,закрыть
      LCLICK($_return1+5, $_return2+5)
      WAIT(1)
     
   END_IF
   
   
   $check = 0
   WHILE($check = 0)
      GETSCREEN
      COLORMODE(7)
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "kapkan0000.bmp", -1, 95)
         $check = 1
         LCLICK($_return1+15, $_return2+68)
         WAITMS(100)
      ELSE
         WAITMS(50)
      END_IF
   END_CYC
   
   $che = 0
   WHILE($che = 0)
      GETSCREEN
      COLORMODE(7)
      IF_PICTURE_IN (424,350, 1330,722, "med0000.bmp", -1, 90) // клик ,мед
         LCLICK($_return1+35, $_return2+35)
         WAIT(1)
         $che = 1
      ELSE
         GETSCREEN
         COLORMODE(7)
         IF_PICTURE_IN (424,350, 1330,722, "okorok0000.bmp", -1, 90) // клик ,окорок
            LCLICK($_return1+35, $_return2+35)
            WAIT(1)
            $che = 1
         ELSE
           
            GETSCREEN
            COLORMODE(7)
            IF_PICTURE_IN (424,350, 1330,722, "kalmar0000.bmp", -1, 90) // клик ,кальмар
               LCLICK($_return1+35, $_return2+35)
               WAIT(1)
               $che = 1
            ELSE
               WAITMS(100)
               
               
            END_IF
         END_IF
      END_IF
   END_CYC
   
   GETSCREEN
   COLORMODE(7)
   IF_PICTURE_IN (562,409, 1330,722, "kupit0000.bmp", -1, 90) // клик ,купить
      LCLICK($_return1+5, $_return2+5)
      WAIT(1)
   END_IF
   
   GETSCREEN
   COLORMODE(7)
   IF_PICTURE_IN (424,350, 1330,722, "med10000.bmp", -1, 90) // клик ,мед
      LCLICK($_return1+35, $_return2+35)
      WAIT(1)
   ELSE
      GETSCREEN
      COLORMODE(7)
      IF_PICTURE_IN (424,350, 1330,722, "okorok10000.bmp", -1, 90) // клик ,окорок
         LCLICK($_return1+35, $_return2+35)
         WAIT(1)
         
      ELSE
         
         GETSCREEN
         COLORMODE(7)
         IF_PICTURE_IN (424,350, 1330,722, "kalmar10000.bmp", -1, 90) // клик ,кальмар
            LCLICK($_return1+35, $_return2+35)
            WAIT(1)
         END_IF
      END_IF
   END_IF
   $q = 0
   WHILE($q = 0)
      GETSCREEN
      COLORMODE(7)
      IF_PICTURE_IN (202,197, 1732,909, "oxota0000.bmp", -1, 85) // клик ,охоту
         WAIT(1)
         LCLICK($_return1+13, $_return2+73)
         GOTO(skip)
      ELSE
         $q=1
      END_IF
   END_CYC
   
   
   $check = 0
   WHILE($check = 0)
      GETSCREEN
      COLORMODE(7)
      IF_PICTURE_IN (1529,90, 1790,505, $pict, -1, 90)
         $check = 1
         LCLICK($_return1+13, $_return2+3)
         MOVE(1300,380)
         WAIT(1)
         
      ELSE
         WAITMS(50)
      END_IF
   END_CYC
END_SUB



SUB(проверка)
   
   
   
   GETSCREEN
   COLORMODE(7)
   IF_PICTURE_IN (684,593, 1265,727, "bonus0000.bmp", -1, 90) // клик ,бонус
      LCLICK($_return1, $_return2)
      WAITMS(100))
   END_IF
   
   WAIT(3)
   GETSCREEN
   COLORMODE(7)
   IF_PICTURE_IN (188,159, 1758,484, "krest0000.bmp", -1, 90) // клик на крестик
      LCLICK($_return1, $_return2)
      WAITMS(100)
   END_IF
   
   GETSCREEN
   COLORMODE(7)
   IF_PICTURE_IN (641,381, 1242,796, "zakritkr0000.bmp", -1, 90)  // на закрыт крастный
      $check = 1
      LCLICK($_return1+10, $_return2+10)
      WAITMS(100)
   END_IF
END_SUB


SUB(выбор, $pict)
   $check = 0
   WHILE($check = 0)
      GETSCREEN
      COLORMODE(7)
      IF_PICTURE_IN (899,215, 1410,570, $pict, -1, 95)
         $check = 1
         LCLICK($_return1+30, $_return2+30)
         WAITMS(100)
      ELSE
         WAITMS(50)
      END_IF
     
   END_CYC
END_SUB

LOGWRITE ("начало")

выбор("oxotnik0000.bmp")
WAIT(1)
выбор("vOiti0000.bmp")
WAIT(20)
проверка()


охота("waxta10000.bmp")//выполняет
переход("lug0000.bmp")// встает и пишет ошибку как на скрине
охота("zapad0000.bmp")
переход("vostok0000.bmp")
переход("landor0000.bmp")
переход("gnezda0000.bmp")
охота("xram0000.bmp")
охота("maiak0000.bmp")
переход("fort")
охота("okrfort0000.bmp")
переход("paseka0000.bmp")
переход("mis0000.bmp")
охота("paseka0000.bmp")
переход("landor0000.bmp")
переход("vostok0000.bmp")
переход("zapad0000.bmp")
переход("lug0000.bmp")
переход("waxta10000.bmp")
переход("trakt0000.bmp")

переход("vixod0000.bmp")
переход("da0000.bmp")
LOGWRITE ("конец")

HALT

проблема в sub переход,отдельно он работает на все заданные локи ходит,а вместе с sub(охотник) не переходит почему то=(
Такова файла то не надо даже искать=( в ошибке, который(переход("lug0000.bmp")) а пишет не найден файл 0=(

Code: [Select]
SUB(переход, $pict)
   
   
   
   
   $check = 0
   WHILE($check = 0)
      GETSCREEN
      COLORMODE(7)
      IF_PICTURE_IN (702,92, 1752,690, $pict, -1, 90)
         $check = 1
         LCLICK($_return1+10, $_return2+10)
         MOVE(1300,380)
         WAIT(1)
         
      ELSE
      LOGWRITE ("ищу")
         WAITMS(50)
      END_IF
   END_CYC
END_SUB

переход("waxta10000.bmp")
LOGWRITE ("найдено")
переход("lug0000.bmp")
LOGWRITE ("найдено")
переход("zapad0000.bmp")
LOGWRITE ("найдено")
переход("vostok0000.bmp")
LOGWRITE ("найдено")
переход("landor0000.bmp")
LOGWRITE ("найдено")
переход("gnezda0000.bmp")
LOGWRITE ("найдено")
переход("xram0000.bmp")
LOGWRITE ("найдено")
переход("maiak0000.bmp")
LOGWRITE ("найдено")
переход("fort0000.bmp")
LOGWRITE ("найдено")
переход("okrfort0000.bmp")
LOGWRITE ("найдено")
переход("paseka0000.bmp")
LOGWRITE ("найдено")
переход("mis0000.bmp")
LOGWRITE ("найдено")
переход("paseka0000.bmp")
LOGWRITE ("найдено")
переход("landor0000.bmp")
LOGWRITE ("найдено")
переход("vostok0000.bmp")
LOGWRITE ("найдено")
переход("zapad0000.bmp")
LOGWRITE ("найдено")
переход("lug0000.bmp")
LOGWRITE ("найдено")
переход("waxta10000.bmp")
LOGWRITE ("найдено")
переход("trakt0000.bmp")
LOGWRITE ("вернулся обратно")
вот тут все ок,туда и обратно сбегал  вот лог

« Last Edit: May 17, 2016, 10:58:46 AM by sanek83 »

sanek83

  • Освоившийся
  • **
  • Posts: 64
    • View Profile
Re: Помогите разобраться
« Reply #1 on: May 17, 2016, 10:57:44 AM »
Лог

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Помогите разобраться
« Reply #2 on: May 17, 2016, 11:15:40 AM »
205 строка
Code: (clickermann) [Select]
   $q = 0
   WHILE($q = 0)
      GETSCREEN
      COLORMODE(7)
      IF_PICTURE_IN (202,197, 1732,909, "oxota0000.bmp", -1, 85) // клик ,охоту
         WAIT(1)
         LCLICK($_return1+13, $_return2+73)
         GOTO(skip)
      ELSE
         $q=1
      END_IF
   END_CYC
из цикла выпрыгивать на метку гото запрещено, из условия вроде тоже. и не вижу я тут смысла в цикле - если картинку найдет, то перепрыгиваем к метке, если не найдет, но прекращяем цикл, в чем смысл цикла?
пробуй обойтись без гото, если я правильно понял, то так должно быть правильно:
Code: (clickermann) [Select]

SUB(переход, $pict)
   
   
   WHEELDOWN(8)
   MOVE(1300,380)
   $check = 0
   WHILE($check = 0)
      GETSCREEN
      COLORMODE(7)
      IF_PICTURE_IN (702,92, 1752,690, $pict, -1, 95)
         $check = 1
         LCLICK($_return1+10, $_return2+10)
         MOVE(1300,380)
         WAIT(1)
         
      ELSE
         WAITMS(50)
      END_IF
   END_CYC
END_SUB

SUB(охота, $pict)
   $q = 0
   WHILE($q = 0)
      GETSCREEN
      COLORMODE(7)
      IF_PICTURE_IN (202,197, 1732,909, "oxota0000.bmp", -1, 85) // клик ,бонус
         LCLICK($_return1+13, $_return2+73)
         WAIT(1)
      ELSE
         $q=1
         
         
      END_IF
   END_CYC
   $q = 0
   WHILE($q = 0)
     
      $check = 0
      WHILE($check = 0)
         GETSCREEN
         COLORMODE(7)
         IF_PICTURE_IN (649,408, 1214,921, "oxotzakrit0000.bmp", -1, 95)
           
            $check = 1
           
            WAIT(6)
         ELSE
           
            GETSCREEN
            IF_PIXEL_IN(913,777, 916,783, 5194010) //манна
               LCLICK(1209, 764)
               WAITMS(100)
            ELSE
               LCLICK(1075,762)
               WAIT(1)
               
               GETSCREEN
               IF_PIXEL_IN(377,172, 378,175, 1973822) // жизнь
                  LCLICK(438, 808)// элик жизни
                  WAITMS(100)
               END_IF
            END_IF
         END_IF
      END_CYC
     
      $var = 0
      WHILE($var = 0)
         
         GETSCREEN
         COLORMODE(7)
         IF_PICTURE_IN (202,197, 1732,909, "nagrada0000.bmp", -1, 95) // навести на добычу
           
            MOVE($_return1+46, $_return2+88)
            WAIT(1)
         END_IF
         
         WAIT(1)
         GETSCREEN
         COLORMODE(7)
         IF_PICTURE_IN (630,416, 1305,954, "moneta0000.bmp", -1, 95) // клик ,манета
            LCLICK($_return1, $_return2)
            WAIT(1)
         END_IF
         
         
         GETSCREEN
         COLORMODE(7)
         IF_PICTURE_IN (630,416, 1305,954, "prodat0000.bmp", -1, 95) // клик ,продать
            LCLICK($_return1+5, $_return2+3)
            WAIT(1)
         ELSE
            IF_PICTURE_IN (630,416, 1305,954, "vse0000.bmp", -1, 95) // клик , на все
               LCLICK($_return1+5, $_return2+3)
               WAIT(1)
            ELSE
               
               $var = 1
            END_IF
         END_IF
      END_CYC
     
      MOVE(1024,318)
      WAIT(2)
     
     
     
      GETSCREEN
      COLORMODE(7)
      IF_PICTURE_IN (630,416, 1305,954, "tuwki0000.bmp", -1, 90) // клик ,тушки
         LCLICK($_return1+52, $_return2+37)
         WAIT(1)
         MOVE(1024,318)
         IF_PICTURE_IN (630,416, 1305,954, "tuwki0000.bmp", -1, 90) // клик ,тушки
            LCLICK($_return1+52, $_return2+37)
            WAIT(1)
            MOVE(1024,318)
           
         END_IF
      END_IF
     
      GETSCREEN
      COLORMODE(7)
      IF_PICTURE_IN (630,416, 1305,954, "oxotzakrit0000.bmp", -1, 95) // клик ,закрыть
         LCLICK($_return1+5, $_return2+5)
         WAIT(1)
         
      END_IF
     
     
      $check = 0
      WHILE($check = 0)
         GETSCREEN
         COLORMODE(7)
         IF_PICTURE_IN (0,0, $_xmax,$_ymax, "kapkan0000.bmp", -1, 95)
            $check = 1
            LCLICK($_return1+15, $_return2+68)
            WAITMS(100)
         ELSE
            WAITMS(50)
         END_IF
      END_CYC
     
      $che = 0
      WHILE($che = 0)
         GETSCREEN
         COLORMODE(7)
         IF_PICTURE_IN (424,350, 1330,722, "med0000.bmp", -1, 90) // клик ,мед
            LCLICK($_return1+35, $_return2+35)
            WAIT(1)
            $che = 1
         ELSE
            GETSCREEN
            COLORMODE(7)
            IF_PICTURE_IN (424,350, 1330,722, "okorok0000.bmp", -1, 90) // клик ,окорок
               LCLICK($_return1+35, $_return2+35)
               WAIT(1)
               $che = 1
            ELSE
               
               GETSCREEN
               COLORMODE(7)
               IF_PICTURE_IN (424,350, 1330,722, "kalmar0000.bmp", -1, 90) // клик ,кальмар
                  LCLICK($_return1+35, $_return2+35)
                  WAIT(1)
                  $che = 1
               ELSE
                  WAITMS(100)
                 
                 
               END_IF
            END_IF
         END_IF
      END_CYC
     
      GETSCREEN
      COLORMODE(7)
      IF_PICTURE_IN (562,409, 1330,722, "kupit0000.bmp", -1, 90) // клик ,купить
         LCLICK($_return1+5, $_return2+5)
         WAIT(1)
      END_IF
     
      GETSCREEN
      COLORMODE(7)
      IF_PICTURE_IN (424,350, 1330,722, "med10000.bmp", -1, 90) // клик ,мед
         LCLICK($_return1+35, $_return2+35)
         WAIT(1)
      ELSE
         GETSCREEN
         COLORMODE(7)
         IF_PICTURE_IN (424,350, 1330,722, "okorok10000.bmp", -1, 90) // клик ,окорок
            LCLICK($_return1+35, $_return2+35)
            WAIT(1)
           
         ELSE
           
            GETSCREEN
            COLORMODE(7)
            IF_PICTURE_IN (424,350, 1330,722, "kalmar10000.bmp", -1, 90) // клик ,кальмар
               LCLICK($_return1+35, $_return2+35)
               WAIT(1)
            END_IF
         END_IF
      END_IF
     
      GETSCREEN
      COLORMODE(7)
      IF_PICTURE_IN (202,197, 1732,909, "oxota0000.bmp", -1, 85) // клик ,охоту
         WAIT(1)
         LCLICK($_return1+13, $_return2+73)
         $q=0
      else
         $q=1
      END_IF
   END_CYC
   
   
   $check = 0
   WHILE($check = 0)
      GETSCREEN
      COLORMODE(7)
      IF_PICTURE_IN (1529,90, 1790,505, $pict, -1, 90)
         $check = 1
         LCLICK($_return1+13, $_return2+3)
         MOVE(1300,380)
         WAIT(1)
         
      ELSE
         WAITMS(50)
      END_IF
   END_CYC
END_SUB



SUB(проверка)
   
   
   
   GETSCREEN
   COLORMODE(7)
   IF_PICTURE_IN (684,593, 1265,727, "bonus0000.bmp", -1, 90) // клик ,бонус
      LCLICK($_return1, $_return2)
      WAITMS(100))
   END_IF
   
   WAIT(3)
   GETSCREEN
   COLORMODE(7)
   IF_PICTURE_IN (188,159, 1758,484, "krest0000.bmp", -1, 90) // клик на крестик
      LCLICK($_return1, $_return2)
      WAITMS(100)
   END_IF
   
   GETSCREEN
   COLORMODE(7)
   IF_PICTURE_IN (641,381, 1242,796, "zakritkr0000.bmp", -1, 90)  // на закрыт крастный
      $check = 1
      LCLICK($_return1+10, $_return2+10)
      WAITMS(100)
   END_IF
END_SUB


SUB(выбор, $pict)
   $check = 0
   WHILE($check = 0)
      GETSCREEN
      COLORMODE(7)
      IF_PICTURE_IN (899,215, 1410,570, $pict, -1, 95)
         $check = 1
         LCLICK($_return1+30, $_return2+30)
         WAITMS(100)
      ELSE
         WAITMS(50)
      END_IF
     
   END_CYC
END_SUB

LOGWRITE ("начало")

выбор("oxotnik0000.bmp")
WAIT(1)
выбор("vOiti0000.bmp")
WAIT(20)
проверка()


охота("waxta10000.bmp")//выполняет
переход("lug0000.bmp")// встает и пишет ошибку как на скрине
охота("zapad0000.bmp")
переход("vostok0000.bmp")
переход("landor0000.bmp")
переход("gnezda0000.bmp")
охота("xram0000.bmp")
охота("maiak0000.bmp")
переход("fort")
охота("okrfort0000.bmp")
переход("paseka0000.bmp")
переход("mis0000.bmp")
охота("paseka0000.bmp")
переход("landor0000.bmp")
переход("vostok0000.bmp")
переход("zapad0000.bmp")
переход("lug0000.bmp")
переход("waxta10000.bmp")
переход("trakt0000.bmp")

переход("vixod0000.bmp")
переход("da0000.bmp")
LOGWRITE ("конец")

HALT

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Помогите разобраться
« Reply #3 on: May 17, 2016, 12:02:02 PM »
вот сокращенный вариант твоей ошибки:
Code: (clickermann) [Select]
SUB(переход, $pict)
   print($pict," в переходе")
END_SUB

SUB(охота, $pict)
   $q = 0   
   skip:         
   WHILE($q < 3)
         WAIT(1)
         inc($q)
         print($q)
         GOTO(skip)
   END_CYC     
   print($pict," в охоте")
END_SUB





print("начало")

охота("охота")//выполняет
переход("переход")// встает и пишет ошибку как на скрине


print("конец")

HALT

лог:
Code: [Select]
11:59:08 начало
11:59:09 1
11:59:10 2
11:59:11 3
11:59:11 охота в охоте
11:59:11 0 в охоте
11:59:11 0 в охоте
11:59:11 0 в охоте
11:59:11 переход в переходе
11:59:11 конец
как видиш, после отработки цикла с меткой, и завершения подпрограммы, параметр подпрограммы охота обнуляется, и изза неразберихи с завершением цикла эта подпрограмма завершается еще 3 раза, но параметр уже обнулен.

sanek83

  • Освоившийся
  • **
  • Posts: 64
    • View Profile
Re: Помогите разобраться
« Reply #4 on: May 17, 2016, 01:52:30 PM »
Спасибо за помощь заработало все как по маслу!

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите разобраться
« Reply #5 on: May 17, 2016, 01:57:42 PM »
Хороший пример демонстрирующий глюк. Из условий выпрыгивать можно, но с циклами и подпрограммами все сложнее. Раньше в справке даже было упоминание что не желательно выпрыгивание и так оно и есть. 

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Помогите разобраться
« Reply #6 on: May 17, 2016, 02:35:32 PM »
Не то что не желательно, нельзя выпрыгивать. Лучше так и говорить.
То что в некоторых случаях ничего плохого не будет, пусть для себя решают опытные писатели.
На то и опыт что иногда можно применять то, что обычно применять нельзя. Делить на ноль там... и т.п.