Бот совершает лишние движения при атаке мобов

Общие вопросы по OpenKore обсуждаются здесь. Можно сказать, что это - основной раздел форума.
Возник вопрос? Вам сюда.

Модератор: 4epT

Правила форума
Все вопросы по OK не касающиеся плагинов и макросов публикуются в этом разделе.
Перед тем как что то писать, пожалуйста, удостоверьтесь что данная тема не поднималась, вы полностью изучили мануалы по конфигурационным файлам бота и не нашли там решения.
DInvalid
Грамотный
Сообщения: 368
Зарегистрирован: Вт ноя 14, 2006 4:54 pm

Сообщение DInvalid » Пн янв 15, 2007 3:00 pm

piroJOKE писал(а):DInvalid
По ходу, не исправлено. Хм... черт, если кто-то разберется, как туда воткнуть таймаут(!), чтобы он не сразу начинал движение, думаю, это будет как раз решением проблемы.

ЗЫ: Скоро обновим нашу сборку - SVNку, посмотрим что там мыши с АИ понаделывали. )
Я сейчас сижу над этим, включил постянный вывод состояния АИ, и пока что вижу такие вещи.
1) Метания обусловленны 2 факторами -
- Первый это то что при атаке мы идем к месту откуда моб начал движение, и если он идет к нам, то получаются "гонки" - мы приходим на то место где он был, а он уже там где мы были, и так далее.

Как решить - при атаке идти не в то место откуда моб move а в то куда он move ил хотя бы в середину между этими точками.

Где исправлять - в Attack.pm ?

- Второй - метания при атаке кучки мобов/поднятии лута, выражающиеся втом что после убийства моба мы не принимамся за следющего стоящего рядом, а сначала идем на ту точку route в которой прервался маршрут, потом вспоминаем что надо добить мобов, и идем назад.

Как решить - ставить задержку на срабатывание processRouteAI() ?
судя по логам, присходит следующее: после того как моб убит, срабатывает processRouteAI(), потом processMove(); что видно по идущим подряд сообщениям
Route - trimming ....
Route - next step ...
Sending move from ...

Я сделал так... возможно это приведет к глюкам и другим проблемам
поэтому кто смелый и может посмотерть как бот ведет себя с таким исправлением в разных ситуациях под хKore - you are welcome!

файл CoreLogic
sub Iteratre
....
AI::Attack::process();

### EDITED
processAutoAttack() if ($AI == 2);
### EDITED

Benchmark::end("AI (part 1.2)") if DEBUG;
....

Вот, если кто попробует и напишет о результатах - было бы здорово.

Аватара пользователя
piroJOKE
Модератор
Сообщения: 8208
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE » Пн янв 15, 2007 3:03 pm

DInvalid писал(а):Я сделал так... возможно это приведет к (....)
Э... чо-то в смысл не вьехал... %)
DInvalid писал(а):Как решить - при атаке идти не в то место откуда моб move а в то куда он move ил хотя бы в середину между этими точками.
Именно в точку назначения, именно! Мы это уже когда-то обсуждали, но тема заглохла. Клиент, кстати, именно в точку назначения и идёть.

ЗЫ: Кстати, follow это тоже касается.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download

DInvalid
Грамотный
Сообщения: 368
Зарегистрирован: Вт ноя 14, 2006 4:54 pm

Сообщение DInvalid » Пн янв 15, 2007 3:10 pm

piroJOKE писал(а):
DInvalid писал(а):Как решить - при атаке идти не в то место откуда моб move а в то куда он move ил хотя бы в середину между этими точками.
Именно в точку назначения, именно! Мы это уже когда-то обсуждали, но тема заглохла. Клиент, кстати, именно в точку назначения и идёть.
DInvalid писал(а):Я сделал так... возможно это приведет к (....)
Э... чо-то в смысл не вьехал... %)
По 1 му вопросу - не смог найти темку, где это обсуждалось, дай линк пожалуйста, и к чему там вообще пришли к каком уто решению?

По 2 ому - это штука делает вот что... срау после обработки атаки и до обработки следования по маршруту выполнить проверку на наличие мобов для атаки и если они есть АИ будет в сосоянии не
AI : route а AI: attack route когда дойдет до processRouteAI и таким образом сначала убьет всех мобов вблизи от себя а потом будет дергаццо...

*Сорри что сумбурно объясняю*

Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4773
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse » Пн янв 15, 2007 4:06 pm

piroJOKE
С АИ мыши ничего не делали. Только немного концепт ВЦЛ подправил.
Про Рефакторинг дя. Он идёт, только вот одно убивает что есть дубли функций, пока.

Аватара пользователя
piroJOKE
Модератор
Сообщения: 8208
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE » Пн янв 15, 2007 5:23 pm

DInvalid писал(а):По 1 му вопросу - не смог найти темку, где это обсуждалось, дай линк пожалуйста, и к чему там вообще пришли к каком уто решению?
Сходу не найду, надо листать "вопросы". Там помниццо даже картинки были иллюстрации.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download

maxsus
Энтузиаст
Сообщения: 62
Зарегистрирован: Вс ноя 19, 2006 3:28 am

Сообщение maxsus » Вт янв 16, 2007 8:11 am

мну такая же проблем......

Вариат такой.... при атаке моба двигатся в ту точку с которой он тя атаковал...и с интервалом 0.3 - 0.5 секунды направлять на него атаку..

