Author Topic: Проверка условия перед выполнением действия  (Read 1488 times)

0 Members and 1 Guest are viewing this topic.

Hooligan

  • Освоившийся
  • **
  • Posts: 26
    • View Profile
Всем привет.
Как написать двойную проверку.

К примеру нажимаю кнопку "задания"
В открывшемся окне висят, как выполненные задания, так и нет. Выполняю поиск нужного мне по картинке. Она там есть всегда. Но оно уже не помечено красной точкой потому что его выполнили. К примеру это "фонтан желаний". Но желания уже собраны и остались только платные.

Вопрос. Как сделать так, чтобы бот заранее проверил метку о выполнении задании.

По простому.

Задания
Поиск фонтана
Нашли Фонтан
Проверка на красную метку.
Нет метки - возврат обратно
Есть метка заходим в фонтан
Собираем желания до появления платных
Появились платные
Конец сбора
Выход обратно
Все завязано в SUB END_SUB
Заранее спасибо!

Code: [Select]

SUB(ФОНТАН)
print("_+ФОНТАН+_")
сброс()
//print("Ищу кнопку Ежедневные задания")
WNDBUMP( wndfind("BlueStacks"))
$time = $_time_t + 10
WHILE($time > $_time_t)
   GETSCREEN
   COLORMODE(6)
   IF_PICTURE_IN (5,430, 55,620, "Ежедневные задания.bmp", -1, 60)
      $time = 0
      //print("есть Ежедневные задания")
      LCLICK($_return1 +1, $_return2)
      WAITMS(2500)
   ELSE
      //print("нет Ежедневные задания")
      KEYPRESS(#ESC)
      WAITMS(500)
   END_IF
   //END_CYC
   
   MOVE(174,560)
   WAITMS(500)
   LDOWN($_xmouse,$_ymouse) // рисуем
   WAITMS(500)
   m_move(174,240) // передвигаем
   WAITMS(500)
   LUP(174,245) // отпускаем
   WAITMS(1500)
   
   //print("Ищу меню фонтана")
   $time = $_time_t + 10
   WHILE($time > $_time_t)
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN (228,228, 402,720, "фонтан.bmp", -1, 60)
         $time = 0
         //print("есть меню фонтана")
         LCLICK($_return1 +50, $_return2 +20)
         WAITMS(3500)
      ELSE
         print("нет меню фонтана")
         KEYPRESS(#ESC)
         KEYPRESS(#ESC)
         WAITMS(500)
      END_IF
      //END_CYC
     
      //print("Ищу желания")
      //проверка платных желаний:
      WNDBUMP( wndfind("BlueStacks"))
      $time = $_time_t + 30
      WHILE($time > $_time_t)
         GETSCREEN
         COLORMODE(6)
         IF_PICTURE_IN (30,277, 161,373, "золото науки.bmp", -1, 80)
            $time = 0
            print("награды получены")
            //print("завершаю сбор наград")
            сброс()
         ELSE
            GETSCREEN
            COLORMODE(6)
            IF_PICTURE_IN (3,226, 405,716, "миф в фонтане.bmp", -1, 60)
               //print("есть бесплатные желания")
               //print("забиваю желания")
               LCLICK(365,508)
               WAITMS(500)
               LCLICK(365,508)
               WAITMS(500)
               LCLICK(365,508)
               WAITMS(500)
               LCLICK(365,508)
               WAITMS(500)
               LCLICK(365,508)
               WAITMS(500)
               //goto(проверка платных желаний)
            END_IF
         END_IF
      END_CYC
   END_CYC
END_CYC
END_SUB
« Last Edit: July 25, 2018, 05:40:57 PM by Hooligan »

Hooligan

  • Освоившийся
  • **
  • Posts: 26
    • View Profile
Колхоз в коде по моему)))

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Что у тебя там за бред с циклами?
Code: (clickermann) [Select]
   $time = $_time_t + 10
   WHILE($time > $_time_t)

Значит окончания закоментил и в конце подпрограммы добавил, чтоб синтаксис не посыпался. Все верно, только реально в цикличность входит последний цикл
Code: (clickermann) [Select]
         $time = $_time_t + 30
         WHILE($time > $_time_t)
Остальные не пойми для чего.

На счет дополнительной проверки
Вставь еще одно условие с анализом цвета относительно возвращенной координаты

Code: (clickermann) [Select]
      GETSCREEN
      COLORMODE(6)
      IF_PICTURE_IN (5,430, 55,620, "Ежедневные задания.bmp", -1, 60)
         $sav_x = $_return1 // Сохраняем координату картинки
         $sav_y = $_return2
         IF_PIXEL_IN($sav_x,$sav_y-10, $sav_x+20,$sav_y+10, 255) // анализируем цвет
            LCLICK($sav_x+1,$sav_y)
            WAITMS(2500)
            $time = 0
         END_IF
      ELSE
         //print("нет Ежедневные задания")
         KEYPRESS(#ESC)
         WAITMS(500)
      END_IF