|
@@ -32,16 +32,16 @@ import net.sf.l2j.gameserver.network.serverpackets.TradeOwnAdd;
|
|
|
public final class AddTradeItem extends L2GameClientPacket
|
|
|
{
|
|
|
private static final String _C__16_ADDTRADEITEM = "[C] 16 AddTradeItem";
|
|
|
- private static Logger _log = Logger.getLogger(AddTradeItem.class.getName());
|
|
|
-
|
|
|
+ private static final Logger _log = Logger.getLogger(AddTradeItem.class.getName());
|
|
|
+
|
|
|
private int _tradeId;
|
|
|
private int _objectId;
|
|
|
private long _count;
|
|
|
-
|
|
|
+
|
|
|
public AddTradeItem()
|
|
|
{
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
@Override
|
|
|
protected void readImpl()
|
|
|
{
|
|
@@ -49,53 +49,65 @@ public final class AddTradeItem extends L2GameClientPacket
|
|
|
_objectId = readD();
|
|
|
_count = readQ();
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
@Override
|
|
|
protected void runImpl()
|
|
|
{
|
|
|
- L2PcInstance player = getClient().getActiveChar();
|
|
|
+ final L2PcInstance player = getClient().getActiveChar();
|
|
|
if (player == null)
|
|
|
return;
|
|
|
-
|
|
|
- TradeList trade = player.getActiveTradeList();
|
|
|
+
|
|
|
+ final TradeList trade = player.getActiveTradeList();
|
|
|
if (trade == null)
|
|
|
{
|
|
|
- _log.warning("Character: " + player.getName() + " requested item:" + _objectId + " add without active tradelist:" + _tradeId);
|
|
|
+ _log.warning("Character: " + player.getName()
|
|
|
+ + " requested item:" + _objectId
|
|
|
+ + " add without active tradelist:" + _tradeId);
|
|
|
return;
|
|
|
}
|
|
|
-
|
|
|
- if (trade.getPartner() == null || L2World.getInstance().findObject(trade.getPartner().getObjectId()) == null)
|
|
|
+
|
|
|
+ final L2PcInstance partner = trade.getPartner();
|
|
|
+ if (partner == null
|
|
|
+ || L2World.getInstance().findObject(partner.getObjectId()) == null
|
|
|
+ || partner.getActiveTradeList() == null)
|
|
|
{
|
|
|
// Trade partner not found, cancel trade
|
|
|
- if (trade.getPartner() != null)
|
|
|
- _log.warning("Character:" + player.getName() + " requested invalid trade object: " + _objectId);
|
|
|
+ if (partner != null)
|
|
|
+ _log.warning("Character:" + player.getName()
|
|
|
+ + " requested invalid trade object: " + _objectId);
|
|
|
SystemMessage msg = new SystemMessage(SystemMessageId.TARGET_IS_NOT_FOUND_IN_THE_GAME);
|
|
|
player.sendPacket(msg);
|
|
|
player.cancelActiveTrade();
|
|
|
return;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+ if (trade.isConfirmed() || partner.getActiveTradeList().isConfirmed())
|
|
|
+ {
|
|
|
+ player.sendPacket(new SystemMessage(SystemMessageId.CANNOT_ADJUST_ITEMS_AFTER_TRADE_CONFIRMED));
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
if (!player.getAccessLevel().allowTransaction())
|
|
|
{
|
|
|
player.sendMessage("Transactions are disable for your Access Level");
|
|
|
player.cancelActiveTrade();
|
|
|
return;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if (!player.validateItemManipulation(_objectId, "trade"))
|
|
|
{
|
|
|
player.sendPacket(new SystemMessage(SystemMessageId.NOTHING_HAPPENED));
|
|
|
return;
|
|
|
}
|
|
|
-
|
|
|
- TradeList.TradeItem item = trade.addItem(_objectId, _count);
|
|
|
+
|
|
|
+ final TradeList.TradeItem item = trade.addItem(_objectId, _count);
|
|
|
if (item != null)
|
|
|
{
|
|
|
player.sendPacket(new TradeOwnAdd(item));
|
|
|
trade.getPartner().sendPacket(new TradeOtherAdd(item));
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/* (non-Javadoc)
|
|
|
* @see net.sf.l2j.gameserver.clientpackets.ClientBasePacket#getType()
|
|
|
*/
|