Что нового

lineage2 бот. Проблема с "застреванием". камни, деревья и прочие помехи на пути

RomaTch

Новичок
Сообщения
2
Репутация
0
Есть простой бот. Умеет брать в таргет ближнего моба, бить, брать в таргет далеко стоящих мобов по имени. Ну и прочее, хилиться, бафаться, банки есть.
Проблема: если на пути ко мобу препятствие, какая либо кочка, дерево или камень то то бот встает колом или еще хуже, тупо дергается, через некоторое время моб отойдет в сторону и к нему можно будет дойти по прямой. Но это потери времени.
Как пытался решить:
1. Раз в минуту запускаю функцию, которая рандомно кликает в центре экрана, +- некоторое количество пикселей. В результате бот выходит из тупиков, но при неудачном клике может убежать непонятно куда
2. Тоже самое что п.1 но не кликаю, а разворачиваюсь на ранд угол и бегу вперед. Надежнее в плане далеко не убежит, но хуже выходит из тупика
Далее варианты которые обдумываю но пока не реализовывал
- отслеживать полоску жизни моба, и если она долгое время не меняется, то детектить застревание и делать п.1 или п.2
- на миникарте отображается положение чара стрелкой в центре миникарты и если чар стоит и не поворачивается, то картинка статична (если отключить точки мобов). ОТслеживать статичность картинки и детектить застревание

Ищу эффективное решение по застреванию
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Если координаты бота не выходят за определенные пределы в течении Х времени то вернуться по координатам пути назад на 1 -2 шага или же на определенное расстояние и изменить путь с прямой на перемещение к мобу по косой. Другое дело если стена, тебе придется написать свою геодату для выбранной области чтобы бот тупо игнорировал указанные области и считал их "непроходимыми". Если хорошо с математикой можешь написать волновой алгоритм перемещения, то есть как пройти из пункта А в пункт Б обогнув все заведомо "непроходимые" препятствия.
Для изложенного выше есенно тебе надо знать координаты и ротацию чара.
 

ynbIpb

Скриптер
Сообщения
399
Репутация
110
Чтоб знать координаты нужно читать память.
А по поводу обхода препятствий я видел такую реализацию (на С4):
Скрипт переодически проверяет кусок экрана (внизу по середине), там обычно отображается земля. если чар бежит, то в этом куске пиксели меняются (земля движется), если застрял, то и земля стоит. Но если попадётся трава, то она колышится всегда. По этому таких проверок должно быть как минимум две в разных местах. Но раз есть миникарта, то можно и её проверять. Если научиться читать координаты из памяти, то проблема решится.
 
Автор
R

RomaTch

Новичок
Сообщения
2
Репутация
0
Читать память без доп программ я не смогу.
Как можно получить координаты? Например написать в чат /time покажет время, есть команда покажет координаты x y z, не помню как пишется, но есть. Эти координаты в окне сообщений появятся, их надо будет распознать, для каждой локации составить карту, анализировать положение на карте и выбирать стратегию движения. Сложновато
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
А никто и не говорил что написать нормального бота легко. Читать память можно прямо из автоита.
 
Верх