Author Topic: Помогите составить скрипт  (Read 3256 times)

0 Members and 1 Guest are viewing this topic.

ssanarhist

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Помогите составить скрипт
« on: October 08, 2014, 01:35:00 AM »
Сценарий такой. При нахождении заданного изображения (1) нажимается клавиша (1) и держится. Ищется следующее изображение (2), при нахождении клавиша (1) отпускается и нажимается клавиша (2), если не нашло - клавиша (1) удерживается.
Для второй клавиши: при нажатии клавиши (2) ищется изображение (3), если находит - клавиша отпускается и переходит к изображению (1), если нет - держится дальше.
Помогите составить, пожалуйста. Замучился уже.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите составить скрипт
« Reply #1 on: October 08, 2014, 01:56:41 AM »
Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "1.bmp", -1, 100) // ищем картинку 1
   KEYDOWN(#1) // зажимаем клавишу 1
   WAITMS(100)
   $check1 = 0
   WHILE($check1 = 0)
      GETSCREEN
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "2.bmp", -1, 100) // ищем картинку 2
         $check1 = 1
         KEYUP(#1) // отпускаем клавишу 1
         WAITMS(50)
         KEYDOWN(#2) // зажимаем клавишу 2
         WAITMS(100)
         $check2 = 0
         WHILE($check2 = 0)
            GETSCREEN
            IF_PICTURE_IN (0,0, $_xmax,$_ymax, "3.bmp", -1, 100) // ищем картинку 3
               $check2 = 1
               KEYUP(#2) // отпускаем клавишу 2
               WAITMS(100)
            ELSE
               WAITMS(50)
            END_IF
         END_CYC
      ELSE
         WAITMS(50)
      END_IF
   END_CYC
END_IF

ssanarhist

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Re: Помогите составить скрипт
« Reply #2 on: October 08, 2014, 10:16:18 AM »
Спасибо, работает. Но проходит только один раз, а как его зациклить на повторение? И если не нашло изображение 1 - пропустить эти операции и перейти по коду дальше?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите составить скрипт
« Reply #3 on: October 08, 2014, 10:41:00 AM »
Спасибо, работает. Но проходит только один раз, а как его зациклить на повторение? И если не нашло изображение 1 - пропустить эти операции и перейти по коду дальше?

Кликер по умолчанию выполняет скрипты бесконечно.
Если картинка 1 не найдена то выполнение перескочит к строке 29, если дальше ничего нет то скрипт начнется сначала.

ssanarhist

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Re: Помогите составить скрипт
« Reply #4 on: October 08, 2014, 08:32:25 PM »
Code: [Select]
1. if(iskeydown(1)=1)
   $x=$_xmouse
   $y=$_ymouse
   LOGWRITE ("Êîîðäèíàòû: ",$x," ",$y)
Else
   WAITMS(RND(50,74))
   
   GETSCREEN
   IF_PICTURE_IN (331,241, 586, 326, "svr.bmp")
      goto(e)
   END_IF
   
   GETSCREEN
   IF_PICTURE_IN (194,631, 393, 797, "ne.bmp")
      e:
      WAITMS(RND(3580,5011))
      KEYDOWN(#ALT)
      WAITMS(60)
      KEYPRESS(#S)
      WAITMS(60)
      KEYUP(#ALT)
      LOGWRITE ("Îñòàíîâèëè ïðîãðàììó")
   Else
     
      GETSCREEN
      IF_PICTURE_IN (905,9, 1019, 68, "pr.bmp")
         WAITMS(RND(1376,2604))
         KEYPRESS(#T)
         LOGWRITE ("Çàáðîñèëè")
         WAITMS(RND(1376,6604))
         
         b:
         GETSCREEN
         IF_PICTURE_IN (1,267,945,487,"k.bmp")
            WAITMS(RND(176,4604))
            KEYPRESS(#SPACE)
            WAITMS(RND(188,1102))
           LOGWRITE ("Êëþíóëà")
            LOGWRITE ("Òÿíåì")
            Goto(c)
         Else
            Goto(b)
           
 2.           c:
            GETSCREEN
            IF_PICTURE_IN (13,460, 970, 542, "sh.bmp")
               KEYDOWN(#H)
               LOGWRITE ("H")
               WAITMS(100)
               $check1 = 0
               WHILE($check1 = 0)
                  GETSCREEN
                  COLORMODE(6)
                  IF_PIXEL_IN (0,486, 1024,512, 4145151, 4161471)
                     $check1 = 1
                     KEYUP(#H)
                     LOGWRITE ("H")
                     WAITMS(50)
                     KEYDOWN(#G)
                     LOGWRITE ("G")
                     WAITMS(100)
                     $check2 = 0
                     WHILE($check2 = 0)
                        GETSCREEN
                        COLORMODE(6)
                        IF_PIXEL_IN (0,513, 1024,546, 4145151, 4161471)
                           $check2 = 1
                           KEYUP(#G)
                           LOGWRITE ("G")
                           WAITMS(100)
                        ELSE
                           WAITMS(50)
                        END_IF
                     END_CYC
                  ELSE
                     WAITMS(50)
                  END_IF
               END_CYC
            END_IF
            goto(c)
         Else
           
 3.           GETSCREEN
            IF_PICTURE_IN (382,332, 750, 497, "so.bmp")
               WAITMS(RND(2353,2975))
               screenshot
               KEYPRESS(#ENTER)
               LOGWRITE ("Âû ÷åãî-òî âûïîëíèëè")
            END_IF
Это часть кода. Ваш код в чистом виде работает, но не совсем так как хотелось бы. Объясню.
 мне пришлось заменить второе и третье изображение проверкой цвета - это была моя ошибка, изображения все время меняются. С проверкой цвета работает.
При запуске с Вашим кодом действует до END_CYC  END_IF один раз и переходит в самое начало кода (1). С помощью Goto(c) я этот вопрос решил, но Else после Goto не срабатывает. Код полностью зацикливает от с: до Goto(c).  Не переходит к пункту 3. Как это побороть?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите составить скрипт
« Reply #5 on: October 08, 2014, 08:52:19 PM »
Каждый IF_ должен завершиться своим END_IF у тебя их там порядком не хватает. Отсюда и бредокод.

ssanarhist

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Re: Помогите составить скрипт
« Reply #6 on: October 08, 2014, 08:56:50 PM »
Это часть кода. Большинство END_IF в конце всего кода. Или они должны быть именно после каждой операции IF?

ssanarhist

  • Зашел в гости
  • *
  • Posts: 11
    • View Profile
Re: Помогите составить скрипт
« Reply #7 on: October 08, 2014, 10:43:00 PM »
Заработало. Решение найдено. Спасибо за помощь.