Местоположение в мире л2

Daan Raven

Бывалый
Проверенный
Сообщения
828
Розыгрыши
0
Реакции
372
Репутация
960
Баллы
619
Вообще-то CharInfo нужен для отображения других игроков и иллюзорных копий. Для отображения самого себя используется UserInfo.
 

Rozhek

Пляшущий с бубном
Местный
Сообщения
189
Розыгрыши
2
Реакции
159
Репутация
608
Баллы
238
Вообще-то CharInfo нужен для отображения других игроков и иллюзорных копий. Для отображения самого себя используется UserInfo.
Вполне возможно что так оно и есть. Я не смотрел туда)
 

DaVilka

Пляшущий с бубном
Местный
Сообщения
315
Розыгрыши
0
Реакции
101
Репутация
66
Баллы
212
Вообще-то CharInfo нужен для отображения других игроков и иллюзорных копий. Для отображения самого себя используется UserInfo.
Да то понятно, я сам их путаю напостой, по этому и указал в первом посте опкод
 

Bloomfield

Свой человек
Местный
Сообщения
476
Розыгрыши
0
Реакции
168
Репутация
1 330
Баллы
559
Конкретно у меня была похожая проблема и связана она была с координатами мира в L2World (WORLD_X_MIN и им подобные)
 

Daan Raven

Бывалый
Проверенный
Сообщения
828
Розыгрыши
0
Реакции
372
Репутация
960
Баллы
619
Попробуй глянуть как работает у l2j, вроде бы в этом методе что-то колдуется, связанное с твоей проблемой: . Еще как вариант - у них же.
 

DaVilka

Пляшущий с бубном
Местный
Сообщения
315
Розыгрыши
0
Реакции
101
Репутация
66
Баллы
212
А Скорость бега не передается что ли на прямую через юзеринфо? Беру спид из окна статов, перевожу в байты, ищу в пакете и ничего не нахожу
 

Rozhek

Пляшущий с бубном
Местный
Сообщения
189
Розыгрыши
2
Реакции
159
Репутация
608
Баллы
238
А Скорость бега не передается что ли на прямую через юзеринфо? Беру спид из окна статов, перевожу в байты, ищу в пакете и ничего не нахожу
Там должна передаваться базовая скорость и мультиплаер(множитель, во сколько раз увеличена\уменьшена скорость)
writeD(_runSpd); // базовая
writeD(_walkSpd);
writeD(_swimRunSpd);
writeD(_swimWalkSpd);
writeD(_flyRunSpd);
writeD(_flyWalkSpd);
writeD(_flyRunSpd);
writeD(_flyWalkSpd);
writeF(_moveMultiplier); //множитель
 

DaVilka

Пляшущий с бубном
Местный
Сообщения
315
Розыгрыши
0
Реакции
101
Репутация
66
Баллы
212
Там должна передаваться базовая скорость и мультиплаер(множитель, во сколько раз увеличена\уменьшена скорость)
writeD(_runSpd); // базовая
writeD(_walkSpd);
writeD(_swimRunSpd);
writeD(_swimWalkSpd);
writeD(_flyRunSpd);
writeD(_flyWalkSpd);
writeD(_flyRunSpd);
writeD(_flyWalkSpd);
writeF(_moveMultiplier); //множитель
А как измерить скорость перемещения со стороны сервера? Что бы проверить, правильный ли валидейтпозишн?
 

Rozhek

Пляшущий с бубном
Местный
Сообщения
189
Розыгрыши
2
Реакции
159
Репутация
608
Баллы
238
Немного не понял, что ты хочешь сделать.
Если нужна достоверная скорость, то нужно брать базовую с птс сервера и считать эффекты(бафы, бонусы армора и т.д.) которые влияют на базовую. Потом ее и передаешь в userinfo. А validateposition помогает сравнить текущую координату и координаты на сервере, их разница как раз поможет посмотреть на сколько они отличаются. А вообще возьми любой ява сервер и посмотри как происходит расчет позиции в Creature.java MoveNextTask, каждые n милисекунд скорость умножается на время нахождения в движении и получается пройденное расстояние, из него выставляется позиция.
 

DaVilka

Пляшущий с бубном
Местный
Сообщения
315
Розыгрыши
0
Реакции
101
Репутация
66
Баллы
212
Немного не понял, что ты хочешь сделать.
Если нужна достоверная скорость, то нужно брать базовую с птс сервера и считать эффекты(бафы, бонусы армора и т.д.) которые влияют на базовую. Потом ее и передаешь в userinfo. А validateposition помогает сравнить текущую координату и координаты на сервере, их разница как раз поможет посмотреть на сколько они отличаются. А вообще возьми любой ява сервер и посмотри как происходит расчет позиции в Creature.java MoveNextTask, каждые n милисекунд скорость умножается на время нахождения в движении и получается пройденное расстояние, из него выставляется позиция.
Да, спасибо, скорость на время то что нужно, школьный материал :D
 
Сверху Снизу