логика бота при смерти и разговоре с НПЦ

BugTraq: обнаруженные ошибки и обсуждение их устранения.

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

Аватара пользователя
4epT
macro-маньячина
Сообщения: 2792
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

логика бота при смерти и разговоре с НПЦ

Сообщение 4epT »

Коллеги на сколько я понимаю щас логика бота при смерти и разговоре с НПЦ ещё не идеальна и попадаются такие моменты, например, бот ещё разговаривает с НПЦ и пытается куда-то пойти.. пираткам по моему пофиг на такие нюансы. А вот офф серваки к этому строги.. сразу влупят дисконнект..

помоему в одной из SVN пытались подправить ситуацию с передвижением чара и разговором с нпц.. но видино не все ситуации учли

в общем есть 2 варианта..

либо после смерти или начала разговора с нпц мы делаем что-то типа:

Код: Выделить всё

AI::clear(qw/attack move route mapRoute/);
либо каждый раз при движении или атаке проверяем:

Код: Выделить всё

$char->{dead}
и "статус" на разговор с нпц если таковой есть
Добавлено спустя 38 минут 35 секунд:
или вот ещё кусок лога:
[Feb 26 10:38:36 2012.27] ---------Map Info----------
MAP Name: prt_fild06.gat
MAP IP: 10.33.161.236
MAP Port: 5000
-------------------------------
[Feb 26 10:38:36 2012.28] Закрытие подключения к мап-серверу.
[Feb 26 10:38:42 2012.72] Ожидание загрузки локации...
[Feb 26 10:38:42 2012.73] Ваши координаты: 27, 193
[Feb 26 10:38:42 2012.74] Другие игроки могут приглашать вас в пати.
[Feb 26 10:38:42 2012.74] Скрывать экипировку персонажа от других игроков.
[Feb 26 10:38:52 2012.18] Расчёт случайного маршрута до Окрестности Пронтеры (prt_fild06): 161, 284
[Feb 26 10:38:52 2012.10] Sent packet : 035F [ 5 bytes]
[Feb 26 10:38:52 2012.72] Sent packet : 035F [ 5 bytes]
[Feb 26 10:38:53 2012.23] Sent packet : 035F [ 5 bytes]
[Feb 26 10:38:53 2012.61] Sent packet : 035F [ 5 bytes]
[Feb 26 10:38:54 2012.12] Sent packet : 035F [ 5 bytes]
[Feb 26 10:38:54 2012.64] Sent packet : 035F [ 5 bytes]
[Feb 26 10:38:55 2012.13] Sent packet : 035F [ 5 bytes]
[Feb 26 10:38:55 2012.65] Sent packet : 035F [ 5 bytes]
[Feb 26 10:38:56 2012.17] Sent packet : 035F [ 5 bytes]
[Feb 26 10:38:56 2012.63] Sent packet : 035F [ 5 bytes]
[Feb 26 10:38:57 2012.14] Sent packet : 035F [ 5 bytes]
[Feb 26 10:38:57 2012.65] Sent packet : 035F [ 5 bytes]
[Feb 26 10:38:57 2012.71] Локация загружена
[Feb 26 10:38:59 2012.73] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:00 2012.24] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:00 2012.76] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:01 2012.23] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:01 2012.74] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:02 2012.26] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:02 2012.75] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:03 2012.35] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:03 2012.94] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:04 2012.24] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:04 2012.77] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:05 2012.30] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:05 2012.76] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:06 2012.27] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:06 2012.78] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:07 2012.25] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:07 2012.77] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:08 2012.30] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:08 2012.77] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:09 2012.29] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:09 2012.87] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:10 2012.26] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:10 2012.78] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:11 2012.29] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:11 2012.78] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:12 2012.28] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:12 2012.80] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:13 2012.27] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:14 2012.75] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:14 2012.61] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:14 2012.79] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:15 2012.30] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:15 2012.82] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:16 2012.28] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:16 2012.80] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:17 2012.31] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:17 2012.80] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:18 2012.30] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:18 2012.81] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:19 2012.29] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:19 2012.81] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:20 2012.32] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:20 2012.80] Stuck at prt_fild06 (27,193), while walking from (27,193) to (161,284).
[Feb 26 10:39:20 2012.83] Ступор при поиске пути.
[Feb 26 10:39:20 2012.85] Расчёт случайного маршрута до Окрестности Пронтеры (prt_fild06): 86, 61
[Feb 26 10:39:20 2012.89] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:21 2012.40] Sent packet : 035F [ 5 bytes]
[Feb 26 10:39:21 2012.91] Sent packet : 035F [ 5 bytes]
режим xkore 1
получается что бот прогрузился и готов к движению, а клиент всё ещё грузит локацию..
клиент получает дисконнект
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
SmOOve
Грамотный
Сообщения: 213
Зарегистрирован: Сб окт 04, 2008 3:57 pm

Re: логика бота при смерти и разговоре с НПЦ

Сообщение SmOOve »

если бот базарит через макрос, то я просто добавлял паузы в 1сек, после каждого выбора диалога и после закрытия диалога. Если бот будет слишком быстро базарить, то при плохом конекте к серверу сервер также не успевает обработать запросы и даскало. Паузы в этом случае были самой простой панацеей.
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2792
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

Re: логика бота при смерти и разговоре с НПЦ

Сообщение 4epT »

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

а я предлагаю сделать так чтоб даже если мы куда-то двигаемся, бот не смел отправлять пакеты разговора или останавливался при этом
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
EternalHarvest
Разработчик
Сообщения: 819
Зарегистрирован: Пн окт 27, 2008 9:49 pm

Re: логика бота при смерти и разговоре с НПЦ

Сообщение EternalHarvest »

Вроде как передвижение и разговоры с NPC уже реализованы через Task.pm, нельзя ли в них добавить общий mutex?
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2792
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

Re: логика бота при смерти и разговоре с НПЦ

Сообщение 4epT »

ну как-то добавлять надо
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Re: логика бота при смерти и разговоре с НПЦ

Сообщение kLabMouse »

EternalHarvest писал(а):Вроде как передвижение и разговоры с NPC уже реализованы через Task.pm, нельзя ли в них добавить общий mutex?
Я когда-то пытался сделать Динамические Мютексы. Вроде как даже получилось! Но оно было выполнено для Многозадачной коры, и никогда не тестировалось на однозадачной.
EternalHarvest
Разработчик
Сообщения: 819
Зарегистрирован: Пн окт 27, 2008 9:49 pm

Re: логика бота при смерти и разговоре с НПЦ

Сообщение EternalHarvest »

Мутексы же работают только для задач, находящихся в TaskManager. А почти все задачи сейчас просто складываются в AI queue.
Ответить