Цитата:
Сообщение от Mifesto
CharInfo как был так и остался, он в клиенте называется CIPacket.
|
Хм, я думал он не используется больше.
Добавлено через 2 часа 7 минут
С CharInfo разобрался, не критует.
Такой вопрос, что сталось с ItemInfo?
Структуру нашёл, переделал, в лобби при выборе всё хорошо, в игре у оружия заточка сразу светится.
И еще, если не надет верхний доспех, то остальные части не отображаются.
Свернуть ↑
Код:
protected void writeItemInfo(ItemInstance item)
{
writeItemInfo(item, item.getCount());
}
protected void writeItemInfo(ItemInstance item, long count)
{
// dddQhhhdhhhhddhhhhhhhhhhhhd
writeD(item.getObjectId());
writeD(item.getItemId());
writeC(item.getEquipSlot());
writeQ(count);
writeC(item.getTemplate().getType2ForPackets());
writeC(item.getCustomType1());
writeC(item.isEquipped() ? 1 : 0);
writeC(item.getCustomType2());
writeQ(item.getBodyPart());
writeH(item.getEnchantLevel());
writeH(item.getAugmentationId());
writeH(item.getAugmentationId());
writeD(item.getShadowLifeTime());
writeD(item.getTemporalLifeTime());
writeC(0x01); // L2WT GOD
writeH(item.getAttackElement().getId());
writeH(item.getAttackElementValue());
writeH(item.getDefenceFire());
writeH(item.getDefenceWater());
writeH(item.getDefenceWind());
writeH(item.getDefenceEarth());
writeH(item.getDefenceHoly());
writeH(item.getDefenceUnholy());
writeH(item.getEnchantOptions()[0]);
writeH(item.getEnchantOptions()[1]);
writeH(item.getEnchantOptions()[2]);
writeD(item.getVisualId());
}
protected void writeItemInfo(ItemInfo item)
{
writeItemInfo(item, item.getCount());
}
protected void writeItemInfo(ItemInfo item, long count)
{
writeD(item.getObjectId());
writeD(item.getItemId());
writeC(item.getEquipSlot());
writeQ(count);
writeC(item.getItem().getType2ForPackets());
writeC(item.getCustomType1());
writeC(item.isEquipped() ? 1 : 0);
writeC(item.getCustomType2());
writeQ(item.getItem().getBodyPart());
writeH(item.getEnchantLevel());
writeH(item.getAugmentationId());
writeH(item.getAugmentationId());
writeD(item.getShadowLifeTime());
writeD(item.getTemporalLifeTime());
writeC(0x01); // L2WT GOD
writeH(item.getAttackElement());
writeH(item.getAttackElementValue());
writeH(item.getDefenceFire());
writeH(item.getDefenceWater());
writeH(item.getDefenceWind());
writeH(item.getDefenceEarth());
writeH(item.getDefenceHoly());
writeH(item.getDefenceUnholy());
writeH(item.getEnchantOptions()[0]);
writeH(item.getEnchantOptions()[1]);
writeH(item.getEnchantOptions()[2]);
writeD(item.getVisualId());
}
protected void writeItemElements(MultiSellIngredient item)
{
if (item.getItemId() <= 0)
{
writeItemElements();
return;
}
ItemTemplate i = ItemHolder.getInstance().getTemplate(item.getItemId());
if (item.getItemAttributes().getValue() > 0)
{
if (i.isWeapon())
{
Element e = item.getItemAttributes().getElement();
writeH(e.getId()); // attack element (-1 - none)
writeH(item.getItemAttributes().getValue(e) + i.getBaseAttributeValue(e)); // attack element value
writeH(0);
writeH(0);
writeH(0);
writeH(0);
writeH(0);
writeH(0);
}
else if (i.isArmor())
{
writeH(-1); // attack element (-1 - none)
writeH(0); // attack element value
for (Element e : Element.VALUES)
writeH(item.getItemAttributes().getValue(e) + i.getBaseAttributeValue(e));
}
else
writeItemElements();
}
else
writeItemElements();
}
protected void writeInfo(final MultiSellIngredient ingr, final boolean product)
{
final int itemId = ingr.getItemId();
final ItemTemplate template = (itemId > 0) ? ItemHolder.getInstance().getTemplate(ingr.getItemId()) : null;
writeD(itemId);
if(product)
{
writeD((itemId > 0) ? template.getBodyPart() : 0);
}
writeH((itemId > 0) ? template.getType2ForPackets() : 0);
writeQ(ingr.getItemCount());
writeH(ingr.getItemEnchant());
if(product)
{
writeD(ingr.getChance(true));
}
writeAugmentationInfo(ingr);
writeItemElements(ingr);
}
Свернуть ↑Развернуть ↓