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

Основной раздел => Общие вопросы => Topic started by: FJ on November 12, 2015, 11:42:44 PM

Title: IF_PICTURE_IN и SCREENSHOTEX
Post by: FJ on November 12, 2015, 11:42:44 PM
Доброго времени суток.
Можете подсказать, как организовать такую штуку.
Допустим у меня скрипт ищет часть картинки(IF_PICTURE_IN ) в базе картинок, не находит и сохраняет(SCREENSHOTEX) часть, где должна располагаться эта картинка в соседнюю папку temp. после переходит к следующей картинке и действие повторяется.
Хотел бы, чтобы скрипт сначала искал в базе, если не находит, то искал в папке темп, если и там не находил, то сохранял картинку.А то приходится перебирать тонны одинаковых картинок, что отнимает относительно много времени :)
Хотелось бы это без привлечения сторонних программ реализовать.
И еще, перебор картинок через IF_PICTURE_IN очень долгий, может есть более быстрый способ? Куда капать?
Вот часть кода например:

Code: [Select]
for ( $rang = 1 , $rang < 10 )
                  GETSCREEN
                  IF_PICTURE_IN ( $Xmin , $Ymin + 300 , $Xmax , $Ymin + 396 , strconcat("screens\temp\rang \", $rang ,".bmp"), -1, 100)
                     if ( $rang = 9)
                        SCREENSHOTEX ( $_return1 - 70 , $_return2 - 5 , $_return1 + 30 , $_return2 + 18, "temp\rang\9_" , 0 )
                        $_return1 $_return2
                        print ("найден ранг, но нет в базе - скрин сделал")
                     else
...
Эти 10 картинок он быстро перебирает, но есть часть кода, которая состоит более чем из 300 картинок... Долго в общем! :)

Натолкните на мысль пожалуйста! :)
Title: Re: IF_PICTURE_IN и SCREENSHOTEX
Post by: Vint on November 13, 2015, 08:43:49 AM
Наталкиваю. Сменить подход и попытаться сделать по другому.
300 картинок в любом случае будет не быстро искать.

Не весь скрипт, что он делает если не найдёт?
У GETSCREEN можно задать область - ускорение
GETSCREEN не обязательно делать внутри цикла если ничего не меняется на экране в период перебора картинок.
GETSCREEN самая тормознутая команда, тем более по всему экрану.
Вывод в лог тоже стоит оставлять полным только на этапе отладки. Штука тоже сильно замедляющая.

P.S. что за висящие в вакууме $_return1 $_return2   - замедление на парсинге при обработке мусора.
Title: Re: IF_PICTURE_IN и SCREENSHOTEX
Post by: FJ on November 13, 2015, 01:15:59 PM
Не весь скрипт, что он делает если не найдёт?
Не понял вопроса

У GETSCREEN можно задать область - ускорение
Круто, не знал. А поиск в этой области как осуществлять лучше 0,0,xmax,ymax ?

Не весь скрипт, что он делает если не найдёт?

GETSCREEN не обязательно делать внутри цикла если ничего не меняется на экране в период перебора картинок.
Да, вчера понял это. Заметно ускорился! :)

Вывод в лог тоже стоит оставлять полным только на этапе отладки. Штука тоже сильно замедляющая.
Вывод у меня только пока отладка, после идет в конце цикла, показывает что нашел.

P.S. что за висящие в вакууме $_return1 $_return2   - замедление на парсинге при обработке мусора.
Тоже убрал :)

А в итоге:
Хотел бы, чтобы скрипт сначала искал в базе, если не находит, то искал в папке темп, если и там не находил, то сохранял картинку.
Title: Re: IF_PICTURE_IN и SCREENSHOTEX
Post by: FJ on November 13, 2015, 01:24:59 PM
И еще, раз уж дело пошло.
Почему сегодня например скрины кликер сделал, я их добавил. А завтра он опять говорит, что не может найти картинку, и снова добавляет. в чем подвох?
Title: Re: IF_PICTURE_IN и SCREENSHOTEX
Post by: Flayka on November 13, 2015, 01:30:44 PM
так ты наверно их в перебор не добавляешь?)
Title: Re: IF_PICTURE_IN и SCREENSHOTEX
Post by: FJ on November 13, 2015, 01:54:42 PM
Нет, они добавлены.
Самое интересное, что заменяю картинку, которую сделал кликер, и все работает, а через какое-то время снова перестанет, не понимаю что за дела...
Title: Re: IF_PICTURE_IN и SCREENSHOTEX
Post by: Vint on November 13, 2015, 01:55:25 PM
Ты бы задачу объяснил с примерами изображений и с подробным описанием. Вполне вероятно что ты пытаешься отлавливать то, что отлавливать не нужно. Например,  (здесь хотел написать примеры, но потом замучался в н-ный раз гадать "а что же там имелось ввиду")
Title: Re: IF_PICTURE_IN и SCREENSHOTEX
Post by: FJ on November 13, 2015, 04:29:09 PM
Хороше.
У меня выпадает текст на белом фоне такого рода(прикрепил изображение)
Это ранг, он может быть от 1 - 100. В игре выделить это нельзя, выскакивает как картинка.
Если кликер не нашел изображение в папке база, то сохраняю его с помощью SCREENSHOTEX в папку темп(изображение появляется всегда статично, поэтому  координаты знаю).

1) Я хочу чтобы кликер определял это значение.
2) Хочу узнать, как осуществить поиск картинки сначала в папке база, затем в папке темп

Вот вроде и все :)
Title: Re: IF_PICTURE_IN и SCREENSHOTEX
Post by: Oraven on November 13, 2015, 06:01:35 PM
Может использовать скрипт для распознавания цифр (http://crapware.aidf.org/forum/index.php?topic=88.msg1571#msg1571), тогда картинок будет всего 11.


В любом случаи надо применять цветокоррекцию 8 уровня чтоб сделать все черно белым
Code: (clickermann) [Select]
COLORMODE(8)
скорее всего при перезагрузках игры шрифт немного по разному рендерится поэтому у тебя уже 300 картинок. Без цветокоррекции и процента совпадения тут никак.

Ну и делать 300 картинок это неверное направление. Бред...
Title: Re: IF_PICTURE_IN и SCREENSHOTEX
Post by: FJ on November 13, 2015, 06:25:01 PM
Да не, у меня всего 40 картинок:)
И в принципе работает :)
Про распознавание спасибо, сейчас посмотрю! :)
Title: Re: IF_PICTURE_IN и SCREENSHOTEX
Post by: FJ on November 14, 2015, 10:45:27 PM
С колормодом вообще клево стало все! Спасибо! :)
А вот на счет этого можете подсказать?
2) Хочу узнать, как осуществить поиск картинки сначала в папке база, затем в папке темп
Title: Re: IF_PICTURE_IN и SCREENSHOTEX
Post by: FJ on November 15, 2015, 11:05:59 PM
Но существует вероятность, что не искать хочется вам, а сравнивать с вновь полученной картинкой? ::)
Надеюсь мы правильно друг друга понимаем, в итоге я не хочу перебирать в ручную сотни одинаковых картинок(перед SCREENSHOTEX проверить, может такая картинка уже есть?).