Остаточные коллизии после смерти мобов

Aristo

Величайший
Местный
Победитель в номинации 2023
Сообщения
517
Розыгрыши
0
Решения
8
Репутация
542
Реакции
586
Баллы
1 593
Хроники
  1. Chaotic Throne: High Five
Исходники
Присутствуют
Сборка
Свое, на базе L2GW
Всем форумчанам приветствие.

Помогите локализовать проблему.
Суть: В рандомные моменты времени, при убийстве мобов, они как будто не освобождают коллизии в клиенте, после своей смерти. Чаще всего это происходит с неподвижными мобами, которые стоят стенками(например драконы в SOA у дверей, мобы-стенки в Пагане, гварды на фортах, которые стоят на лестнице по пути к флагполю), но иногда бывает и с обычными(например Дракосы Лидеры на кругу в ЛОА).
Как проявляется: После смерти, в клиенте после моба остается непроходимая коллизия. Ее нельзя выделить, но она мешает движению игроков.
При клике на коллизию на сервак идет пакет, как будто я кликнул на моба и передается тот же ObjectID, который был у моба на момент смерти. Принудительная отправка NpcInfo или DeleteObject на этот ObjectID не помогает. Не помогает и телепорт(для обновления объектов региона). Я не нашел ни одного способа исправить это со стороны сервера.

Со стороны клиента помогает релог клиента.

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

Есть мысли, что это может быть? Может быть кто-то сталкивался с подобным?
 
Как вариант можно в самом клиенте написать функцию которая будет любому мобу убирать коллизию после смерти.
Возможно в клиенте это так и работало и не всегда выгружало.
Еще вариант можно ради интереса поднять птс и посмотреть вдруг там это удаляет всегда.
Как на более новом клиенте это работает тоже хорошо проверить. 🙂
 
проверь, перенесись гмом в другую локацию и вернись обратно и проверь висит ли колизия? если не висит, то добавь после смерти нпса пакет респавн его
 
проверь, перенесись гмом в другую локацию и вернись обратно и проверь висит ли колизия? если не висит, то добавь после смерти нпса пакет респавн его
Телепорты не помогают. Коллизия остается даже если улетать на длительный срок, чистить кеш клиента и снова прилетать.
Помогает только полный релог.

Причем это происходит рандомно и я не могу это гарантированно воспроизвести.
 
Для моба там только ObjectID и остальные 0

Опкод(0x00), object_id, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
 
весь пакет бы глянуть...
 
весь пакет бы глянуть...
Что вы там хотите увидеть необычного? Я написал полную структуру того, что уходит в клиент для любого моба. Там в принципе, для моба нет каких-то альтернативных вариантов отправки.
 
что-то такое на кругу видел порой, может что-то в движке багуется и например акторы с deleteMe пропускаются :unsure:
 
что-то такое на кругу видел порой, может что-то в движке багуется и например акторы с deleteMe пропускаются :unsure:
Я вот очень сильно подозреваю, что это клиент. Либо я дурак и что-то в пакетке пропускаю.
Там алгоритм же простой предельно:
В регионе появился NPC -> Npc шлет всем игрокам региона NpcInfo
Npc помер -> Шлется Die(NPC) и следом NpcInfo с обновленной инфой.
Потом TargetUnselect(если был в таргете) и DeleteObject
Смотрел очередность пакетки на PTS HF
1693132390411.png
Ничего другого непонятного или странного нет.
 
Последнее редактирование:
Я вот очень сильно подозреваю, что это клиент. Либо я дурак и что-то в пакетке пропускаю.
Там алгоритм же простой предельно:
В регионе появился NPC -> Npc шлет всем игрокам региона NpcInfo
Npc помер -> Шлется Die(NPC) и следом NpcInfo с обновленной инфой.
Потом TargetUnselect(если был в таргете) и DeleteObject
Смотрел очередность пакетки на PTS HF
Посмотреть вложение 54759
Ничего другого непонятного или странного нет.
что то подобное было на hf l2jserver. только оставались мобы. если быстро убежать с некой точки где другие персонажи активно их фармили. чем быстрее персонаж бегает тем выше вероятность что мобы останутся. и насколько помню дело было в списка(knownlist) и радиусе отправки пакетов.
 
