Author Topic: В чём ошибка?  (Read 11857 times)

0 Members and 2 Guests are viewing this topic.

kostya1234599

  • Освоившийся
  • **
  • Posts: 25
    • View Profile
Re: В чём ошибка?
« Reply #15 on: July 18, 2014, 08:14:09 AM »
"!=" - это в С++ логическое "не равно" так и знал, что напартачил))
GOTO написал для себя) , это ведь не мешает выполнению программы?)
Ещё 1 вопрос:
У меня мышь х7 на ней 5 клавиш, как послать нажатие на одну из кнопок которые не правая и не левая кнопки мыши?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: В чём ошибка?
« Reply #16 on: July 18, 2014, 12:37:06 PM »
Ну как же ты пошлешь нажатия на аппаратные кнопки устройства???

kostya1234599

  • Освоившийся
  • **
  • Posts: 25
    • View Profile
Re: В чём ошибка?
« Reply #17 on: July 18, 2014, 04:20:22 PM »
Должен быть способ, но не в clikermann. Например в кликермэне я нажму кнопку "m" а эта кнопка будет выполнять функцию кнопки на мышке.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: В чём ошибка?
« Reply #18 on: July 18, 2014, 06:49:41 PM »
А зачем запрягать мышь если кликер может делать тоже самое?

kostya1234599

  • Освоившийся
  • **
  • Posts: 25
    • View Profile
Re: В чём ошибка?
« Reply #19 on: July 18, 2014, 07:14:24 PM »
Если бы всё так просто было)) Фрост в режиме пс2 не пускает клики, но пускает MOVE(x,y) без пс2 мове не работает, мне отается только сделать так, потому что оскар эдитор х7 фрост не трогает и клик нормально доходит до клиента.
Сейчас только одна проблема - как это реализовать

kostya1234599

  • Освоившийся
  • **
  • Posts: 25
    • View Profile
