Автокликер Clickermann :: Форум

Основной раздел => Использование => Topic started by: kostya1234599 on July 16, 2014, 10:40:08 PM

Title: В чём ошибка?
Post by: kostya1234599 on July 16, 2014, 10:40:08 PM
как править этот код чтобы работал нормально
Code: (clickermann) [Select]
GETSCREEN
IF_PIXEL_IN (1197,43, 1197, 43, 14406087)  //Этот иф не правильно работает. Он должен запускаться только если в точке есть нужного цвета пиксель, а он всё-равно включается.
WAIT(1)           
DEFINE ($A, [0])
DEFINE ($B, [0])         
GETSCREEN //1
IF_PIXEL_IN(1106,287,1106,287, 10446592)
$B=$B+1
END_IF
GETSCREEN //2
IF_PIXEL_IN(1131,287,1131,287, 10446592)
$B=$B+1
END_IF
GETSCREEN //3
IF_PIXEL_IN(1156, 287, 1156, 287, 10446592)
$B=$B+1
END_IF
GETSCREEN //4
IF_PIXEL_IN(1181, 287, 1181, 287, 10446592)
$B=$B+1
END_IF
GETSCREEN  //5
IF_PIXEL_IN(1222, 287, 1222, 287, 10446592)
$B=$B+1
END_IF
GETSCREEN //6
IF_PIXEL_IN(1249, 287, 1249, 287, 10446592)
$B=$B+1
END_IF
GETSCREEN  //7
IF_PIXEL_IN(1276, 287, 1276, 287, 10446592)
$B=$B+1
END_IF
GETSCREEN //8
IF_PIXEL_IN(1303, 287, 1303, 287, 10446592)
$B=$B+1
END_IF
GETSCREEN  //9
IF_PIXEL_IN(1331, 287, 1331, 287, 10446592)
$B=$B+1
END_IF
$A=$B //во время работы тут ошибку указывает
IF($B = $A)
  #ps2_keyboard
   KEYPRESS(#F2)
ELSE
  IF($B>$A) 
  #ps2_keyboard
    KEYPRESS(#F3)
  ELSE
  #ps2_keyboard
    KEYPRESS(#F2)
   END_IF
   GETSCREEN
ELSE

END_IF
Title: Re: В чём ошибка?
Post by: Oraven on July 16, 2014, 11:30:06 PM
Кто ж тя так кодить учил? Чувствуется какой нибудь Оупилот...  :D

Вот верный вариант:
Как я понял тебе нужно определить цвет в заданной точке, и если сошелся определить цвета еще в девяти точках. Если сошлись цвета в любой из девяти точек то нажать F3 а если нет то F2.
#ps2_keyboard или #ps2_mouse - нужно написать только один раз в начале скрипта, это включит альтернативный режим нажатий клавиш.

Code: (clickermann) [Select]
#ps2_keyboard

GETSCREEN
IF(PXL(1197,43) = 14406087)
   WAIT(1)
   GETSCREEN
   IF((PXL(1106,287) = 10446592)|(PXL(1131,287) = 10446592)|(PXL(1156, 287) = 10446592)|(PXL(1181, 287) = 10446592)|(PXL(1222, 287) = 10446592)|(PXL(1249, 287) = 10446592)|(PXL(1276, 287) = 10446592)|(PXL(1303, 287) = 10446592)|(PXL(1331, 287) = 10446592))
      KEYPRESS(#F3)
      WAITMS(100)
   ELSE
      KEYPRESS(#F2)
      WAITMS(100)
   END_IF
END_IF
WAITMS(50)

 
Title: Re: В чём ошибка?
Post by: kostya1234599 on July 16, 2014, 11:36:15 PM
с Ф2 и Ф3 немножко сложнее, 9 точек вдоль синей линии  (заполненной не полностью) если линия стала больше чем была то Ф3 если нет то Ф2. Инкриминировать переменную $B необходимо, к тому же по отдельности.
И ещё как инкриминировать $B передать это значение $A и чтобы $A сбрасывалось на 1 цикл позже, что бы по А можно было проверять как изменилась полоска

Title: Re: В чём ошибка?
Post by: kostya1234599 on July 16, 2014, 11:37:03 PM
Пиксельный бот для рыбалки самому делать это жуть, тем более на Lineage 2. Это не uoPilot это C++ и Pascal на мне так сказались)
Title: Re: В чём ошибка?
Post by: kostya1234599 on July 16, 2014, 11:54:19 PM
Ещё намекну про точки, только что в голову пришло.
изначально точек 5 примерно (полоска ХП рыбы и ловля рыбы начинаются так)
для ловли рыбы 2 действия (тянуть и подсекать)
и 2 ситуации
Если в ситуацию 1 нажать подходящее действие 1 (скажем тянуть) то ХП рыбы уменьшается, следовательно точек стало меньше, и мы сделали правильно и если действие не изменилось то можно продолжать нажимать действие 1 (с проверкой этих 9 точек), а если ситуация поменялась, мы использовали не подходящее действие 1 (тянуть) к ситуации 2 следовательно ХП рыбы увеличилось,а тогда и количество точек увеличится, значит нужно поменять действие. Думаю теперь понятно)
При необходимости для точности можно увеличить количество точек на этой проверочной полосе (её длинна 225 пикселей, но ХП начинается чуть правее середины)
Title: Re: В чём ошибка?
Post by: Oraven on July 17, 2014, 12:17:20 AM
Может полоску легче будет считать специальной функцией подсчета пикселов?

Code: (clickermann) [Select]
$count = PXLCOUNT (10,20, 100, 40, 255) // подсчет в заданной области количества заданного цвета и возвращение числа в переменную
Title: Re: В чём ошибка?
Post by: Oraven on July 17, 2014, 12:22:29 AM
Как то так но про PXLCOUNT подумай.

Верно писать так
Code: (clickermann) [Select]
DEFINE ($A, 0)
DEFINE ($B, 0)
Но в данном скрипте это не нужно вообще.

Code: (clickermann) [Select]
GETSCREEN
IF_PIXEL_IN (1197,43, 1197, 43, 14406087)  //Этот иф не правильно работает. Он должен запускаться только если в точке есть нужного цвета пиксель, а он всё-равно включается.
   WAIT(1)
   GETSCREEN //1
   IF_PIXEL_IN(1106,287,1106,287, 10446592)
      $B=$B+1
   END_IF
   //2
   IF_PIXEL_IN(1131,287,1131,287, 10446592)
      $B=$B+1
   END_IF
   //3
   IF_PIXEL_IN(1156, 287, 1156, 287, 10446592)
      $B=$B+1
   END_IF
   //4
   IF_PIXEL_IN(1181, 287, 1181, 287, 10446592)
      $B=$B+1
   END_IF
   //5
   IF_PIXEL_IN(1222, 287, 1222, 287, 10446592)
      $B=$B+1
   END_IF
   //6
   IF_PIXEL_IN(1249, 287, 1249, 287, 10446592)
      $B=$B+1
   END_IF
   //7
   IF_PIXEL_IN(1276, 287, 1276, 287, 10446592)
      $B=$B+1
   END_IF
   //8
   IF_PIXEL_IN(1303, 287, 1303, 287, 10446592)
      $B=$B+1
   END_IF
   //9
   IF_PIXEL_IN(1331, 287, 1331, 287, 10446592)
      $B=$B+1
   END_IF
   
   $A=$B //во время работы тут ошибку указывает
   IF($B = $A)
      #ps2_keyboard
      KEYPRESS(#F2)
   ELSE
      IF($B>$A)
         #ps2_keyboard
         KEYPRESS(#F3)
      ELSE
         #ps2_keyboard
         KEYPRESS(#F2)
      END_IF
   END_IF
END_IF
WAITMS(50)
Title: Re: В чём ошибка?
Post by: kostya1234599 on July 17, 2014, 12:43:11 AM
PXLCOUNT это мне очень пригодится, не подумал про это, но всё же вернусь к вопросу, почему в моём макросе, при не выполнении условия выполнилось действие?
Переработаю макрос относительно новых данных, наверное уже днём предложу новый вариант(корректированный), но от вопроса не отказываюсь, необходимо знать почему так произошло. Спасибо за понимание ;)
Title: Re: В чём ошибка?
Post by: Oraven on July 17, 2014, 12:46:18 AM
Каждый IF должен завершаться своим END_IF и в каждом условии может быть одна альтернатива ELSE. А у тебя там путаница.
Title: Re: В чём ошибка?
Post by: kostya1234599 on July 17, 2014, 01:12:47 AM
Спасибо, это дало разъяснение)
Новый вопрос, у меня ступор в определении ( я уже описал как увеличивается или уменьшается полоска ХП рыбы). Я подсчитал сколько пикселей цвета  ХП рыбы (синего) и сколько не заполненного (почти чёрный). Как мне записывать данные о "измерении" синей полоски  так, чтобы можно было использовать их после следующего измерения для понимания как изменилась длинна полосы. Или как мне задействовать одно пробное действие перед "инициализацией"( перед тем как давать программе "осознанно" нажимать кнопки) ?
Title: Re: В чём ошибка?
Post by: kostya1234599 on July 17, 2014, 01:28:32 AM
Пока что новый код ( недоделанный ) вот такой:
Вместо "х" и "у" будут реальные числа.
Code: (clickermann) [Select]
#ps2_keyboard

GETSCREEN
IF(PXL(x,y) = 14406087) //проверка на появление окна рыбалки
   WHILE(PXL(x,y) = 14406087) //повтор цикла проверки и ловли до тех пор пока окно не закроется, т.е. пока рыбу не поймаю
      WAIT(1)
      M1:
      GETSCREEN
      IF(PXL(x-91,y+244) = 10446592) //проверка на появление полоски
         GETSCREEN
         $Blue=PXLCOUNT(x-91,y+244,x+134,y+244,10446592)
         $Black=PXLCOUNT(x-91,y+244,x+134,y+244,14406087)
         //сюда нужно придумать то на чём я застопорился
      ELSE
         WAIT(1)  //ждать 1 сек если полоска не появилась и начать заново проверку полоски
         GOTO(M1)
      END_IF
   END_CYC
ELSE
   // проверка на наличие спец. NPC Русалки (её можно поймать, плюшки даёт)
   //взять награду
   //закинуть удочку(т.к. закинул удочку то выполняется первый IF и рыбалка продолжается)
END_IF 

Что скажешь на этот раз? :)
Title: Re: В чём ошибка?
Post by: Oraven on July 17, 2014, 12:17:34 PM
Наверное так
Code: (clickermann) [Select]
IF($Blue = $Blue2)
   // действие если не изменилась
ELSE
   $Blue2 = $Blue
   // действие если зменилась
END_IF
Title: Re: В чём ошибка?
Post by: kostya1234599 on July 17, 2014, 12:31:29 PM
не совсем, если бы полоска увеличивалась только от действий и т.д. то это подошло бы, но она ещё увеличивается каждую секунду примерно на миллиметр, что сложнее.
справился с действием от которого нужно отталкиваться, и дореализовал IF внешний, осталось к нему ELSE реализовать (он в логическом виде пока на бумаге) вот код:
Code: (clickermann) [Select]
#ps2_keyboard
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(1)
        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(1)
         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
  IF(PXL(x1,y1) = цв. русалки)
     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 раза, учитывая смену языков. (во время работы макроса должен быть включёнными русский язык)
     LCLICK(x2,y2) //взять награду
     LCLICK(x3,y3) //закрыть окно русалки
     KEYPRESS(#F1)
     GOTO(M2)
  ELSE
     KEYPRESS(#F1)
     GOTO(M2)
  END_IF
END_IF
с координатами разберусь потом, напишу на С++ прогу чтобы создавала этот код в txt с нужными координатами.
Похоже что я доделал этот макрос , не считая вычисления координат, так ведь?
Title: Re: В чём ошибка?
Post by: kostya1234599 on July 18, 2014, 12:21:47 AM
Посмотри пожалуйста сообщение выше, и прокомментируй, спасибо ^^ .
Title: Re: В чём ошибка?
Post by: Oraven on July 18, 2014, 12:41:41 AM
IF($C != 1) Тут либо равно "=" либо неравно "!"но не все сразу же!

Зачем писать эти ГОТО если скрипт и так туда пойдет? Бессмысленно...

Code: (clickermann) [Select]
           GOTO(M3)
       END_IF
       M3:

Title: Re: В чём ошибка?
Post by: kostya1234599 on July 18, 2014, 08:14:09 AM
"!=" - это в С++ логическое "не равно" так и знал, что напартачил))
GOTO написал для себя) , это ведь не мешает выполнению программы?)
Ещё 1 вопрос:
У меня мышь х7 на ней 5 клавиш, как послать нажатие на одну из кнопок которые не правая и не левая кнопки мыши?
Title: Re: В чём ошибка?
Post by: Oraven on July 18, 2014, 12:37:06 PM
Ну как же ты пошлешь нажатия на аппаратные кнопки устройства???
Title: Re: В чём ошибка?
Post by: kostya1234599 on July 18, 2014, 04:20:22 PM
Должен быть способ, но не в clikermann. Например в кликермэне я нажму кнопку "m" а эта кнопка будет выполнять функцию кнопки на мышке.
Title: Re: В чём ошибка?
Post by: Oraven on July 18, 2014, 06:49:41 PM
А зачем запрягать мышь если кликер может делать тоже самое?
Title: Re: В чём ошибка?
Post by: kostya1234599 on July 18, 2014, 07:14:24 PM
Если бы всё так просто было)) Фрост в режиме пс2 не пускает клики, но пускает MOVE(x,y) без пс2 мове не работает, мне отается только сделать так, потому что оскар эдитор х7 фрост не трогает и клик нормально доходит до клиента.
Сейчас только одна проблема - как это реализовать
Title: Re: В чём ошибка?
Post by: kostya1234599 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
Title: Re: В чём ошибка?
Post by: kostya1234599 on July 20, 2014, 11:05:27 PM
В команде PXLCOUNT(x,y,x1,y1,цвет)
Можно ли указывать несколько цветов? полоска оказалось неоднородной))
 
