Author Topic: Ребят, помогите плиз... :(  (Read 5575 times)

0 Members and 1 Guest are viewing this topic.

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Ребят, помогите плиз... :(
« on: September 09, 2014, 09:04:29 AM »
Почему у меня подпрограммы (klich) и (mikctura) не срабатывают? Всю голову уже сломал...

Code: (clickermann) [Select]
SUB(klich)
   IF($time < $_time_t)
      LOGWRITE ("Клич")
      KEYPRESS(189) // Клич
      WAITMS(1150)
      $time = $_time_t + 45
   END_IF
END_SUB

SUB(mikctura)
   IF($time < $_time_t)
      KEYDOWN (16)
      WAITMS (50)
      KEYDOWN (187) // Микстура
      WAITMS (50)
      KEYUP (187)
      KEYUP (16)
      BEEP(800,200)
      WAITMS(500)
      LOGWRITE ("Микстура")
      $time = $_time_t + 10
   END_IF
END_SUB

SUB(udar)
   LOGWRITE ("Удар")
   GETSCREEN
   IF_PIXEL_IN(803,850, 803,850, 16050845)  // Молот
      KEYPRESS(56)
      WAITMS(1250)
   Else
      GETSCREEN
      IF_PIXEL_IN(711,850, 711,850, 723077)  // Вихрь ударов
         KEYPRESS(54)
         WAITMS(1250)
      Else
         GETSCREEN
         IF_PIXEL_IN(670,850, 670,850, 264226)  // Решающий
            KEYPRESS(53)
            WAITMS(1250)
         Else
            GETSCREEN
            IF_PIXEL_IN(506,850, 506,850, 2102876)  // Адреналин
               KEYPRESS(49)
               WAITMS(650)
            Else
               GETSCREEN
               IF_PIXEL_IN(629,850, 629,850, 4563158)  // Тройной 1
                  KEYPRESS(52)
                  WAITMS(650)
               Else
                  GETSCREEN
                  IF_PIXEL_IN(629,850, 629,850, 733864) // Тройной 2
                     KEYPRESS(52)
                     WAITMS(650)
                  Else
                     GETSCREEN
                     IF_PIXEL_IN(629,850, 629,850, 1526137) // Тройной 3
                        KEYPRESS(52)
                        WAITMS(1200)
                     END_IF
                  END_IF
               END_IF
            END_IF
         END_IF
      END_IF
   END_IF
END_SUB

SUB(slepoy boy)
   slepoy boy:
   LOGWRITE ("Слепой бой")
   WAITMS(1250)
   KEYPRESS(52)
   WAITMS(700)
   KEYPRESS(52)
   WAITMS(700)
   KEYPRESS(52)
   GETSCREEN
   IF_PIXEL_IN(33,62, 33,62, 1930288) // Минимум хп
      LOGWRITE ("В слепом бою у перса не минимум хп")
      GOTO(1)
   Else
      BEEP(800,200)
      LOGWRITE ("В слепом бою у перса нет ХП")
      mikctura()
      klich()
      LOGWRITE ("Зацикливаем слепой бой")
      GOTO(slepoy boy)
   END_IF
END_SUB

SUB(boy)
   boy:
   LOGWRITE ("В бою")
   GETSCREEN
   IF_PIXEL_IN(506,63, 506,63, 4539822) // Моб
      // Если Моб висит на персе, сканируем ХП перса
      LOGWRITE ("Моб на персе")
      GETSCREEN
      IF_PIXEL_IN(33,62, 33,62, 1930288) // Минимум хп
         LOGWRITE ("У перса НЕ минимум ХП")
         // Если ХП перса не минимум, то проверяем ХП под клич
         GETSCREEN
         IF_PIXEL_IN(242,63, 242,63, 3379030) // Хп под клич
            LOGWRITE ("ХП достаточно")
            udar()
         Else
            LOGWRITE ("У перса ХП под клич")
            // Если ХП уменьшилось
            klich()
            udar()
         END_IF
      Else
         // Если минимума ХП у перса нет
         LOGWRITE ("У перса ХП под микстуру")
         mikctura() // Пьем микстуру и снова проверяем ХП
         klich()
         GETSCREEN
         IF_PIXEL_IN(33,62, 33,62, 1930288) // Минимум хп
            LOGWRITE ("Хп прибавилось")
            // Если ХП появилось, то бьем
            udar()
         Else
            LOGWRITE ("ХП не прибавилось - переходим в слепой бой")
            // Если ХП не появилось, переходим в слепой бой
            slepoy boy()
         END_IF
      END_IF
   Else
      LOGWRITE ("В бою моб не найден")
      // Если моб не найден, то проверяем минимальное ХП перса
      GETSCREEN
      IF_PIXEL_IN(33,62, 33,62, 1930288) // Минимум хп
         LOGWRITE ("У перса остались ХП и переходим в пункт 1")
         // Если ХП есть, то переходим в режим отдыха
         GOTO(1)
      Else
         LOGWRITE ("ХП нет - в слепой бой")
         // Если ХП нет, то переходим в слепой бой
         slepoy boy()
      END_IF
   END_IF
   GETSCREEN
   IF_PIXEL_IN(506,63, 506,63, 4539822) // Моб
      LOGWRITE ("Моб на персе - зацикливаем бой")
      GOTO(boy)
   END_IF
END_SUB

LOGWRITE ("1")

1:

GETSCREEN
IF_PIXEL_IN(506,63, 506,63, 4539822) // Моб
   LOGWRITE ("На персе моб - в бой")
   boy()
END_IF

Time Out:

GETSCREEN
IF_PIXEL_IN(749,645, 749,645, 16449535) // Дроп
   LOGWRITE ("Дроп")
   KEYPRESS(70)
   WAITMS(1000)
END_IF
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (2,44, 320,96, "хп-мп.bmp", -1, 100)
   poisk moba:
   KEYPRESS(69) // Таргет
   WAITMS(1000)
   GETSCREEN
   IF_PIXEL_IN(506,63, 506,63, 4539822) // Моб
      GETSCREEN
      IF_PIXEL_IN(844,850, 844,850, 9025437)  // Лассо
         KEYPRESS(57)
         LOGWRITE ("Лассо")
         WAITMS(1850)
         LOGWRITE ("Переходим в бой")
         boy()
      Else
         // Если лассо не найдено, идем на позицию 1
         GOTO(Time Out)
      END_IF
   Else
      // Если не найден моб, то идем на позицию 1
      GOTO(Time Out)
   END_IF
Else
   GETSCREEN
   COLORMODE(6)
   IF_PICTURE_IN (1,83, 353,163, "второе дыхание.bmp", -1, 100)
      LOGWRITE ("Бафы в порядке - МП")
      // Если бафы в порядке, пополняем МП
      IF($time < $_time_t)
         KEYDOWN (16)
         WAITMS (50)
         KEYDOWN (48)
         WAITMS (50)
         KEYUP (48)
         KEYUP (16)
         WAITMS(10000)
         $time = $_time_t + 120
      END_IF
   Else
      LOGWRITE ("Бафы закончились - бафаемся")
      // Если бафы закончились. Бафаемся
      KEYDOWN (16)
      WAITMS (50)
      KEYDOWN (189)
      WAITMS (50)
      KEYUP (189)
      KEYUP (16)
      WAITMS(1300)
      KEYDOWN (16)
      WAITMS (50)
      KEYDOWN (187)
      WAITMS (50)
      KEYUP (187)
      KEYUP (16)
      WAITMS(1300)
   END_IF
END_IF
« Last Edit: September 09, 2014, 09:27:25 AM by Hito »
Я не ду... Потому и не бу...

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Ребят, помогите плиз... :(
« Reply #1 on: September 09, 2014, 09:13:23 AM »
Я не ду... Потому и не бу...

aden

  • Оплот сообщества
  • ****
  • Posts: 363
    • View Profile
Re: Ребят, помогите плиз... :(
« Reply #2 on: September 09, 2014, 09:55:08 AM »
не смог разобраться вы извращенец, мало того что goto так еще и внутрь определения сабов, скорее всего срабатывает какой механизм который отрабатывает до клича и увеличивает переменную $time и поэтому она никогда не становится меньше текущего времени, у вас одна и таже переменная $time следит и за бафами и за кличами используйте разные переменные для разных счетчиков времени

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Ребят, помогите плиз... :(
« Reply #3 on: September 09, 2014, 11:00:28 AM »
$time для клича и микстуры нужно разделить наверно.
$time1, $time2  и ниже по скрипту тоже это учесть и разделить.
...
зачем там таймеры? Что они меряют? Если до окончания времени нельзя применить другие, то должно быть как у тебя. Если таймер на время действия... то зачем он, если вызов не по таймеру а по анализу.


В стр.82 GOTO(1) идёт за пределы саба, что делать нельзя
Code: (clickermann) [Select]
SUB(klich)
   IF($time < $_time_t)
      LOGWRITE ("Клич")
      KEYPRESS(189) // Клич
      WAITMS(1150)
      $time = $_time_t + 45
   END_IF
END_SUB

SUB(mikctura)
   IF($time < $_time_t)
      KEYDOWN (16)
      WAITMS (50)
      KEYDOWN (187) // Микстура
      WAITMS (50)
      KEYUP (187)
      KEYUP (16)
      BEEP(800,200)
      WAITMS(500)
      LOGWRITE ("Микстура")
      $time = $_time_t + 10
   END_IF
END_SUB

SUB(udar)
   LOGWRITE ("Удар")
   GETSCREEN
   IF_PIXEL_IN(803,850, 803,850, 16050845)  // Молот
      KEYPRESS(56)
      WAITMS(1250)
   Else
      GETSCREEN
      IF_PIXEL_IN(711,850, 711,850, 723077)  // Вихрь ударов
         KEYPRESS(54)
         WAITMS(1250)
      Else
         GETSCREEN
         IF_PIXEL_IN(670,850, 670,850, 264226)  // Решающий
            KEYPRESS(53)
            WAITMS(1250)
         Else
            GETSCREEN
            IF_PIXEL_IN(506,850, 506,850, 2102876)  // Адреналин
               KEYPRESS(49)
               WAITMS(650)
            Else
               GETSCREEN
               IF_PIXEL_IN(629,850, 629,850, 4563158)  // Тройной 1
                  KEYPRESS(52)
                  WAITMS(650)
               Else
                  GETSCREEN
                  IF_PIXEL_IN(629,850, 629,850, 733864) // Тройной 2
                     KEYPRESS(52)
                     WAITMS(650)
                  Else
                     GETSCREEN
                     IF_PIXEL_IN(629,850, 629,850, 1526137) // Тройной 3
                        KEYPRESS(52)
                        WAITMS(1200)
                     END_IF
                  END_IF
               END_IF
            END_IF
         END_IF
      END_IF
   END_IF
END_SUB

SUB(slepoy boy)
   WHILE(slepoy_boy = 1)
      LOGWRITE ("Слепой бой")
      WAITMS(1250)
      KEYPRESS(52)
      WAITMS(700)
      KEYPRESS(52)
      WAITMS(700)
      KEYPRESS(52)
      GETSCREEN
      IF_PIXEL_IN(33,62, 33,62, 1930288) // Минимум хп
         LOGWRITE ("В слепом бою у перса не минимум хп")
         slepoy_boy = 0 // выходим из слепого боя
      Else
         BEEP(800,200)
         LOGWRITE ("В слепом бою у перса нет ХП")
         mikctura()
         klich()
         LOGWRITE ("Зацикливаем слепой бой")
      END_IF
   END_CYC
END_SUB

SUB(boy)
   boy = 1
   slepoy_boy = 1
   WHILE(boy = 1)
      LOGWRITE ("В бою")
      GETSCREEN
      IF_PIXEL_IN(506,63, 506,63, 4539822) // Моб
         // Если Моб висит на персе, сканируем ХП перса
         LOGWRITE ("Моб на персе")
         GETSCREEN
         IF_PIXEL_IN(33,62, 33,62, 1930288) // Минимум хп
            LOGWRITE ("У перса НЕ минимум ХП")
            // Если ХП перса не минимум, то проверяем ХП под клич
            GETSCREEN
            IF_PIXEL_IN(242,63, 242,63, 3379030) // Хп под клич
               LOGWRITE ("ХП достаточно")
               udar()
            Else
               LOGWRITE ("У перса ХП под клич")
               // Если ХП уменьшилось
               klich()
               udar()
            END_IF
         Else
            // Если минимума ХП у перса нет
            LOGWRITE ("У перса ХП под микстуру")
            mikctura() // Пьем микстуру и снова проверяем ХП
            klich()
            GETSCREEN
            IF_PIXEL_IN(33,62, 33,62, 1930288) // Минимум хп
               LOGWRITE ("Хп прибавилось")
               // Если ХП появилось, то бьем
               udar()
            Else
               LOGWRITE ("ХП не прибавилось - переходим в слепой бой")
               // Если ХП не появилось, переходим в слепой бой
               slepoy boy()
            END_IF
         END_IF
      Else
         LOGWRITE ("В бою моб не найден")
         // Если моб не найден, то проверяем минимальное ХП перса
         GETSCREEN
         IF_PIXEL_IN(33,62, 33,62, 1930288) // Минимум хп
            LOGWRITE ("У перса остались ХП и переходим в пункт 1")
            // Если ХП есть, то переходим в режим отдыха
            GOTO(1)
         Else
            LOGWRITE ("ХП нет - в слепой бой")
            // Если ХП нет, то переходим в слепой бой
            slepoy boy()
         END_IF
      END_IF
      IF(slepoy_boy = 0) // были в слепом бою
         boy = 0  // выходим из боя
      ELSE
         GETSCREEN
         IF_PIXEL_IN(506,63, 506,63, 4539822) // Моб
            LOGWRITE ("Моб на персе - зацикливаем бой")
         ELSE
            boy = 0  // выходим из боя
         END_IF
      END_IF
   END_CYC
END_SUB

LOGWRITE ("1")

1:

GETSCREEN
IF_PIXEL_IN(506,63, 506,63, 4539822) // Моб
   LOGWRITE ("На персе моб - в бой")
   boy()
   IF(slepoy_boy = 0) // были в слепом бою
      GOTO(1)
   END_IF
END_IF

Time Out:

GETSCREEN
IF_PIXEL_IN(749,645, 749,645, 16449535) // Дроп
   LOGWRITE ("Дроп")
   KEYPRESS(70)
   WAITMS(1000)
END_IF
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (2,44, 320,96, "хп-мп.bmp", -1, 100)
   poisk moba:
   KEYPRESS(69) // Таргет
   WAITMS(1000)
   GETSCREEN
   IF_PIXEL_IN(506,63, 506,63, 4539822) // Моб
      GETSCREEN
      IF_PIXEL_IN(844,850, 844,850, 9025437)  // Лассо
         KEYPRESS(57)
         LOGWRITE ("Лассо")
         WAITMS(1850)
         LOGWRITE ("Переходим в бой")
         boy()
      Else
         // Если лассо не найдено, идем на позицию 1
         GOTO(Time Out)
      END_IF
   Else
      // Если не найден моб, то идем на позицию 1
      GOTO(Time Out)
   END_IF
Else
   GETSCREEN
   COLORMODE(6)
   IF_PICTURE_IN (1,83, 353,163, "второе дыхание.bmp", -1, 100)
      LOGWRITE ("Бафы в порядке - МП")
      // Если бафы в порядке, пополняем МП
      IF($time < $_time_t)
         KEYDOWN (16)
         WAITMS (50)
         KEYDOWN (48)
         WAITMS (50)
         KEYUP (48)
         KEYUP (16)
         WAITMS(10000)
         $time = $_time_t + 120
      END_IF
   Else
      LOGWRITE ("Бафы закончились - бафаемся")
      // Если бафы закончились. Бафаемся
      KEYDOWN (16)
      WAITMS (50)
      KEYDOWN (189)
      WAITMS (50)
      KEYUP (189)
      KEYUP (16)
      WAITMS(1300)
      KEYDOWN (16)
      WAITMS (50)
      KEYDOWN (187)
      WAITMS (50)
      KEYUP (187)
      KEYUP (16)
      WAITMS(1300)
   END_IF
END_IF

Если ничего я не напутал.
« Last Edit: September 09, 2014, 11:06:46 AM by Vint »


aden

  • Оплот сообщества
  • ****
  • Posts: 363
    • View Profile
Re: Ребят, помогите плиз... :(
« Reply #4 on: September 09, 2014, 11:10:58 AM »
В стр.82 GOTO(1) идёт за пределы саба, что делать нельзя
ну почему же ведь для кликера это абсолютно нормально должно выглядеть, другое дело что мозги дымятся

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Ребят, помогите плиз... :(
« Reply #5 on: September 09, 2014, 01:04:00 PM »
По моему нигде нельзя.
В ассемблере при вызове подпрограммы на вершину стека помещается адрес возврата.
При вложенных подпрограммах, если мы пропустим нормальный возврат, то из внешней подпрограммы вернётся не туда.
В любом случае без нормального завершения подпрограмм стек не освобождается от лишних значений и не восстанавливается очередь. Что может повлиять и на циклы и другие значения в стеке.

Как в Кликермэне, не знаю.
« Last Edit: September 09, 2014, 01:19:19 PM by Vint »


aden

  • Оплот сообщества
  • ****
  • Posts: 363
    • View Profile
Re: Ребят, помогите плиз... :(
« Reply #6 on: September 09, 2014, 01:13:07 PM »
Как в Кликермэне, не знаю.

ну исходя из личных наблюдений, кликер защищен от таких вещей поскольку парсер просто последовательно анализирует скрипт и выполняет соответствующие инструкции и для него все эти прыжки тупо не видны. могу ошибаться но мне это видится так

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Ребят, помогите плиз... :(
« Reply #7 on: September 09, 2014, 01:16:34 PM »
Исправленный код

Code: (clickermann) [Select]
SUB(klich)
   IF($time1 < $_time_t)
      LOGWRITE ("Клич")
      KEYPRESS(189) // Клич
      WAITMS(1150)
      $time1 = $_time_t + 45
   END_IF
END_SUB

SUB(mikctura)
   IF($time2 < $_time_t)
      KEYDOWN (16)
      WAITMS (50)
      KEYDOWN (187) // Микстура
      WAITMS (50)
      KEYUP (187)
      KEYUP (16)
      BEEP(800,200)
      WAITMS(500)
      LOGWRITE ("Микстура")
      $time2 = $_time_t + 10
   END_IF
END_SUB

SUB(udar)
   LOGWRITE ("Удар")
   GETSCREEN
   IF_PIXEL_IN(803,850, 803,850, 16050845)  // Молот
      KEYPRESS(56)
      WAITMS(1250)
   Else
      IF_PIXEL_IN(711,850, 711,850, 723077)  // Вихрь ударов
         KEYPRESS(54)
         WAITMS(1250)
      Else
         IF_PIXEL_IN(670,850, 670,850, 264226)  // Решающий
            KEYPRESS(53)
            WAITMS(1250)
         Else
            IF_PIXEL_IN(506,850, 506,850, 2102876)  // Адреналин
               KEYPRESS(49)
               WAITMS(650)
            Else
               IF_PIXEL_IN(629,850, 629,850, 4563158)  // Тройной 1
                  KEYPRESS(52)
                  WAITMS(650)
               Else
                  IF_PIXEL_IN(629,850, 629,850, 733864) // Тройной 2
                     KEYPRESS(52)
                     WAITMS(650)
                  Else
                     IF_PIXEL_IN(629,850, 629,850, 1526137) // Тройной 3
                        KEYPRESS(52)
                        WAITMS(1200)
                     END_IF
                  END_IF
               END_IF
            END_IF
         END_IF
      END_IF
   END_IF
END_SUB

SUB(slepoy boy)
   slepoy boy:
   LOGWRITE ("Слепой бой")
   WAITMS(1250)
   KEYPRESS(52)
   WAITMS(700)
   KEYPRESS(52)
   WAITMS(700)
   KEYPRESS(52)
   GETSCREEN
   IF_PIXEL_IN(33,62, 33,62, 1930288) // Минимум хп
      LOGWRITE ("В слепом бою у перса не минимум хп")
      GOTO(1)
   Else
      BEEP(800,200)
      LOGWRITE ("В слепом бою у перса нет ХП")
      mikctura()
      klich()
      LOGWRITE ("Зацикливаем слепой бой")
      GOTO(slepoy boy)
   END_IF
END_SUB

SUB(boy)
   boy:
   LOGWRITE ("В бою")
   GETSCREEN
   IF_PIXEL_IN(506,63, 506,63, 4539822) // Моб
      // Если Моб висит на персе, сканируем ХП перса
      LOGWRITE ("Моб на персе")
      IF_PIXEL_IN(33,62, 33,62, 1930288) // Минимум хп
         LOGWRITE ("У перса НЕ минимум ХП")
         // Если ХП перса не минимум, то проверяем ХП под клич
         IF_PIXEL_IN(242,63, 242,63, 3379030) // Хп под клич
            LOGWRITE ("ХП достаточно")
            udar()
         Else
            LOGWRITE ("У перса ХП под клич")
            // Если ХП уменьшилось
            klich()
            udar()
         END_IF
      Else
         // Если минимума ХП у перса нет
         LOGWRITE ("У перса ХП под микстуру")
         mikctura() // Пьем микстуру и снова проверяем ХП
         klich()
         GETSCREEN
         IF_PIXEL_IN(33,62, 33,62, 1930288) // Минимум хп
            LOGWRITE ("Хп прибавилось")
            // Если ХП появилось, то бьем
            udar()
         Else
            LOGWRITE ("ХП не прибавилось - переходим в слепой бой")
            // Если ХП не появилось, переходим в слепой бой
            slepoy boy()
         END_IF
      END_IF
   Else
      LOGWRITE ("В бою моб не найден")
      // Если моб не найден, то проверяем минимальное ХП перса
      GETSCREEN
      IF_PIXEL_IN(33,62, 33,62, 1930288) // Минимум хп
         LOGWRITE ("У перса остались ХП и переходим в пункт 1")
         // Если ХП есть, то переходим в режим отдыха
         GOTO(1)
      Else
         LOGWRITE ("ХП нет - в слепой бой")
         // Если ХП нет, то переходим в слепой бой
         slepoy boy()
      END_IF
   END_IF
   GETSCREEN
   IF_PIXEL_IN(506,63, 506,63, 4539822) // Моб
      LOGWRITE ("Моб на персе - зацикливаем бой")
      GOTO(boy)
   END_IF
END_SUB

LOGWRITE ("1")

1:

GETSCREEN
IF_PIXEL_IN(506,63, 506,63, 4539822) // Моб
   LOGWRITE ("На персе моб - в бой")
   boy()
END_IF

Time Out:

GETSCREEN
IF_PIXEL_IN(749,645, 749,645, 16449535) // Дроп
   LOGWRITE ("Дроп")
   KEYPRESS(70)
   WAITMS(1000)
END_IF
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (2,44, 320,96, "хп-мп.bmp", -1, 100)
   poisk moba:
   KEYPRESS(69) // Таргет
   WAITMS(1000)
   GETSCREEN
   IF_PIXEL_IN(506,63, 506,63, 4539822) // Моб
      IF_PIXEL_IN(844,850, 844,850, 9025437)  // Лассо
         KEYPRESS(57)
         LOGWRITE ("Лассо")
         WAITMS(1850)
         LOGWRITE ("Переходим в бой")
         boy()
      Else
         // Если лассо не найдено, идем на позицию 1
         GOTO(Time Out)
      END_IF
   Else
      // Если не найден моб, то идем на позицию 1
      GOTO(Time Out)
   END_IF
Else
   GETSCREEN
   COLORMODE(6)
   IF_PICTURE_IN (1,83, 353,163, "второе дыхание.bmp", -1, 100)
      LOGWRITE ("Бафы в порядке - МП")
      // Если бафы в порядке, пополняем МП
      IF($time3 < $_time_t)
         KEYDOWN (16)
         WAITMS (50)
         KEYDOWN (48)
         WAITMS (50)
         KEYUP (48)
         KEYUP (16)
         WAITMS(10000)
         $time3 = $_time_t + 120
      END_IF
   Else
      LOGWRITE ("Бафы закончились - бафаемся")
      // Если бафы закончились. Бафаемся
      KEYDOWN (16)
      WAITMS (50)
      KEYDOWN (189)
      WAITMS (50)
      KEYUP (189)
      KEYUP (16)
      WAITMS(1300)
      KEYDOWN (16)
      WAITMS (50)
      KEYDOWN (187)
      WAITMS (50)
      KEYUP (187)
      KEYUP (16)
      WAITMS(1300)
   END_IF
END_IF

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Ребят, помогите плиз... :(
« Reply #8 on: September 09, 2014, 01:26:22 PM »
Ребят, там таймеры потому, что микстуру можно использовать только 1 раз в 10 секунд, а клич 1 раз в 45 секунд. Вот и нужно, чтобы эли скилы срабатывали 1 раз в свое время, из какой бы части скрипта они не были вызваны. Что касаемо выпрыгивания из подпрограммы, дак там иначе я просто ума не приложу, как сделать... Дело в том, что в бою может наступить такое время, когда при подходе хп к минимуму, весь экран начинает заволакивать пульсирующей красной дымкой, из за чего кликер вообще перестает видеть, и ХП, и скилы и все остально. Если вы заметили, то в слепом бою он юзает всего 3 скила вслепую. У меня перс просто вставал в таком случае и никера не делал, но если в это время хоть как-то пользоваться скилами, или вовремя успеть юзнуть микстуру, или клич (если посчастливится и они откатятся к этому времени), то из этой слепой зоны есть шанс вырваться и если это получится, то перса необходимо как можно скорее вернуть в нормальный бой, чтобы он полноценно воспользовался скилами и добил моба.
Я не ду... Потому и не бу...

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Ребят, помогите плиз... :(
« Reply #9 on: September 09, 2014, 01:29:04 PM »
Спасибо за ваши ответы. Сейчас буду в них разбираться. Мне это надолго... ))
Я не ду... Потому и не бу...

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Ребят, помогите плиз... :(
« Reply #10 on: September 09, 2014, 01:40:50 PM »
А! Понял! Просто вы умным языком говорите и я не мог въехать )) Если б Oraven не выложил свой скрипт, то я бы и не догнал, о чем вы говорите... )) Иными словами, если в одном и том же скрипте встречается несколько IF($time < $_time_t), то $time нужно переименовывать ))) Спс большое! )) А насчет выпригиваний... Ребят, я ж не себя прыгать заставляю, а кликер  ;D Если у него это получается, то пусть пашет ))) А с выпрыгиваниями и ныряниями между двумя боями он справляется )) Большое СПС!
Я не ду... Потому и не бу...

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Ребят, помогите плиз... :(
« Reply #11 on: September 09, 2014, 05:20:09 PM »
Ребят, опять я... Вот как Oraven скрипт исправил, все заработало, как часики. Но я решил еще пару функций добавить:

Code: (clickermann) [Select]
SUB(klich)
   IF($time1 < $_time_t)
      LOGWRITE ("Клич")
      KEYPRESS(189) // Клич
      WAITMS(1150)
      $time1 = $_time_t + 45
   END_IF
END_SUB

SUB(mikctura)
   IF($time2 < $_time_t)
      KEYDOWN (16)
      WAITMS (50)
      KEYDOWN (187) // Микстура
      WAITMS (50)
      KEYUP (187)
      KEYUP (16)
      BEEP(800,200)
      WAITMS(500)
      LOGWRITE ("Микстура")
      $time2 = $_time_t + 10
   END_IF
END_SUB

SUB(udar)
   LOGWRITE ("Удар")
   GETSCREEN
   IF_PIXEL_IN(803,850, 803,850, 16050845)  // Молот
      KEYPRESS(56)
      WAITMS(1250)
   Else
      IF_PIXEL_IN(711,850, 711,850, 723077)  // Вихрь ударов
         KEYPRESS(54)
         WAITMS(1250)
      Else
         IF_PIXEL_IN(670,847, 670,847, 263185,6791167)  // Решающий
            KEYPRESS(53)
            WAITMS(1250)
         Else
            IF_PIXEL_IN(506,850, 506,850, 2102876)  // Адреналин
               KEYPRESS(49)
               WAITMS(650)
            Else
               IF_PIXEL_IN(629,850, 629,850, 4563158)  // Тройной 1
                  KEYPRESS(52)
                  WAITMS(650)
               Else
                  IF_PIXEL_IN(629,850, 629,850, 733864) // Тройной 2
                     KEYPRESS(52)
                     WAITMS(650)
                  Else
                     IF_PIXEL_IN(629,850, 629,850, 1526137) // Тройной 3
                        KEYPRESS(52)
                        WAITMS(1200)
                     END_IF
                  END_IF
               END_IF
            END_IF
         END_IF
      END_IF
   END_IF
END_SUB

SUB(slepoy boy)
   slepoy boy:
   LOGWRITE ("slepoy boy")
   WAITMS(1250)
   KEYPRESS(52)
   WAITMS(700)
   KEYPRESS(52)
   WAITMS(700)
   KEYPRESS(52)
   GETSCREEN
   IF_PIXEL_IN(80,64, 80,64, 1930288) // Минимум хп
      LOGWRITE ("slepoy boy - у перса не минимум хп")
      GOTO(1)
   Else
      BEEP(800,200)
      LOGWRITE ("slepoy boy - у перса нет ХП")
      KEYPRESS(40)
      WAITMS(100)
      mikctura()
      klich()
      GETSCREEN
      IF_PIXEL_IN(80,64, 80,64, 1930288) // Минимум хп
         LOGWRITE ("slepoy boy - ХП прибавилось - boy")
         boy()
      Else
         LOGWRITE ("slepoy boy - ХП не прибавилось - slepoy boy")
         GOTO(slepoy boy)
      END_IF
   END_IF
END_SUB

SUB(boy)
   boy:
   LOGWRITE ("boy")
   GETSCREEN
   IF_PIXEL_IN(506,63, 506,63, 4539822) // Моб
      // Если Моб висит на персе, сканируем ХП перса
      LOGWRITE ("boy - Моб на персе")
      IF_PIXEL_IN(80,64, 80,64, 1930288) // Минимум хп
         LOGWRITE ("boy - у перса НЕ минимум ХП")
         // Если ХП перса не минимум, то проверяем ХП под клич
         IF_PIXEL_IN(242,63, 242,63, 3379030) // Хп под клич
            LOGWRITE ("boy - ХП достаточно")
            udar()
         Else
            LOGWRITE ("boy - у перса ХП под клич")
            // Если ХП уменьшилось
            klich()
            udar()
         END_IF
      Else
         // Если минимума ХП у перса нет
         BEEP(800,200)
         LOGWRITE ("boy - у перса ХП под микстуру")
         mikctura() // Пьем микстуру и снова проверяем ХП
         klich()
         GETSCREEN
         IF_PIXEL_IN(80,64, 80,64, 1930288) // Минимум хп
            LOGWRITE ("boy - Хп прибавилось")
            // Если ХП появилось, то бьем
            udar()
         Else
            LOGWRITE ("boy - ХП не прибавилось - переходим в слепой бой")
            // Если ХП не появилось, переходим в слепой бой
            BEEP(800,200)
            slepoy boy()
         END_IF
      END_IF
   Else
      LOGWRITE ("boy - моб не найден")
      // Если моб не найден, то проверяем минимальное ХП перса
      GETSCREEN
      IF_PIXEL_IN(80,64, 80,64, 1930288) // Минимум хп
         LOGWRITE ("boy - у перса остались ХП и переходим в пункт 1")
         // Если ХП есть, то переходим в режим отдыха
         GOTO(1)
      Else
         BEEP(800,200)
         LOGWRITE ("boy ХП нет - в слепой бой")
         // Если ХП нет, то переходим в слепой бой
         slepoy boy()
      END_IF
   END_IF
   GOTO(boy)
END_SUB

1:

LOGWRITE ("1")

GETSCREEN
IF_PIXEL_IN(506,63, 506,63, 4539822) // Моб
   LOGWRITE ("1 - На персе моб - в бой")
   boy()
END_IF

Time Out:
LOGWRITE ("Time Out")

GETSCREEN
IF_PIXEL_IN(749,645, 749,645, 16449535) // Дроп
   LOGWRITE ("Time Out - Дроп")
   KEYPRESS(70)
   WAITMS(1000)
Else
   GETSCREEN
   COLORMODE(6)
   IF_PICTURE_IN (2,44, 320,96, "хп-мп.bmp", -1, 100)
      LOGWRITE ("Time Out - ХП восстановлены - таргет")
      poisk moba:
      KEYPRESS(69) // Таргет
      WAITMS(1000)
      GETSCREEN
      IF_PIXEL_IN(506,63, 506,63, 4539822) // Моб
         IF_PIXEL_IN(844,850, 844,850, 9025437)  // Лассо
            KEYPRESS(57)
            LOGWRITE ("Time Out - Лассо")
            WAITMS(1850)
            LOGWRITE ("Time Out - Переходим в бой")
            boy()
         Else
            // Если лассо не найдено, идем на позицию Time Out
            LOGWRITE ("Time Out - лассо не найдено - Time Out")
            GETSCREEN
            IF_PIXEL_IN(28,729, 130,849, 14708977)  // Чат
               BEEP(800,200)
            END_IF
            GOTO(Time Out)
         END_IF
      Else
         // Если не найден моб, то идем на позицию Time Out
         LOGWRITE ("Time Out - моб не найден - Time Out")
         GOTO(Time Out)
      END_IF
   Else
      GETSCREEN
      IF_PIXEL_IN(28,729, 130,849, 14708977)  // Чат
         BEEP(800,200)
      END_IF
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN (1,83, 353,163, "второе дыхание.bmp", -1, 100)
         LOGWRITE ("Time Out - Бафы в порядке")
         // Если бафы в порядке, пополняем МП
         IF($time3 < $_time_t)
            LOGWRITE ("Time Out - медитация")
            KEYDOWN (16)
            WAITMS (50)
            KEYDOWN (48)
            WAITMS (50)
            KEYUP (48)
            KEYUP (16)
            WAITMS(10000)
            $time3 = $_time_t + 120
         END_IF
      Else
         LOGWRITE ("Time Out - Бафы закончились - бафаемся")
         // Если бафы закончились. Бафаемся
         KEYDOWN (16)
         WAITMS (50)
         KEYDOWN (189)
         WAITMS (50)
         KEYUP (189)
         KEYUP (16)
         WAITMS(1300)
         KEYDOWN (16)
         WAITMS (50)
         KEYDOWN (187)
         WAITMS (50)
         KEYUP (187)
         KEYUP (16)
         WAITMS(1300)
      END_IF
   END_IF
END_IF

И при запуске кликера стало вот такую хрень выдавать:

   

Чего я опять напортачил, а...?
Я не ду... Потому и не бу...

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Ребят, помогите плиз... :(
« Reply #12 on: September 09, 2014, 06:06:02 PM »
В стр 87 вызываешь boy()
А сам бой находится ниже.
Выше ты его переместить не можешь, т.к. из него вызывается слепой пью.

Вот ты и запутался. Работает, работает... Теперь у тебя подпрограммы вызывают друг друга, так быть не должно.


Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Ребят, помогите плиз... :(
« Reply #13 on: September 09, 2014, 06:21:19 PM »
Точно! GOTO(1) же надо! Подпрограмма boy же ниже, чем slepoy boy... Спс! )
Я не ду... Потому и не бу...