что то подобное было на hf l2jserver. только оставались мобы. если быстро убежать с некой точки где другие персонажи активно их фармили. чем быстрее персонаж бегает тем выше вероятность что мобы останутся. и насколько помню дело было в списка(knownlist) и радиусе отправки пакетов.
У меня такое раньше было, если быстро покинуть пределы региона и вернутся обратно. Т.е получалось так, что регион отсылал пакет о состоянии моба, на момент когда он еще был жив, при входе в регион, но при этом моб по факту уже был мертв, и пакет об этом уже улетел в клиент. Т.е клиент получал условно пакеты не в порядке 1 2 3, а 1 3 2 и из за этого был такой баг. Это уже исправлено, методом синхронизации очереди пакетов относительно объекта.
Тут же прям вот я включаю у себя автоубийство нападающих, оставляю чара посреди круга на ночь, и к утру там просто вокруг него стенки из непроходимых коллизий. При клике на такую коллизию в клиенте, в сервак улетает Action с ObjectID моба, который был у него на момент смерти. На серваке такого ID уже даже может не быть. При этом, если я сделаю этим чаром ТП в город и обратно, то коллизии останутся. Более того, если заспавнить моба, с таким же ObjectID, как у коллизии, то при клике на коллизию - выделяется моб, который имеет такой же ID. Т.е факт получения нового NpcInfo с актуальной инфой для этого объекта ничего не меняет.
Я пробовал отправлять DeleteObject принудительно, но все равно коллизия не пропадает) Помогает только полный релог клиента.
 
мне просто интересно сколько времени ты на это потратил?
 
У меня такое раньше было, если быстро покинуть пределы региона и вернутся обратно. Т.е получалось так, что регион отсылал пакет о состоянии моба, на момент когда он еще был жив, при входе в регион, но при этом моб по факту уже был мертв, и пакет об этом уже улетел в клиент. Т.е клиент получал условно пакеты не в порядке 1 2 3, а 1 3 2 и из за этого был такой баг. Это уже исправлено, методом синхронизации очереди пакетов относительно объекта.
Тут же прям вот я включаю у себя автоубийство нападающих, оставляю чара посреди круга на ночь, и к утру там просто вокруг него стенки из непроходимых коллизий. При клике на такую коллизию в клиенте, в сервак улетает Action с ObjectID моба, который был у него на момент смерти. На серваке такого ID уже даже может не быть. При этом, если я сделаю этим чаром ТП в город и обратно, то коллизии останутся. Более того, если заспавнить моба, с таким же ObjectID, как у коллизии, то при клике на коллизию - выделяется моб, который имеет такой же ID. Т.е факт получения нового NpcInfo с актуальной инфой для этого объекта ничего не меняет.
Я пробовал отправлять DeleteObject принудительно, но все равно коллизия не пропадает) Помогает только полный релог клиента.
Сменить клиент пробовал?
 
Сменить клиент пробовал?
Пробовал. Не помогло.

На все эти попытки найти где проблема. телепорты, пакеты,проверки и т.д
Довольно много, т.к баг критический и возникает в SOD, что не дает возможность завершить его прохождение.
Причем я могу проходить SOD несколько раз и в какие-то моменты баг может возникнуть, а в какие-то нет. Т.е нет прям какой-то очевидной закономерности.
 
Последнее редактирование модератором:
Пробовал. Не помогло.


Довольно много, т.к баг критический и возникает в SOD, что не дает возможность завершить его прохождение.
Причем я могу проходить SOD несколько раз и в какие-то моменты баг может возникнуть, а в какие-то нет. Т.е нет прям какой-то очевидной закономерности.
Значит проблема не в клиенте, если после смены проблема не ушла.
 
У меня на одной из сборок точно такая же проблема. В чем причина, не разобрались.
 
Назад
Сверху Снизу