Updated ExBuySellList.
Contributed by Index.
This commit is contained in:
parent
11955ae57f
commit
b236848a58
@ -23,8 +23,8 @@ import org.l2jmobius.gameserver.data.xml.MultisellData;
|
||||
import org.l2jmobius.gameserver.handler.IAdminCommandHandler;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.buylist.ProductList;
|
||||
import org.l2jmobius.gameserver.model.siege.Castle;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.BuyList;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExBuySellList;
|
||||
import org.l2jmobius.gameserver.util.BuilderUtil;
|
||||
|
||||
@ -113,8 +113,9 @@ public class AdminShop implements IAdminCommandHandler
|
||||
final ProductList buyList = BuyListData.getInstance().getBuyList(val);
|
||||
if (buyList != null)
|
||||
{
|
||||
activeChar.sendPacket(new BuyList(buyList, activeChar, 0));
|
||||
activeChar.sendPacket(new ExBuySellList(buyList, activeChar, 0));
|
||||
activeChar.sendPacket(new ExBuySellList(activeChar, false));
|
||||
activeChar.sendPacket(new ExBuySellList((Castle) null, false));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -48,7 +48,6 @@ import org.l2jmobius.gameserver.model.actor.Summon;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.Pet;
|
||||
import org.l2jmobius.gameserver.model.skill.Skill;
|
||||
import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.BuyList;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExBuySellList;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ShowBoard;
|
||||
@ -168,7 +167,7 @@ public class HomeBoard implements IParseBoardHandler
|
||||
{
|
||||
final String page = command.replace("_bbssell;", "");
|
||||
returnHtml = HtmCache.getInstance().getHtm(player, "data/html/CommunityBoard/Custom/" + page + ".html");
|
||||
player.sendPacket(new BuyList(BuyListData.getInstance().getBuyList(423), player, 0));
|
||||
player.sendPacket(new ExBuySellList(BuyListData.getInstance().getBuyList(423), player, 0));
|
||||
player.sendPacket(new ExBuySellList(player, false));
|
||||
}
|
||||
else if (command.startsWith("_bbsteleport"))
|
||||
|
@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
|
||||
import org.l2jmobius.gameserver.model.buylist.ProductList;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.BuyList;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExBuySellList;
|
||||
|
||||
/**
|
||||
@ -87,7 +86,8 @@ public class Merchant extends Folk
|
||||
|
||||
player.setInventoryBlockingStatus(true);
|
||||
|
||||
player.sendPacket(new BuyList(buyList, player, (applyCastleTax) ? getCastleTaxRate(TaxType.BUY) : 0));
|
||||
player.sendPacket(new ExBuySellList(buyList, player, (applyCastleTax) ? getCastleTaxRate(TaxType.BUY) : 0));
|
||||
player.sendPacket(new ExBuySellList(player, false));
|
||||
player.sendPacket(new ExBuySellList(getCastle(), applyCastleTax));
|
||||
}
|
||||
}
|
||||
|
@ -24,21 +24,62 @@ import org.l2jmobius.Config;
|
||||
import org.l2jmobius.commons.network.PacketWriter;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.actor.Summon;
|
||||
import org.l2jmobius.gameserver.model.buylist.Product;
|
||||
import org.l2jmobius.gameserver.model.buylist.ProductList;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.siege.Castle;
|
||||
import org.l2jmobius.gameserver.network.OutgoingPackets;
|
||||
import org.l2jmobius.gameserver.network.PacketLogger;
|
||||
|
||||
/**
|
||||
* @author ShanSoft
|
||||
* @author ShanSoft, Index
|
||||
*/
|
||||
public class ExBuySellList extends AbstractItemPacket
|
||||
{
|
||||
private final List<Item> _sellList = new ArrayList<>();
|
||||
private Collection<Item> _refundList = null;
|
||||
private final boolean _done;
|
||||
public static final int BUY_SELL_LIST_BUY = 0;
|
||||
public static final int BUY_SELL_LIST_SELL = 1;
|
||||
public static final int BUY_SELL_LIST_UNK = 2;
|
||||
public static final int BUY_SELL_LIST_TAX = 3;
|
||||
|
||||
public static final int UNK_SELECT_FIRST_TAB = 0;
|
||||
public static final int UNK_SHOW_PURCHASE_LIST = 1;
|
||||
public static final int UNK_SEND_NOT_ENOUGH_ADENA_MESSAGE = 2;
|
||||
public static final int UNK_SEND_INCORRECT_ITEM_MESSAGE = 3;
|
||||
|
||||
private final int _inventorySlots;
|
||||
private final int _type;
|
||||
|
||||
// buy type - BUY
|
||||
private long _money;
|
||||
private double _castleTaxRate;
|
||||
private Collection<Product> _list;
|
||||
private int _listId;
|
||||
|
||||
// buy type - SELL
|
||||
private final List<Item> _sellList = new ArrayList<>();
|
||||
private final Collection<Item> _refundList = new ArrayList<>();
|
||||
private boolean _done;
|
||||
|
||||
// buy type = unk
|
||||
private int _unkType;
|
||||
|
||||
// buy type - send tax
|
||||
private int _nearestCastle;
|
||||
private boolean _applyTax;
|
||||
|
||||
public ExBuySellList(ProductList list, Player player, double castleTaxRate)
|
||||
{
|
||||
_type = BUY_SELL_LIST_BUY;
|
||||
_listId = list.getListId();
|
||||
_list = list.getProducts();
|
||||
_money = player.getAdena();
|
||||
_inventorySlots = player.getInventory().getNonQuestSize();
|
||||
_castleTaxRate = castleTaxRate;
|
||||
}
|
||||
|
||||
public ExBuySellList(Player player, boolean done)
|
||||
{
|
||||
_type = BUY_SELL_LIST_SELL;
|
||||
final Summon pet = player.getPet();
|
||||
for (Item item : player.getInventory().getItems())
|
||||
{
|
||||
@ -50,18 +91,76 @@ public class ExBuySellList extends AbstractItemPacket
|
||||
_inventorySlots = player.getInventory().getNonQuestSize();
|
||||
if (player.hasRefund())
|
||||
{
|
||||
_refundList = player.getRefund().getItems();
|
||||
_refundList.addAll(player.getRefund().getItems());
|
||||
}
|
||||
_done = done;
|
||||
}
|
||||
|
||||
public ExBuySellList(int type)
|
||||
{
|
||||
_type = BUY_SELL_LIST_UNK;
|
||||
_unkType = type;
|
||||
_inventorySlots = 0;
|
||||
}
|
||||
|
||||
public ExBuySellList(Castle nearestCastle, boolean applyTax)
|
||||
{
|
||||
_type = BUY_SELL_LIST_TAX;
|
||||
_inventorySlots = 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean write(PacketWriter packet)
|
||||
{
|
||||
OutgoingPackets.EX_BUY_SELL_LIST.writeId(packet);
|
||||
packet.writeD(1); // Type SELL
|
||||
packet.writeD(_type);
|
||||
switch (_type)
|
||||
{
|
||||
case BUY_SELL_LIST_BUY:
|
||||
{
|
||||
return sendBuyList(packet);
|
||||
}
|
||||
case BUY_SELL_LIST_SELL:
|
||||
{
|
||||
return sendSellList(packet);
|
||||
}
|
||||
case BUY_SELL_LIST_UNK:
|
||||
{
|
||||
return sendUnk(packet);
|
||||
}
|
||||
case BUY_SELL_LIST_TAX:
|
||||
{
|
||||
return sendCurrentTax(packet);
|
||||
}
|
||||
default:
|
||||
{
|
||||
PacketLogger.warning(getClass().getSimpleName() + ": unknown type " + _type);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean sendBuyList(PacketWriter packet)
|
||||
{
|
||||
packet.writeQ(_money); // current money
|
||||
packet.writeD(_listId);
|
||||
packet.writeD(_inventorySlots);
|
||||
if ((_sellList != null))
|
||||
packet.writeH(_list.size());
|
||||
for (Product product : _list)
|
||||
{
|
||||
if ((product.getCount() > 0) || !product.hasLimitedStock())
|
||||
{
|
||||
writeItem(packet, product);
|
||||
packet.writeQ((long) (product.getPrice() * (1.0 + _castleTaxRate + product.getBaseTaxRate())));
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean sendSellList(PacketWriter packet)
|
||||
{
|
||||
packet.writeD(_inventorySlots);
|
||||
if (!_sellList.isEmpty())
|
||||
{
|
||||
packet.writeH(_sellList.size());
|
||||
for (Item item : _sellList)
|
||||
@ -74,7 +173,7 @@ public class ExBuySellList extends AbstractItemPacket
|
||||
{
|
||||
packet.writeH(0);
|
||||
}
|
||||
if ((_refundList != null) && !_refundList.isEmpty())
|
||||
if (!_refundList.isEmpty())
|
||||
{
|
||||
packet.writeH(_refundList.size());
|
||||
int i = 0;
|
||||
@ -92,4 +191,21 @@ public class ExBuySellList extends AbstractItemPacket
|
||||
packet.writeC(_done ? 1 : 0);
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean sendUnk(PacketWriter packet)
|
||||
{
|
||||
packet.writeC(_unkType);
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean sendCurrentTax(PacketWriter packet)
|
||||
{
|
||||
packet.writeD(_nearestCastle);
|
||||
if (_nearestCastle != 0)
|
||||
{
|
||||
packet.writeD(_nearestCastle);
|
||||
packet.writeD(_applyTax ? (int) _castleTaxRate : 0);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -23,8 +23,8 @@ import org.l2jmobius.gameserver.data.xml.MultisellData;
|
||||
import org.l2jmobius.gameserver.handler.IAdminCommandHandler;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.buylist.ProductList;
|
||||
import org.l2jmobius.gameserver.model.siege.Castle;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.BuyList;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExBuySellList;
|
||||
import org.l2jmobius.gameserver.util.BuilderUtil;
|
||||
|
||||
@ -113,8 +113,9 @@ public class AdminShop implements IAdminCommandHandler
|
||||
final ProductList buyList = BuyListData.getInstance().getBuyList(val);
|
||||
if (buyList != null)
|
||||
{
|
||||
activeChar.sendPacket(new BuyList(buyList, activeChar, 0));
|
||||
activeChar.sendPacket(new ExBuySellList(buyList, activeChar, 0));
|
||||
activeChar.sendPacket(new ExBuySellList(activeChar, false));
|
||||
activeChar.sendPacket(new ExBuySellList((Castle) null, false));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -48,7 +48,6 @@ import org.l2jmobius.gameserver.model.actor.Summon;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.Pet;
|
||||
import org.l2jmobius.gameserver.model.skill.Skill;
|
||||
import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.BuyList;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExBuySellList;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ShowBoard;
|
||||
@ -168,7 +167,7 @@ public class HomeBoard implements IParseBoardHandler
|
||||
{
|
||||
final String page = command.replace("_bbssell;", "");
|
||||
returnHtml = HtmCache.getInstance().getHtm(player, "data/html/CommunityBoard/Custom/" + page + ".html");
|
||||
player.sendPacket(new BuyList(BuyListData.getInstance().getBuyList(423), player, 0));
|
||||
player.sendPacket(new ExBuySellList(BuyListData.getInstance().getBuyList(423), player, 0));
|
||||
player.sendPacket(new ExBuySellList(player, false));
|
||||
}
|
||||
else if (command.startsWith("_bbsteleport"))
|
||||
|
@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
|
||||
import org.l2jmobius.gameserver.model.buylist.ProductList;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.BuyList;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExBuySellList;
|
||||
|
||||
/**
|
||||
@ -87,7 +86,8 @@ public class Merchant extends Folk
|
||||
|
||||
player.setInventoryBlockingStatus(true);
|
||||
|
||||
player.sendPacket(new BuyList(buyList, player, (applyCastleTax) ? getCastleTaxRate(TaxType.BUY) : 0));
|
||||
player.sendPacket(new ExBuySellList(buyList, player, (applyCastleTax) ? getCastleTaxRate(TaxType.BUY) : 0));
|
||||
player.sendPacket(new ExBuySellList(player, false));
|
||||
player.sendPacket(new ExBuySellList(getCastle(), applyCastleTax));
|
||||
}
|
||||
}
|
||||
|
@ -24,21 +24,62 @@ import org.l2jmobius.Config;
|
||||
import org.l2jmobius.commons.network.PacketWriter;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.actor.Summon;
|
||||
import org.l2jmobius.gameserver.model.buylist.Product;
|
||||
import org.l2jmobius.gameserver.model.buylist.ProductList;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.model.siege.Castle;
|
||||
import org.l2jmobius.gameserver.network.OutgoingPackets;
|
||||
import org.l2jmobius.gameserver.network.PacketLogger;
|
||||
|
||||
/**
|
||||
* @author ShanSoft
|
||||
* @author ShanSoft, Index
|
||||
*/
|
||||
public class ExBuySellList extends AbstractItemPacket
|
||||
{
|
||||
private final List<Item> _sellList = new ArrayList<>();
|
||||
private Collection<Item> _refundList = null;
|
||||
private final boolean _done;
|
||||
public static final int BUY_SELL_LIST_BUY = 0;
|
||||
public static final int BUY_SELL_LIST_SELL = 1;
|
||||
public static final int BUY_SELL_LIST_UNK = 2;
|
||||
public static final int BUY_SELL_LIST_TAX = 3;
|
||||
|
||||
public static final int UNK_SELECT_FIRST_TAB = 0;
|
||||
public static final int UNK_SHOW_PURCHASE_LIST = 1;
|
||||
public static final int UNK_SEND_NOT_ENOUGH_ADENA_MESSAGE = 2;
|
||||
public static final int UNK_SEND_INCORRECT_ITEM_MESSAGE = 3;
|
||||
|
||||
private final int _inventorySlots;
|
||||
private final int _type;
|
||||
|
||||
// buy type - BUY
|
||||
private long _money;
|
||||
private double _castleTaxRate;
|
||||
private Collection<Product> _list;
|
||||
private int _listId;
|
||||
|
||||
// buy type - SELL
|
||||
private final List<Item> _sellList = new ArrayList<>();
|
||||
private final Collection<Item> _refundList = new ArrayList<>();
|
||||
private boolean _done;
|
||||
|
||||
// buy type = unk
|
||||
private int _unkType;
|
||||
|
||||
// buy type - send tax
|
||||
private int _nearestCastle;
|
||||
private boolean _applyTax;
|
||||
|
||||
public ExBuySellList(ProductList list, Player player, double castleTaxRate)
|
||||
{
|
||||
_type = BUY_SELL_LIST_BUY;
|
||||
_listId = list.getListId();
|
||||
_list = list.getProducts();
|
||||
_money = player.getAdena();
|
||||
_inventorySlots = player.getInventory().getNonQuestSize();
|
||||
_castleTaxRate = castleTaxRate;
|
||||
}
|
||||
|
||||
public ExBuySellList(Player player, boolean done)
|
||||
{
|
||||
_type = BUY_SELL_LIST_SELL;
|
||||
final Summon pet = player.getPet();
|
||||
for (Item item : player.getInventory().getItems())
|
||||
{
|
||||
@ -50,18 +91,76 @@ public class ExBuySellList extends AbstractItemPacket
|
||||
_inventorySlots = player.getInventory().getNonQuestSize();
|
||||
if (player.hasRefund())
|
||||
{
|
||||
_refundList = player.getRefund().getItems();
|
||||
_refundList.addAll(player.getRefund().getItems());
|
||||
}
|
||||
_done = done;
|
||||
}
|
||||
|
||||
public ExBuySellList(int type)
|
||||
{
|
||||
_type = BUY_SELL_LIST_UNK;
|
||||
_unkType = type;
|
||||
_inventorySlots = 0;
|
||||
}
|
||||
|
||||
public ExBuySellList(Castle nearestCastle, boolean applyTax)
|
||||
{
|
||||
_type = BUY_SELL_LIST_TAX;
|
||||
_inventorySlots = 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean write(PacketWriter packet)
|
||||
{
|
||||
OutgoingPackets.EX_BUY_SELL_LIST.writeId(packet);
|
||||
packet.writeD(1); // Type SELL
|
||||
packet.writeD(_type);
|
||||
switch (_type)
|
||||
{
|
||||
case BUY_SELL_LIST_BUY:
|
||||
{
|
||||
return sendBuyList(packet);
|
||||
}
|
||||
case BUY_SELL_LIST_SELL:
|
||||
{
|
||||
return sendSellList(packet);
|
||||
}
|
||||
case BUY_SELL_LIST_UNK:
|
||||
{
|
||||
return sendUnk(packet);
|
||||
}
|
||||
case BUY_SELL_LIST_TAX:
|
||||
{
|
||||
return sendCurrentTax(packet);
|
||||
}
|
||||
default:
|
||||
{
|
||||
PacketLogger.warning(getClass().getSimpleName() + ": unknown type " + _type);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean sendBuyList(PacketWriter packet)
|
||||
{
|
||||
packet.writeQ(_money); // current money
|
||||
packet.writeD(_listId);
|
||||
packet.writeD(_inventorySlots);
|
||||
if ((_sellList != null))
|
||||
packet.writeH(_list.size());
|
||||
for (Product product : _list)
|
||||
{
|
||||
if ((product.getCount() > 0) || !product.hasLimitedStock())
|
||||
{
|
||||
writeItem(packet, product);
|
||||
packet.writeQ((long) (product.getPrice() * (1.0 + _castleTaxRate + product.getBaseTaxRate())));
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean sendSellList(PacketWriter packet)
|
||||
{
|
||||
packet.writeD(_inventorySlots);
|
||||
if (!_sellList.isEmpty())
|
||||
{
|
||||
packet.writeH(_sellList.size());
|
||||
for (Item item : _sellList)
|
||||
@ -74,7 +173,7 @@ public class ExBuySellList extends AbstractItemPacket
|
||||
{
|
||||
packet.writeH(0);
|
||||
}
|
||||
if ((_refundList != null) && !_refundList.isEmpty())
|
||||
if (!_refundList.isEmpty())
|
||||
{
|
||||
packet.writeH(_refundList.size());
|
||||
int i = 0;
|
||||
@ -92,4 +191,21 @@ public class ExBuySellList extends AbstractItemPacket
|
||||
packet.writeC(_done ? 1 : 0);
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean sendUnk(PacketWriter packet)
|
||||
{
|
||||
packet.writeC(_unkType);
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean sendCurrentTax(PacketWriter packet)
|
||||
{
|
||||
packet.writeD(_nearestCastle);
|
||||
if (_nearestCastle != 0)
|
||||
{
|
||||
packet.writeD(_nearestCastle);
|
||||
packet.writeD(_applyTax ? (int) _castleTaxRate : 0);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.handler.IAdminCommandHandler;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.buylist.ProductList;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.BuyList;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExBuySellList;
|
||||
import org.l2jmobius.gameserver.util.BuilderUtil;
|
||||
|
||||
@ -113,8 +112,9 @@ public class AdminShop implements IAdminCommandHandler
|
||||
final ProductList buyList = BuyListData.getInstance().getBuyList(val);
|
||||
if (buyList != null)
|
||||
{
|
||||
activeChar.sendPacket(new BuyList(buyList, activeChar, 0));
|
||||
activeChar.sendPacket(new ExBuySellList(buyList, activeChar, 0));
|
||||
activeChar.sendPacket(new ExBuySellList(activeChar, false));
|
||||
activeChar.sendPacket(new ExBuySellList(false));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -46,7 +46,6 @@ import org.l2jmobius.gameserver.model.actor.Summon;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.Pet;
|
||||
import org.l2jmobius.gameserver.model.skill.Skill;
|
||||
import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.BuyList;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExBuySellList;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ShowBoard;
|
||||
@ -165,7 +164,7 @@ public class HomeBoard implements IParseBoardHandler
|
||||
{
|
||||
final String page = command.replace("_bbssell;", "");
|
||||
returnHtml = HtmCache.getInstance().getHtm(player, "data/html/CommunityBoard/Custom/" + page + ".html");
|
||||
player.sendPacket(new BuyList(BuyListData.getInstance().getBuyList(423), player, 0));
|
||||
player.sendPacket(new ExBuySellList(BuyListData.getInstance().getBuyList(423), player, 0));
|
||||
player.sendPacket(new ExBuySellList(player, false));
|
||||
}
|
||||
else if (command.startsWith("_bbsteleport"))
|
||||
|
@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
|
||||
import org.l2jmobius.gameserver.model.buylist.ProductList;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.BuyList;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExBuySellList;
|
||||
|
||||
/**
|
||||
@ -87,7 +86,8 @@ public class Merchant extends Folk
|
||||
|
||||
player.setInventoryBlockingStatus(true);
|
||||
|
||||
player.sendPacket(new BuyList(buyList, player, (applyCastleTax) ? getCastleTaxRate(TaxType.BUY) : 0));
|
||||
player.sendPacket(new ExBuySellList(buyList, player, (applyCastleTax) ? getCastleTaxRate(TaxType.BUY) : 0));
|
||||
player.sendPacket(new ExBuySellList(player, false));
|
||||
player.sendPacket(new ExBuySellList(applyCastleTax));
|
||||
}
|
||||
}
|
||||
|
@ -22,23 +22,71 @@ import java.util.List;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.commons.network.PacketWriter;
|
||||
import org.l2jmobius.gameserver.enums.TaxType;
|
||||
import org.l2jmobius.gameserver.instancemanager.CastleManager;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.actor.Summon;
|
||||
import org.l2jmobius.gameserver.model.buylist.Product;
|
||||
import org.l2jmobius.gameserver.model.buylist.ProductList;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.network.OutgoingPackets;
|
||||
import org.l2jmobius.gameserver.network.PacketLogger;
|
||||
|
||||
/**
|
||||
* @author ShanSoft
|
||||
* @author ShanSoft, Index
|
||||
*/
|
||||
public class ExBuySellList extends AbstractItemPacket
|
||||
{
|
||||
private final List<Item> _sellList = new ArrayList<>();
|
||||
private Collection<Item> _refundList = null;
|
||||
private final boolean _done;
|
||||
public static final int BUY_SELL_LIST_BUY = 0;
|
||||
public static final int BUY_SELL_LIST_SELL = 1;
|
||||
public static final int BUY_SELL_LIST_UNK = 2;
|
||||
public static final int BUY_SELL_LIST_TAX = 3;
|
||||
|
||||
public static final int UNK_SELECT_FIRST_TAB = 0;
|
||||
public static final int UNK_SHOW_PURCHASE_LIST = 1;
|
||||
public static final int UNK_SEND_NOT_ENOUGH_ADENA_MESSAGE = 2;
|
||||
public static final int UNK_SEND_INCORRECT_ITEM_MESSAGE = 3;
|
||||
|
||||
private static final int[] CASTLES =
|
||||
{
|
||||
3, // Giran
|
||||
7, // Goddart
|
||||
5, // Aden
|
||||
};
|
||||
|
||||
private final int _inventorySlots;
|
||||
private final int _type;
|
||||
|
||||
// buy type - BUY
|
||||
private long _money;
|
||||
private double _castleTaxRate;
|
||||
private Collection<Product> _list;
|
||||
private int _listId;
|
||||
|
||||
// buy type - SELL
|
||||
private final List<Item> _sellList = new ArrayList<>();
|
||||
private final Collection<Item> _refundList = new ArrayList<>();
|
||||
private boolean _done;
|
||||
|
||||
// buy type = unk
|
||||
private int _unkType;
|
||||
|
||||
// buy type - send tax
|
||||
private boolean _applyTax;
|
||||
|
||||
public ExBuySellList(ProductList list, Player player, double castleTaxRate)
|
||||
{
|
||||
_type = BUY_SELL_LIST_BUY;
|
||||
_listId = list.getListId();
|
||||
_list = list.getProducts();
|
||||
_money = player.getAdena();
|
||||
_inventorySlots = player.getInventory().getNonQuestSize();
|
||||
_castleTaxRate = castleTaxRate;
|
||||
}
|
||||
|
||||
public ExBuySellList(Player player, boolean done)
|
||||
{
|
||||
_type = BUY_SELL_LIST_SELL;
|
||||
final Summon pet = player.getPet();
|
||||
for (Item item : player.getInventory().getItems())
|
||||
{
|
||||
@ -50,18 +98,76 @@ public class ExBuySellList extends AbstractItemPacket
|
||||
_inventorySlots = player.getInventory().getNonQuestSize();
|
||||
if (player.hasRefund())
|
||||
{
|
||||
_refundList = player.getRefund().getItems();
|
||||
_refundList.addAll(player.getRefund().getItems());
|
||||
}
|
||||
_done = done;
|
||||
}
|
||||
|
||||
public ExBuySellList(int type)
|
||||
{
|
||||
_type = BUY_SELL_LIST_UNK;
|
||||
_unkType = type;
|
||||
_inventorySlots = 0;
|
||||
}
|
||||
|
||||
public ExBuySellList(boolean applyTax)
|
||||
{
|
||||
_type = BUY_SELL_LIST_TAX;
|
||||
_inventorySlots = 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean write(PacketWriter packet)
|
||||
{
|
||||
OutgoingPackets.EX_BUY_SELL_LIST.writeId(packet);
|
||||
packet.writeD(1); // Type SELL
|
||||
packet.writeD(_type);
|
||||
switch (_type)
|
||||
{
|
||||
case BUY_SELL_LIST_BUY:
|
||||
{
|
||||
return sendBuyList(packet);
|
||||
}
|
||||
case BUY_SELL_LIST_SELL:
|
||||
{
|
||||
return sendSellList(packet);
|
||||
}
|
||||
case BUY_SELL_LIST_UNK:
|
||||
{
|
||||
return sendUnk(packet);
|
||||
}
|
||||
case BUY_SELL_LIST_TAX:
|
||||
{
|
||||
return sendCurrentTax(packet);
|
||||
}
|
||||
default:
|
||||
{
|
||||
PacketLogger.warning(getClass().getSimpleName() + ": unknown type " + _type);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean sendBuyList(PacketWriter packet)
|
||||
{
|
||||
packet.writeQ(_money); // current money
|
||||
packet.writeD(_listId);
|
||||
packet.writeD(_inventorySlots);
|
||||
if ((_sellList != null))
|
||||
packet.writeH(_list.size());
|
||||
for (Product product : _list)
|
||||
{
|
||||
if ((product.getCount() > 0) || !product.hasLimitedStock())
|
||||
{
|
||||
writeItem(packet, product);
|
||||
packet.writeQ((long) (product.getPrice() * (1.0 + _castleTaxRate + product.getBaseTaxRate())));
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean sendSellList(PacketWriter packet)
|
||||
{
|
||||
packet.writeD(_inventorySlots);
|
||||
if (!_sellList.isEmpty())
|
||||
{
|
||||
packet.writeH(_sellList.size());
|
||||
for (Item item : _sellList)
|
||||
@ -74,7 +180,7 @@ public class ExBuySellList extends AbstractItemPacket
|
||||
{
|
||||
packet.writeH(0);
|
||||
}
|
||||
if ((_refundList != null) && !_refundList.isEmpty())
|
||||
if (!_refundList.isEmpty())
|
||||
{
|
||||
packet.writeH(_refundList.size());
|
||||
int i = 0;
|
||||
@ -92,4 +198,28 @@ public class ExBuySellList extends AbstractItemPacket
|
||||
packet.writeC(_done ? 1 : 0);
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean sendUnk(PacketWriter packet)
|
||||
{
|
||||
packet.writeC(_unkType);
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean sendCurrentTax(PacketWriter packet)
|
||||
{
|
||||
packet.writeD(CASTLES.length);
|
||||
for (int id : CASTLES)
|
||||
{
|
||||
packet.writeD(id); // residence id
|
||||
try
|
||||
{
|
||||
packet.writeD(_applyTax ? CastleManager.getInstance().getCastleById(id).getTaxPercent(TaxType.BUY) : 0); // residence tax
|
||||
}
|
||||
catch (NullPointerException ignored)
|
||||
{
|
||||
packet.writeD(0);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.handler.IAdminCommandHandler;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.buylist.ProductList;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.BuyList;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExBuySellList;
|
||||
import org.l2jmobius.gameserver.util.BuilderUtil;
|
||||
|
||||
@ -113,8 +112,9 @@ public class AdminShop implements IAdminCommandHandler
|
||||
final ProductList buyList = BuyListData.getInstance().getBuyList(val);
|
||||
if (buyList != null)
|
||||
{
|
||||
activeChar.sendPacket(new BuyList(buyList, activeChar, 0));
|
||||
activeChar.sendPacket(new ExBuySellList(buyList, activeChar, 0));
|
||||
activeChar.sendPacket(new ExBuySellList(activeChar, false));
|
||||
activeChar.sendPacket(new ExBuySellList(false));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -46,7 +46,6 @@ import org.l2jmobius.gameserver.model.actor.Summon;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.Pet;
|
||||
import org.l2jmobius.gameserver.model.skill.Skill;
|
||||
import org.l2jmobius.gameserver.model.zone.ZoneId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.BuyList;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExBuySellList;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.MagicSkillUse;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ShowBoard;
|
||||
@ -165,7 +164,7 @@ public class HomeBoard implements IParseBoardHandler
|
||||
{
|
||||
final String page = command.replace("_bbssell;", "");
|
||||
returnHtml = HtmCache.getInstance().getHtm(player, "data/html/CommunityBoard/Custom/" + page + ".html");
|
||||
player.sendPacket(new BuyList(BuyListData.getInstance().getBuyList(423), player, 0));
|
||||
player.sendPacket(new ExBuySellList(BuyListData.getInstance().getBuyList(423), player, 0));
|
||||
player.sendPacket(new ExBuySellList(player, false));
|
||||
}
|
||||
else if (command.startsWith("_bbsteleport"))
|
||||
|
@ -24,7 +24,6 @@ import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.actor.templates.NpcTemplate;
|
||||
import org.l2jmobius.gameserver.model.buylist.ProductList;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.BuyList;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExBuySellList;
|
||||
|
||||
/**
|
||||
@ -87,7 +86,8 @@ public class Merchant extends Folk
|
||||
|
||||
player.setInventoryBlockingStatus(true);
|
||||
|
||||
player.sendPacket(new BuyList(buyList, player, (applyCastleTax) ? getCastleTaxRate(TaxType.BUY) : 0));
|
||||
player.sendPacket(new ExBuySellList(buyList, player, (applyCastleTax) ? getCastleTaxRate(TaxType.BUY) : 0));
|
||||
player.sendPacket(new ExBuySellList(player, false));
|
||||
player.sendPacket(new ExBuySellList(applyCastleTax));
|
||||
}
|
||||
}
|
||||
|
@ -22,23 +22,71 @@ import java.util.List;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.commons.network.PacketWriter;
|
||||
import org.l2jmobius.gameserver.enums.TaxType;
|
||||
import org.l2jmobius.gameserver.instancemanager.CastleManager;
|
||||
import org.l2jmobius.gameserver.model.actor.Player;
|
||||
import org.l2jmobius.gameserver.model.actor.Summon;
|
||||
import org.l2jmobius.gameserver.model.buylist.Product;
|
||||
import org.l2jmobius.gameserver.model.buylist.ProductList;
|
||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||
import org.l2jmobius.gameserver.network.OutgoingPackets;
|
||||
import org.l2jmobius.gameserver.network.PacketLogger;
|
||||
|
||||
/**
|
||||
* @author ShanSoft
|
||||
* @author ShanSoft, Index
|
||||
*/
|
||||
public class ExBuySellList extends AbstractItemPacket
|
||||
{
|
||||
private final List<Item> _sellList = new ArrayList<>();
|
||||
private Collection<Item> _refundList = null;
|
||||
private final boolean _done;
|
||||
public static final int BUY_SELL_LIST_BUY = 0;
|
||||
public static final int BUY_SELL_LIST_SELL = 1;
|
||||
public static final int BUY_SELL_LIST_UNK = 2;
|
||||
public static final int BUY_SELL_LIST_TAX = 3;
|
||||
|
||||
public static final int UNK_SELECT_FIRST_TAB = 0;
|
||||
public static final int UNK_SHOW_PURCHASE_LIST = 1;
|
||||
public static final int UNK_SEND_NOT_ENOUGH_ADENA_MESSAGE = 2;
|
||||
public static final int UNK_SEND_INCORRECT_ITEM_MESSAGE = 3;
|
||||
|
||||
private static final int[] CASTLES =
|
||||
{
|
||||
3, // Giran
|
||||
7, // Goddart
|
||||
5, // Aden
|
||||
};
|
||||
|
||||
private final int _inventorySlots;
|
||||
private final int _type;
|
||||
|
||||
// buy type - BUY
|
||||
private long _money;
|
||||
private double _castleTaxRate;
|
||||
private Collection<Product> _list;
|
||||
private int _listId;
|
||||
|
||||
// buy type - SELL
|
||||
private final List<Item> _sellList = new ArrayList<>();
|
||||
private final Collection<Item> _refundList = new ArrayList<>();
|
||||
private boolean _done;
|
||||
|
||||
// buy type = unk
|
||||
private int _unkType;
|
||||
|
||||
// buy type - send tax
|
||||
private boolean _applyTax;
|
||||
|
||||
public ExBuySellList(ProductList list, Player player, double castleTaxRate)
|
||||
{
|
||||
_type = BUY_SELL_LIST_BUY;
|
||||
_listId = list.getListId();
|
||||
_list = list.getProducts();
|
||||
_money = player.getAdena();
|
||||
_inventorySlots = player.getInventory().getNonQuestSize();
|
||||
_castleTaxRate = castleTaxRate;
|
||||
}
|
||||
|
||||
public ExBuySellList(Player player, boolean done)
|
||||
{
|
||||
_type = BUY_SELL_LIST_SELL;
|
||||
final Summon pet = player.getPet();
|
||||
for (Item item : player.getInventory().getItems())
|
||||
{
|
||||
@ -50,18 +98,76 @@ public class ExBuySellList extends AbstractItemPacket
|
||||
_inventorySlots = player.getInventory().getNonQuestSize();
|
||||
if (player.hasRefund())
|
||||
{
|
||||
_refundList = player.getRefund().getItems();
|
||||
_refundList.addAll(player.getRefund().getItems());
|
||||
}
|
||||
_done = done;
|
||||
}
|
||||
|
||||
public ExBuySellList(int type)
|
||||
{
|
||||
_type = BUY_SELL_LIST_UNK;
|
||||
_unkType = type;
|
||||
_inventorySlots = 0;
|
||||
}
|
||||
|
||||
public ExBuySellList(boolean applyTax)
|
||||
{
|
||||
_type = BUY_SELL_LIST_TAX;
|
||||
_inventorySlots = 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean write(PacketWriter packet)
|
||||
{
|
||||
OutgoingPackets.EX_BUY_SELL_LIST.writeId(packet);
|
||||
packet.writeD(1); // Type SELL
|
||||
packet.writeD(_type);
|
||||
switch (_type)
|
||||
{
|
||||
case BUY_SELL_LIST_BUY:
|
||||
{
|
||||
return sendBuyList(packet);
|
||||
}
|
||||
case BUY_SELL_LIST_SELL:
|
||||
{
|
||||
return sendSellList(packet);
|
||||
}
|
||||
case BUY_SELL_LIST_UNK:
|
||||
{
|
||||
return sendUnk(packet);
|
||||
}
|
||||
case BUY_SELL_LIST_TAX:
|
||||
{
|
||||
return sendCurrentTax(packet);
|
||||
}
|
||||
default:
|
||||
{
|
||||
PacketLogger.warning(getClass().getSimpleName() + ": unknown type " + _type);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean sendBuyList(PacketWriter packet)
|
||||
{
|
||||
packet.writeQ(_money); // current money
|
||||
packet.writeD(_listId);
|
||||
packet.writeD(_inventorySlots);
|
||||
if ((_sellList != null))
|
||||
packet.writeH(_list.size());
|
||||
for (Product product : _list)
|
||||
{
|
||||
if ((product.getCount() > 0) || !product.hasLimitedStock())
|
||||
{
|
||||
writeItem(packet, product);
|
||||
packet.writeQ((long) (product.getPrice() * (1.0 + _castleTaxRate + product.getBaseTaxRate())));
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean sendSellList(PacketWriter packet)
|
||||
{
|
||||
packet.writeD(_inventorySlots);
|
||||
if (!_sellList.isEmpty())
|
||||
{
|
||||
packet.writeH(_sellList.size());
|
||||
for (Item item : _sellList)
|
||||
@ -74,7 +180,7 @@ public class ExBuySellList extends AbstractItemPacket
|
||||
{
|
||||
packet.writeH(0);
|
||||
}
|
||||
if ((_refundList != null) && !_refundList.isEmpty())
|
||||
if (!_refundList.isEmpty())
|
||||
{
|
||||
packet.writeH(_refundList.size());
|
||||
int i = 0;
|
||||
@ -92,4 +198,28 @@ public class ExBuySellList extends AbstractItemPacket
|
||||
packet.writeC(_done ? 1 : 0);
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean sendUnk(PacketWriter packet)
|
||||
{
|
||||
packet.writeC(_unkType);
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean sendCurrentTax(PacketWriter packet)
|
||||
{
|
||||
packet.writeD(CASTLES.length);
|
||||
for (int id : CASTLES)
|
||||
{
|
||||
packet.writeD(id); // residence id
|
||||
try
|
||||
{
|
||||
packet.writeD(_applyTax ? CastleManager.getInstance().getCastleById(id).getTaxPercent(TaxType.BUY) : 0); // residence tax
|
||||
}
|
||||
catch (NullPointerException ignored)
|
||||
{
|
||||
packet.writeD(0);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user