Author Topic: Останавливается после цикла  (Read 1964 times)

0 Members and 2 Guests are viewing this topic.

rrdeiss

  • Зашел в гости
  • *
  • Posts: 16
    • View Profile
Останавливается после цикла
« on: October 30, 2017, 06:35:04 AM »
Вот код
Code: [Select]
fndhnt()
startwar()
while($wmob=0)
   simplewar()
end_cyc
drinkburdfight()
Останавливается после выполнения while
Последняя подпрограмма не выполняется
Не рестартится вся программа
Что с этим можно сделать?
« Last Edit: October 30, 2017, 06:36:42 AM by rrdeiss »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Останавливается после цикла
« Reply #1 on: October 30, 2017, 06:52:46 AM »
В этом коде нет ошибок, очевидно что они есть в твоих подпрограммах.

rrdeiss

  • Зашел в гости
  • *
  • Posts: 16
    • View Profile
Re: Останавливается после цикла
« Reply #2 on: October 30, 2017, 06:54:53 AM »
Можете проверить, что здесь не так?
Code: [Select]
sub(drinkburdfight) //проверка стат и питье бурдей
   getscreen
   if_pixel_in(588,200,635,205,109,66)
      lclick(1394,57)
      waitms(rnd(100,300))
      lclick(1090,177)
      waitms(rnd(100,300))
      lclick(1394,57)
      waitms(rnd(100,300))
      lclick(1090,198)
      waitms(rnd(100,300))
   end_if
end_sub
sub(fndhnt) //открытие охоты, переход на запад
   lclick(1258+rnd(-15,15),129+rnd(-15,+15)
   wait(2)
   lclick(351+rnd(-5,5),210+rnd(-5,5))
   wait(2)
end_if
end_sub
sub(startwar) //поиск моба и нападение на него
getscreen
if_pixel_in(342,180,1147,816,535696,1331546,1653334,1519710,1914980,4416913)
   mouse_move($_return1,$_return2)
   waitms(100)
   lclick($_return1, $_return2)
   waitms(200)
   dblclick($_return1, $_return2)
   wait(rnd(7,9))
else
   fndhnt()
end_if
end_sub
sub(simplewar) //бой первым скилом
getscreen
if_pixel_in(980,236,1153,503,163)
   mouse_move(619+rnd(-10,10),451+rnd(-10,10))
   lclick(619+rnd(-10,10),451+rnd(-10,10))
   $udar=$udar+1
   waitms(rnd(600,1000))
else
   $wmob=0
end_if
end_sub

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Останавливается после цикла
« Reply #3 on: October 30, 2017, 07:01:26 AM »
Отсутствует последняя скобка и лишний end_if в подпрограмме sub(fndhnt)
Code: (clickermann) [Select]
lclick(1258+rnd(-15,15),129+rnd(-15,+15)
Так верно
Code: (clickermann) [Select]
sub(drinkburdfight) //проверка стат и питье бурдей
   getscreen
   if_pixel_in(588,200,635,205,109,66)
      lclick(1394,57)
      waitms(rnd(100,300))
      lclick(1090,177)
      waitms(rnd(100,300))
      lclick(1394,57)
      waitms(rnd(100,300))
      lclick(1090,198)
      waitms(rnd(100,300))
   end_if
end_sub

sub(fndhnt) //открытие охоты, переход на запад
   lclick(1258+rnd(-15,15),129+rnd(-15,+15))
   wait(2)
   lclick(351+rnd(-5,5),210+rnd(-5,5))
   wait(2)   
end_sub

sub(startwar) //поиск моба и нападение на него
   getscreen
   if_pixel_in(342,180,1147,816,535696,1331546,1653334,1519710,1914980,4416913)
      mouse_move($_return1,$_return2)
      waitms(100)
      lclick($_return1, $_return2)
      waitms(200)
      dblclick($_return1, $_return2)
      wait(rnd(7,9))
   else
      fndhnt()
   end_if
end_sub

sub(simplewar) //бой первым скилом     
   getscreen
   if_pixel_in(980,236,1153,503,163)
      mouse_move(619+rnd(-10,10),451+rnd(-10,10))
      lclick(619+rnd(-10,10),451+rnd(-10,10))
      $udar=$udar+1
      waitms(rnd(600,1000))
   else
      $wmob=0
   end_if
end_sub

rrdeiss

  • Зашел в гости
  • *
  • Posts: 16
    • View Profile
Re: Останавливается после цикла
« Reply #4 on: October 30, 2017, 07:07:34 AM »
Сделал все как вы сказали, не помогло.
Возможно, проблема в том, что первая подпрограмма это проверка условий и надо добавить
else и рестарт программы, но как это сделать?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Останавливается после цикла
« Reply #5 on: October 30, 2017, 07:11:42 AM »
Разобраться в проблеме поможет вставка в код записи в лог.

Пример
Code: (clickermann) [Select]
sub(startwar) //поиск моба и нападение на него
   LOGWRITE ("Выполняю startwar")   
   getscreen
   if_pixel_in(342,180,1147,816,535696,1331546,1653334,1519710,1914980,4416913)
      LOGWRITE ("Найден пиксель")
      mouse_move($_return1,$_return2)
      waitms(100)
      lclick($_return1, $_return2)
      waitms(200)
      dblclick($_return1, $_return2)
      wait(rnd(7,9))
   else
      LOGWRITE ("Не найден пиксель")
      fndhnt()
   end_if
end_sub

rrdeiss

  • Зашел в гости
  • *
  • Posts: 16
    • View Profile
Re: Останавливается после цикла
« Reply #6 on: October 30, 2017, 07:16:03 AM »
Я вставил логи, но запись логов после end_cyc прекращается.
Т.е. последняя подпрограмма(drinkburdfight) как не выполнялась, так и не выполняется.

rrdeiss

  • Зашел в гости
  • *
  • Posts: 16
    • View Profile
Re: Останавливается после цикла
« Reply #7 on: October 30, 2017, 09:52:37 AM »
если подпрограмма не выполняется, то причина одна в указанной области указанные цвета не найдены
if_pixel_in(588,200,635,205,109,66)  // ищутся цвета 109 и 66 ? проверяется полоска шириной 5 пикселей?
 подпрограмма mouse_move в коде написана?
да, mouse _move написана.
проблема в том, что на end_cyc просто останавливается все, следующая подпрограмма drinkburdfight даже лог не выводит о том, что пиксель не найдет.
и я не могу возобновить всю программу заново, не нажав хоткей остановки и потом запуска скрипта, мне нужно чтобы все было автоматически

rrdeiss

  • Зашел в гости
  • *
  • Posts: 16
    • View Profile
Re: Останавливается после цикла
« Reply #8 on: October 30, 2017, 10:05:55 AM »
Спасибо огромное!