root/trunk/AE-go_GameServer/src/com/aionemu/gameserver/services/TradeService.java
| 845 | 993 | ||
|---|---|---|---|
27 | import com.aionemu.gameserver.dataholders.TradeListData; | 27 | import com.aionemu.gameserver.dataholders.TradeListData; |
28 | import com.aionemu.gameserver.model.gameobjects.Item; | 28 | import com.aionemu.gameserver.model.gameobjects.Item; |
29 | import com.aionemu.gameserver.model.gameobjects.Npc; | 29 | import com.aionemu.gameserver.model.gameobjects.Npc; |
30 | import com.aionemu.gameserver.model.gameobjects.player.Inventory; | 30 | import com.aionemu.gameserver.model.gameobjects.player.Storage; |
31 | import com.aionemu.gameserver.model.gameobjects.player.Player; | 31 | import com.aionemu.gameserver.model.gameobjects.player.Player; |
32 | import com.aionemu.gameserver.model.templates.TradeListTemplate; | 32 | import com.aionemu.gameserver.model.templates.TradeListTemplate; |
33 | import com.aionemu.gameserver.model.templates.TradeListTemplate.TradeTab; | 33 | import com.aionemu.gameserver.model.templates.TradeListTemplate.TradeTab; |
... | ... | ||
48 | public class TradeService | 48 | public class TradeService |
49 | { | 49 | { |
50 | private static final Logger log = Logger.getLogger(TradeService.class); | 50 | private static final Logger log = Logger.getLogger(TradeService.class); |
51 | | 51 | |
52 | @Inject | 52 | @Inject |
53 | private ItemService itemService; | 53 | private ItemService itemService; |
54 | @Inject | 54 | @Inject |
... | ... | ||
66 | */ | 66 | */ |
67 | public boolean performBuyFromShop(Player player, TradeList tradeList) | 67 | public boolean performBuyFromShop(Player player, TradeList tradeList) |
68 | { | 68 | { |
69 | | 69 | |
70 | if(!validateBuyItems(tradeList)) | 70 | if(!validateBuyItems(tradeList)) |
71 | { | 71 | { |
72 | PacketSendUtility.sendMessage(player, "Some items are not allowed to be selled from this npc"); | 72 | PacketSendUtility.sendMessage(player, "Some items are not allowed to be selled from this npc"); |
73 | return false; | 73 | return false; |
74 | } | 74 | } |
75 | | 75 | |
76 | Inventory inventory = player.getInventory(); | 76 | Storage inventory = player.getInventory(); |
77 | Item kinahItem = inventory.getKinahItem(); | 77 | Item kinahItem = inventory.getKinahItem(); |
78 | 78 | ||
79 | int freeSlots = inventory.getLimit() - inventory.getUnquippedItems().size() + 1; | 79 | int freeSlots = inventory.getLimit() - inventory.getUnquippedItems().size() + 1; |
... | ... | ||
123 | allowedItems.addAll(goodsList.getItemIdList()); | 123 | allowedItems.addAll(goodsList.getItemIdList()); |
124 | } | 124 | } |
125 | } | 125 | } |
126 | | 126 | |
127 | for(TradeItem tradeItem : tradeList.getTradeItems()) | 127 | for(TradeItem tradeItem : tradeList.getTradeItems()) |
128 | { | 128 | { |
129 | if(!allowedItems.contains(tradeItem.getItemId())) | 129 | if(!allowedItems.contains(tradeItem.getItemId())) |
... | ... | ||
140 | */ | 140 | */ |
141 | public boolean performSellToShop(Player player, TradeList tradeList) | 141 | public boolean performSellToShop(Player player, TradeList tradeList) |
142 | { | 142 | { |
143 | Inventory inventory = player.getInventory(); | 143 | Storage inventory = player.getInventory(); |
144 | 144 | ||
145 | int kinahReward = 0; | 145 | int kinahReward = 0; |
146 | for(TradeItem tradeItem : tradeList.getTradeItems()) | 146 | for(TradeItem tradeItem : tradeList.getTradeItems()) |
... | ... | ||
152 | 152 | ||
153 | if(item.getItemCount() - tradeItem.getCount() == 0) | 153 | if(item.getItemCount() - tradeItem.getCount() == 0) |
154 | { | 154 | { |
155 | inventory.removeFromBag(item); // need to be here to avoid exploit by sending packet with many items with same unique ids | 155 | inventory.removeFromBag(item, true); // need to be here to avoid exploit by sending packet with many items with same unique ids |
156 | kinahReward += item.getItemTemplate().getPrice() * item.getItemCount(); | 156 | kinahReward += item.getItemTemplate().getPrice() * item.getItemCount(); |
157 | //TODO check retail packet here | 157 | //TODO check retail packet here |
158 | PacketSendUtility.sendPacket(player, new SM_DELETE_ITEM(item.getObjectId())); | 158 | PacketSendUtility.sendPacket(player, new SM_DELETE_ITEM(item.getObjectId())); |
Download diff