не понятные колизии l2jmobius

  • Автор темы Автор темы Grekk
  • Дата начала Дата начала
Статус
В этой теме нельзя размещать новые ответы.

Grekk

Величайший
Местный
Авторитет форума
Уважаемый собеседник
Легенда Истоков
Старожил I степени
Сообщения
369
Розыгрыши
0
Решения
1
Репутация
111
Реакции
518
Баллы
1 573
Хроники
  1. Chaotic Throne: High Five
Сборка
мобиус
Подскажите что может быть, уже все перерыл и гео двиг и делал сброс кеша данных Pathfinding, и делал принудительный телепорт трупа монстра, много что перепробывал, но все равно когда фармишь большое количество мобов, потом начинаешь уператся в какие то невидимые стенки. Геодату разную пробывал. Но если делаешь релог клиента, то все ок становиться на время эти невидимые преграды исчезают. Сделал команду обновление мира и нпц во время когда опять появились коллизии использовал команду прошел полная чистка мира, и все равно от куда то это коллизии остались. Может кто сталкивался или хотяб подскажет что это может быть, уже просто не знаю что еще проверять.

Видео невидимых стенок во время фарма:
 
Очень похоже на ситуацию с очень кривой геодатой в этой локации - персонаж на стороне сервера к примеру проваливается на слой ниже и вот в итоге и начинает его колбасить с отбрасываниями назад.
 
Очень похоже на ситуацию с очень кривой геодатой в этой локации - персонаж на стороне сервера к примеру проваливается на слой ниже и вот в итоге и начинает его колбасить с отбрасываниями назад.
такое происходит не только на этой локации
 
а без геодаты пробовал?
да, так же застревает в разных местах, через разное время. И мест этих может быть много хоть вообще чар на месте стоять будет, так что врятли тут дело в геодате
 
да, так же застревает в разных местах, через разное время
если это связано с убийством определенных мобов, попробуйте отправлять для них DeleteObject пакет с параметром 1
 
Подскажите что может быть, уже все перерыл и гео двиг и делал сброс кеша данных Pathfinding, и делал принудительный телепорт трупа монстра, много что перепробывал, но все равно когда фармишь большое количество мобов, потом начинаешь уператся в какие то невидимые стенки. Геодату разную пробывал. Но если делаешь релог клиента, то все ок становиться на время эти невидимые преграды исчезают. Сделал команду обновление мира и нпц во время когда опять появились коллизии использовал команду прошел полная чистка мира, и все равно от куда то это коллизии остались. Может кто сталкивался или хотяб подскажет что это может быть, уже просто не знаю что еще проверять.

Видео невидимых стенок во время фарма:
И такое кстати только на мобиусе наблюдается)
 
да это же очевидно поквадратная обработка геодаты, гео блоки между квадратами не корректно обрабатываются геодвижком от чего он не может перейти в соседний квадрат.
 
если это связано с убийством определенных мобов, попробуйте отправлять для них DeleteObject пакет с параметром 1
уже так делал не помогает
Сообщение объединено:
да это же очевидно поквадратная обработка геодаты, гео блоки между квадратами не корректно обрабатываются геодвижком от чего он не может перейти в соседний квадрат.
нет тут дело не в гео движке он отключен
 
Подскажите что может быть, уже все перерыл и гео двиг и делал сброс кеша данных Pathfinding, и делал принудительный телепорт трупа монстра, много что перепробывал, но все равно когда фармишь большое количество мобов, потом начинаешь уператся в какие то невидимые стенки. Геодату разную пробывал. Но если делаешь релог клиента, то все ок становиться на время эти невидимые преграды исчезают. Сделал команду обновление мира и нпц во время когда опять появились коллизии использовал команду прошел полная чистка мира, и все равно от куда то это коллизии остались. Может кто сталкивался или хотяб подскажет что это может быть, уже просто не знаю что еще проверять.

Видео невидимых стенок во время фарма:
а если в настройках поставить дизейбл бодиблок? такое же будет или неТ?
думаю тайна раскрыта
В High Five Mobius коллизия монстра хранится в двух вариантах:

  • базовая:

<span>getTemplate</span><span>()</span><span>.</span><span>getCollisionRadius</span><span>()</span><br><span>getTemplate</span><span>()</span><span>.</span><span>getCollisionHeight</span><span>()</span>

  • текущая (может меняться):


<span>_currentCollisionRadius</span><br><span>_currentCollisionHeight</span>

Поля объявлены в Npc.java:

После смерти отдельной «мертвой» коллизии не задаётся. Труп продолжает использовать текущие значения:



<span>getCurrentCollisionRadius</span><span>()</span><br><span>getCurrentCollisionHeight</span><span>()</span>

Если монстр не увеличивался/уменьшался эффектами, то до и после смерти значения одинаковые.

и второй запрос в гпт

В High Five Mobius нулевая коллизия трупу не выставляется штатно.


Искать нужно в:



