Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> [Вопрос] Нахождение текста прямо в приложении, Больная тема
asdvo1ty
сообщение 10.10.2012, 13:23
Сообщение #1


***

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-картинки с прозрачным фоном и находить всё, что непрозрачно (ПОПРАВЬТЕ, ЕСЛИ НЕ ПРАВ). Иначе я бы просто сфоткал, опять же, все эти цифры и обмазал весь фон прозрачным цветом в фотошопе, а потом искал. Вот и простой сложный вопрос: как быть?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
EL-GReeN
сообщение 10.10.2012, 14:04
Сообщение #2


*****

Journeyman
Сообщений: 474
Регистрация: 18.7.2011
Группа: Пользователи
Наличность: 0
Из: Россия
Пользователь №: 13.815
Возраст: 32



Вы не правы, пилот может искать .bmp картинки с игнорированием фона, можно закрасить фон одним цветом и левый верхний пиксель должен быть цветом фона, пример:
(IMG:http://i25.fastpic.ru/big/2012/1010/a8/59aa0ee4957708e3cfe28e9e15de73a8.jpg)


--------------------
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 10.10.2012, 19:13
Сообщение #3


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



Если игра работает через клиент, то возможно лучшим решением будет использовать артмани+пилот
https://forum.uokit.com/index.php?s=&am...st&p=174816


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
asdvo1ty
сообщение 10.10.2012, 19:29
Сообщение #4


***

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 с прозрачностью было бы лучше...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 11.10.2012, 9:49
Сообщение #5


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



артмани+пилот.
Избежишь ОЧЕНЬ многих проблем. Стабильность намного выше, ресурса вообще не кушает, никакого набора из кучи картинок, отсутствие частных случаев с кривым распознаванием и долгих часов поиска в чем было дело.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
asdvo1ty
сообщение 11.10.2012, 9:57
Сообщение #6


***

Novice
Сообщений: 68
Регистрация: 11.11.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 14.240
Возраст: 18



Цитата(DarkMaster @ 11.10.2012, 10:49) *

артмани+пилот.
Избежишь ОЧЕНЬ многих проблем. Стабильность намного выше, ресурса вообще не кушает, никакого набора из кучи картинок, отсутствие частных случаев с кривым распознаванием и долгих часов поиска в чем было дело.
И как мне использовать артмани в полностью автономном скрипте, который должен, лишь открыв это окошко, узнать настоящий уровень умения, после чего качать его? Качаются они одинаково не на всех уровнях.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 11.10.2012, 10:47
Сообщение #7


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



Твоя цель найти адрес в памяти, где хранится это число. Далее readmem.

Скорее всего адрес будет изменяться с каждой загрузкой клиента, чтобы этого избежать ищи указатель на адрес. При поиске указателя рекомендую использовать галочку поиска только среди статичных адресов. Считывая указатель у тебя всегда будет актуальный адрес значения.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
asdvo1ty
сообщение 11.10.2012, 11:55
Сообщение #8


***

Novice
Сообщений: 68
Регистрация: 11.11.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 14.240
Возраст: 18



В артмани вообще не могу эти числа найти.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 11.10.2012, 12:38
Сообщение #9


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



Тут вариантов много.
1) Выбери отключенные типы чисел.
2) Попробуй обратный порядок байтов.
3) Искать следует текущий уровень скила.
4) Можно попробовать искать "неизвестное значение".

5) Можно сделать ход конем и попробовать найти не значение, а строку. Прямо целиком строку. Если не найдет, то можно попробовать по частям. Т.е. искать тип "текст". Тут есть определенные минусы, но при открытом окошке проблем возникнуть не должно. Возможно придется обновлять значение адреса из указателя при каждом открытии окна, но вряд ли это будет критично(не руками же).


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Larrikin
сообщение 11.10.2012, 19:01
Сообщение #10


****

Apprentice
Сообщений: 120
Регистрация: 9.9.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 13.968
Возраст: 35



А так важно точное значение? Может достаточно будет найти конец зеленой полоски?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 11.10.2012, 19:20
Сообщение #11


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



Цитата(Larrikin @ 11.10.2012, 19:01) *

А так важно точное значение? Может достаточно будет найти конец зеленой полоски?

Замечательный вопрос! Кроме того, точность промежуточных значений будет даже выше (кроме места с цифрами), т.к. длина полной зеленой полосы гораздо больше чем 100 пикселей


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
asdvo1ty
сообщение 13.10.2012, 19:53
Сообщение #12


***

Novice
Сообщений: 68
Регистрация: 11.11.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 14.240
Возраст: 18



Да, по самой полоске искать легче, но, в общем-то, мне нужно не это, а текст.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Zeleax
сообщение 13.10.2012, 21:20
Сообщение #13


*********

ex-Moderator UOPilot
Сообщений: 2.440
Регистрация: 8.10.2010
Группа: Пользователи
Наличность: 0
Из: Киев
Пользователь №: 13.093



Текст нужен для точных промежуточных значений?


--------------------
Полезные советы - читать всем! UOWiki
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
asdvo1ty
сообщение 13.10.2012, 21:31
Сообщение #14


***

Novice
Сообщений: 68
Регистрация: 11.11.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 14.240
Возраст: 18



Текст нужно просто научиться находить. Здесь можно обойтись и без этого, но вообще были такие случаи, когда я бросал делать бота только потому, что нужно было находить тексты вроде таких, и было просто страшно подумать, как это сложно реализовать.
Здесь полоска почти на 400 пикселей, изменяется каждый уровень. Даже если ее конец будет в месте буквы/цифры, она всё равно всегда покажет точное значение. Но если мне, к примеру, нужно найти не 60, а 60/99? Если, скажем, по достижении 99-го уровня можно будет изучить у мастера сотый, и тогда эта полоска пойдёт с нуля, а текст будет 100/199? Мне не отловить будет такое изменение в скрипте.
Я ищу не лёгких способов определения уровня, а способы читать текст, состоящий, хотя бы, из очень ограниченного числа символов, скажем, 0-9 и /, как здесь.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 14.10.2012, 3:39
Сообщение #15


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27725
Пользователь №: 11.279



как у+е говорил, артмани самый правильный вариант. Освоить все фишечки и тонкости не самое простое и быстрое занятие, однако все труды окупятся.
Есть вариант нарезки картинок и их поиска. Даже где-то скрипт проскакивал - картинки с координатами вставил и поехал. Но имхо это браузерный вариант из-за безысходности(в браузере с артмани можно повеситься).


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
_LESTAT_
сообщение 21.10.2012, 17:53
Сообщение #16


****

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, чило пикселей найденое при полностью заполненой полоске)). Несмотря на то что на полоске мешается число, данного способа должно вполне хватить, чтобы узнать число на полоске.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
xolost
сообщение 22.10.2012, 17:30
Сообщение #17


******

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)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 28.4.2024, 1:55
Designed by Nickostyle