Страница 2 из 16

Добавлено: Пт дек 08, 2006 6:18 pm
¤Seii¤
DInvalid
насколько я понимаю, наверное, из-за рассинхронизации пакет прошлой атаки может совпадать с пакетом "встать" (или "сесть") в данный момент и получается вот такая дребедень

Пирожок, никак это не выглядит со стороны. Просто стоит и тупит %)

Добавлено: Пт дек 08, 2006 6:42 pm
piroJOKE
Что значит "стоит"? Он "стоит" или бегает туда-сюда?

Добавлено: Пт дек 08, 2006 6:45 pm
¤Seii¤
piroJOKE
стоит на месте, просто стоит ..

Добавлено: Пт дек 08, 2006 6:51 pm
kLabMouse
Видимо проблема состоит в в том, что пакет атаки может немного опоздать, те отправится после Синка а должен до. Что и візівает вот-такой вот тупняк.

Добавлено: Пт дек 08, 2006 6:54 pm
¤Seii¤
kLabMouse
в 169 это очень заметно Х_х зачастую по aiv видно вот такое у бота

ai_seq (on) = skill_use route skill_use attack skill_use sitAuto

В итоге он просто стоит и его избивают, после "ручного" телепорта он начинает бегать, после автоматического стоит тупит пока ему не подашь команду на атаку, теле или скилюз.

Добавлено: Пт дек 08, 2006 7:07 pm
kLabMouse
¤Seii¤
ХЗ, ХЗ. Дело в том что я за Целую недель не наблидал ни одного похожего глюка, ХЗ Почему. Но многие говорят что такое есть потому и зделал данній топик как идею как зделать.
:cry:

Добавлено: Пт дек 08, 2006 8:37 pm
DInvalid
¤Seii¤ писал(а):DInvalid
насколько я понимаю, наверное, из-за рассинхронизации пакет прошлой атаки может совпадать с пакетом "встать" (или "сесть") в данный момент и получается вот такая дребедень

Пирожок, никак это не выглядит со стороны. Просто стоит и тупит %)
Давайте рассуждать логически. В каком случае мы получаем в консоли сообщение You are standing?
Как я понимаю, при обработке вот этого пакета.
'008A' => ['actor_action', 'a4 a4 a4 V2 s1 v1 C1 v1', [qw(sourceID targetID tick src_speed dst_speed damage param2 type param3)]]
сообщений у меня идет по 4 подряд, значит пришло 4 таких пакета.
Причем как я понимаю,
if ($args->{sourceID} eq $accountID) {
message T("You are standing.\n");
if ($config{sitAuto_idle}) {
$timeout{ai_sit_idle}{time} = time;
}
$char->{sitting} = 0;
ID при этом должен быть моим

Почему сервер посылает мне 4 пакета что бот встал в то время как он должен бить моба?
Либо бот действительно послал ему вместо атаки пакеты "встать", но в них вроде бы должен быть ИД себа а в пакетах атаки - ИД моба.
Либо бот послал пакеты атаки, но из за чего-то сервер воспринял их как "встать".
Либо сервер сам посылает пакеты "вы встали" а клиент на них как то должен среагировать (проверка клиента).

А как это проверить?

Добавлено: Пт дек 08, 2006 8:40 pm
kLabMouse
DInvalid
Нет. Дело в том. Что если Задержались пакеты Атаки, ТЕ отосланы относително старого синка, а мы уже синхронизировались. Но ети пакеты ещё висят в Кеше, из-за чего получается что реакция не верна.

Добавлено: Пт дек 08, 2006 8:42 pm
piroJOKE
Офтопик, флуд, бредовая идея:
Если мы видим, что до синхронизации осталось двух секунд, перестаём посылать пакеты "атака!". ^___^

Добавлено: Пт дек 08, 2006 8:44 pm
kLabMouse
piroJOKE
НЕТ. Лучше Их Создавать Именно в момент Атаки. А не в любой удобный момент когда их создали.
Видимо там сильно большой Глюк Коры получается....

Добавлено: Сб дек 09, 2006 12:01 pm
DInvalid
kLabMouse писал(а):DInvalid
Нет. Дело в том. Что если Задержались пакеты Атаки, ТЕ отосланы относително старого синка, а мы уже синхронизировались. Но ети пакеты ещё висят в Кеше, из-за чего получается что реакция не верна.
kLabMouse, я вас очень уважаю, но тем не менее, вы проверяли что оно именно так и происходит? Или просто - вы так считаете?

У меня тогда пара вопросов :
1) SYNC идет напрямую, не через буфер?
Т.е. мы сформировали пакеты атаки, они помещены в буфер на отправку, но в это время мы посылаем синк, который уходит напрямую а не в буфер, вследствии чего пакеты устаревают?
Или где они задержались? Я не знаю так хорошо весь механизм как вы, поэтому могли бы вы подробнее разъяснить?

