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