Top.Mail.Ru
Ответы

Доработка скрипта на Clickermann

имеется код на Clickermann его нужно доработать. скрипт должен искать на странице картинку из списка и как найдет (любую) делать по ней правый клик и выходить из цикла , если не найдет переходить на следующюю страницу и искать там.скрипт работает картинки ищет по страницам переходит если не нашел картинку на этой , но проблема в том что после клтка он не выходит из цикла , а продолжает перебирать и искать все картинки из списка

123456789101112131415161718192021222324252627282930313233343536373839404142434445
 // Начальные координаты для перехода на первую страницу 
$page_start_x = 100  // Начальная координата X для первой страницы 
$page_start_y = 200  // Координата Y для перехода на страницу 
 
// Флаг для отслеживания, найдена ли картинка 
$picture_found = 0 
 
// Цикл по страницам (всего 8 страниц) 
FOR($page = 1, $page <= 8) 
   // Если картинка уже найдена, выходим из цикла 
   IF ($picture_found == 1) 
      BREAK  // Выходим из цикла 
   ELSE 
      LOG("Поиск на странице " + $page) 
 
      // Цикл по картинкам (от 001.bmp до 040.bmp) 
      FOR($count = 1, $count <= 40) 
         LOG("Поиск картинки " + STRCONCAT(STRCUT("00", 0, 3 - STRLEN($count)), $count, ".bmp")) 
 
         // Обновляем экран в заданной области 
         GETSCREEN (1020,530, 1400,760) 
         // Устанавливаем цветовой режим 
         COLORMODE(6, 1020,530, 1400,760) 
         // Поиск картинки с точностью 80% 
         IF_PICTURE_IN (1020,530, 1400,760, STRCONCAT(STRCUT("00", 0, 3 - STRLEN($count)), $count, ".bmp"), 80, 80) 
            LOG("Картинка найдена! Координаты: " + $_return1 + ", " + $_return2) 
            // Если картинка найдена, правый клик по её координатам + смещение (15,15) 
            RCLICK($_return1 + 15, $_return2 + 15) 
            // Устанавливаем флаг, что картинка найдена 
            $picture_found = 1 
            // Выходим из цикла по картинкам 
            BREAK 
         END_IF 
      END_CYC 
 
      // Если картинка не найдена, переход на следующую страницу 
      IF ($picture_found == 0) 
         // Координата X увеличивается на 30 для каждой следующей страницы 
         $page_current_x = $page_start_x + (($page - 1) * 30) 
         LOG("Переход на следующую страницу. Координаты: " + $page_current_x + ", " + $page_start_y) 
         LCLICK($page_current_x, $page_start_y) 
         WAITMS(500)  // Ожидание для загрузки следующей страницы 
      END_IF 
   END_IF 
END_CYC 
По дате
По рейтингу
Аватар пользователя
4мес

Правильно. У тебя же флаг $picture_found устанавливается в 1, но внешний цикл по страницам FOR($page = 1, $page <= 8) не проверяет этот флаг сразу после завершения внутреннего цикла. Надеюсь, понял.
В общем, добавь проверку флага $picture_found сразу после завершения внутреннего цикла по картинкам. У тебя это будет вот так:

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
 // Начальные координаты для перехода на первую страницу  
$page_start_x = 100  // Начальная координата X для первой страницы  
$page_start_y = 200  // Координата Y для перехода на страницу  
 
// Флаг для отслеживания, найдена ли картинка  
$picture_found = 0  
 
// Цикл по страницам (всего 8 страниц)  
FOR($page = 1, $page <= 8)  
   // Если картинка уже найдена, выходим из цикла  
   IF ($picture_found == 1)  
      BREAK  // Выходим из цикла  
   ELSE  
      LOG("Поиск на странице " + $page)  
       
      // Цикл по картинкам (от 001.bmp до 040.bmp)  
      FOR($count = 1, $count <= 40)  
         LOG("Поиск картинки " + STRCONCAT(STRCUT("00", 0, 3 - STRLEN($count)), $count, ".bmp"))  
          
         // Обновляем экран в заданной области  
         GETSCREEN (1020,530, 1400,760)  
          
         // Устанавливаем цветовой режим  
         COLORMODE(6, 1020,530, 1400,760)  
          
         // Поиск картинки с точностью 80%  
         IF_PICTURE_IN (1020,530, 1400,760, STRCONCAT(STRCUT("00", 0, 3 - STRLEN($count)), $count, ".bmp"), 80, 80)  
            LOG("Картинка найдена! Координаты: " + $_return1 + ", " + $_return2)  
             
            // Если картинка найдена, правый клик по её координатам + смещение (15,15)  
            RCLICK($_return1 + 15, $_return2 + 15)  
             
            // Устанавливаем флаг, что картинка найдена  
            $picture_found = 1  
             
            // Выходим из цикла по картинкам  
            BREAK  
         END_IF  
      END_CYC  
       
      IF ($picture_found == 1) 
         BREAK 
      END_IF 
       
      // Если картинка не найдена, переход на следующую страницу  
      IF ($picture_found == 0)  
         // Координата X увеличивается на 30 для каждой следующей страницы  
         $page_current_x = $page_start_x + (($page - 1) * 30)  
         LOG("Переход на следующую страницу. Координаты: " + $page_current_x + ", " + $page_start_y)  
         LCLICK($page_current_x, $page_start_y)  
         WAITMS(500)  // Ожидание для загрузки следующей страницы  
      END_IF  
   END_IF  
END_CYC