2) Как тогда объяснить ЭТО:

console.log

[Dec 9 10:30:34 2006.38] Attacking: Monster PecoPeco's Egg (2)
[Dec 9 10:30:36 2006.10] [ 97/100] You attack Monster PecoPeco's Egg (2) - Dmg: 50 (delay 55.2)
[Dec 9 10:30:37 2006.20] [ 97/100] You attack Monster PecoPeco's Egg (2) - Dmg: 42 (delay 55.2)
[Dec 9 10:30:38 2006.34] [ 97/100] You attack Monster PecoPeco's Egg (2) - Dmg: 39 (delay 55.2)
[Dec 9 10:30:39 2006.45] [ 97/100] You attack Monster PecoPeco's Egg (2) - Dmg: 46 (delay 55.2)
[Dec 9 10:30:40 2006.57] [ 97/100] You attack Monster PecoPeco's Egg (2) - Dmg: 45 (delay 55.2)
[Dec 9 10:30:44 2006.31] You are sitting.
[Dec 9 10:30:44 2006.37] You are sitting.
[Dec 9 10:30:51 2006.18] You are standing.
[Dec 9 10:30:51 2006.24] [100/100] You attack Monster PecoPeco's Egg (2) - Dmg: 45 (delay 55.2)
[Dec 9 10:30:52 2006.34] [100/100] You attack Monster PecoPeco's Egg (2) - Dmg: 52 (delay 55.2)
[Dec 9 10:30:53 2006.45] [100/100] You attack Monster PecoPeco's Egg (2) - Dmg: 43 (delay 55.2)
[Dec 9 10:30:54 2006.57] [100/100] You attack Monster PecoPeco's Egg (2) - Dmg: 55 (delay 55.2)
[Dec 9 10:30:55 2006.70] [100/100] You attack Monster PecoPeco's Egg (2) - Dmg: 43 (delay 55.2)
[Dec 9 10:30:56 2006.27] Target died

sendPacket log - logToFile_Debug sendPacket=log1.txt

