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

> Нужен совет по findcolor
Topdeck
сообщение 30.5.2018, 5:39
Сообщение #1


*

Registred
Сообщений: 5
Регистрация: 29.7.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.556
Возраст: 21



Добрый день! Сижу занимаюсь созданием не сложного бота-кликера, в одной изометрической старой онлайн игрушке через findcolor.
Опишу задумку, заменил и вырезал все лишние текстуры на экране, мобы представляют из себя грубо говоря квадратики одного цвета, после того как экран почищен от квадратиков(мобов) бот двигается по указаным цветным точкам далее (условный круг), если замечены мобы они снова выпиливаются.
Идеальный бой - это одиночный клик на моба, ожидание его спилки несколько секунд и после его смерти(исчезания модельки) клик на ближайшего следующего с минимальной задержкой.

Пример моего скрипта, кликает на нужный цвет активируя авто-атаку тем самым ( без передвежений, только на проклик мобов):

set mouseclickdelay 50
set #a findcolor (0, 0 1024, 768 (3613183) %arr 2 -1 3)
if #a > 0
move_smooth %arr [1,1] %arr [1,2]
kleft %arr [1,1] %arr [1,2]
wait 5000
end_if

Столкнулся с несколькими проблемами, которые связаны друг с другом. Не знал даже как сформулировать чтобы воспользоваться поиском.

Первое - это то, что мобы умирают за какой-то рандомный промежуток времени(криты,миссы плюс преодоление расстояния до цели) и никак не угадаешь подходящую задержку через команду wait, если сделать быстро, то персонаж будет метаться и выходит куча недобитых мобов, если медленно, то не эффективно и очень палевно. Хочу сделать здесь так чтобы, если он начал бить какого-то конкретного врага делал это до конца и только после переключался на другого с минимальной задержкой.
(Здесь, была мысль проверять цвет по текущими координатами курсора, но что-то у меня так и не получилось реализовать)

Второе - это то, что через findcolor мне необходимо, чтобы убивались в первую очередь, мобы которые находятся рядом с персонажем(условный центр окна), у меня же ситуация такая, что есть пачка из нескольких мобов убивается один и перс бежит бить моба в противоположном углу экрана, поскольку цвет у всех одинаковый. Уменьшение зоны поиска, желанного результата не даёт, т.к всёравно даже в меньшей зоне может кликнуть на дальний объект.

Ищу советы по решению моих вопросов)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
DarkMaster
сообщение 30.5.2018, 20:11
Сообщение #2


***********

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



Цитата
(Здесь, была мысль проверять цвет по текущими координатами курсора, но что-то у меня так и не получилось реализовать)

Показывайте, что не получилось - ход мысли верный.
Цитата
Второе - это то, что через findcolor мне необходимо, чтобы убивались в первую очередь, мобы которые находятся рядом с персонажем(условный центр окна), у меня же ситуация такая, что есть пачка из нескольких мобов убивается один и перс бежит бить моба в противоположном углу экрана, поскольку цвет у всех одинаковый. Уменьшение зоны поиска, желанного результата не даёт, т.к всёравно даже в меньшей зоне может кликнуть на дальний объект.

Разбивать зону поиска на много мелких и искать в них по очереди. Сначала в текущем положении персонажа, потом вокруг него, потом еще шире и т.д.:
Код

*****
*****
**X**
*****
*****

*****
**X**
*X*X*
**X**
*****

*****
*X*X*
*****
*X*X*
*****

**X**
*****
X***X
*****
**X**

*X*X*
X***X
*****
X***X
*X*X*

X***X
*****
*****
*****
X***X

Примерно такая схема

Сообщение отредактировал DarkMaster - 30.5.2018, 20:13


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


*

Registred
Сообщений: 5
Регистрация: 29.7.2017
Группа: Пользователи
Наличность: 0
Пользователь №: 18.556
Возраст: 21



Цитата
Показывайте, что не получилось - ход мысли верный.


Я пытался сделать так - использовать команду get mouse_pos #x #y, как у вас записано в примерах, а после делать по этим координатам getcolor и если он совпадает с хотя бы одним из указанных, просто делает ещё левый клик в текущем положении мыши.Как, мне показалось, getcolor просто не работает со значениями #x #y, а только с конкретными координатами. Возможно, есть ещё какой-то метод для реализации такой задумки, или я как-то не так использую эти инстументы? Примеры очень сильно бы всё для меня упростили.

Про последовательную схему поиска понял, но могли бы вы мне указать где можно почитать подробнее о реализации подобной конструкции, а ещё лучше готовый пример.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения



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

 

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