Отскок назад

Die

Прославленный
Местный
Старожил I степени
Сообщения
426
Розыгрыши
0
Решения
1
Репутация
578
Реакции
131
Баллы
1 438
Здравствуйте, интересует способ фикса данного бага:
Или хотя бы какой пакет отвечает за это? Склоняюсь к MoveBackwardToLocation, но не уверен.
 

в большинстве случаев все же лечится в пакете ValidatePosition нормальными проверками и расчетами на разницу в расстоянии между сохраненной и текущей позицией (той что проверяется в пакете).
просто в большинстве сборок в расчеты не принимаются такие данные как к примеру величина пинга между клиентом и сервером, или например скорость движения игрока.
 
если есть DefaultAI, то там от люцеры уже мало что осталось)) А так да, открой Creature, найди moveToLocation\followToCharacter или что там у тебя и просто посмотри где оно вызывается. Именно там в параметрах определяется искать ли дальше путь или нет.

Только вот такие файлы есть у меня, Creature я видел только в ребоподобных сборках
 

Только вот такие файлы есть у меня, Creature я видел только в ребоподобных сборках
Я бы смотрел в первую очередь в сторону L2CharacterAI
 
в большинстве случаев все же лечится в пакете ValidatePosition нормальными проверками и расчетами на разницу в расстоянии между сохраненной и текущей позицией (той что проверяется в пакете).
просто в большинстве сборок в расчеты не принимаются такие данные как к примеру величина пинга между клиентом и сервером, или например скорость движения игрока.
А в какой сборке это реализовано?
 
Я бы смотрел в первую очередь в сторону L2CharacterAI
в L2CharacterAI я нашел только метод onIntentionMoveTo, в ПВсофте при аналогичном поиске пути какого то хрена путь мобы ищут, причем довольно таки неплохо кстати.

Метод findpath имеется только в L2Character в обоих сборках, если я правильно понял, обработка движений берется оттуда и для мобов?
 
А в какой сборке это реализовано?
ну в том же овере оно в виде TODO'шки есть :)
Код:
       else if(diff > 256)
       {
           //TODO реализовать NetPing и вычислять предельное отклонение исходя из пинга по формуле: 16 + (ping * activeChar.getMoveSpeed()) / 1000
           activeChar.validateLocation(1);
       }
я примерно по такой, ну почти, формуле у себя проверку максимальньно допустимой разницы расстояний сделал
в итоге вроде жалобы на отбрасывание при передвижении почти пропали - в основном остались только у тех у кого инет вобще с конским пингом и потерями пакетов.
 
само собой еще потребуется реализовать пакеты NetPing (клиентский и серверный) и периодически пинговать клиент для выяснения текущего пинга.
 
Может здесь проблема с прерыванием движения? Был такой бажок у оверов.
 
Кто нибудь ударьте в бубен великого гадания "почему так l2j"
 
ну в том же овере оно в виде TODO'шки есть :)
Код:
       else if(diff > 256)
       {
           //TODO реализовать NetPing и вычислять предельное отклонение исходя из пинга по формуле: 16 + (ping * activeChar.getMoveSpeed()) / 1000
           activeChar.validateLocation(1);
       }
я примерно по такой, ну почти, формуле у себя проверку максимальньно допустимой разницы расстояний сделал
в итоге вроде жалобы на отбрасывание при передвижении почти пропали - в основном остались только у тех у кого инет вобще с конским пингом и потерями пакетов.
а как должна выглядеть такая проверка?
Код:
       else if(diff > 256)
       {
          int ping = 16 + (L2GameClient.getPing() * activeChar.getMoveSpeed()) / 1000;
          if (diff > ping)
         {
           activeChar.validateLocation(1);
        }
       }
вот так?
 
А ну тут по накатанной shift+del
Это наверное самый проверенный фикс для этой сборочки
А я вижу Вы профессионал... Вас не смущает что данный баг есть на 99% сборках? Хотя о чём я говорю, раз вижу такие сообщения
 
А я вижу Вы профессионал... Вас не смущает что данный баг есть на 99% сборках? Хотя о чём я говорю, раз вижу такие сообщения
Да нет, просто постоянно именно с этой сборкой темы подобные, ничего личного)
 
проблемы с L2JServer ом, на котором основаны 80% сборок которые на данный момент разрабатываются... А отсюда и баги
 
проблемы с L2JServer ом, на котором основаны 80% сборок которые на данный момент разрабатываются... А отсюда и баги
прости, 90% сборок сейчас разрабатываются на овере. мы не говорим за мусор вроде интерлюда, потому что там что игроки что админы из каменного века всё ещё не вышли, а овер уже давно лыжей назвать нельзя.

Оффтоп:

jois, спасибо
 
Последнее редактирование:
а как должна выглядеть такая проверка?
Код:
       else if(diff > 256)
       {
          int ping = 16 + (L2GameClient.getPing() * activeChar.getMoveSpeed()) / 1000;
          if (diff > ping)
         {
           activeChar.validateLocation(1);
        }
       }
вот так?
типа того, так же желательно реализовать счетчик количества отклонений, и при достижении определенного порога принудительно синхронизировать клиент, или же при получении последующих правильных координат обнулять его

Код:
       int ping = 256 + (L2GameClient.getPing() * activeChar.getMoveSpeed()) / 1000;
       else if(diff > ping)
       {
           activeChar.validateLocation(1);
       }
 
типа того, так же желательно реализовать счетчик количества отклонений, и при достижении определенного порога принудительно синхронизировать клиент, или же при получении последующих правильных координат обнулять его

Код:
       int ping = 256 + (L2GameClient.getPing() * activeChar.getMoveSpeed()) / 1000;
       else if(diff > ping)
       {
           activeChar.validateLocation(1);
       }
в моем случае мув контроллер настолько убогий что откидывает даже с такой проверкой :D
 
Назад
Сверху Снизу