@Override
public void write() {
final ShortCut shortCut = clientSocket.getAccount().getCharacter().getShortCut();
final List<ShortCutTemplate> iconsActive = new ArrayList<>();
for (ShortCutTemplate shortCutTemplate : shortCut.getIcons()) {
if (shortCutTemplate.isActive()) iconsActive.add(shortCutTemplate);
}
writeByte(0x45);
writeInt(iconsActive.size());
for (ShortCutTemplate shortCutTemplate : iconsActive) {
writeInt(shortCutTemplate.getType().getNumber());
writeInt(shortCutTemplate.getSlot() + shortCutTemplate.getPage() * 12);
switch (shortCutTemplate.getType()) {
case ITEM -> {
writeInt(shortCutTemplate.getIdObject());
writeInt(shortCutTemplate.getCharacterType());
writeInt(-1);
writeInt(0x00);
writeInt(0x00);
writeInt(0x00);
}
case SKILL -> {
writeInt(shortCutTemplate.getIdObject());
writeInt(shortCutTemplate.getLevel());
writeInt(0x00);
writeInt(shortCutTemplate.getCharacterType());
}
default -> {
writeInt(shortCutTemplate.getIdObject());
writeInt(shortCutTemplate.getCharacterType());
}
}
}
}
добавьте логиСорян за лишний пост, еще проверил со скилом, все четко как и в случае действий, только предметы глючат.
writeInt(shortCutTemplate.getIdObject());
writeInt(shortCutTemplate.getLevel());
writeInt(0x00);
writeInt(shortCutTemplate.getCharacterType());
writeInt(shortCutTemplate.getIdObject());
writeInt(shortCutTemplate.getLevel());
writeByte(0x00);
writeInt(shortCutTemplate.getCharacterType());
Да я аргументацию выпилил, я не по шаблону делаю, некоторые функции убираю, некоторые с нуля создаю.З.Ы. и дозаполни блок полей для итемовтам где у тебя 4 d пустых идут - это группа реюза, текущий реюз, полное время реюза, аугментация. последнее вобще можно представить как hh, если слать опции ауги раздельно.
Я беру из списка, а он формируется до того как я посылаю пакет с панелью клиенту
Ты пишешь так, как будто там транзакции в базу БД по талонам выдают и у сервака лимит на них дневной стоит.по уму у тебя не должно каждый раз при заходе грузить предметы с базы, а класть при первой загрузке из бд данные в кэш в памяти и при перезаходах брать уже оттуда. повторно же из базы грузить только когда предметы будут выкинуты из кэша по причине того что к ним долго не обращались. ибо каждый раз при входе грузить это все из бд - это прямой путь к лишним нагрузкам на базу, особенно если игроки с забитым доверху инвентарем будут в большом количестве специально нонстопом перезаходить в игру - у тебя бд офигеет от количества запросов
советую посмотреть в сторону того же Ehcache, который например в овере используется в частности как раз для подобного кэширования предметов и не только для этого.
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?