Author Topic: подсобите пожалуйста!!!  (Read 4006 times)

0 Members and 1 Guest are viewing this topic.

LLlteйn

  • Освоившийся
  • **
  • Posts: 58
    • View Profile
подсобите пожалуйста!!!
« on: June 10, 2017, 12:47:46 PM »
не могу понять, когда я убираю команду SUB, END_SUB и поиск и бой(), всё работает нормально, не могу понять в чём проблема помогите пожалуйста советом, заранее большое спасибо.

Code: (clickermann) [Select]
SUB(поиск и бой)

      GO1:
      $check = 0
      WHILE($check = 0)
         GETSCREEN
         IF_PIXEL_IN(693,574, 693,574, 11201274)  //  нет моба
            $check = 0
            WAITMS(100)
         ELSE
            WAITMS(100)
            LCLICK(693,574)  // жмёт на моба
            $check = 1
            WAITMS(100)
         END_IF
      END_CYC
     
     
     
      $check = 0
      WHILE($check = 0)
         GETSCREEN
         IF_PICTURE_IN (749,255, 893,469, "screens\элементаль воды 1.bmp", 75)
            $check = 1
            WAITMS(100)
            SUB(прогнать)
               $check = 0
               WHILE($check = 0)
                  GETSCREEN
                  IF_PICTURE_IN (928,345, 1201,517, "screens\прогнать.bmp", 75)
                     $check = 1
                     LCLICK($_return1, $_return2)
                     WAITMS(100)
                     $check = 0
                     WHILE($check = 0)
                        GETSCREEN
                        IF_PIXEL_IN(693,574, 693,574, 11201274)  //  нет моба
                           $check = 1
                           WAITMS(100)
                        END_IF
                     END_CYC
                     GOTO(GO1)
                  END_IF
               END_CYC
            END_SUB
            прогнать()
         ELSE
            IF_PICTURE_IN (749,255, 893,469, "screens\элементаль воздуха 1.bmp", 75)
               $check = 1
               WAITMS(100)
               прогнать()
            ELSE
               IF_PICTURE_IN (749,255, 893,469, "screens\снежная ведьма 1.bmp", 75)
                  $check = 1
                  SUB(нпапсть)
                     $check = 0
                     WHILE($check = 0)
                        GETSCREEN
                        IF_PICTURE_IN (927,345, 1201,517, "screens\нпапсть.bmp", 75)
                           $check = 1
                           LCLICK($_return1, $_return2)
                           WAITMS(100)
                        END_IF
                     END_CYC
                  END_SUB
                  нпапсть()
                  WAITMS(100)
               ELSE
                  IF_PICTURE_IN (749,255, 893,469, "screens\громовержец 1.bmp", 75)
                     $check = 1
                     нпапсть()
                     WAITMS(100)
                  END_IF
               END_IF
            END_IF
         END_IF
      END_CYC
     
     
     
      $check = 0
      WHILE($check = 0)
         GETSCREEN
         IF_PICTURE_IN (901,176, 949,205, "screens\ваш ход.bmp", 75)
            $check = 1
            LCLICK($_return1, $_return2)
            WAITMS(100)
         END_IF
      END_CYC
     
     
      ///////////////////////////////////////////
     
     
      //система боя
     
     
      ///////////////////////////////////////////
     
     
     
      $check = 0
      WHILE($check = 0)
         GETSCREEN
         IF_PICTURE_IN (770,168, 883,210, "screens\победитель.bmp", 75)
            $check = 1
            LCLICK($_return1, $_return2)
            WAITMS(100)
         END_IF
      END_CYC
     
     
     
      $check = 0
      WHILE($check = 0)
         GETSCREEN
         IF_PIXEL_IN(641,297, 641,297, 0)  //  ожидание выхода на остров
            $check = 1
            WAITMS(500)
         ELSE
            WAITMS(100)
         END_IF
      END_CYC
     
     
     
   END_SUB
   поиск и бой()
« Last Edit: June 10, 2017, 05:52:20 PM by Oraven »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: подсобите пожалуйста!!!
« Reply #1 on: June 10, 2017, 04:00:09 PM »
В имени не должно быть пробелов. После удаления интерпритатором 'мусора' остался вызов
бой()

Пиши поиск_и_бой() или ПоискИБой()


LLlteйn

  • Освоившийся
  • **
  • Posts: 58
    • View Profile
