SellList пакет в L2JServer

  • Автор темы Автор темы Psycho
  • Дата начала Дата начала

Psycho

Легенда
Хроники
  1. Chaotic Throne: High Five
Исходники
Присутствуют
Сборка
L2JServer
Кто в курсе, на кой хер он вообще нужен? Не ну типо по логике понятно что он клиенту отправляет окно продажи.
На том же мобиусе я подобного пакета не нашел, да и отсылаемые writeC(0x06); вообще не понятно что делают.
Ну типо я перевожу пакеты на такой формат ServerPackets.ИМЯ_ПАКЕТА.writeId(this); и не понятно что за пакет writeC(0x06);
Хроники хф.
Java:
package l2j.gameserver.network.serverpackets;

import l2j.gameserver.model.actor.instance.Merchant;
import l2j.gameserver.model.actor.instance.Player;
import l2j.gameserver.model.items.instance.Item;

import java.util.ArrayList;
import java.util.List;

public class SellList extends ServerPacket {
    private final Player _activeChar;
    private final Merchant _lease;
    private final long _money;
    private final List<Item> _selllist = new ArrayList<>();
 
    public SellList(Player player) {
        _activeChar = player;
        _lease = null;
        _money = _activeChar.getAdena();
        doLease();
    }
 
    public SellList(Player player, Merchant lease) {
        _activeChar = player;
        _lease = lease;
        _money = _activeChar.getAdena();
        doLease();
    }
 
    private void doLease() {
        if (_lease == null) {
            for (Item item : _activeChar.getInventory().getItems()) {
                if (!item.isEquipped() && item.isSellable() && (!_activeChar.hasSummon() || (item.getObjectId() != _activeChar.getSummon().getControlObjectId()))) // Pet is summoned and not the item that summoned the pet
                {
                    _selllist.add(item);
                }
            }
        }
    }
 
    @Override
    protected final void writeImpl() {
        writeC(0x06);
        writeQ(_money);
        writeD(_lease == null ? 0x00 : 1000000 + _lease.getTemplate().getId());
        writeH(_selllist.size());
     
        for (Item item : _selllist) {
            writeH(item.getItem().getType1());
            writeD(item.getObjectId());
            writeD(item.getDisplayId());
            writeQ(item.getCount());
            writeH(item.getItem().getType2());
            writeH(item.isEquipped() ? 0x01 : 0x00);
            writeD(item.getItem().getBodyPart());
            writeH(item.getEnchantLevel());
            writeH(0x00); // TODO: Verify me
            writeH(item.getCustomType2());
            writeQ(item.getItem().getReferencePrice() / 2);
            // T1
            writeH(item.getAttackElementType());
            writeH(item.getAttackElementPower());
            for (byte i = 0; i < 6; i++) {
                writeH(item.getElementDefAttr(i));
            }
            // Enchant Effects
            for (int op : item.getEnchantOptions()) {
                writeH(op);
            }
        }
    }
}
 
Последнее редактирование:
Решение
0x06 — это опкод для пакета; l2jserver хранит их внутри класса пакета, в то время как Mobius выделяет их в отдельный класс для упрощения модификации.

Насчет того, работает ли этот пакет или нужен ли он, я не знаю, думаю, он бесполезен в High-Five, поскольку они убрали отдельную функцию продажи для NPC.
0x06 — это опкод для пакета; l2jserver хранит их внутри класса пакета, в то время как Mobius выделяет их в отдельный класс для упрощения модификации.

Насчет того, работает ли этот пакет или нужен ли он, я не знаю, думаю, он бесполезен в High-Five, поскольку они убрали отдельную функцию продажи для NPC.
 

Psycho

Баллов: 20
За помощь
Решение
0x06 — это опкод для пакета; l2jserver хранит их внутри класса пакета, в то время как Mobius выделяет их в отдельный класс для упрощения модификации.

Насчет того, работает ли этот пакет или нужен ли он, я не знаю, думаю, он бесполезен в High-Five, поскольку они убрали отдельную функцию продажи для NPC.
Ну в опкодах у меня его нет, для 0х06 есть только ех пакет FE,0x06.
У меня только такие
Java:
    DIE(0x00),
    REVIVE(0x01),
    ATTACK_OUTOF_RANGE(0x02),
    ATTACKIN_COOL_TIME(0x03),
    ATTACK_DEAD_TARGET(0x04),
    SPAWN_ITEM(0x05),
    DELETE_OBJECT(0x08),

Ну короче можно просто его добавить, и использовать как:
Java:
SELL_LIST(0x06),
Java:
ServerPackets.SELL_LIST.writeId(this);
 
Последнее редактирование:
Ну в опкодах у меня его нет, для 0х06 есть только ех пакет FE,0x06.
У меня только такие
Java:
    DIE(0x00),
    REVIVE(0x01),
    ATTACK_OUTOF_RANGE(0x02),
    ATTACKIN_COOL_TIME(0x03),
    ATTACK_DEAD_TARGET(0x04),
    SPAWN_ITEM(0x05),
    DELETE_OBJECT(0x08),

Ну короче можно просто его добавить, и использовать как:
Java:
SELL_LIST(0x06),
Java:
ServerPackets.SELL_LIST.writeId(this);
Как пожелаете, но на вашем месте я бы даже не стал заморачиваться с добавлением.
 

Похожие темы

Назад
Сверху Снизу