Author Topic: Скрипт-кликер по цвету в пикселе (работает не так где хотелось()  (Read 23018 times)

0 Members and 1 Guest are viewing this topic.

andrei

  • Освоившийся
  • **
  • Posts: 49
    • View Profile
Огромное спасибо.

andrei

  • Освоившийся
  • **
  • Posts: 49
    • View Profile
добрый вечер
вот кусочек скрипта , как сделать что бы если в за 30 минут не было  выполнено условие , скрипт перешел бы дальше к выполнению , то есть к подпрограмме reset() и метке m1:

   $check = 0
    WHILE($check = 0)
             GETSCREEN
     COLORMODE(5)   
    IF_PICTURE_IN (400,840,520,920, "BMP\0002.bmp", -1, 100) // ищем 1
       $check = 1
       LCLICK(200,850)
       WAITMS(500)
    ELSE // если нет
       IF_PICTURE_IN (680,600,1150,700, "BMP\0003.bmp", -1, 100) // то ищем 2
         LCLICK($_return1+10, $_return2+10)
          WAIT(30)
       END_IF
    END_IF
WAIT(60)
   
   END_CYC   
reset()
goto (m1)
 
это как бы защита от зависания
  Спасибо.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Code: (clickermann) [Select]
m1:

$time = $_time_t + 1800 // таймер на 30 минут
WHILE($time > $_time_t)
   GETSCREEN
   COLORMODE(5)
   IF_PICTURE_IN (400,840,520,920, "BMP\0002.bmp", -1, 100) // ищем 1
      $time = 0
      LCLICK(200,850)
      WAITMS(500)
   ELSE // если нет
      IF_PICTURE_IN (680,600,1150,700, "BMP\0003.bmp", -1, 100) // то ищем 2
         LCLICK($_return1+10, $_return2+10)
         WAIT(30)
      END_IF
   END_IF
   WAIT(60)
END_CYC
IF($time ! 0)
   // время истекло
   reset()
   goto (m1)
END_IF

andrei

  • Освоившийся
  • **
  • Posts: 49
    • View Profile
Добрый день
у меня опять вопрос) можно ли как то написать в скрипте перезагрузку браузера , F5 не подходит , так как игра не всегда грузится до конца, при закрытии браузера и загрузке по новой практически всегда 100% загрузка , но вопрос в том что при закрытии кликом по крестику  иногда браузер выдает ошибку ,что то там со сценарием и все исполнение кода виснет в этом месте , как можно сделать жесткую перезагрузку . Спасибо.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Code: (clickermann) [Select]
EXECUTE("TASKKILL","/F /IM firefox.exe") // убить процесс

andrei

  • Освоившийся
  • **
  • Posts: 49
    • View Profile
о Спасибо ОГРОМНОЕ))

andrei

  • Освоившийся
  • **
  • Posts: 49
    • View Profile
Добрый день :)
скажите можно как то по другому записать вот этот код:
Code: (clickermann) [Select]
      SUB(Billboard)

        GETSCREEN
     COLORMODE(5)    
        IF_PICTURE_IN (1000,240,1500,420, "BMP\0001.bmp", -1, 80) // красный крестик
       LCLICK($_return1+5, $_return2+5)
      WAIT(1)
    ELSE // если нет
WAIT(1)
 END_IF
 
     GETSCREEN
     COLORMODE(5)    
        IF_PICTURE_IN (1000,240,1500,420, "BMP\0004.bmp", -1, 80) // красный крестик
       LCLICK($_return1+5, $_return2+5)
      WAIT(1)
    ELSE // если нет
WAIT(1)
 END_IF
 
  GETSCREEN
     COLORMODE(5)    
        IF_PICTURE_IN (1000,240,1500,420, "BMP\0005.bmp", -1, 80) // красный крестик
       LCLICK($_return1+5, $_return2+5)
      WAIT(1)
    ELSE // если нет
WAIT(1)
 END_IF
 
  GETSCREEN
     COLORMODE(5)    
        IF_PICTURE_IN (1000,240,1500,420, "BMP\0006.bmp", -1, 80) // красный крестик
       LCLICK($_return1+5, $_return2+5)
      WAIT(1)
    ELSE // если нет
WAIT(1)
 END_IF
 
    GETSCREEN
     COLORMODE(5)    
        IF_PICTURE_IN (1000,240,1500,420, "BMP\0007.bmp", -1, 80) // красный крестик
       LCLICK($_return1+5, $_return2+5)
      WAIT(1)
    ELSE // если нет
WAIT(1)
 END_IF
   
  WAITMS(500)

END_SUB

спасибо.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Все зависит от того что ты хочешь. Если нужно найти одну зи этих картинок то вот

Code: (clickermann) [Select]
SUB(Billboard)
   GETSCREEN
   COLORMODE(5)
   IF_PICTURE_IN (1000,240,1500,420, "BMP\0001.bmp", -1, 80) // красный крестик
      LCLICK($_return1+5, $_return2+5)
      WAIT(1)
   ELSE // если нет
      IF_PICTURE_IN (1000,240,1500,420, "BMP\0004.bmp", -1, 80) // красный крестик
         LCLICK($_return1+5, $_return2+5)
         WAIT(1)
      ELSE // если нет
         IF_PICTURE_IN (1000,240,1500,420, "BMP\0005.bmp", -1, 80) // красный крестик
            LCLICK($_return1+5, $_return2+5)
            WAIT(1)
         ELSE // если нет
            IF_PICTURE_IN (1000,240,1500,420, "BMP\0006.bmp", -1, 80) // красный крестик
               LCLICK($_return1+5, $_return2+5)
               WAIT(1)
            ELSE // если нет
               IF_PICTURE_IN (1000,240,1500,420, "BMP\0007.bmp", -1, 80) // красный крестик
                  LCLICK($_return1+5, $_return2+5)
                  WAIT(1)
               END_IF
            END_IF
         END_IF
      END_IF
   END_IF