Title: Re: В чём ошибка?
Post by: Oraven 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
Title: Re: В чём ошибка?
Post by: kostya1234599 on July 20, 2014, 11:34:17 PM
Спасибо) Пошёл править программу)) А то уже написал код в .ехе , а потом узнал что полоса не однородного цвета
Title: Re: В чём ошибка?
Post by: kostya1234599 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
Title: Re: В чём ошибка?
Post by: Oraven 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
Title: Re: В чём ошибка?
Post by: kostya1234599 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
Title: Re: В чём ошибка?
Post by: kostya1234599 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
Title: Re: В чём ошибка?
Post by: Oraven 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")
Title: Re: В чём ошибка?
Post by: kostya1234599 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
Title: Re: В чём ошибка?
Post by: kostya1234599 on September 17, 2014, 11:51:36 AM
можно ли использовать переменные вместо координат вот так например:
Code: (clickermann) [Select]
PXL($X, $Y)?
Title: Re: В чём ошибка?
Post by: Vint on September 17, 2014, 12:12:26 PM
Везде где числа, можно использовать переменные. Кроме самих имён переменных, имён SUB и меток GOTO.
Title: Re: В чём ошибка?
Post by: kostya1234599 on September 23, 2014, 07:54:31 AM
Мой код эволюционировал во в такой :)
Подскажите, может не недочёты, ошибки какие то допустил
Code: (clickermann) [Select]
#ps2_mouse
#ps2_keyboard
#logfile
KEYPRESS(#F1)
WAIT(1)
getscreen
SCANPICTURE ($var, 0, 0, 1365, 767, "3x3.bmp")//поиск заголовка рыбалки на экране
$y = arrpop($var)
$x = arrpop($var)
$X = int($x) + 1   // Координаты точки от которой
$Y = int($y) + 1   // ищется полоска HP рыбы
//print($x,":", $y)  //log
$Xn = int($X)-93   //Координаты начала полоски(проверка наличия/цвета)
$Yn = int($Y)+244
$Xnp = int($X)-91
$Ynp = int($Yn)
$Xkp = int($X)+134
$Ykp = int($Yn)
sub(LONGBLUE, $LB)  //функция считает длинну синей полоски
   GETSCREEN
   $LB = 0
   $LB = PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10446592)
   $LB = $LB+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10118913)
   $LB = $LB+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10249473)
   $LB = $LB+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10315265)
   $LB = $LB+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10315264)
   $LB = $LB+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10381056)
   $LB = $LB+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10446848)
   $LB = $LB+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10447104)
   $LB = $LB+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10447360)
   $LB = $LB+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10118401)
