|
|
|
[Вопрос] Нахождение текста прямо в приложении, Больная тема |
|
|
asdvo1ty |
10.10.2012, 13:23
|
Novice
Сообщений: 68
Регистрация: 11.11.2011 Группа: Пользователи Наличность: 0
Пользователь №: 14.240
Возраст: 18
|
Доброго времени суток! В этой теме я хочу спросить у экспертов, насколько это трудно, искать текст в окне приложения, и стоит ли вообще испльзовать для таких целей Пилот. Пример, возможно, будет не один, если найденное решение меня устроит только конкретно под первый. А пока он такой. Игра: Aion. Два скрина: (IMG: http://cs306500.userapi.com/v306500963/274a/S5S4pi3Vb8c.jpg) (IMG: http://cs306500.userapi.com/v306500963/2752/lywIHcj0wiA.jpg) Что нужно найти: На первом скрине - 15/99, на втором - 60/99. Ну, наверху. В такой чёрной или зелёной полоске. Это есть нечто иное, как уровень конкретного мастерства персонажа в крафте (на первом скрине - алхимия, на втором - шитьё). Казалось бы, в чём проблема? Берёшь да фоткаешь отдельно каждую цифру и ищешь при помощи FindImage. Но фон-то разный. Опять же, фоткаешь и на том, и на другом фоне, всего-то 20 картинок, ничего страшного. Но эта зелёная полоска тянется вперёд по мере увеличения этого самого навыка, а значит, где-то на 45-м — 55-м уровнях она будет где-то в начале одной цифры, а в конце - тёмный фон. Ведь Пилот, насколько мне известно, не умеет искать, скажем, png-картинки с прозрачным фоном и находить всё, что непрозрачно (ПОПРАВЬТЕ, ЕСЛИ НЕ ПРАВ). Иначе я бы просто сфоткал, опять же, все эти цифры и обмазал весь фон прозрачным цветом в фотошопе, а потом искал. Вот и простой сложный вопрос: как быть?
|
|
|
|
asdvo1ty |
10.10.2012, 19:29
|
Novice
Сообщений: 68
Регистрация: 11.11.2011 Группа: Пользователи Наличность: 0
Пользователь №: 14.240
Возраст: 18
|
Цитата(EL-GReeN @ 10.10.2012, 15:04) Вы не правы, пилот может искать .bmp картинки с игнорированием фона, можно закрасить фон одним цветом и левый верхний пиксель должен быть цветом фона, пример: (IMG: http://i25.fastpic.ru/big/2012/1010/a8/59aa0ee4957708e3cfe28e9e15de73a8.jpg) Спасибо, это подойдёт и решит, скорее всего, все мои проблемы. Хотя, конечно, находить png с прозрачностью было бы лучше...
|
|
|
|
asdvo1ty |
13.10.2012, 21:31
|
Novice
Сообщений: 68
Регистрация: 11.11.2011 Группа: Пользователи Наличность: 0
Пользователь №: 14.240
Возраст: 18
|
Текст нужно просто научиться находить. Здесь можно обойтись и без этого, но вообще были такие случаи, когда я бросал делать бота только потому, что нужно было находить тексты вроде таких, и было просто страшно подумать, как это сложно реализовать. Здесь полоска почти на 400 пикселей, изменяется каждый уровень. Даже если ее конец будет в месте буквы/цифры, она всё равно всегда покажет точное значение. Но если мне, к примеру, нужно найти не 60, а 60/99? Если, скажем, по достижении 99-го уровня можно будет изучить у мастера сотый, и тогда эта полоска пойдёт с нуля, а текст будет 100/199? Мне не отловить будет такое изменение в скрипте. Я ищу не лёгких способов определения уровня, а способы читать текст, состоящий, хотя бы, из очень ограниченного числа символов, скажем, 0-9 и /, как здесь.
|
|
|
|
_LESTAT_ |
21.10.2012, 17:53
|
Apprentice
Сообщений: 103
Регистрация: 12.3.2011 Группа: Пользователи Наличность: 0
Пользователь №: 13.512
Возраст: 25
|
Цитата Если игра работает через клиент, то возможно лучшим решением будет использовать артмани+пилот А помоему проще всегов данном случае искать по зеленой полоске. Ненужно ни цифр знать ни армани мучать. set #i findcolor (#a , #b #c , #d 1 1 #e %arr 2) #a , #b верхнйи левый угол полоски #c , #d нижний правый угол (хотя можно держать одну и туже координату х) #e Цвет полоски #i - будет количество пикселей нужного цвета найденых в полоске Ищем максимальное когда в полоска полностью заполнена. Превращаем число пикселей в проценты(привер: set #myHP #i * 100 / 582 (если 582, чило пикселей найденое при полностью заполненой полоске)). Несмотря на то что на полоске мешается число, данного способа должно вполне хватить, чтобы узнать число на полоске.
|
|
|
|
xolost |
22.10.2012, 17:30
|
Expert
Сообщений: 517
Регистрация: 17.6.2012 Группа: Пользователи Наличность: 0
Пользователь №: 15.035
|
Цитата(_LESTAT_ @ 21.10.2012, 18:53) А помоему проще всегов данном случае искать по зеленой полоске. Ненужно ни цифр знать ни армани мучать. set #i findcolor (#a , #b #c , #d 1 1 #e %arr 2) #a , #b верхнйи левый угол полоски #c , #d нижний правый угол (хотя можно держать одну и туже координату х) #e Цвет полоски #i - будет количество пикселей нужного цвета найденых в полоске Ищем максимальное когда в полоска полностью заполнена. Превращаем число пикселей в проценты(привер: set #myHP #i * 100 / 582 (если 582, чило пикселей найденое при полностью заполненой полоске)). Несмотря на то что на полоске мешается число, данного способа должно вполне хватить, чтобы узнать число на полоске.
Интересное решение, я подобную задачу примерно так же решал), но использовал findimage set $hp findimage (#startX #startY #endX #endY ($path%pro4ee[1 1].bmp) %crds 2 100 -1) if $hp > 0 set #hp $hp *100 / 120 end_if где %pro4ee[1 1] - название пиксела с жизнями, которое мы ищем. как-то так(IMG: style_emoticons/default/smile.gif)
|
|
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|