- Хроники
- The 2nd Throne: Gracia
- Исходники
- Присутствуют
- Сборка
- Собственная
Всем привет, давно тут не было меня ) В общем к делу. При отправке клиенту пакета
ChangeWaitType, сажу персонажа на землю:
Персонаж садиться все хорошо, но сервер получает от клиента левый пакет, постоянно с разным префиксом, даже таким, какого нет в помине.
Потом после того, как я жму еще раз, что-бы персонаж встал, он не всегда встает, а если встает, то любые действия не могу совершить, начал копать, и обнаружил, что после того, как я усаживаю персонажа, приходит мне пакет ValidatePosition, я логирую координаты, которые мне присылает клиент, и там вот такое:
Но в момент, когда персонаж передвигается, координаты в ValidatePosition правильные отправляет, с передвижением таких проблем нет.
Что может быть?
ChangeWaitType, сажу персонажа на землю:
Java:
/**
* <b>Описание:</b><br>
* Этот класс содержит в себе пакет данных, предназначенный для отправки клиенту, который содержит данные об измененном
* статусе ожидания персонажа.
*/
public class ChangeWaitType extends Send {
private final int id; // Уникальный идентификатор персонажа.
private final WaitType waitType; // Тип ожидания персонажа.
private final int x, y, z; // Координаты местоположения персонажа.
/**
* <b>Описание:</b><br>
* Конструктор для создания нового экземпляра класса.
* @param character Объект персонажа.
* @param waitType Тип ожидания персонажа.
*/
public ChangeWaitType(Character character, WaitType waitType) {
this.id = character.getId();
this.waitType = waitType;
final LocationObject locationObject = character.getLocationObject();
this.x = locationObject.getX();
this.y = locationObject.getY();
this.z = locationObject.getZ();
write(); // Выполняет расчет размера пакета данных.
}
/**
* <b>Описание:</b><br>
* Оболочка, в которой формируется пакет данных для отправки клиенту.
*/
@Override
public void write() {
writeByte(0x29); // Префикс пакета данных.
writeInt(id); // Уникальный идентификатор персонажа.
writeInt(waitType.ordinal()); // Тип ожидания персонажа.
writeInt(x); // Координата по оси X местоположения персонажа.
writeInt(y); // Координата по оси Y местоположения персонажа.
writeInt(z); // Координата по оси Z местоположения персонажа.
}
}
Персонаж садиться все хорошо, но сервер получает от клиента левый пакет, постоянно с разным префиксом, даже таким, какого нет в помине.
Потом после того, как я жму еще раз, что-бы персонаж встал, он не всегда встает, а если встает, то любые действия не могу совершить, начал копать, и обнаружил, что после того, как я усаживаю персонажа, приходит мне пакет ValidatePosition, я логирую координаты, которые мне присылает клиент, и там вот такое:
Код:
// Координаты текущие, правильные.
-79788
248343
-3629
// После того, как жму сесть: (То есть присылает пакет левый, как я и писал и как меняет координату Y и Z)
-> [Система] Код - 219.
-79788
218352151
-3724
// Потом жму встать:
-79788
251906583
-3724
// Потом снова сесть:
-> [Система] Код - 243.
-79788
-1073493481
-3783
Ну и потом персонаж вообще перестает реагировать.
Но в момент, когда персонаж передвигается, координаты в ValidatePosition правильные отправляет, с передвижением таких проблем нет.
Что может быть?