<span>Creature</span><span>.</span><span>java</span><br><span>Npc</span><span>.java</span><br><span>Attackable</span><span>.</span><span>java</span><br><span>Monster</span><span>.java</span><br><span>DecayTaskManager</span><span>.</span><span>java</span>


После doDie() объект получает статус dead, но:




<span>getCurrentCollisionRadius</span><span>()</span><br><span>getCurrentCollisionHeight</span><span>()</span>


по-прежнему возвращают:




<span>_currentCollisionRadius</span><br><span>_currentCollisionHeight</span>


Никакого:




<span>setCollision</span><span>(</span><span>0</span><span>, </span><span>0</span><span>)</span>


или




<span>_currentCollisionRadius</span><span> </span><span>=</span><span> </span><span>0</span><span>;</span><br><span>_currentCollisionHeight</span><span> </span><span>=</span><span> </span><span>0</span><span>;</span>


в Mobius H5 нет.


Если трупы на сервере должны становиться «проходимыми», это обычно делается вручную, например:




<span>@</span><span>Override</span><br><span>public</span><span> </span><span>boolean</span><span> </span><span>doDie</span><span>(</span><span>Creature</span><span> </span><span>killer</span><span>)</span><br><span>{</span><br><span> </span><span>if</span><span> (</span><span>!super.</span><span>doDie</span><span>(</span><span>killer</span><span>))</span><br><span> {</span><br><span> </span><span>return</span><span> </span><span>false</span><span>;</span><br><span> }</span><br><br><span> </span><span>_currentCollisionRadius</span><span> </span><span>=</span><span> </span><span>0</span><span>;</span><br><span> </span><span>_currentCollisionHeight</span><span> </span><span>=</span><span> </span><span>0</span><span>;</span><br><br><span> </span><span>broadcastInfo</span><span>();</span><br><span> </span><span>return</span><span> </span><span>true</span><span>;</span><br><span>}</span>


Либо через пакет NpcInfo, где клиенту отправляются:




<span>writeF</span><span>(</span><span>_collisionRadius</span><span>);</span><br><span>writeF</span><span>(</span><span>_collisionHeight</span><span>);</span>


То есть в H5 Mobius нет места, где «должна» автоматически выставляться нулевая коллизия трупа — по исходникам она вообще не предусмотрена.
 
Последнее редактирование:
а если в настройках поставить дизейбл бодиблок? такое же будет или неТ?


я думаю тайна раскрыта

В High Five Mobius коллизия монстра хранится в двух вариантах:

  • базовая:

<span>getTemplate</span><span>()</span><span>.</span><span>getCollisionRadius</span><span>()</span><br><span>getTemplate</span><span>()</span><span>.</span><span>getCollisionHeight</span><span>()</span>

  • текущая (может меняться):


<span>_currentCollisionRadius</span><br><span>_currentCollisionHeight</span>

Поля объявлены в Npc.java:

После смерти отдельной «мертвой» коллизии не задаётся. Труп продолжает использовать текущие значения:



<span>getCurrentCollisionRadius</span><span>()</span><br><span>getCurrentCollisionHeight</span><span>()</span>

Если монстр не увеличивался/уменьшался эффектами, то до и после смерти значения одинаковые.

и второй запрос в гпт

В High Five Mobius нулевая коллизия трупу не выставляется штатно.


Искать нужно в:



<span>Creature</span><span>.</span><span>java</span><br><span>Npc</span><span>.java</span><br><span>Attackable</span><span>.</span><span>java</span><br><span>Monster</span><span>.java</span><br><span>DecayTaskManager</span><span>.</span><span>java</span>


После doDie() объект получает статус dead, но:




<span>getCurrentCollisionRadius</span><span>()</span><br><span>getCurrentCollisionHeight</span><span>()</span>


по-прежнему возвращают:




<span>_currentCollisionRadius</span><br><span>_currentCollisionHeight</span>


Никакого:




<span>setCollision</span><span>(</span><span>0</span><span>, </span><span>0</span><span>)</span>


или




<span>_currentCollisionRadius</span><span> </span><span>=</span><span> </span><span>0</span><span>;</span><br><span>_currentCollisionHeight</span><span> </span><span>=</span><span> </span><span>0</span><span>;</span>


в Mobius H5 нет.


Если трупы на сервере должны становиться «проходимыми», это обычно делается вручную, например:




<span>@</span><span>Override</span><br><span>public</span><span> </span><span>boolean</span><span> </span><span>doDie</span><span>(</span><span>Creature</span><span> </span><span>killer</span><span>)</span><br><span>{</span><br><span> </span><span>if</span><span> (</span><span>!super.</span><span>doDie</span><span>(</span><span>killer</span><span>))</span><br><span> {</span><br><span> </span><span>return</span><span> </span><span>false</span><span>;</span><br><span> }</span><br><br><span> </span><span>_currentCollisionRadius</span><span> </span><span>=</span><span> </span><span>0</span><span>;</span><br><span> </span><span>_currentCollisionHeight</span><span> </span><span>=</span><span> </span><span>0</span><span>;</span><br><br><span> </span><span>broadcastInfo</span><span>();</span><br><span> </span><span>return</span><span> </span><span>true</span><span>;</span><br><span>}</span>