[Dec 9 10:30:34 2006] Sent move to: 213, 284
[Dec 9 10:30:34 2006] Sent move to: 213, 284
[Dec 9 10:30:35 2006] Sent move to: 213, 284
[Dec 9 10:30:35 2006] Sent move to: 213, 284
[Dec 9 10:30:36 2006] Sent attack by plugin: E5 D2 00 00
[Dec 9 10:30:37 2006] Sent attack by plugin: E5 D2 00 00
[Dec 9 10:30:38 2006] Sent attack by plugin: E5 D2 00 00
[Dec 9 10:30:38 2006] Sent get player info: ID - 8B D2 00 00
[Dec 9 10:30:38 2006] Sent Sync
[Dec 9 10:30:39 2006] Sent attack by plugin: E5 D2 00 00
[Dec 9 10:30:40 2006] Sent attack by plugin: E5 D2 00 00
[Dec 9 10:30:41 2006] Sent attack by plugin: E5 D2 00 00
[Dec 9 10:30:42 2006] Sent attack by plugin: E5 D2 00 00
[Dec 9 10:30:43 2006] Sent attack by plugin: E5 D2 00 00
[Dec 9 10:30:44 2006] Sent attack by plugin: E5 D2 00 00
[Dec 9 10:30:44 2006] Standing by plugin
[Dec 9 10:30:44 2006] Standing by plugin
[Dec 9 10:30:45 2006] Standing by plugin
[Dec 9 10:30:46 2006] Standing by plugin
[Dec 9 10:30:47 2006] Standing by plugin
[Dec 9 10:30:48 2006] Standing by plugin
[Dec 9 10:30:49 2006] Standing by plugin
[Dec 9 10:30:50 2006] Standing by plugin
[Dec 9 10:30:50 2006] Sent Sync
[Dec 9 10:30:51 2006] Standing by plugin
[Dec 9 10:30:51 2006] Sent attack by plugin: E5 D2 00 00
[Dec 9 10:30:52 2006] Sent attack by plugin: E5 D2 00 00
[Dec 9 10:30:53 2006] Sent attack by plugin: E5 D2 00 00
[Dec 9 10:30:54 2006] Sent attack by plugin: E5 D2 00 00
[Dec 9 10:30:55 2006] Sent attack by plugin: E5 D2 00 00
[Dec 9 10:30:57 2006] Sent move to: 216, 285

В Send.pm нет логирования пакетов посланных плагинами - добавлено ко всем
функциям использующим плагины

Plugins::callHook('packet_pre/sendStand', \%args);
if ($args{return}) {
sendMsgToServer($r_net, $args{msg});
debug "Standing by plugin\n", "sendPacket", 2;
return;
}


Как мы видим, вызывается!!! sub sendStand из Send.pm, и посылаются пакеты встать, это не искаженные пакеты атаки, не надо ля ля, это именно пакеты встать. Или я ошибаюсь!?

Добавлено: Сб дек 09, 2006 12:08 pm
piroJOKE
Оффтопик, бредовая идея.
Перцы, а там нет такой темы, что:
а) мы посылаем синк...
...zzz...
б) мы посылаем атаку...
в) мы посылаем синк...
г-1) "ошибко" - мы посылаем... атаку на основании старого синка?! О_о
г-2) требуется принудительная посылка атаки после синка?! О_о

Добавлено: Сб дек 09, 2006 12:12 pm
piroJOKE
DInvalid писал(а):(....)
Как мы видим, вызывается!!! sub sendStand из Send.pm, и посылаются пакеты встать, это не искаженные пакеты атаки, не надо ля ля, это именно пакеты встать. Или я ошибаюсь!?
Как-то ты слишком сложно подошел к проблеме. Ну.... если ты подозреваешь, что вызывается отчего-то неверная функция... просто засунь в ту функцию message с надписью "привет, я здесь!" - и все станет понятно! 8)

Добавлено: Сб дек 09, 2006 12:17 pm
DInvalid
piroJOKE писал(а):Оффтопик, бредовая идея.
Перцы, а там нет такой темы, что:
а) мы посылаем синк...
...zzz...
б) мы посылаем атаку...
в) мы посылаем синк...
г-1) "ошибко" - мы посылаем... атаку на основании старого синка?! О_о
г-2) требуется принудительная посылка атаки после синка?! О_о
Кстати похоже
[Dec 9 10:30:40 2006.57] [ 97/100] You attack Monster PecoPeco's Egg (2) - Dmg: 45 (delay 55.2)
10-30-40 - последняя успешная атака
[Dec 9 10:30:44 2006.31] You are sitting.

