Author Topic: Внезапный выход из подпрограммы  (Read 2628 times)

0 Members and 2 Guests are viewing this topic.

MIG29

  • Освоившийся
  • **
  • Posts: 45
    • View Profile
Внезапный выход из подпрограммы
« on: December 19, 2015, 03:50:25 AM »
Привет, я не совсем новичок в КМ, но вот такая беда, кликер (4.11) выходит из подпрограммы странным образом,
как минимум не выполняет команды что я отметил красным прямоугольником на скрине.
Такое ощущение что подпрограмма просто не доконца отрабатывает!

Code: (clickermann) [Select]
2:45:42 Attack! //Тут мы зашли в подпрограмму норм!
2:45:42 Char HP   : 166/174
2:45:42 Char Mana : 164/180
2:45:42 Mob  HP   : 10/40
2:45:42 2 lvl easy mob. 9/20
2:45:43 Char HP   : 166/174
2:45:43 Char Mana : 164/180
2:45:43 Mob  HP   : 10/40
2:45:43 STRONG to strong.
2:45:43 Можно бить слабым
2:45:44 Char HP   : 166/174
2:45:44 Char Mana : 164/180
2:45:44 Mob  HP   : 10/40
2:45:44 STRONG to strong.
2:45:44 Можно бить слабым
2:45:46 Char HP   : 159/174
2:45:46 Char Mana : 164/180
2:45:46 Mob  HP   : 10/40
2:45:46 STRONG to strong.
2:45:46 Можно бить слабым
2:45:46 Бью слабым ударом
2:45:49 Attack!                    //Тут мы снова зашли в подпрограмму, при этом не было  сообщения о выходе прошлого раза!
2:45:50 Char HP   : 159/174
2:45:50 Char Mana : 144/180
2:45:50 Mob  HP   : 0/40
2:45:50 2 lvl easy mob. 9/20
2:45:56 Char HP   : 159/174
2:45:56 Char Mana : 144/180
2:45:56 Mob  HP   : 0/40
2:45:56 STRONG to strong.
2:45:56 Могу бить кулаком!
2:45:56 -Нет боя
2:45:57 End of Attack    //Нормально вышли из подпрограммы!
2:45:57 999

Чуствую где то накосячил, но где? Скрипт прилагается...


if_picture_in - зло

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Внезапный выход из подпрограммы
« Reply #1 on: December 19, 2015, 08:23:35 AM »
На первый взгляд косяков не видно, но там еще не понятно что в
Code: (clickermann) [Select]
#include "sub_m-move.cms"
#include "sub_hp.cms"

Повтыкай больше записей в лог. Из твоего лога видно только что проблема идет после
Code: (clickermann) [Select]
2:45:46 Бью слабым ударом

MIG29

  • Освоившийся
  • **
  • Posts: 45
    • View Profile
Re: Внезапный выход из подпрограммы
« Reply #2 on: December 19, 2015, 04:38:16 PM »
Золотой,
цвет правильный. HALT не выполняется как и другие команды...

Oraven,
m-move() годами проверенная функция "плавного перемещения курсора", спионерил тут же в этом сообществе.
hp() всегда отрабатывает правильно.

Не знаю что и пробовать втыкать, у меня нет никаких обьяснений.
Вот немножко откомментировал и изменил. Те же яйца...

Лог под спойлером:
[spoiler]
Code: (clickermann) [Select]
15:27:07 Attack! // Заход
15:27:07 Char HP   : 166/174
15:27:07 Char Mana : 151/180
15:27:07 Mob  HP   : 100/100
15:27:07 3 lvl easy mob. 10/22
15:27:08 Char HP   : 166/174
15:27:08 Char Mana : 151/180
15:27:08 Mob  HP   : 100/100
15:27:08 Могу бить сильным
15:27:08 Могу бить слабым
15:27:08 Бью слабым ударом
15:27:11 Attack!                                 //Перезаход?
15:27:12 Char HP   : 166/174
15:27:12 Char Mana : 135/180
15:27:12 Mob  HP   : 68/100
15:27:12 3 lvl easy mob. 10/22
15:27:13 Char HP   : 166/174
15:27:13 Char Mana : 135/180
15:27:13 Mob  HP   : 68/100
15:27:13 Могу бить сильным
15:27:13 Могу бить слабым
15:27:13 No errors, =0                    // Нормальное поведение, так должно быть всегда, переход по метке action.
15:27:13 A fight is going on!
15:27:15 Char HP   : 157/174
15:27:15 Char Mana : 135/180
15:27:15 Mob  HP   : 68/100
15:27:15 Могу бить сильным
15:27:15 Могу бить слабым
15:27:15 Бью слабым ударом
15:27:18 Attack!                              //Перезаход?
15:27:18 Char HP   : 157/174
15:27:18 Char Mana : 119/180
15:27:18 Mob  HP   : 34/100
15:27:18 3 lvl easy mob. 10/22
15:27:19 Char HP   : 157/174
15:27:19 Char Mana : 119/180
15:27:19 Mob  HP   : 34/100
15:27:19 STRONG too strong.
15:27:19 Могу бить слабым
15:27:19 No errors, =0                 // Нормальное поведение, так должно быть всегда, переход по метке action.
15:27:19 A fight is going on!
15:27:20 Char HP   : 148/174
15:27:20 Char Mana : 119/180
15:27:20 Mob  HP   : 34/100
15:27:20 STRONG too strong.
15:27:20 Могу бить слабым
15:27:20 Бью слабым ударом
15:27:23 Attack!                        //Перезаход?
15:27:24 Char HP   : 148/174
15:27:24 Char Mana : 99/180
15:27:24 Mob  HP   : 4/100
15:27:24 3 lvl easy mob. 10/22
15:27:25 Char HP   : 139/174
15:27:25 Char Mana : 99/180
15:27:25 Mob  HP   : 4/100
15:27:25 STRONG too strong.
15:27:25 Могу бить кулаком!
15:27:25 Бью кулаком!
15:27:28 Attack!                           //Перезаход?
15:27:29 Char HP   : 139/174
15:27:29 Char Mana : 103/180
15:27:29 Mob  HP   : 0/100
15:27:29 3 lvl easy mob. 10/22
15:27:30 Char HP   : 139/174
15:27:30 Char Mana : 103/180
15:27:30 Mob  HP   : 0/100
15:27:30 STRONG too strong.
15:27:30 Могу бить кулаком!
15:27:30 -Нет боя                           //Наконец таки нормальный выход, только когда моба убил.
15:27:31 Удачное завершение боя! 999
15:27:31 End of Attack
15:27:31 Error code : 999
[/spoiler]

