[Java/Клиент] Значение отображается некорректно после отправки на клиент

Olympicus

Свой человек
Участник
Сообщения
88
Розыгрыши
0
Решения
2
Репутация
43
Реакции
40
Баллы
575
Хроники
  1. Salvation
Исходники
Присутствуют
Сборка
L2jEternity
Привет! Работаю над добавлением небольшой текстуры, которая будет отображаться в системе группы (Party), чтобы показать, является ли игрок премиумом или нет. Кроме того, планируется передавать тип премиума, чтобы он отображался при наведении курсора мыши на текстуру.


При отправке ID премиума на клиент, я получаю число, равное ID * 256, что кажется странным, так как в консоли выводится правильное значение (1, 2, 3, 4).


Конечно, я могу просто разделить полученное число на 256 и использовать его как нужно, но ради интереса хочу разобраться в причине.


Прикладываю фрагмент кода, чтобы посмотреть, не допускаю ли я ошибку — возможно, кто-то сможет подсказать направление.


Java:
        if (containsMask(_flags, PartySmallWindowUpdateType.PREMIUM_ID))
        {
            writeD(_member.hasPremiumBonus() ? _member.getPremiumBonus().getPremiumId() : 0);
        }

P.S. На клиенте при получении значения я использую ParseInt и получаю те значения, о которых упомянул выше.
Спросил у GPT — ответ был, что, скорее всего, я отправляю смещённое или неверное значение.
 
На интерфейсе можно Warn(String line) добавить и потом в L2.log / L2Second.log смотреть информацию, которая пришла.

Ну и так же не стоит забывать о приколах интерфейса.

Возможно Вы получаете копию переменной, к которой хотите присвоить значение премиума, и из-за чего получаете в конце 0 в оригинальном значении.
 
Могу предположить что значение считывается смещенным на один байт (?) и потому такой результат.
И кстати зачем аж целое d (4 байта) юзать для отправки? почему не c (1 байт), которого за глаза хватит для отправки 5 вариантов значений (0-4)?
 
Если честно, я использовал это просто потому, что следовал примеру, и пакет изначально был с такой структурой. В любом случае, я попробовал заменить на writeC, чтобы посмотреть, изменится ли что-то, но ничего не изменилось.
Я думаю, что отправляемое значение правильное, но клиент каким-то образом его неправильно интерпретирует. (Попробую на чистом клиенте, чтобы исключить возможные ошибки).
 
Данный сайт использует cookie. Вы должны принять их для продолжения использования. Узнать больше…