Author Topic: Таймер на ожидание с выходом  (Read 3436 times)

0 Members and 3 Guests are viewing this topic.

kest430

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Таймер на ожидание с выходом
« on: December 01, 2014, 10:24:43 PM »
Это опять я со своим говноскриптом.

Внутри своего скрипта я использую задержку в минутах, которую вынес в отдельный СУБ.
Задача этого СУБа такая: получить в атрибутах длину в минутах, а потом, каждые 10 секунд писать в лог сколько осталось до окончания. Это надо мне, чтобы параллельно я мог запускать другие скрипты или играть руками

Code: [Select]
SUB(wait_x_min, $x_min)
Print ("ждать еще: ", $x_min, ":00")
FOR($time_min = 0, $time_min<$x_min)
FOR($time_sec = 1, $time_sec<7)
wait (10)
Print ("ждать еще: ", $x_min-1-$time_min, ":", 60-$time_sec*10)
END_CYC
end_cyc
END_SUB

На выходе в логе получается что-то типа такого
Code: [Select]
21:35:26 ждать еще: 2:0
21:35:36 ждать еще: 1:50
21:35:46 ждать еще: 1:40
21:35:56 ждать еще: 1:30
21:36:07 ждать еще: 1:20
21:36:17 ждать еще: 1:10
21:36:27 ждать еще: 1:0
21:36:37 ждать еще: 0:50
21:36:47 ждать еще: 0:40
21:36:57 ждать еще: 0:30
21:37:07 ждать еще: 0:20
21:37:17 ждать еще: 0:10
21:37:28 ждать еще: 0:0

Работает - ОК, меня устраивает.

Но хотелось бы допилить "выход" из этого СУБа.
Т.Е. например основной скрипт запустил его wait_x_min (15), но вдруг оказалось мне не нужна такая задержка (бой окончился раньше чем я думал). Получается или ручками тормозить весь скрипт, или ждать.

Думал вставить туда iskeydown, но что-то не могу допереть как это реализовать.

Прошу у "отцов" помощи.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Таймер на ожидание с выходом
« Reply #1 on: December 01, 2014, 10:43:23 PM »
Как то так

Code: (clickermann) [Select]
SUB(wait_x_min, $x_min)
   Print ("ждать еще: ", $x_min, ":00")
   FOR($time_min = 0, $time_min<$x_min)
      FOR($time_sec = 1, $time_sec<7)
         FOR($time_sec2=0,$time_sec2<10)
            IF(iskeydown(#space)=1) // пробел
               $time_sec2 = 10
               $time_sec = 6
               $time_min = $x_min-1
            ELSE
               wait(1)
            END_IF
         END_CYC
         Print ("ждать еще: ", $x_min-1-$time_min, ":", 60-$time_sec*10)
      END_CYC
   end_cyc
END_SUB


wait_x_min(2)
LOGWRITE ("Стоп")

HALT

kest430

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Re: Таймер на ожидание с выходом
« Reply #2 on: December 01, 2014, 11:33:52 PM »
Code: (clickermann) [Select]
         goto(skip_Priexal)
    skip_Priexal:
END_SUB
не люблю я эти костыли GOTO еще с бейсика

а не проще поиском типичной картинки, контролировать идущий бой и выходить автоматически если бой завершён досрочно?
В том то и прикол, что какой-то типичной картинки нет.

Главный скрипт фармит по списку жертв.
Открывает страницу жертвы, проверяет здоровье, атакует, проверяет был ли бой. Если надпись "Бой" не появилась, он начинает сканить типичные картинки ошибок: часто деретесь, на перса недавно напали и другие. Среди них есть картинка "вы заняты", которая появляется, когда я руками записываюсь в групповой бой например или делаю квест.
Если скрипт находит "вы заняты" он спрашивает inputbox("Сколько минут ждем?", "2"). В этот момент я могу указать например 15 и до следующей попытки атаки скрипт будет ждать 15 минут. Но не всегда получается точно угадать с задержкой и получается что поставил задержку в 15 минут я могу пройти групповой бой за 5 и еще 10 минут скрипт будет бездельничать

kest430

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Re: Таймер на ожидание с выходом
« Reply #3 on: December 01, 2014, 11:45:29 PM »
Как то так
Блин, Oraven, ты выручаешь меня который раз. Спасибо!!!