Re: подсобите пожалуйста!!!
« Reply #2 on: June 10, 2017, 05:48:14 PM »
не прокатило, кликер просто пропускает первый блок (поиск по пикселю) и пропускает поиск картинки (элементаль воды 1) и приступает к поиску картинки "прогнать".
Но если убрать условие подпрограммы он работает нормально, и в отдельном скрипте второй блок действий (поиск картинок элементалей, ведьм, громовержца с прогоном и нападением) работает нормально.
к тому же у меня есть и другие подпрограммы названия которых состоят из 2ух и более слов, а они работают нормально.
« Last Edit: June 10, 2017, 05:50:06 PM by LLlteйn »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: подсобите пожалуйста!!!
« Reply #3 on: June 10, 2017, 06:07:53 PM »
С пробелами конечно не стоит писать но у тебя ошибки гораздо серьезнее.
Описания подпрограмм вложены черти куда, они не могут быть никуда вложены! Описания должны быть в начале скрипта перед основным кодом.

Далее ты через гото выпрыгиваешь из цикла подпрограммы в другую подпрограмму  :o так нельзя.

Нельзя выпрыгивать из циклов и подпрограмм, иначе кликер перестает понимать где находится выполнение что приводит к глюкам.

Вот исправленный код

Code: (clickermann) [Select]
SUB(прогнать)
   $check = 0
   WHILE($check = 0)
      GETSCREEN
      IF_PICTURE_IN (928,345, 1201,517, "screens\прогнать.bmp", 75)
         $check = 1
         LCLICK($_return1, $_return2)
         WAITMS(100)
         $check2 = 0
         WHILE($check = 0)
            GETSCREEN
            IF_PIXEL_IN(693,574, 693,574, 11201274)  //  нет моба
               $check2 = 1
               WAITMS(100)
            ELSE
               WAITMS(50)
            END_IF
         END_CYC
         $start = 1
      ELSE
         WAITMS(50)
      END_IF
   END_CYC
END_SUB

SUB(Напасть)
   $check = 0
   WHILE($check = 0)
      GETSCREEN
      IF_PICTURE_IN (927,345, 1201,517, "screens\Напасть.bmp", 75)
         $check = 1
         LCLICK($_return1, $_return2)
         WAITMS(100)
      ELSE
         WAITMS(50)
      END_IF
   END_CYC
END_SUB

SUB(поиск_и_бой)
   GO1:
   $check = 0
   WHILE($check = 0)
      GETSCREEN
      IF_PIXEL_IN(693,574, 693,574, 11201274)  //  нет моба
         WAITMS(100)
      ELSE
         WAITMS(100)
         LCLICK(693,574)  // жмёт на моба
         $check = 1
         WAITMS(100)
      END_IF
   END_CYC
   
   $check = 0
   WHILE($check = 0)
      GETSCREEN
      IF_PICTURE_IN (749,255, 893,469, "screens\элементаль воды 1.bmp", 75)
         $check = 1
         WAITMS(100)
         прогнать()
      ELSE
         IF_PICTURE_IN (749,255, 893,469, "screens\элементаль воздуха 1.bmp", 75)
            $check = 1
            WAITMS(100)
            прогнать()
         ELSE
            IF_PICTURE_IN (749,255, 893,469, "screens\снежная ведьма 1.bmp", 75)
               $check = 1
               Напасть()
               WAITMS(100)
            ELSE
               IF_PICTURE_IN (749,255, 893,469, "screens\громовержец 1.bmp", 75)
                  $check = 1
                  Напасть()
                  WAITMS(100)
               ELSE
                  WAITMS(50)
               END_IF
            END_IF
         END_IF
      END_IF
   END_CYC
   IF($start = 1)
      $start = 0
      GOTO(GO1)
   END_IF
   
   $check = 0
   WHILE($check = 0)
      GETSCREEN
      IF_PICTURE_IN (901,176, 949,205, "screens\ваш ход.bmp", 75)
         $check = 1
         LCLICK($_return1, $_return2)
         WAITMS(100)
      ELSE
         WAITMS(50)
      END_IF
   END_CYC
   
   ///////////////////////////////////////////
   
   
   //система боя
   
   
   ///////////////////////////////////////////
   
   
   $check = 0
   WHILE($check = 0)
      GETSCREEN
      IF_PICTURE_IN (770,168, 883,210, "screens\победитель.bmp", 75)
         $check = 1
         LCLICK($_return1, $_return2)
         WAITMS(100)
      ELSE
         WAITMS(50)
      END_IF
   END_CYC
   
   $check = 0
   WHILE($check = 0)
      GETSCREEN
      IF_PIXEL_IN(641,297, 641,297, 0)  //  ожидание выхода на остров
         $check = 1
         WAITMS(500)
      ELSE
         WAITMS(50)
      END_IF
   END_CYC
   
END_SUB

поиск_и_бой()

LLlteйn

  • Освоившийся
  • **
  • Posts: 58
    • View Profile