При этом кликер все таки убивает моба, выбирает правильные заклинания (за исключением редких лагов изза перезагрузки подпрограммы).
Нормальный выход происходит только в конце боя. Больше всего думается что не правильно работает GOTO , но я так стопицот раз делал и работало...

Совсем забыл что у меня win10...

Перекачал кликер, та же пестня.
« Last Edit: December 19, 2015, 05:12:29 PM by MIG29 »
if_picture_in - зло

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Внезапный выход из подпрограммы
« Reply #3 on: December 19, 2015, 07:03:57 PM »
m-move() годами проверенная функция "плавного перемещения курсора", спионерил тут же в этом сообществе.
hp() всегда отрабатывает правильно.
Ну то есть мы должны тебе на слово поверить что там все нормально. Вот поэтому я и не люблю эти #include

Так, а почему у нас тут одно значение отправляется в подпрограмму?
Code: (clickermann) [Select]
//Бить сильным заклинанием?
if($strong)
   Print("Могу бить сильным")
   if_picture_in($xf,$yf,$xf+350,$yf+220+60, $strong_str)
      print("Бью сильным ударом")
      $temp = rnd(0,15)
      m-move($_return1 +$temp,$_return2 +$temp) // здесь 2а
      waitms(rnd(80,160))
      lclick($_return1 +$temp,$_return2 +$temp)
      //Ждалка
      $t1 = rnd(500,1500)
      $t2 = 2000 - $t1
      waitms($t1)
      m-move($_xmouse+rnd(-10,10)) /// а тут одно!!!!!!!
      waitms($t2)
      goto(action)
   end_if
end_if

//Бить слабым заклинанием?
if($low)
   Print("Могу бить слабым")
   if_picture_in($xf,$yf,$xf+350,$yf+220+60, $low_str)
      print("Бью слабым ударом")
      $temp = rnd(0,15)
      m-move($_return1 +$temp,$_return2 +$temp)
      waitms(rnd(80,160))
      lclick($_return1 +$temp,$_return2 +$temp)
      //Ждалка
      $t1 = rnd(500,1500)
      $t2 = 2000 - $t1
      waitms($t1)
      m-move($_xmouse+rnd(-10,10))  /// а тут одно!!!!!!!
      waitms($t2)
      goto(action)
   end_if
end_if

if($kulak)
   print("Могу бить кулаком!")
   if_picture_in($xf,$yf,$xf+350,$yf+220+60, "kulak.bmp")
      print("Бью кулаком!")
      $temp = rnd(0,15)
      m-move($_return1 +$temp,$_return2 +$temp)
      waitms(rnd(80,160))
      lclick($_return1 +$temp,$_return2 +$temp)
      //Ждалка
      $t1 = rnd(500,1500)
      $t2 = 2000 - $t1
      waitms($t1)
      m-move($_xmouse+rnd(-10,10)) /// а тут одно!!!!!!!
      waitms($t2)
      goto(action)
   end_if
end_if

Из справки:
Quote
Для вызова подпрограммы необходимо написать ее имя в сценарии вместе со всеми параметрами. Очень важно чтобы количество параметров в описании и в вызове совпадало. После выполнения подпрограммы, сценарий продолжится с момента вызова подпрограммы.
« Last Edit: December 19, 2015, 07:06:31 PM by Oraven »

MIG29

  • Освоившийся
  • **
  • Posts: 45
    • View Profile
Re: Внезапный выход из подпрограммы
« Reply #4 on: December 19, 2015, 08:11:11 PM »
Oraven, да, аргумента не хватало, дописал, заработало как надо, спасибо ;)
if_picture_in - зло