Author Topic: Почему не срабатывает, ребят? Что не так сделал?  (Read 4656 times)

0 Members and 2 Guests are viewing this topic.

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Code: (clickermann) [Select]
1:

IF($time < $_time_t)
  WAITMS(1000)
  KEYPRESS(48) // Второе дыхание
  WAITMS(1200)
  KEYPRESS(57) // Заживление ран
  $time = $_time_t + 1740
END_IF

$check = 0
WHILE($check = 0)
  GETSCREEN
  IF_PIXEL_IN(302,53, 308,73, 4168809) // Полоска ХП
    $check = 1
    WAITMS(100)
    goto(1)
  Else
    WAITMS(50)
    goto(2)
  END_IF
END_CYC

2:

IF($time < $_time_t)
  WAITMS(900)
  KEYPRESS(56) // Дар жизни
  WAITMS(50)
  $time = $_time_t + 9
END_IF

KEYPRESS(49)
WAITMS(50)
KEYPRESS(50)
WAITMS(50)
KEYPRESS(51)
WAITMS(50)

Почему не срабатывает условие с 26-ой по 31-ую строчку?...
« Last Edit: February 24, 2014, 07:08:28 PM by Hito »
Я не ду... Потому и не бу...

Крис Тинка

  • Активный участник
  • ***
  • Posts: 171
    • View Profile
1. Потому что $time больше $_time_t.
2. Не рекомендуется использовать goto в теле цикла, ведущее за пределы цикла.
3. Зачем вообще тебе такой цикл, который не выполняется больше 1 раза?
4. Чего хотел добиться использовав время в условии?
« Last Edit: February 24, 2014, 04:49:46 AM by Крис Тинка »

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
1. Потому что $time больше $_time_t.
2. Не рекомендуется использовать goto в теле цикла, ведущее за пределы цикла.
3. Зачем вообще тебе такой цикл, который не выполняется больше 1 раза?
4. Чего хотел добиться использовав время в условии?

1. Первый пункт вообще не понял...
2. К goto вопросов нет - срабатывает нормально, но цикл, расположенный с 26-ой по 31-ую строчку почему-то перескакивает... Вот если убрать из макроса с 3-ей по 9-ую строчки, то "Дар жизни" срабатывает каждые 10 секунд.
3. В смысле - не выполняется больше одного раза...? Я не понял... Почему один раз?
4. В общем суть такова... У перса есть бафы, которые должны обновляться каждые пол часа. Это "Второе дыхание" и "Заживление ран". Желательно, чтоб они обновлялись не во время боя, а когда полоска ХП у перса полная и на нем никого не висит. Цыкл с GETSCREEN-ом отслеживает полоску ХП и если она не тронута, то отправляет действие на метку "1". По идее при таком условии перс должен просто стоять и ничего не делать. Только бафы обновлять каждые 29 минут. Если же полоска ХП начала убавляться, то действие переходит в метку "2", где раз в 10 секунд должен срабатывать "Дар жизни", а клавиши, которые ниже, юзаться постоянно. Ну и бафы сработают, если время придет... Вот как бы и вся задумка...
« Last Edit: February 24, 2014, 09:45:42 AM by Hito »
Я не ду... Потому и не бу...

Крис Тинка

  • Активный участник
  • ***
  • Posts: 171
    • View Profile
IF - это не цикл, а условие (Цикл - for,while). Условие не выполняется, потому что оно ложное. Ты сравниваешь 2 переменные. Если $time < $_time_t, то тело условия выполняется.
Цикл WHILE у тебя выполняется 1 раз, потому что в теле цикла условие, по которому выпрыгиваешь из цикла либо к первой метке либо ко второй, других вариантов нет.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Code: (clickermann) [Select]
IF($time1 < $_time_t)
   WAITMS(1000)
   KEYPRESS(48) // Второе дыхание
   WAITMS(1200)
   KEYPRESS(57) // Заживление ран
   WAITMS(100)
   $time1 = $_time_t + 1740
END_IF

GETSCREEN
IF_PIXEL_IN(302,53, 308,73, 4168809) // Полоска ХП
   WAITMS(100)
Else
   IF($time2 < $_time_t)
      WAITMS(900)
      KEYPRESS(56) // Дар жизни
      WAITMS(50)
      $time2 = $_time_t + 9
   END_IF
   
   KEYPRESS(49)
   WAITMS(50)
   KEYPRESS(50)
   WAITMS(50)
   KEYPRESS(51)
   WAITMS(50)
END_IF

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Code: (clickermann) [Select]
IF($time1 < $_time_t)
   WAITMS(1000)
   KEYPRESS(48) // Второе дыхание
   WAITMS(1200)
   KEYPRESS(57) // Заживление ран
   WAITMS(100)
   $time1 = $_time_t + 1740
END_IF

GETSCREEN
IF_PIXEL_IN(302,53, 308,73, 4168809) // Полоска ХП
   WAITMS(100)
Else
   IF($time2 < $_time_t)
      WAITMS(900)
      KEYPRESS(56) // Дар жизни
      WAITMS(50)
      $time2 = $_time_t + 9
   END_IF
   
   KEYPRESS(49)
   WAITMS(50)
   KEYPRESS(50)
   WAITMS(50)
   KEYPRESS(51)
   WAITMS(50)
END_IF

Мне вот в голову даже не пришло, условие с таймером поставить под Else... ))) Сейчас попробую...

Все отлично работает! Спс! Но чуть позже у меня будет еще вопрос... Чтоб вас не просить за меня делать макрос, я сам его напишу, а потом к вам с вопросом - правильно ли сделал. Я хочу, чтоб скилы из строчки 21, 23 и 25 срабатывали в том случае, если они откатились. То есть GETSCREEN-ы на них впихнуть.
« Last Edit: February 24, 2014, 07:28:01 PM by Hito »
Я не ду... Потому и не бу...