Проблема такая, у обычного юзера нету систем чата где идёт описание урона, получаемого опыта и т.д.
Как только мы выдаём чару админа систем чат начинает работать.
Куда копать перерыл чат+админку, пытался дебажить, но походу не там рою.
Нет, сервер отправляет системные сообщения вне зависимости от accessLevel’a. Дело в том что клиенте уже несколько протоколов не отображает часть сообщений для обычных игроков.
Нет, сервер отправляет системные сообщения вне зависимости от accessLevel’a. Дело в том что клиенте уже несколько протоколов не отображает часть сообщений для обычных игроков.
а в чем логика корейцев когда они это скостыляли? зачем? чтобы что? причем сообщения самые обычные. может они перевели их в другой айди пакета, а эти пакеты оставили для админского сервиса? нипанимаю...
не по моей теме )
Корейцы в 414 (когда эссэсс ин ов добавили) в систем мессаги ввели доп параметр, который отвечает за отображение для пользователей.
Тогда же, они для ГМов ввели кнопку (когда нажимаешь Alt + G) [Даже скрин нашел двух-летней давности]. Но прикол - они её удалили в 418 XD
*Внимание на "Система" возле чата*
ИМХО - самый лучшый вариант - это просто вернуть окно системных мессаг.
Хзы нашёл в World чате проверку
public class ChatUniversal
final Instant instant = REUSE.getOrDefault(activeChar.getObjectId(), null);
if ((instant != null) && instant.isAfter(now) && !activeChar.getAccessLevel().isGm())
{
final Duration timeDiff = Duration.between(now, instant);
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_S1_SEC_UNTIL_YOU_ARE_ABLE_TO_USE_WORLD_CHAT);
msg.addInt((int) timeDiff.getSeconds());
activeChar.sendPacket(msg);
return;
}
final Instant instant = REUSE.getOrDefault(activeChar.getObjectId(), null);
if ((instant != null) && instant.isAfter(now) && !activeChar.getAccessLevel().isGm() && !activeChar.isPlayer())
{
final Duration timeDiff = Duration.between(now, instant);
final SystemMessage msg = new SystemMessage(SystemMessageId.YOU_HAVE_S1_SEC_UNTIL_YOU_ARE_ABLE_TO_USE_WORLD_CHAT);
msg.addInt((int) timeDiff.getSeconds());
activeChar.sendPacket(msg);
return;
}
Добавил в проверку !activeChar.isPlayer() и чат заработал, но не знаю на сколько это правильно, буду тестить ещё. Спасибо всем за советы) с клиентом я чёт попытался, но вспомнил что у меня редактора нету на интерфейс пошёл по ядру полазить ещё