Re: подсобите пожалуйста!!!
« Reply #4 on: June 10, 2017, 09:29:48 PM »
большое спасибо!!!
почти всё работает, только поясните пожалуйста за что отвечает этот блок:
IF($start = 1)
      $start = 0
      GOTO(GO1)
   END_IF
и если можно по проще, для чайников, благодарю.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: подсобите пожалуйста!!!
« Reply #5 on: June 10, 2017, 09:40:51 PM »
Это твой переход в начало подпрограммы. Только написанный корректно.
19 строка, переменной $start присваивается значение 1
после чего мы выходим из подпрограммы (прогнать) а потом и из цикла на 56 строке WHILE($check = 0)
после цикла у нас условие если $start равна 1 то
присваиваем $start = 0
и прыгаем через GOTO(GO1) на 41 строку к GO1:

LLlteйn

  • Освоившийся
  • **
  • Posts: 58
    • View Profile
Re: подсобите пожалуйста!!!
« Reply #6 on: June 10, 2017, 10:14:45 PM »
спасибо большое

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: подсобите пожалуйста!!!
« Reply #7 on: June 13, 2017, 08:55:30 AM »
Я код и не смотрел  :)
С телефона неформатированную длинную кашу не было смысла пытаться понять. Что с краю увидел на то первое внимание и обратил.


LLlteйn

  • Освоившийся
  • **
  • Posts: 58
    • View Profile
Re: подсобите пожалуйста!!!
« Reply #8 on: June 19, 2017, 08:20:33 PM »
помогите пожалуйста, мне нужен скрипт который открывает диалоговое окно с вопросом: "продолжить?" и кнопками: "да" или "нет", кода я нажимаю нет скрипт останавливается, а когда нажимаю да он должен открыть диалоговое окно с функцией ввода (в окно вводится время в секундах (оно может быть всегда разное, но стандартное 600 сек.) желательно конечно чтобы в окно вводилось время в минутах) и он должен ожидать указанное время, следом (через указанное время) снова открыть окно с вопросом "продолжить?" и так по кругу. С первой частью я разобрался, а вот дальше не знаю:

1-я часть:

$mr = dialogbox("продолжить или нет?", 4, 4)
if ($mr = 6)
print("Yes")
$myvar = 5
WAIT(600)
else
print("No")
halt
end_if

2-я часть:

$str = inputbox("сколько времени добавить?", "600", 999)

print($str)

Заранее благодарю
« Last Edit: June 19, 2017, 08:31:55 PM by LLlteйn »

open_78

  • Активный участник
  • ***
  • Posts: 285
  • v4.13.014 x64
    • View Profile
Re: подсобите пожалуйста!!!
« Reply #9 on: June 19, 2017, 08:34:57 PM »
Code: (clickermann) [Select]
$mr = dialogbox("продолжить?", 4, 2)
if ($mr = 6)
   print("Yes")
   $str = inputbox("сколько МИНУТ добавить?", "10", 999)
   print($str)
   $myvar = 5
   WAIT($str*60)
else
   print("No")
   halt
end_if
WAITMS(50)

LLlteйn

  • Освоившийся
  • **
  • Posts: 58
    • View Profile
Re: подсобите пожалуйста!!!
« Reply #10 on: June 19, 2017, 08:50:03 PM »
пишет: ошибка при интерпритации строки WAIT($str*60)

open_78

  • Активный участник
  • ***
  • Posts: 285
  • v4.13.014 x64
    • View Profile
Re: подсобите пожалуйста!!!
« Reply #11 on: June 19, 2017, 08:57:33 PM »
А так?
Code: (clickermann) [Select]
$mr = dialogbox("продолжить?", 4, 2)
if ($mr = 6)
   print("Yes")
   $str = int(inputbox("сколько МИНУТ добавить?", "10", 999))
   print($str)
   $myvar = 5
   WAIT($str*60)
else
   print("No")
   halt
end_if
WAITMS(50)

open_78

  • Активный участник
  • ***
  • Posts: 285
  • v4.13.014 x64
    • View Profile
Re: подсобите пожалуйста!!!
« Reply #12 on: June 19, 2017, 08:59:22 PM »
разве WAIT($str*60) это не 60 сек.?
Ты просил в минутах. Это умножение введенных минут на секунды.

LLlteйn

  • Освоившийся
  • **
  • Posts: 58
    • View Profile
Re: подсобите пожалуйста!!!
« Reply #13 on: June 19, 2017, 09:00:19 PM »
благодарю, допёрло

LLlteйn

  • Освоившийся
  • **
  • Posts: 58
    • View Profile
Re: подсобите пожалуйста!!!
« Reply #14 on: June 19, 2017, 09:00:37 PM »
всё работает