Author Topic: Нужна помощь - как сделать условие  (Read 4777 times)

0 Members and 2 Guests are viewing this topic.

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Нужна помощь - как сделать условие
« on: September 16, 2014, 03:58:43 PM »
В общем ситуация такая. Персонаж бьет моба и кликер смотрит - присутствует ли пиксель ХП моба. Если присутствует, то продолжает бой. Если цвет ХП моба исчезает, то кликер переводит персонажа в режим тайм-аута. У меня несколько раз кликер перевел персонажа в тайм-аут тогда, когда моб еще не был убит. Я никак не мог понять - в чём дело... В конце концов, после того, как кликер теряет моба, я решил поставить команду, чтоб кликер сделал скрин и вот, что он мне выдал:



Теперь проблема стала ясна и передо мной встала задача - как написать такое условие, в котором, если нужный цвет пикселя не найден, то еще секунду, или две продолжался бы поиск и в случае положительного результата, скрипт продолжался бы - продолжился бы бой, а если нужный цвет так и не найдется за эти две секунды, то макрос переводил бы перса в тайм-аут? Надеюсь, что написал понятно.
Я не ду... Потому и не бу...

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Нужна помощь - как сделать условие
« Reply #1 on: September 16, 2014, 04:22:18 PM »
Лучше наверно даже чтоб таймер в миллисекундах был.
Я не ду... Потому и не бу...

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Нужна помощь - как сделать условие
« Reply #2 on: September 16, 2014, 04:31:47 PM »
Не лучше, а обязательно
Code: (clickermann) [Select]
$time = $_ms + 2000
WHILE($time > $_ms)
   GETSCREEN
   IF_PIXEL_IN(0,0,$_xmax,$_ymax, 255)
      $time = 0
   ELSE
      WAITMS(50)
   END_IF
END_CYC

IF($time ! 0)
   GOTO(тайм-аут)  //тайм-аут
END_IF


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Нужна помощь - как сделать условие
« Reply #3 on: September 16, 2014, 04:32:52 PM »
Надеюсь разберешься....

Code: (clickermann) [Select]
$check = 0 // переключатель
$time = $_time_t + 60 // таймер на 60 сек (чсло не важно просто чтоб цикл не прерывался)
WHILE($time > $_time_t) // цикл выполняется пока не истечет время
   GETSCREEN
   IF(PXL(10,10) = 255) // анализ пиксела
      LCLICK(10,10)
      WAITMS(100)
      $check = 0
      $time = $_time_t + 60 // если найден то снова 60 сек на цикл
   ELSE
      IF($check = 0)
         $check = 1 // условие сработает 1 раз чтоб на следующих проходах снова 2е сек не добавилось
         $time1 = $_time_t + 2 // если не найден то сбавляем время до 2х сек
      END_IF
      WAITMS(50)
   END_IF
END_CYC

// и если пиксел за 2е сек так и не найдется то цикл завершится

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Нужна помощь - как сделать условие
« Reply #4 on: September 16, 2014, 04:38:45 PM »
Чё-то я даже не знаю - что выбрать  :) Сейчас буду разбираться  :)
Я не ду... Потому и не бу...

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Нужна помощь - как сделать условие
« Reply #5 on: September 16, 2014, 04:39:44 PM »
Не лучше, а обязательно
Code: (clickermann) [Select]
$time = $_ms + 2000
WHILE($time > $_ms)
   GETSCREEN
   IF_PIXEL_IN(0,0,$_xmax,$_ymax, 255)
      $time = 0
   ELSE
      WAITMS(50)
   END_IF
END_CYC

IF($time ! 0)
   GOTO(тайм-аут)  //тайм-аут
END_IF

Тут, в случае нахождения нужного цвета, скрипт переходит на 14-ую строку?
Я не ду... Потому и не бу...

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Нужна помощь - как сделать условие
« Reply #6 on: September 16, 2014, 04:45:03 PM »
Тут, в случае нахождения нужного цвета, скрипт переходит на 14-ую строку?
Да.


Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Нужна помощь - как сделать условие
« Reply #7 on: September 16, 2014, 04:46:27 PM »
ОК! Спс!
Я не ду... Потому и не бу...

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Нужна помощь - как сделать условие
« Reply #8 on: September 16, 2014, 04:47:25 PM »
Надеюсь разберешься....

Code: (clickermann) [Select]
$check = 0 // переключатель
$time = $_time_t + 60 // таймер на 60 сек (чсло не важно просто чтоб цикл не прерывался)
WHILE($time > $_time_t) // цикл выполняется пока не истечет время
   GETSCREEN
   IF(PXL(10,10) = 255) // анализ пиксела
      LCLICK(10,10)
      WAITMS(100)
      $check = 0
      $time = $_time_t + 60 // если найден то снова 60 сек на цикл
   ELSE
      IF($check = 0)
         $check = 1 // условие сработает 1 раз чтоб на следующих проходах снова 2е сек не добавилось
         $time1 = $_time_t + 2 // если не найден то сбавляем время до 2х сек
      END_IF
      WAITMS(50)
   END_IF
END_CYC

// и если пиксел за 2е сек так и не найдется то цикл завершится

Тоже спасибо! Сохраню у себя в справках )) Всё пригодится... ))
Я не ду... Потому и не бу...

Atas

  • Активный участник
  • ***
  • Posts: 147
    • View Profile
Re: Нужна помощь - как сделать условие
« Reply #9 on: September 16, 2014, 05:37:32 PM »
COLORMODE(7) тебе в помощь.
Отслеживается появление серого, проверяется исчезновением красного. Задержки и перепроверки по мере надобности.



Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Нужна помощь - как сделать условие
« Reply #10 on: September 17, 2014, 07:00:19 PM »
COLORMODE(7) тебе в помощь.
Отслеживается появление серого, проверяется исчезновением красного. Задержки и перепроверки по мере надобности.



Я стараюсь обходить IF_PICTURE_IN в скриптах ))
Я не ду... Потому и не бу...

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Нужна помощь - как сделать условие
« Reply #11 on: September 18, 2014, 01:27:50 PM »
Если есть возможность, то тоже обхожу )))
Я не ду... Потому и не бу...