РS - не знаю устройства коры и пакетов....но впринципе должна действовать....сильно не ругать :)

maxsus
Энтузиаст
Сообщения: 62
Зарегистрирован: Вс ноя 19, 2006 3:28 am

Сообщение maxsus » Вт янв 16, 2007 12:57 pm

Седня два часа бегал за ботом

Атак дистанце не всегда помогает О.О

1 из 4 атак не тупит.....не магу выивять закономерности тупизма=)

Бла вроде основная задача бота бить и убевать, блин а из него тонсора зделали......паливо ппц какое......

Такой тупизм не тока палево наводить, но и сокращает время жизни бота....=(

Аватара пользователя
piroJOKE
Модератор
Сообщения: 8208
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE » Вт янв 16, 2007 1:02 pm

maxsus
Успокойся! И прочти тему сначала прежде чем писать всякую херню, плз.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download

maxsus
Энтузиаст
Сообщения: 62
Зарегистрирован: Вс ноя 19, 2006 3:28 am

Сообщение maxsus » Вт янв 16, 2007 1:02 pm

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

Аватара пользователя
piroJOKE
Модератор
Сообщения: 8208
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE » Вт янв 16, 2007 1:03 pm

БЛЯ! maxsus, хватит флудить, ты за%бал уже.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download

japplegame
Профессионал
Сообщения: 272
Зарегистрирован: Вс ноя 05, 2006 2:03 pm

Сообщение japplegame » Вт янв 16, 2007 1:09 pm

Люди, не парьте мозг себе и другим. Бот уже давно идет туда куда моб ПРИДЕТ, а не туда где он находится в текущий момент. Определяются эти координаты по пакету move, который шлет сервер, когда мобы или другие персонажи двигаются.
И как раз именно из-за этого возникают непонятки с агрессивными монстрами.
Например, игрок стоит в точке A, а моб в точке B. Затем моб начинает двигаться к точке C, персонаж идет туда же. В это время моб дошел до С раньше игрока и поворачивает ему на встречу в точку D. Игрок в это время доходит до С, видит, что моб пошел в D и идет к D. Обычно на этом дело и заканчивается, но частенько одного такого цикла мало и моб с игроком могут долго плясать.
Самый верный вариант, это обнаружить, что моб находится в прямой досягаемости игрока и один раз послать пакет атаки. Далее сервер будет уже сам вести персонажа за мобом, как и происходит в реальном клиенте. Но в таком решении есть свои подводные камни, которые тоже надо обходить.

DInvalid
Грамотный
Сообщения: 368
Зарегистрирован: Вт ноя 14, 2006 4:54 pm

Сообщение DInvalid » Пт янв 19, 2007 11:41 am

japplegame писал(а):Люди, не парьте мозг себе и другим. Бот уже давно идет туда куда моб ПРИДЕТ, а не туда где он находится в текущий момент. Определяются эти координаты по пакету move, который шлет сервер, когда мобы или другие персонажи двигаются.
И как раз именно из-за этого возникают непонятки с агрессивными монстрами.
Ок, это пункт первый о котором я как раз и писал, это "пляски" вокруг моба.

Есть еще 2ой пункт, когда бот стоя в куче мобов, после каждой атаки отбегает на точку откуда он свернул с маршрута к мобам, и только потом идет обратно атаковать, и так для каждого моба.
Со сотороны выглядит очень заметно :o
Если я павильно понимаю, эта фича АИ появилась после разделения ai auto и ai manual в 1.9.3, и связана с тем что processRouteAI и processMove стоят сразу после обработки атаки, а processAutoAttack - значительно позже них.

Аватара пользователя
Xmpe
Бывалый
Сообщения: 749
Зарегистрирован: Вт ноя 14, 2006 10:12 pm
Discord: Xmpe#6813
Контактная информация:

Сообщение Xmpe » Пт янв 19, 2007 4:43 pm

Есть еще 2ой пункт, когда бот стоя в куче мобов, после каждой атаки отбегает на точку откуда он свернул с маршрута к мобам, и только потом идет обратно атаковать, и так для каждого моба.
Это более менее решено макросом, из куч не выбегает
Мы не умираем тут...и не рождаемся...
Лишь веря в мир, мы делаем его реальным...
....
Изображение
#openkore-ru

DInvalid
Грамотный
Сообщения: 368
Зарегистрирован: Вт ноя 14, 2006 4:54 pm

Сообщение DInvalid » Пт янв 19, 2007 8:02 pm

Xmpe писал(а):
Есть еще 2ой пункт, когда бот стоя в куче мобов, после каждой атаки отбегает на точку откуда он свернул с маршрута к мобам, и только потом идет обратно атаковать, и так для каждого моба.
Это более менее решено макросом, из куч не выбегает
Макрос ужасен, и все такие это не решение, а воркараунд так сказать.
П.С. У тебя какая версия бота? Еще со старой системой АИ или с новой?

Аватара пользователя
Xmpe
Бывалый
Сообщения: 749
Зарегистрирован: Вт ноя 14, 2006 10:12 pm
Discord: Xmpe#6813
Контактная информация:

Сообщение Xmpe » Пт янв 19, 2007 8:33 pm

со старой было, с новой уже не тестил
Мы не умираем тут...и не рождаемся...
Лишь веря в мир, мы делаем его реальным...
....
Изображение
#openkore-ru

Ответить