end_sub
sub(LONGRED, $LR) //анологично красной
   GETSCREEN
   $LR = 0
   $LR = PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10446592)
   $LR = $LR+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10118913)
   $LR = $LR+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10249473)
   $LR = $LR+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10315265)
   $LR = $LR+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10315264)
   $LR = $LR+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10381056)
   $LR = $LR+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10446848)
   $LR = $LR+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10447104)
   $LR = $LR+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10447360)
   $LR = $LR+PXLCOUNT($Xnp,$Ynp,$Xkp,$Ykp, 10118401)
end_sub
sub(randomtick)
   IF($D > 0)             //
      $F = $B - $D        //
      IF($F > 0)          //
         $A = $A+$F       //     поправка на случайный тик
      ELSE                //
      END_IF              //
   ELSE                   //
   END_IF                 //
end_sub
//print("начало/конец ловли")
M5:
$A = 0
$B = 0
$C = 0
$D = 0
$F = 0
GETSCREEN
IF(PXL($X,$Y) = 14406087)
   IF((PXL($X,$Y) = 14406087)&($T > 7)
      Sound("4.wav")
      HALT
   else
   end_if
   M1:
   GETSCREEN
   IF((PXL($Xn,$Yn) = 7886082)|(PXL($Xn,$Yn) = 401020) //???????? ?? ????????? ???????
      M2:
      GETSCREEN
      IF((PXL($Xn,$Yn) = 7886082)|(PXL($Xn,$Yn) = 401020))
         IF(PXL($Xn,$Yn) = 7886082)  // если полоса синяя
            LONGBLUE($B)
    randomtick()
    IF($C ! 1)
               inc($C, 1)
               $A = $B
               KEYPRESS(#F2)
               LONGBLUE($D)
               WAIT(1)
               GOTO(M2)
            ELSE
            END_IF
            IF($A>$B)
               $A = $B
       KEYPRESS(#F2)
       LONGBLUE($D)
               WAIT(1)
               GOTO(M2)
            ELSE
               $A = $B
               KEYPRESS(#F3)
       LONGBLUE($D)
               WAIT(1)
               GOTO(M4)
            END_IF
         ELSE         //иначе
            IF(PXL($Xn,$Yn) = 401020) //если красная
               LONGRED($B)
               randomtick()
               IF($C ! 1)
                  inc($C, 1)
                  $A = $B
                  KEYPRESS(#F2)
  LONGRED($D)
                  WAIT(1)
                  GOTO(M2)
               ELSE
               END_IF
               IF($A>$B)
                  $A = $B
                  KEYPRESS(#F2)
                  LONGRED($D)
                  WAIT(1)
                  GOTO(M2)
               ELSE
                  $A = $B
                  KEYPRESS(#F3)
  LONGRED($D)
                  WAIT(1)
                  GOTO(M4)
               END_IF
            ELSE
               GOTO(M5)
            END_IF   
         END_IF //конец ветки красный/синий
      ELSE
         GOTO(M5)
      END_IF  //(проверка начала полоски)конец проверки на красный/синий
      M4:
      GETSCREEN
      IF((PXL($Xn,$Yn) = 7886082) | (PXL($Xn,$Yn) = 401020)) // красн./син.
         IF(PXL($Xn,$Yn) = 7886082)// синяя
            LONGBLUE($B)
            randomtick()
    IF($A>$B)
               $A = $B
               KEYPRESS(#F3)
       LONGBLUE($D)
               WAIT(1)
               GOTO(M4)
            ELSE
               $A = $B
               KEYPRESS(#F2)
               LONGBLUE($D)
               WAIT(1)
               GOTO(M2)
            END_IF
         ELSE
            IF(PXL($Xn,$Yn) = 401020) //красная
               LONGRED($B)
               randomtick()
       IF($A>$B)
                  $A = $B
                  KEYPRESS(#F3)
                  LONGRED($D)
                  WAIT(1)
                  GOTO(M4)
               ELSE
                  $A = $B
                  KEYPRESS(#F2)
                  LONGRED($D)
                  WAIT(1)
                  GOTO(M2)
               END_IF
            ELSE
               GOTO(M5)
            END_IF
         END_IF
      ELSE    
         GOTO(M5) // если нет полосы вообще
      END_IF
   ELSE
      WAIT(1)  // ожидание появления полоски
      inc($T,1)
      GOTO(M5)
   END_IF   
ELSE
   M6:                                 //
   GETSCREEN                           //
   IF(PXL($X,$Y) = 14406087)           //  ожидание, когда исчезнит окно рыбалки
      WAITMS(100)                      //  после вылова рыбы
      GOTO(M6)                         //
   ELSE                                //
   END_IF                              //
   getscreen
   SCANPICTURE ($var1, 0, 0, 1365, 767, "713x201.bmp")
   $Ry1 = arrpop($var1)
   SCANPICTURE ($var1, 0, 0, 1365, 767, "646x202.bmp")
   $Ry2 = arrpop($var1)
   GETSCREEN
   IF(($Rx1 = 201) & ($Rx2 = 202))//IF(PXL(501, 227) = 4671303)    //проверка на русалку
      sound("1.wav")
      Keypress(#F8)
      WAITMS(100)
      getscreen
      SCANPICTURE ($var1, 0, 0, 1365, 767, "нагр.bmp")
      $Ry = arrpop($var1)
      $Rx = arrpop($var1)
      $RNx = int($Rx) - 112
      $RNy = int($Ry) + 156
      Waitms(100)
      MOVE($RNx,$RNy)
      DIALOGBOX("Внимание вы поймали русалку, заберите награду, отойдите от неё, станьте в положение в котором можно рыбачить и нажмите ОК",0,4)
   ELSE
      WAIT(2)
      KEYPRESS(#F1)
      GOTO(M5)
   END_IF
   WAIT(2)
   KEYPRESS(#F1)
   GOTO(M5)
END_IF
halt // for single run
Title: Re: В чём ошибка?
Post by: Oraven on September 23, 2014, 08:43:49 AM
Строки 66 73, не хватает завершающей скобки
Title: Re: В чём ошибка?
Post by: kostya1234599 on September 23, 2014, 08:39:38 PM
Спасибо, но многого не понял к сожалению, попробуй так, сначала кусок моего кода, а потом его реализация в твоём варианте. Очень благодарен за замечания)
с колормодом плохо знаком, и не знаю как поведёт себя тот или иной цвет, не суть, просто переписал какие цвета на полоске и всего то)
Конструкция:
ИФ(условие)
действие
элсэ
энд_иф
Если нет ничего в элсе то его писать не обязательно, я так понял?)
Я не объявляю переменную, а обнуляю её, но не знаю верно ли я сделал))
Если что пишите указывайте мои ошибки, буду учиться)))