Страница 1 из 1

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

Добавлено: Вс фев 26, 2012 9:55 am
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
получается что бот прогрузился и готов к движению, а клиент всё ещё грузит локацию..
клиент получает дисконнект

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

Добавлено: Чт мар 01, 2012 7:26 pm
SmOOve
если бот базарит через макрос, то я просто добавлял паузы в 1сек, после каждого выбора диалога и после закрытия диалога. Если бот будет слишком быстро базарить, то при плохом конекте к серверу сервер также не успевает обработать запросы и даскало. Паузы в этом случае были самой простой панацеей.

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

Добавлено: Чт мар 01, 2012 9:21 pm
4epT
паузы в макросе нужны как раз чтоб бот, например, не отправлял пакеты разговора с нпц во время ходьбы..

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

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

Добавлено: Пт мар 02, 2012 12:22 pm
EternalHarvest
Вроде как передвижение и разговоры с NPC уже реализованы через Task.pm, нельзя ли в них добавить общий mutex?

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

Добавлено: Пт мар 02, 2012 9:41 pm
4epT
ну как-то добавлять надо

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

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

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

Добавлено: Чт мар 08, 2012 5:13 am
EternalHarvest
Мутексы же работают только для задач, находящихся в TaskManager. А почти все задачи сейчас просто складываются в AI queue.