Либо через пакет NpcInfo, где клиенту отправляются:




<span>writeF</span><span>(</span><span>_collisionRadius</span><span>);</span><br><span>writeF</span><span>(</span><span>_collisionHeight</span><span>);</span>


То есть в H5 Mobius нет места, где «должна» автоматически выставляться нулевая коллизия трупа — по исходникам она вообще не предусмотрена.
Завязывай, ты хоть прочти что ты скопипастил, кучу span'ов :loltt0:
 
 
а если в настройках поставить дизейбл бодиблок? такое же будет или неТ?
думаю тайна раскрыта
В High Five Mobius коллизия монстра хранится в двух вариантах:

  • базовая:

<span>getTemplate</span><span>()</span><span>.</span><span>getCollisionRadius</span><span>()</span><br><span>getTemplate</span><span>()</span><span>.</span><span>getCollisionHeight</span><span>()</span>

  • текущая (может меняться):


<span>_currentCollisionRadius</span><br><span>_currentCollisionHeight</span>

Поля объявлены в Npc.java:

После смерти отдельной «мертвой» коллизии не задаётся. Труп продолжает использовать текущие значения:



<span>getCurrentCollisionRadius</span><span>()</span><br><span>getCurrentCollisionHeight</span><span>()</span>

Если монстр не увеличивался/уменьшался эффектами, то до и после смерти значения одинаковые.

и второй запрос в гпт

В High Five Mobius нулевая коллизия трупу не выставляется штатно.


Искать нужно в:



<span>Creature</span><span>.</span><span>java</span><br><span>Npc</span><span>.java</span><br><span>Attackable</span><span>.</span><span>java</span><br><span>Monster</span><span>.java</span><br><span>DecayTaskManager</span><span>.</span><span>java</span>


После doDie() объект получает статус dead, но:




<span>getCurrentCollisionRadius</span><span>()</span><br><span>getCurrentCollisionHeight</span><span>()</span>


по-прежнему возвращают:




<span>_currentCollisionRadius</span><br><span>_currentCollisionHeight</span>


Никакого:




<span>setCollision</span><span>(</span><span>0</span><span>, </span><span>0</span><span>)</span>


или




<span>_currentCollisionRadius</span><span> </span><span>=</span><span> </span><span>0</span><span>;</span><br><span>_currentCollisionHeight</span><span> </span><span>=</span><span> </span><span>0</span><span>;</span>


в Mobius H5 нет.


Если трупы на сервере должны становиться «проходимыми», это обычно делается вручную, например:




<span>@</span><span>Override</span><br><span>public</span><span> </span><span>boolean</span><span> </span><span>doDie</span><span>(</span><span>Creature</span><span> </span><span>killer</span><span>)</span><br><span>{</span><br><span> </span><span>if</span><span> (</span><span>!super.</span><span>doDie</span><span>(</span><span>killer</span><span>))</span><br><span> {</span><br><span> </span><span>return</span><span> </span><span>false</span><span>;</span><br><span> }</span><br><br><span> </span><span>_currentCollisionRadius</span><span> </span><span>=</span><span> </span><span>0</span><span>;</span><br><span> </span><span>_currentCollisionHeight</span><span> </span><span>=</span><span> </span><span>0</span><span>;</span><br><br><span> </span><span>broadcastInfo</span><span>();</span><br><span> </span><span>return</span><span> </span><span>true</span><span>;</span><br><span>}</span>


Либо через пакет NpcInfo, где клиенту отправляются:




<span>writeF</span><span>(</span><span>_collisionRadius</span><span>);</span><br><span>writeF</span><span>(</span><span>_collisionHeight</span><span>);</span>


То есть в H5 Mobius нет места, где «должна» автоматически выставляться нулевая коллизия трупа — по исходникам она вообще не предусмотрена.
нет не раскрыта, это тоже делал, выставлял на dodie что бы при смерте сбрасывало колизую, и при спавне снова выдавало, это тоже не помогло, если ты это имел ввиду. Даже больше вообще была принудительная телепортация трупов в отдельное место все равно
 
нет не раскрыта, это тоже делал, выставлял на dodie что бы при смерте сбрасывало колизую, и при спавне снова выдавало, это тоже не помогло, если ты это имел ввиду. Даже больше вообще была принудительная телепортация трупов в отдельное место все равно
стоковый мобиус хай файв, ну я не знаю, но всё же норм....
Посмотреть вложение Lineage II 2026-06-09 17-32-26.mp4
 
*** Скрытый текст не может быть процитирован. ***
тоже уже делал прям в
onDecay
слал
broadcastPacket(new DeleteObject(this));
и в самом
DecayTaskManager
тоже бестолку

как и писал в теме Aristo помогает только релог клиента
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху Снизу