END_SUB

Atas

  • Активный участник
  • ***
  • Posts: 147
    • View Profile
Code: (clickermann) [Select]
$arr[0] = "BMP\0001.bmp" // Названия картинок, включая относительный путь, помещаем в массив
$arr[1] = "BMP\0004.bmp"
$arr[2] = "BMP\0005.bmp"
$arr[3] = "BMP\0006.bmp"
$arr[4] = "BMP\0007.bmp"

SUB(Billboard)
   GETSCREEN // Один GETSCREEN и один COLORMODE для поиска всех картинок
   COLORMODE(5)
   FOR($i = 0, $i < 5) // Выполнится 5 раз (по количеству искомых каринок в массиве) и без задержек
      IF_PICTURE_IN (1000,240,1500,420, $arr[$i], -1, 80) // красный крестик
         LCLICK($_return1+5, $_return2+5)
         $i = 5 // Завершаем поиск, если изображение найдено
      END_IF
      // WAIT(1) // Секундная пауза, независимо найдена картинка или нет (так задано в условии). Зачем? Удаляем её.
   END_CYC
END_SUB

andrei

  • Освоившийся
  • **
  • Posts: 49
    • View Profile
Все зависит от того что ты хочешь. Если нужно найти одну зи этих картинок то вот

Code: (clickermann) [Select]
SUB(Billboard)
   GETSCREEN
   COLORMODE(5)
   IF_PICTURE_IN (1000,240,1500,420, "BMP\0001.bmp", -1, 80) // красный крестик
      LCLICK($_return1+5, $_return2+5)
      WAIT(1)
   ELSE // если нет
      IF_PICTURE_IN (1000,240,1500,420, "BMP\0004.bmp", -1, 80) // красный крестик
         LCLICK($_return1+5, $_return2+5)
         WAIT(1)
      ELSE // если нет
         IF_PICTURE_IN (1000,240,1500,420, "BMP\0005.bmp", -1, 80) // красный крестик
            LCLICK($_return1+5, $_return2+5)
            WAIT(1)
         ELSE // если нет
            IF_PICTURE_IN (1000,240,1500,420, "BMP\0006.bmp", -1, 80) // красный крестик
               LCLICK($_return1+5, $_return2+5)
               WAIT(1)
            ELSE // если нет
               IF_PICTURE_IN (1000,240,1500,420, "BMP\0007.bmp", -1, 80) // красный крестик
                  LCLICK($_return1+5, $_return2+5)
                  WAIT(1)
               END_IF
            END_IF
         END_IF
      END_IF
   END_IF
END_SUB

нет нужно проверить наличие всех этих картинок и кликнуть по крестику если нашли

Andrey075

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
доброго времени суток.
вопросик есть - есть ли возможность определять координаты пикселей в таком случае... на примере браузерной игры - окно игры не вмещает все поле задействованное в игре и перемещения по нему  с помощью перетаскивания идет, т.к. скролла нет....
то есть нужно определить наличие пикселя /картинки за срезом видимого игрового поля...по стандарту программа дает координаты лишь относительные к границам поля...
если можно то принцип реализации, желательно с примером...для лучшего усвоения...я начинающий так что не судите строго))

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Нет конечно! Окно не рендерит все игру а только видимую её часть.

Andrey075

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
спасибо...жаль конечно.. а можно это обойти другими способами? к примеру  поиском определенных включений в исходном коде страницы? и можно ли так организовать это через кликерман? по его функционалу что то подобное можно сделать? просто он проще в освоении чем API к браузеру
« Last Edit: August 15, 2015, 05:08:43 PM by Andrey075 »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
спасибо...жаль конечно.. а можно это обойти другими способами? к примеру  поиском определенных включений в исходном коде страницы?
Игра на флеш? Тогда при чём тут код страницы?
Нельзя обойти... то чего нет.


Andrey075

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
... на примере браузерной игры - окно игры не вмещает все поле задействованное в игре и перемещения по нему  с помощью перетаскивания идет, т.к. скролла нет....
 строго))
А что мешает, честному человеку, кликером перетаскивать игровое поле и просматривать его полностью? Обычная ситуация для браузерных игр. Можно даже не програмировать перетаскивания, а записать свои действия и вставить, как кусок кода, а можно уменьшить маштаб, чтоб влезло всё игровое поле, ведь кликеру непридётся напрягать зрение, ему для опознания и пары пикселей достаточно. ::)

1. чего к сожалению не имеет игра - масштабирования... все перетаскивается мышью.
2. можно пример перетаскивания? просто выбрать нужный код из записи действий мне пока трудно.
3. как я понимаю, мне нужно будет делать  цикл на скан доступной области игры, для поиска нужного мне отображения.. это я сделаю
.....если не сложно и есть время то пример по перетаскиванию, как я понимаю там всего 4 строки должно быть.... я пока не настолько вник в тему именно с таким...но по факту -- перенос мыщи --зажим--перенос с зажимом--отпустить....надо задавать координаты мимо интерактивных объектов... что ж попробую вычленить нужный код через лог, если у вас не найдется времени на такой пример...спасибо...
еще маленький вопрос - можно не убивая браузер сделать перезагрузку страницы?
« Last Edit: August 16, 2015, 10:08:59 AM by Andrey075 »