Что нового

[Darkorbit] Распознавание цифр и приравние этого значения к переменной

GigRise

Новичок
Сообщения
5
Репутация
0
Здраствуйте, столкнулся со следующей трудностью:
В игре присутствуют координаты расположения игрока и в зависимости от их значения бот должен кликнуть в то или иное место.
Вот как они выглядят:
BK6y5eGUmdoElS9oH2JQ.jpg

Есть ли какой нибудь способ "вычитать" эти координаты?
Мне пришло на ум два способа:
i) Так как расположение/цвет координат не меняется, можно использовать функцию PixelSearch() и определить каждую цифру как множество пикселей расположенных в свойстенной форме соответсвующей цифры. Прийдется помучится с декларированием, что значительно увеличит обьем кода...
ii) Сравнение изображений. Тоесть создать preset 10-ти цифр и каким то образом заставить скрипт их сравнивать. Не знаю насколько точным получится раснознавание.

Есть ли более простые способы распознавания? Был бы впремного благодарен на примере с кодом.
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Вот некто АК90 в своё время нашел вот такое изящное решение:
"научил скрипт при появлении окошка с кодом открывать файн ридер, скринить зону с кодом, вставлять, распознавать, и вставлять текст обратно)"
:thumbs_up:
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
необходимые условия для достаточно простого распознавания: чтобы цифры никак не сливались, то есть чтобы между цифрами всегда была вертикальная линия хотя бы в один пиксель промежутка (на предоставленной картинке - соблюдено)

При таких условиях ты сможешь разбить общее число на отдельные квадратики, внутри которых отдельная цифра. Далее можно читать квадрат например слева сверху вправо вниз, определяя цвет пикселя по критерию "черный\НЕчерный", формируя исходя из этого строку типа 0011010100010101100101110, где 0 - нет цвета, 1 - есть цвет. В итоге для каждой цифры у тебя будет такой шаблон, далее тебе останется только только постоянно считывать данные из квадратиков и сопоставлять их с масками, тем самым формируя число. Работает это примерно как на видосе по ссылке: https://www.dropbox.com/s/2afhrlzrhfj10xw/EVE%20Trade-chan%201st%20video.avi?dl=0
Только там я писал для EVE Online. Там тоже буквы и цифры не пересекаются друг с другом.




Добавлено:
Сообщение автоматически объединено:

Ну и да, если распознавать только цифры, теоретически можно использовать Тессеракт, прям из коробки, даже обучать его не понадобится. И да у файн ридера есть в комплекте утилита которой задаешь область на экране, она скринит и выдает результат. Но если тебе нужно делать быстро, то это тессеракт или описанный мною метод.


Добавлено:
Сообщение автоматически объединено:

P.S. На правильно названные темы аж просто прочитав название хочется зайти и как-нибудь посодействовать топикстартеру. Увы многие этого не понимают :smile:


Добавлено:
Сообщение автоматически объединено:

А вот походу одна из проходных версий до того что на видосе: https://www.dropbox.com/s/3d8a91dexxrvsu3/EVE%20Trade-chan.rar?dl=0


Добавлено:
Сообщение автоматически объединено:

Как в этой игре звук выключить? Я в настройках во вкладке "Звук" все в минимум выкрутил и галочку снял, а оно все равно играет
 
Автор
GigRise

GigRise

Новичок
Сообщения
5
Репутация
0
Если кому-то интересно нашёл решение с помощью скрипта ImageSearch. Он сравнивает сохраненное изображение в формате 24-bmp на соотношение по всему экрану, либо в указаной области взависимости от использованой функции (_ImageSearch, _ImageSearchArea)

В итоге сделал скриншоты 10 цифр, указал область поиска, и после приравнял к переменным.

@Belfigor твое решение со строкой показалось мне гениально простым, но увы за грани моих возможностей колдовства в AutoIt :smile:
Я понятия не имею как можно создать строку и постепенно прицеплять значения 0 или 1. :scratch:
P.S. За видос зачёт :thumbs_up:
 
Верх