Author Topic: Поиск картинки на основе нескольких образцов  (Read 1535 times)

0 Members and 1 Guest are viewing this topic.

novhome

  • Освоившийся
  • **
  • Posts: 31
    • View Profile
В игре при запуске выскакивает окно с меняющей свой цвет кнопкой. Чтобы найти кнопку, создал скрины с разным ее состоянием. Запихнул их в массив и прохожусь циклом. Оно как бы работает, кнопка находится, но поиск идет относительно долго и не заканчивается пока весь цикл не пройдет. По факту находится несколько совпадений. Вопрос - как заставить скрипт прерывать цикл при первом нахождении картинки. Или может не стоит заморачиваться с массивом?
Code: (Clickermann) [Select]
SUB(reklamapb)
IF($log = 1)
LOGWRITE(STRCONCAT($name, " - Ищем Рекламу ПБ"))
END_IF
WAITMS(100)
GETFILELIST($buy_arr, "Screen\buy\*.bmp") // Помещаем образцы рекламы в массив
$time = $_time_t + 120
WHILE($time > $_time_t)
GETSCREEN ($x1_buy, $y1_buy, $x2_buy, $y2_buy)
COLORMODE(4)
FOR($buy_num=0,$buy_num<ARRSIZE($buy_arr))
IF_PICTURE_IN ($x1_buy, $y1_buy, $x2_buy, $y2_buy, STRCONCAT("Screen\buy\", $buy_arr[$buy_num]), -1, 90)
$time = 0
$st_rekpb = 0
IF($log = 1)
LOGWRITE(STRCONCAT($name, " - Нашли Рекламу ПБ"))
END_IF
WAITMS(100)
ELSE
WAITMS(500)
END_IF
END_CYC
END_CYC
IF($time ! 0)
IF($log = 1)
LOGWRITE(STRCONCAT($name, " - Не нашли Рекламу ПБ"))
END_IF
$st_rekpb = 1
END_IF
END_SUB

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
После 14 строки вставить строку
Code: (clickermann) [Select]
$buy_num = ARRSIZE($buy_arr)
А в 20-й уменьшить задержку. Зачем пауза в пол секунды между поисками
Code: (clickermann) [Select]
WAITMS(20)


novhome

  • Освоившийся
  • **
  • Posts: 31
    • View Profile
Как сам не сообразил. Это же просто ))) Спасибо.
С задержкой да, промахнулся, подразумевалось 50, но как-то нолик добавился.