Re: В чём ошибка?
« Reply #20 on: July 20, 2014, 02:23:04 AM »
Пока что дошёл до этого, вроде бы это финальная часть кода, осталось написать программу С++ которая пишет этот код в .txt с координатами х, х1, у, у1 которые буду вводить с клавиатуры.
Code: (clickermann) [Select]
#ps2_keyboard
#ps2_mouse
M5:
DEFINE ($C, 0)
GETSCREEN
IF(PXL(x,y) = 14406087) //проверка на появление окна рыбалки
    M1:
    GETSCREEN
    IF(PXL(x-91,y+244) = 10446592) //проверка на появление полоски
       M2:
       GETSCREEN
       $Blue=PXLCOUNT(x-91,y+244,x+134,y+244,10446592)
       WAIT(2)
       IF($C ! 1) // тот самый IF который делает 1 действие, от которого начинается проверка состояния поплавка по полоске
          $C=$C+1
          $A=$Blue
          KEYPRESS(#F2)
          GOTO(M2)
       ELSE
          GOTO(M3)
       END_IF
       M3:
       IF($A>$Blue)
          WAITMS(500)
          $A=$Blue
          KEYPRESS(#F2)
          GOTO(M2)
       ELSE
          WAITMS(500)
          $A=$Blue
          KEYPRESS(#F3)
          GOTO(M4)
       END_IF
       M4:
       GETSCREEN
       $Blue=PXLCOUNT(x-91,y+244,x+134,y+244,10446592)
       WAIT(2)
        IF($A<$Blue)
          WAITMS(500)
          $A=$Blue
          KEYPRESS(#F2)
          GOTO(M2)
       ELSE
          WAITMS(500)
          $A=$Blue
          KEYPRESS(#F3)
          GOTO(M4)
       END_IF
    ELSE
       WAIT(1)  //ждать 1 сек если полоска не появилась и начать заново проверку полоски
       GOTO(M1)
    END_IF
ELSE
 GETSCREEN
 IF(PXL(685,195) = 12377059)
    WAITMS(10)
    KEYSTRING("/target ")
    KEYDOWN(#CTRL)
    KEYPRESS(#SHIFT)
    KEYUP(#CTRL)
    KEYDOWN(#SHIFT)
    KEYPRESS(#p)
    KEYUP(#SHIFT)
    KEYSTRING("jkjnfz")
    KEYDOWN(#SHIFT)
    KEYPRESS(#h)
    KEYUP(#SHIFT)
    KEYSTRING("ecfkrf")
    KEYDOWN(#CTRL)
    KEYPRESS(#SHIFT)
    KEYPRESS(#SHIFT)
    KEYUP(#CTRL)
    KEYPRESS(#ENTER) 
    KEYSTRING("/target ")
    KEYDOWN(#CTRL)
    KEYPRESS(#SHIFT)
    KEYUP(#CTRL)
    KEYDOWN(#SHIFT)
    KEYPRESS(#p)
    KEYUP(#SHIFT)
    KEYSTRING("jkjnfz")
    KEYDOWN(#SHIFT)
    KEYPRESS(#h)
    KEYUP(#SHIFT)
    KEYSTRING("ecfkrf")
    KEYDOWN(#CTRL)
    KEYPRESS(#SHIFT)
    KEYPRESS(#SHIFT)
    KEYUP(#CTRL)
    KEYPRESS(#ENTER) //набрать в чат "/target Золотая Русалка" 2 раза, учитывая смену языков. (во время работы макроса должен быть включёнными русский язык)
    WAITMS(500)
    GETSCREEN
    IF(PXL(x1,y1) = 13748415)
       MOVE(x1-97,y1+132) //взять награду       
       // тут по идее должен быть клик, но его делает не кликермэн, а мышка х7.
       WAITMS(500)
       KEYPRESS(#ESC)
       WAITMS(10)
       KEYPRESS(#ESC)
       WAITMS(10)
       KEYPRESS(#F1)
       GOTO(M5)
    ELSE   
       KEYPRESS(#F1)
       GOTO(M5)
    END_IF
 ELSE
    KEYPRESS(#F1)
    GOTO(M5)
 END_IF
END_IF
« Last Edit: July 20, 2014, 02:26:16 AM by kostya1234599 »

kostya1234599

  • Освоившийся
  • **
  • Posts: 25
    • View Profile
Re: В чём ошибка?
« Reply #21 on: July 20, 2014, 11:05:27 PM »
В команде PXLCOUNT(x,y,x1,y1,цвет)
Можно ли указывать несколько цветов? полоска оказалось неоднородной))
 

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: В чём ошибка?
« Reply #22 on: July 20, 2014, 11:15:41 PM »
Нет, но несложно догадаться что цифры можно складывать  ;)

Code: (clickermann) [Select]
GETSCREEN
$a = PXLCOUNT(407,247, 465,312, 32768)
$a = $a+PXLCOUNT(407,247, 465,312, 14450804)
$a = $a+PXLCOUNT(407,247, 465,312, 16119285)

LOGWRITE ($a)
HALT

kostya1234599

  • Освоившийся
  • **
  • Posts: 25
    • View Profile
Re: В чём ошибка?
« Reply #23 on: July 20, 2014, 11:34:17 PM »
Спасибо) Пошёл править программу)) А то уже написал код в .ехе , а потом узнал что полоса не однородного цвета

kostya1234599

  • Освоившийся
  • **
  • Posts: 25
    • View Profile
Re: В чём ошибка?
« Reply #24 on: July 21, 2014, 12:29:28 AM »
Тестирую код на работоспособность, что-то не так, не могу понять, т.к. всегда нажимается F2,  даже если нажимается ф2 и увеличивается полоска, то должно нажиматься ф3, а все равно нажимается ф2.
Code: (clickermann) [Select]
#ps2_keyboard
#ps2_mouse
M5:
DEFINE($C, 0)
GETSCREEN
IF(PXL(1197,43) = 14406087)
   M1:
   GETSCREEN
   IF(PXL(1106,287) = 10118913)
      M2:
      GETSCREEN
      IF(PXL(1197,43) = 14406087)
         GETSCREEN
         $Blue = PXLCOUNT(1106,287,1331,287, 10446592)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10118913)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10249473)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10315265)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10315264)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10381056)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10446848)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10447104)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10447360)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10118401)
         IF($C !1)
            $C = $C + 1
            $A = $Blue
            KEYPRESS(#F2)
    WAITMS(2000)
            GOTO(M2)
         ELSE
            GOTO(M3)
         END_IF
         M3:
         IF($A>$Blue)  // что то в этом ифе, т.к. когда увеличивается полоска ($A<$Blue) должен нажиматься Ф3, но он не нажимается. Вот и ломаю голову.
            $A = $Blue
            KEYPRESS(#F2)
            WAITMS(2000)
            GOTO(M2)
         ELSE
            $A = $Blue
            KEYPRESS(#F3)
            WAITMS(2000)
            GOTO(M4)
         END_IF
      ELSE
      END_IF   
      M4:
      GETSCREEN
      IF(PXL(1197,43) = 14406087)
         GETSCREEN
         $Blue = PXLCOUNT(1106,287,1331,287, 10446592)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10118913)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10249473)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10315265)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10315264)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10381056)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10446848)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10447104)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10447360)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10118401)
         IF($A<$Blue)
            $A = $Blue
            KEYPRESS(#F2)
    WAITMS(2000)
            GOTO(M2)
         ELSE
            $A = $Blue
            KEYPRESS(#F3)
            WAITMS(2000)
            GOTO(M4)
         END_IF
      ELSE
      END_IF   
   ELSE
      WAIT(1)
      GOTO(M1)
   END_IF
ELSE
   GETSCREEN
   IF(PXL(685, 195) = 12377059)
      WAITMS(10)
      KEYSTRING(/target)
      KEYPRESS(32)
      KEYDOWN(#CTRL)
      KEYPRESS(#SHIFT)
      KEYUP(#CTRL)
      KEYDOWN(#SHIFT)
      KEYPRESS(#p)
      KEYUP(#SHIFT)
      KEYSTRING(jkjnfz)
      KEYDOWN(#SHIFT)
      KEYPRESS(#h)
      KEYUP(#SHIFT)
      KEYSTRING(ecfkrf)
      KEYDOWN(#CTRL)
      KEYPRESS(#SHIFT)
      KEYPRESS(#SHIFT)
      KEYUP(#CTRL)
      KEYPRESS(#ENTER)
      KEYSTRING(/target)
      KEYPRESS(32)
      KEYDOWN(#CTRL)
      KEYPRESS(#SHIFT)
      KEYUP(#CTRL)
      KEYDOWN(#SHIFT)
      KEYPRESS(#p)
      KEYUP(#SHIFT)
      KEYSTRING(jkjnfz)
      KEYDOWN(#SHIFT)
      KEYPRESS(#h)
      KEYUP(#SHIFT)
      KEYSTRING(ecfkrf)
      KEYDOWN(#CTRL)
      KEYPRESS(#SHIFT)
      KEYPRESS(#SHIFT)
      KEYUP(#CTRL)
      KEYPRESS(#ENTER)
      WAITMS(500)
      GETSCREEN
      IF(PXL(1347,470) = 13748415)
         MOVE(1250,602)
         WAITMS(500)
         KEYPRESS(#ESC)
         WAITMS(10)
         KEYPRESS(#ESC)
         WAITMS(10)
         KEYPRESS(#F1)
         WAIT(3)
GOTO(M5)
      ELSE
         KEYPRESS(#F1)
         WAIT(3)
         GOTO(M5)
      END_IF
   ELSE
      KEYPRESS(#F1)
      WAIT(3)
      GOTO(M5)
   END_IF
END_IF
« Last Edit: July 21, 2014, 12:38:23 AM by kostya1234599 »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: В чём ошибка?
« Reply #25 on: July 21, 2014, 01:52:26 AM »
Строки всегда пиши в кавычках. Выкинул из скрипта лишнее и вставил запись в лог для отладки. Чтоб не гадать сам увидишь какие значения проскакивают в переменных. Параметр #logfile заставит кликер скидывать лог в файл в папку со скриптом.

Code: (clickermann) [Select]
#ps2_keyboard
#ps2_mouse

#logfile

GETSCREEN
IF(PXL(1197,43) = 14406087)
   M1:
   GETSCREEN
   IF(PXL(1106,287) = 10118913)
      M2:
      GETSCREEN
      IF(PXL(1197,43) = 14406087)
         $Blue = PXLCOUNT(1106,287,1331,287, 10446592)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10118913)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10249473)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10315265)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10315264)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10381056)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10446848)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10447104)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10447360)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10118401)
         IF($C!1)
            $C = $C + 1
            $A = $Blue
            KEYPRESS(#F2)
            WAITMS(2000)
            GOTO(M2)
         END_IF
         IF($A>$Blue)  // что то в этом ифе, т.к. когда увеличивается полоска ($A<$Blue) должен нажиматься Ф3, но он не нажимается. Вот и ломаю голову.
            LOGWRITE ("F2 Blue 1 ", $Blue, " A1 ",$A)
            $A = $Blue
            KEYPRESS(#F2)
            WAITMS(2000)
            GOTO(M2)
         ELSE
            LOGWRITE ("F3 Blue 1 ", $Blue, " A1 ",$A)
            $A = $Blue
            KEYPRESS(#F3)
            WAITMS(2000)
         END_IF
      END_IF
      M4:
      GETSCREEN
      IF(PXL(1197,43) = 14406087)
         $Blue = PXLCOUNT(1106,287,1331,287, 10446592)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10118913)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10249473)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10315265)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10315264)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10381056)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10446848)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10447104)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10447360)
         $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10118401)
         IF($A<$Blue)
            LOGWRITE ("F2 Blue 2 ", $Blue, " A2 ",$A)
            $A = $Blue
            KEYPRESS(#F2)
            WAITMS(2000)
            GOTO(M2)
         ELSE
            LOGWRITE ("F3 Blue 2 ", $Blue, " A2 ",$A)
            $A = $Blue
            KEYPRESS(#F3)
            WAITMS(2000)
            GOTO(M4)
         END_IF
      END_IF
   ELSE
      WAIT(1)
      GOTO(M1)
   END_IF
ELSE
   GETSCREEN
   IF(PXL(685, 195) = 12377059)
      WAITMS(10)
      KEYSTRING("/target")
      KEYPRESS(32)
      KEYDOWN(#CTRL)
      KEYPRESS(#SHIFT)
      KEYUP(#CTRL)
      KEYDOWN(#SHIFT)
      KEYPRESS(#p)
      KEYUP(#SHIFT)
      KEYSTRING("jkjnfz")
      KEYDOWN(#SHIFT)
      KEYPRESS(#h)
      KEYUP(#SHIFT)
      KEYSTRING("ecfkrf")
      KEYDOWN(#CTRL)
      KEYPRESS(#SHIFT)
      KEYPRESS(#SHIFT)
      KEYUP(#CTRL)
      KEYPRESS(#ENTER)
      KEYSTRING("/target")
      KEYPRESS(32)
      KEYDOWN(#CTRL)
      KEYPRESS(#SHIFT)
      KEYUP(#CTRL)
      KEYDOWN(#SHIFT)
      KEYPRESS(#p)
      KEYUP(#SHIFT)
      KEYSTRING("jkjnfz")
      KEYDOWN(#SHIFT)
      KEYPRESS(#h)
      KEYUP(#SHIFT)
      KEYSTRING("ecfkrf")
      KEYDOWN(#CTRL)
      KEYPRESS(#SHIFT)
      KEYPRESS(#SHIFT)
      KEYUP(#CTRL)
      KEYPRESS(#ENTER)
      WAITMS(500)
      GETSCREEN
      IF(PXL(1347,470) = 13748415)
         MOVE(1250,602)
         WAITMS(500)
         KEYPRESS(#ESC)
         WAITMS(10)
         KEYPRESS(#ESC)
         WAITMS(10)
         KEYPRESS(#F1)
         WAIT(3)
      ELSE
         KEYPRESS(#F1)
         WAIT(3)
      END_IF
   ELSE
      KEYPRESS(#F1)
      WAIT(3)
   END_IF
END_IF

kostya1234599

  • Освоившийся
  • **
  • Posts: 25
    • View Profile
Re: В чём ошибка?
« Reply #26 on: July 21, 2014, 09:12:54 AM »
Я модифицировал код, (оказывается полоска меняет цвет на красный и нужно всё делать наоборот) и удалять GOTO в той версии кода может быть нужно было, но в этой нужно чтобы GOTO был на месте.
Code: (clickermann) [Select]
#ps2_keyboard
#ps2_mouse
#logfile
M5:
DEFINE($C, 0)
DEFINE($A, 0)
DEFINE($Blue, 0)
GETSCREEN
IF(PXL(1197,43) = 14406087) //проверка на окно рыбалки
   M1:
   GETSCREEN
   IF((PXL(1104,287) = 7886082)|(PXL(1104,287) = 401020) //проверка на полосу
      M2:
      GETSCREEN
      IF((PXL(1104,287) = 7886082)|(PXL(1104,287) = 401020))
         IF(PXL(1104,287) = 7886082)  // если полоса синяя
            $Blue = PXLCOUNT(1106,287,1331,287, 10446592)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10118913)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10249473)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10315265)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10315264)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10381056)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10446848)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10447104)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10447360)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10118401)
            IF($C ! 1)
               $C = $C + 1
               $A = $Blue
               KEYPRESS(#F2)
       WAITMS(2000)
               GOTO(M2)
            ELSE
            END_IF
            IF($A>$Blue)
               LOGWRITE ("F2 Blue 1 ", $Blue, " A1 ",$A)
       $A = $Blue
               KEYPRESS(#F2)
               WAITMS(2000)
               GOTO(M2)
            ELSE
               LOGWRITE ("F3 Blue 1 ", $Blue, " A1 ",$A)
       $A = $Blue
               KEYPRESS(#F3)
               WAITMS(2000)
               GOTO(M4)
            END_IF
         ELSE         //иначе
    IF(PXL(1104,287) = 401020) //если красная
               $Blue = PXLCOUNT(1106,287,1331,287, 468366)
               $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468109)
               $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468110)
               $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468111)
               $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468112)
               $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468113)
               $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468369)
               $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468368)
               IF($C ! 1)
                  $C = $C + 1
                  $A = $Blue
                  KEYPRESS(#F2)
          WAITMS(2000)
                  GOTO(M2)
                  ELSE
                  END_IF
                  IF($A>$Blue)
                     LOGWRITE ("F2 Blue 1 ", $Blue, " A1 ",$A)
             $A = $Blue
                     KEYPRESS(#F2)
                 WAITMS(2000)
                     GOTO(M2)
                  ELSE
                     LOGWRITE ("F3 Blue 1 ", $Blue, " A1 ",$A)
     $A = $Blue
                     KEYPRESS(#F3)
                     WAITMS(2000)
                     GOTO(M4)
                  END_IF
               ELSE
          GOTO(M5)
               END_IF   
   END_IF
      ELSE
          GOTO(M5)
      END_IF
      M4:
      GETSCREEN
      IF((PXL(1104,287) = 7886082)|(PXL(1104,287) = 401020))
         IF(PXL(1104,287) = 7886082)
            $Blue = PXLCOUNT(1106,287,1331,287, 10446592)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10118913)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10249473)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10315265)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10315264)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10381056)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10446848)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10447104)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10447360)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10118401)
            IF($A>$Blue)
               LOGWRITE ("F3 Blue 1 ", $Blue, " A1 ",$A)
       $A = $Blue
               KEYPRESS(#F3)
               WAITMS(2000)
               GOTO(M2)
            ELSE
               LOGWRITE ("F2 Blue 1 ", $Blue, " A1 ",$A)
       $A = $Blue
               KEYPRESS(#F2)
               WAITMS(2000)
               GOTO(M4)
            END_IF
         ELSE
       IF(PXL(1104,287) = 401020)
                  $Blue = PXLCOUNT(1106,287,1331,287, 468366)
                  $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468109)
                  $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468110)
                  $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468111)
                  $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468112)
                  $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468113)
                  $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468369)
                  $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468368)
                  IF($A>$Blue)
                     LOGWRITE ("F3 Blue 1 ", $Blue, " A1 ",$A)
             $A = $Blue
                     KEYPRESS(#F3)
                     WAITMS(2000)
                     GOTO(M2)
                  ELSE
                      LOGWRITE ("F2 Blue 1 ", $Blue, " A1 ",$A)
                      $A = $Blue
                      KEYPRESS(#F2)
                      WAITMS(2000)
                      GOTO(M4)
                  END_IF
               ELSE
          GOTO(M5)
               END_IF 
          END_IF
      ELSE    
         GOTO(M5)
      END_IF
   ELSE
      WAIT(1)
      GOTO(M1)
   END_IF
ELSE
   IF(PXL(685, 195) = 12377059)
      WAITMS(10)
      KEYSTRING(/target)
      KEYPRESS(32)
      KEYDOWN(#CTRL)
      KEYPRESS(#SHIFT)
      KEYUP(#CTRL)
      KEYDOWN(#SHIFT)
      KEYPRESS(#p)
      KEYUP(#SHIFT)
      KEYSTRING(jkjnfz)
      KEYDOWN(#SHIFT)
      KEYPRESS(#h)
      KEYUP(#SHIFT)
      KEYSTRING(ecfkrf)
      KEYDOWN(#CTRL)
      KEYPRESS(#SHIFT)
      KEYPRESS(#SHIFT)
      KEYUP(#CTRL)
      KEYPRESS(#ENTER)
      KEYSTRING(/target)
      KEYPRESS(32)
      KEYDOWN(#CTRL)
      KEYPRESS(#SHIFT)
      KEYUP(#CTRL)
      KEYDOWN(#SHIFT)
      KEYPRESS(#p)
      KEYUP(#SHIFT)
      KEYSTRING(jkjnfz)
      KEYDOWN(#SHIFT)
      KEYPRESS(#h)
      KEYUP(#SHIFT)
      KEYSTRING(ecfkrf)
      KEYDOWN(#CTRL)
      KEYPRESS(#SHIFT)
      KEYPRESS(#SHIFT)
      KEYUP(#CTRL)
      KEYPRESS(#ENTER)
      WAITMS(500)
      GETSCREEN
      IF(PXL(1347,470) = 13748415)
         MOVE(1250,602)
         WAITMS(500)
         KEYPRESS(#ESC)
         WAITMS(10)
         KEYPRESS(#ESC)
         WAITMS(10)
         KEYPRESS(#F1)
         WAIT(3)
GOTO(M5)
      ELSE
         KEYPRESS(#F1)
         WAIT(3)
         GOTO(M5)
      END_IF
   ELSE
      KEYPRESS(#F1)
      WAIT(3)
      GOTO(M5)
   END_IF
END_IF

kostya1234599

  • Освоившийся
  • **
  • Posts: 25
    • View Profile
Re: В чём ошибка?
« Reply #27 on: July 21, 2014, 01:09:00 PM »
В общем подправил код, самый внешний иф (первая его половина) работает как часы, хотя и есть минусы. Берусь за решение того, что после вылова русалки ( ELSE самого внешнего ифа) он походу не видит пиксель, попробую разобраться, вот код, я не стал редактировать отступы
Code: (clickermann) [Select]
#ps2_keyboard
#ps2_mouse
#logfile
M5:
DEFINE($C, 0)
DEFINE($A, 0)
DEFINE($Blue, 0)
GETSCREEN
IF(PXL(1197,43) = 14406087) //ïðîâåðêà íà ïîÿâëåíèå îêíà ðûáàëêè
   M1:
   GETSCREEN
   IF((PXL(1104,287) = 7886082)|(PXL(1104,287) = 401020) //ïðîâåðêà íà ïîÿâëåíèå ïîëîñêè
M2:
      GETSCREEN
IF((PXL(1104,287) = 7886082)|(PXL(1104,287) = 401020))
   IF(PXL(1104,287) = 7886082)  // Åñëè ïîëîñà ñèíÿÿ
            $Blue = PXLCOUNT(1106,287,1331,287, 10446592)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10118913)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10249473)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10315265)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10315264)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10381056)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10446848)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10447104)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10447360)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10118401)
            IF($C ! 1)
               $C = $C + 1
               $A = $Blue
               KEYPRESS(#F2)
       WAITMS(2000)
               GOTO(M2)
            ELSE
            END_IF
            IF($A>$Blue)
               LOGWRITE ("F2 Blue 1 ", $Blue, " A1 ",$A)
$A = $Blue
               KEYPRESS(#F2)
               WAITMS(2000)
               GOTO(M2)
            ELSE
               LOGWRITE ("F3 Blue 1 ", $Blue, " A1 ",$A)
$A = $Blue
               KEYPRESS(#F3)
               WAITMS(2000)
               GOTO(M4)
            END_IF
         ELSE         //èíà÷å
      IF(PXL(1104,287) = 401020) //åñëè ïîëîñà êðàñíàÿ
               $Blue = PXLCOUNT(1106,287,1331,287, 468366)
               $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468109)
               $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468110)
               $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468111)
               $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468112)
               $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468113)
               $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468369)
               $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468368)
               IF($C ! 1)
                  $C = $C + 1
                  $A = $Blue
                  KEYPRESS(#F2)
          WAITMS(2000)
                  GOTO(M2)
                  ELSE
                  END_IF
IF($A>$Blue)
                  LOGWRITE ("F2 Blue 1 ", $Blue, " A1 ",$A)
$A = $Blue
                  KEYPRESS(#F2)
        WAITMS(2000)
                  GOTO(M2)
               ELSE
                  LOGWRITE ("F3 Blue 1 ", $Blue, " A1 ",$A)
$A = $Blue
                  KEYPRESS(#F3)
                  WAITMS(2000)
                  GOTO(M4)
               END_IF
            ELSE
   GOTO(M5)
            END_IF   
   END_IF //êîíåö âåòêè êðàñíûé/ñèíèé
      ELSE
         GOTO(M5)
END_IF  //êîíåö ïðîâåðêè íà êðàñíûé/ñèíèé
      M4:
      GETSCREEN
IF((PXL(1104,287) = 7886082)|(PXL(1104,287) = 401020))
         IF(PXL(1104,287) = 7886082)
            $Blue = PXLCOUNT(1106,287,1331,287, 10446592)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10118913)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10249473)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10315265)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10315264)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10381056)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10446848)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10447104)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10447360)
            $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 10118401)
            IF($A>$Blue)
               LOGWRITE ("F3 Blue 1 ", $Blue, " A1 ",$A)
$A = $Blue
               KEYPRESS(#F3)
               WAITMS(2000)
               GOTO(M2)
            ELSE
               LOGWRITE ("F2 Blue 1 ", $Blue, " A1 ",$A)
$A = $Blue
               KEYPRESS(#F2)
               WAITMS(2000)
               GOTO(M4)
            END_IF
         ELSE
    IF(PXL(1104,287) = 401020) //åñëè ïîëîñà êðàñíàÿ
               $Blue = PXLCOUNT(1106,287,1331,287, 468366)
               $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468109)
               $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468110)
               $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468111)
               $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468112)
               $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468113)
               $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468369)
               $Blue = $Blue+PXLCOUNT(1106,287,1331,287, 468368)
               IF($A>$Blue)
                  LOGWRITE ("F3 Blue 1 ", $Blue, " A1 ",$A)
$A = $Blue
                  KEYPRESS(#F3)
        WAITMS(2000)
                  GOTO(M2)
               ELSE
LOGWRITE ("F2 Blue 1 ", $Blue, " A1 ",$A)
                  $A = $Blue
                  KEYPRESS(#F2)
                  WAITMS(2000)
                  GOTO(M4)
               END_IF
            ELSE
GOTO(M5)
            END_IF 
   END_IF
      ELSE    
   GOTO(M5) // åñëè ïîëîñêè íåò âîîáùå
END_IF
ELSE
      WAIT(1)
      GOTO(M5)
   END_IF
ELSE
   IF(PXL(685, 195) = 12377059)
      WAITMS(10)
      KEYSTRING(/target)
      KEYPRESS(32)
      KEYDOWN(#CTRL)
      KEYPRESS(#SHIFT)
      KEYUP(#CTRL)
      KEYDOWN(#SHIFT)
      KEYPRESS(#p)
      KEYUP(#SHIFT)
      KEYSTRING(jkjnfz)
      KEYDOWN(#SHIFT)
      KEYPRESS(#h)
      KEYUP(#SHIFT)
      KEYSTRING(ecfkrf)
      KEYDOWN(#CTRL)
      KEYPRESS(#SHIFT)
      KEYPRESS(#SHIFT)
      KEYUP(#CTRL)
      KEYPRESS(#ENTER)
      KEYSTRING(/target)
      KEYPRESS(32)
      KEYDOWN(#CTRL)
      KEYPRESS(#SHIFT)
      KEYUP(#CTRL)
      KEYDOWN(#SHIFT)
      KEYPRESS(#p)
      KEYUP(#SHIFT)
      KEYSTRING(jkjnfz)
      KEYDOWN(#SHIFT)
      KEYPRESS(#h)
      KEYUP(#SHIFT)
      KEYSTRING(ecfkrf)
      KEYDOWN(#CTRL)
      KEYPRESS(#SHIFT)
      KEYPRESS(#SHIFT)
      KEYUP(#CTRL)
      KEYPRESS(#ENTER) //íàáðàòü â ÷àò /target Çîëîòàÿ Ðóñàëêà 2 ðàçà, ó÷èòûâàÿ ñìåíó ÿçûêîâ. (âî âðåìÿ ðàáîòû ìàêðîñà äîëæåí áûòü âêëþ÷¸ííûìè ðóññêèé ÿçûê)
      WAITMS(500)
      GETSCREEN
      IF(PXL(1347,470) = 13748415)
         MOVE(1250,602)
         WAITMS(500)
         KEYPRESS(#ESC)
         WAITMS(10)
         KEYPRESS(#ESC)
         WAITMS(10)
         KEYPRESS(#F1)
         WAIT(2)
GOTO(M5)
      ELSE
         KEYPRESS(#F1)
         WAIT(2)
         GOTO(M5)
      END_IF
   ELSE
      KEYPRESS(#F1)
      WAIT(2)
      GOTO(M5)
   END_IF
   KEYPRESS(#F1)
   WAIT(2)
   GOTO(M5)
END_IF

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: В чём ошибка?
« Reply #28 on: July 21, 2014, 03:50:31 PM »
12 строка, нет завершающей скобки
Code: (clickermann) [Select]
   IF((PXL(1104,287) = 7886082)|(PXL(1104,287) = 401020)) //проверка на появление полоски
Строки всегда заключай в кавычки
неправильно
Code: (clickermann) [Select]
KEYSTRING(/target)правильно
Code: (clickermann) [Select]
KEYSTRING("/target")

kostya1234599

  • Освоившийся
  • **
  • Posts: 25
    • View Profile
Re: В чём ошибка?
« Reply #29 on: July 31, 2014, 02:16:16 AM »
Эх давно меня не было)) Продолжаю работу, т.к. вернули интернет. Пока сидел без него придумал пару вещей к уже существующему скрипту:
Если долго держит удочку и не ловится рыба скрипт запускает аудио (рыбы нет смени место), и снимает наживку.
Определяет день или ночь сейчас и одевает нужную наживку
После вылова русалки, делает шаг вперёд, чтобы русалки не стакались (иначе в цель их не взять)
Code: (clickermann) [Select]
#ps2_keyboard
#ps2_mouse
M5:
GETSCREEN
IF((PXL(69, 454) = 7969453)&(PXL(62, 469) = 7969453)&(PXL(97, 484) = 7969712))
   SOUND("play.wav")
   WAIT(1)
   GOTO(M7)
ELSE
END_IF
P1:
IF(($N=0)&($D=0))
   KEYPRESS(#F9)
   WAITMS(100)
   GETSCREEN
      IF(PXL(204, 484) = 7903919)
         $D=1
         KEYPRESS(#F6)
      ELSE
         IF(PXL(199, 487) = 7969712)
            $N=1
            KEYPRESS(#F7)
         ELSE
            GOTO(P1)
         END_IF
      END_IF
ELSE
   IF($D=1)
      KEYPRESS(#F9)
      WAITMS(100)
      GETSCREEN
      IF(PXL(204, 484) = 7903919)
         GOTO(P2)
      ELSE
         $D=0
         KEYPRESS(#F6)
         WAITMS(100)
         GOTO(P1)
      END_IF
   ELSE
      IF($N=1)
         KEYPRESS(#F9)
         WAITMS(100)
         GETSCREEN
IF(PXL(199, 487) = 7969712)
            GOTO(P2)
         ELSE
            $N=0
            KEYPRESS(#F7)
            WAITMS(100)
            GOTO(P1)
         END_IF
      ELSE
         GOTO(P1)
      END_IF
   END_IF
END_IF     
P2:
KEYPRESS(#F1)
$C=0
$A=0
$B=0
GETSCREEN
IF(PXL(1197,43) = 14406087) //проверка на появление окна рыбалки
   M1:
   GETSCREEN
   IF((PXL(1104,287) = 7886082)|(PXL(1104,287) = 401020) //проверка на появление полоски
      M2:
      GETSCREEN
      IF((PXL(1104,287) = 7886082)|(PXL(1104,287) = 401020))
         IF(PXL(1104,287) = 7886082)  // Если полоса синяя
            $B = PXLCOUNT(1106,287,1331,287, 10446592)
            $B = $B+PXLCOUNT(1106,287,1331,287, 10118913)
            $B = $B+PXLCOUNT(1106,287,1331,287, 10249473)
            $B = $B+PXLCOUNT(1106,287,1331,287, 10315265)
            $B = $B+PXLCOUNT(1106,287,1331,287, 10315264)
            $B = $B+PXLCOUNT(1106,287,1331,287, 10381056)
            $B = $B+PXLCOUNT(1106,287,1331,287, 10446848)
            $B = $B+PXLCOUNT(1106,287,1331,287, 10447104)
            $B = $B+PXLCOUNT(1106,287,1331,287, 10447360)
            $B = $B+PXLCOUNT(1106,287,1331,287, 10118401)
            IF($C ! 1)
               $C = $C + 1
               $A = $B
               KEYPRESS(#F2)
               WAITMS(1)
               GOTO(M2)
            ELSE
            END_IF
            IF($A>$B)
               $A = $B
               KEYPRESS(#F2)
               WAITMS(1)
               GOTO(M2)
            ELSE
               $A = $B
               KEYPRESS(#F3)
               WAITMS(1)
               GOTO(M4)
            END_IF
         ELSE         //иначе
            IF(PXL(1104,287) = 401020) //если полоса красная
               $B = PXLCOUNT(1106,287,1331,287, 468366)
               $B = $B+PXLCOUNT(1106,287,1331,287, 468109)
               $B = $B+PXLCOUNT(1106,287,1331,287, 468110)
               $B = $B+PXLCOUNT(1106,287,1331,287, 468111)
               $B = $B+PXLCOUNT(1106,287,1331,287, 468112)
               $B = $B+PXLCOUNT(1106,287,1331,287, 468113)
               $B = $B+PXLCOUNT(1106,287,1331,287, 468369)
               $B = $B+PXLCOUNT(1106,287,1331,287, 468368)
               IF($C ! 1)
                  $C = $C + 1
                  $A = $B
                  KEYPRESS(#F2)
                  WAITMS(1)
                  GOTO(M2)
               ELSE
               END_IF
               IF($A>$B)
                  $A = $B
                  KEYPRESS(#F2)
                  WAITMS(1)
                  GOTO(M2)
               ELSE
                  $A = $B
                  KEYPRESS(#F3)
                  WAITMS(1)
                  GOTO(M4)
               END_IF
            ELSE
               GOTO(M5)
            END_IF   
         END_IF //конец ветки красный/синий
      ELSE
         GOTO(M5)
      END_IF  //(проверка начала полоски)конец проверки на красный/синий
      M4:
      GETSCREEN
      IF((PXL(1104,287) = 7886082) | (PXL(1104,287) = 401020))
         IF(PXL(1104,287) = 7886082)
            $B = PXLCOUNT(1106,287,1331,287, 10446592)
            $B = $B+PXLCOUNT(1106,287,1331,287, 10118913)
            $B = $B+PXLCOUNT(1106,287,1331,287, 10249473)
            $B = $B+PXLCOUNT(1106,287,1331,287, 10315265)
            $B = $B+PXLCOUNT(1106,287,1331,287, 10315264)
            $B = $B+PXLCOUNT(1106,287,1331,287, 10381056)
            $B = $B+PXLCOUNT(1106,287,1331,287, 10446848)
            $B = $B+PXLCOUNT(1106,287,1331,287, 10447104)
            $B = $B+PXLCOUNT(1106,287,1331,287, 10447360)
            $B = $B+PXLCOUNT(1106,287,1331,287, 10118401)
            IF($A>$B)
               $A = $B
               KEYPRESS(#F3)
               WAITMS(1)
               GOTO(M2)
            ELSE
               $A = $B
               KEYPRESS(#F2)
               WAITMS(1)
               GOTO(M4)
            END_IF
         ELSE
            IF(PXL(1104,287) = 401020) //если полоса красная
               $B = PXLCOUNT(1106,287,1331,287, 468366)
               $B = $B+PXLCOUNT(1106,287,1331,287, 468109)
               $B = $B+PXLCOUNT(1106,287,1331,287, 468110)
               $B = $B+PXLCOUNT(1106,287,1331,287, 468111)
               $B = $B+PXLCOUNT(1106,287,1331,287, 468112)
               $B = $B+PXLCOUNT(1106,287,1331,287, 468113)
               $B = $B+PXLCOUNT(1106,287,1331,287, 468369)
               $B = $B+PXLCOUNT(1106,287,1331,287, 468368)
               IF($A>$B)
                  $A = $B
                  KEYPRESS(#F3)
                  WAITMS(1)
                  GOTO(M2)
               ELSE
                  $A = $B
                  KEYPRESS(#F2)
                  WAITMS(1)
                  GOTO(M4)
               END_IF
            ELSE
               GOTO(M5)
            END_IF
         END_IF
      ELSE    
         GOTO(M5) // если полоски нет вообще
      END_IF
   ELSE
      WAIT(1)
      GOTO(M5)
   END_IF
ELSE
   M6:
   GETSCREEN
   IF(PXL(1197,43) = 14406087)
      WAITMS(100)
      GOTO(M6)
   ELSE
   END_IF
   GETSCREEN
   IF(PXL(501, 227) = 4671303)
      WAITMS(5000)
      KEYPRESS(#F8) //макрос на взятие в цель русалки
      WAITMS(2000)
      GETSCREEN
      IF(PXL(1047,300) = 13748415)
         MOVE(910,451)
         WAITMS(2000) //вот сюда нужно влепить клик мышкой, хотя я и отключал usb мышь - пс2 тачпад всё равно не нажимает, а так же только выполняет MOVE(x,y).
         GETSCREEN
         IF((PXL(32, 482) = 65535)|(PXL(1047,300) = 13748415)) //проверка получил ли я  награду или оказалась ли русалка пустой
            KEYPRESS(#ESC)
            WAITMS(10)
            KEYPRESS(#ESC)
            WAITMS(10)
            KEYPRESS(#UP)
            WAIT(1)
            GOTO(M5)
         ELSE
         END_IF   
      ELSE   
         WAIT(2)
         GOTO(M5)
      END_IF
   ELSE
      WAIT(2)
      GOTO(M5)
   END_IF
   WAIT(2)
   GOTO(M5)
END_IF   
M7:
IF($D=1)
   KEYPRESS(#F6)
ELSE
   IF($N=1)
      KEYPRESS(#F7)
   ELSE
   END_IF
END_IF
HALT
« Last Edit: July 31, 2014, 12:39:48 PM by kostya1234599 »