|
Вопросы по Боту ПРОСЬБА НЕ СОЗДАВАТЬ ТЕМЫ ТИПО "ХЕЕЕЕЛЛЛППП, ППЛЛИИZZZ" |
|
Опции темы | Опции просмотра |
02.05.2011, 21:02 | #1 |
Новичок
Регистрация: 23.12.2009
Адрес: Москва
Сообщений: 21
Вы сказали Спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
|
Ошибка при отставание ведомого.
Давно не ботил. Решил взяться за старое =)
Суть проблемы: Использую самую новую версию бота скачанную с СВН. Revision: r7718 Есть два персонажа Син и Прист. Качаются в пати и прист в роли суппорта. Когда прист задерживается(при любых обстоятельствах хоть то долгий каст или даже отключение ai на короткое время) и теряет ведущего из поля зрения выдаёт вот такую ошибку: "BUG: Actor::move(undef, undef) called!" После чего бот пытается идти вперёд, но его откидывает назад как буд-то он и не пытался двигаться и выдаёт следующую ошибку "You tried too long to move". и эта ошибка повторяется несколько раз после чего бот перестаёт пытаться. Координаты показанные в боте отличаются от координат в игре (/where) Вопрос: Как избавиться от этой ошибки? Мой временный и глупый вариант от залипания бота: С помощью макроса 1)при виде строчки "You tried too long to move" останавливаю движение "move stop" 2)вывожу в игровой чат команду "@refresh"(обновляет место положение персонажа. В игре это выглядит как использование винга) 3)двигаюсь рандомно на 1-2 клетки в любую сторону После всего этого бот пытается двигаться дальше к ведущиму, но иногда ошибка повторяется. Пытался найти решение на форумах, но не нашёл. Нашёл хороший плагин "ReactOnActor" с помощью которого можно было заставить ведущего ждать ведомого если тот отстал на определённое количество клеток, но ссылка битая. Если у кого есть новая версия подходящая под мою ревизию киньте ссылку. В помощь по устранению данной ошибки: "BUG: Actor::move(undef, undef) called!" - данная строка находится в "src\Actor.pm" PHP код:
"You tried too long to move" - находится в "src\Task\Move.pm" PHP код:
Последний раз редактировалось BloodAngel; 03.05.2011 в 22:28. |
03.05.2011, 22:51 | #2 |
Новичок
Регистрация: 23.12.2009
Адрес: Москва
Сообщений: 21
Вы сказали Спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
|
Вижу придётся самому пытаться править ошибку.
Тогда вопрос: Как корректно узнать координаты сопартийца? Покопался в "AI::CoreLogic::processFollow" и нашёл место когда бот потерял ведущего. Проверка на потерю ведущего идёт после комментария "##### FOLLOW-LOST #####" Ниже расписаны всякие варианты потери ведущего(ушёл в портал, телепортнулся, вышел из игры и т.д.) но нужная часть в самом низу PHP код:
Посмотрев как реализованы движения чуть выше я и дописал перед "moveAlongVector" вот такой код PHP код:
"$ai_v{'temp'}{'pos'}" - как я понял "pos" хранит предыдущие координаты, а "pos_to" новые координаты. Но если прописать "$ai_v{'temp'}{'pos_to'}" то начинает опять залипать и выдавать ошибки. Какие есть идеи? Или никто здесь так углублённо бот не ломает? P.S. - сервак игровой с сайтом целый день валяется. А хотел сегодня ещё покопаться с проблемой. |
12.05.2011, 11:07 | #3 | |
Админ
|
.
Цитата:
__________________
¤Config checker¤Руководство¤Файлы¤Конфиги¤Макросы¤ Быстро и качественно напишу конфиг (макрос) за yAD! Стучи! |
|
14.05.2011, 01:38 | #4 |
Новичок
Регистрация: 23.12.2009
Адрес: Москва
Сообщений: 21
Вы сказали Спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
|
Дописал в CoreLogic.pm перед moveAlongVector
PHP код:
PHP код:
Заметил что прист бегает по прямой быстрее чем син. Я бы сказал иногда обгоняет как-будто син без аги идёт. Так же удивляет реакция приста когда он бежит к сину(ищет его) а син бежит к нему на встречу и мимо пробегает. Прист пишет что мастер найден доходит до той точки куда шёл и только потом разворачивается, а син в этот момент уже мог убежать и вот тут частенько бывает этот BUG. Нельзя ли сделать так что бы персонаж остановился как только нашёл мастера и сразу переключился на преследование? Последний раз редактировалось BloodAngel; 14.05.2011 в 01:43. |
15.05.2011, 18:21 | #5 |
Новичок
Регистрация: 23.12.2009
Адрес: Москва
Сообщений: 21
Вы сказали Спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
|
Что-то ни как не хочет исправляться баг. Ну да ладно, пойдём от обратного. Сделаем так что бы ведущий и ведомый не расставались. Макрос "Ждём ведомого"
|
Метки |
actor::move(undef, long to move, undef), you tried too, отставание ведомого |
|
|