[Dec 9 10:30:38 2006] Sent Sync
Проблемы начались после посылки этого синка....
[Dec 9 10:30:39 2006] Sent attack by plugin: E5 D2 00 00
[Dec 9 10:30:40 2006] Sent attack by plugin: E5 D2 00 00
Вот отсюда следущие пакеты атаки - проигнорированы (неверные?)
[Dec 9 10:30:41 2006] Sent attack by plugin: E5 D2 00 00
[Dec 9 10:30:42 2006] Sent attack by plugin: E5 D2 00 00
[Dec 9 10:30:43 2006] Sent attack by plugin: E5 D2 00 00
[Dec 9 10:30:44 2006] Sent attack by plugin: E5 D2 00 00

Здесь пришло сообшние что мы сели!?
И начинаем вставать? И уже из за того что пришло сообщение что сели - начнаем посылать пакеты - встать?
Но из за того что пакеты не от того синка... не получается у нас !!!
[Dec 9 10:30:44 2006] Standing by plugin
[Dec 9 10:30:44 2006] Standing by plugin
[Dec 9 10:30:45 2006] Standing by plugin
[Dec 9 10:30:46 2006] Standing by plugin
[Dec 9 10:30:47 2006] Standing by plugin
[Dec 9 10:30:48 2006] Standing by plugin
[Dec 9 10:30:49 2006] Standing by plugin
[Dec 9 10:30:50 2006] Standing by plugin
[Dec 9 10:30:50 2006] Sent Sync
И вот - Синк
[Dec 9 10:30:51 2006] Standing by plugin
И этот пакет - правлиьный
и мы встали...

piroJOKE писал(а):
DInvalid писал(а):(....)
Как мы видим, вызывается!!! sub sendStand из Send.pm, и посылаются пакеты встать, это не искаженные пакеты атаки, не надо ля ля, это именно пакеты встать. Или я ошибаюсь!?
Как-то ты слишком сложно подошел к проблеме. Ну.... если ты подозреваешь, что вызывается отчего-то неверная функция... просто засунь в ту функцию message с надписью "привет, я здесь!" - и все станет понятно! 8)
piroJOKE, она вызывается, 100%.
я не хочу ловит в консоли приветы )
просто есть стандартный debug output в Send.pm в конце каждой функции, но если сообшение формируется плагином, то он не работает

sub sendStand {


sendMsgToServer($r_net, $msg);
debug "Standing\n", "sendPacket", 2;
}
это в стандартной ф-ции, но когда пакеты формирует плагин, то до нее дело не доходит, так как выход происходит тут
sub sendStand {
my $r_net = shift;
my $msg;

my %args;
$args{flag} = 3;
Plugins::callHook('packet_pre/sendStand', \%args);
if ($args{return}) {
sendMsgToServer($r_net, $args{msg});
return;
}

что не есть хорошо, так как отладочные сообшения не формируются.

поэтому целесообразно сделать так
sub sendStand {
my $r_net = shift;
my $msg;

my %args;
$args{flag} = 3;
Plugins::callHook('packet_pre/sendStand', \%args);
if ($args{return}) {
sendMsgToServer($r_net, $args{msg});
debug "Standing by plugin\n", "sendPacket", 2;
return;
}
и пользоваться стандартным debug

Добавлено: Сб дек 09, 2006 1:00 pm
kLabMouse
DInvalid
И так скажу тебе своё виденье проблемы.
На ранних стадиях, когда ещё ропп был чёть-ли не весь на асме, был такой прикол что тот начинал генерить неправильные пакеты до синхронизации.

Полагалось Что проблема состоит именно в задержке данных от библиотеки (ТЕ идёт запрос на генерацию пакета, а тут бац уже поменлось значения Синка пока мы генерим).

Но видимо проблема спрятана более глубоко если всё-таки пишет
Standing by plugin
ТЕ, данное действие вызывает сама Кор, а не плаг тупит

Скажу Чесно. Я за всё время не набльюдал ни одного глюка. Странно.