public void PutItem(PutPacket putPacket) { lock (Session.Character.Inventory) { var invitem = Session.Character.Inventory.LoadBySlotAndType <IItemInstance>(putPacket.Slot, putPacket.PocketType); if ((invitem?.Item.IsDroppable ?? false) && !Session.Character.InExchangeOrShop) { if (putPacket.Amount > 0 && putPacket.Amount <= _worldConfiguration.MaxItemAmount) { if (Session.Character.MapInstance.MapItems.Count < 200) { var droppedItem = Session.Character.MapInstance.PutItem(putPacket.Amount, invitem, Session); if (droppedItem == null) { Session.SendPacket(new MsgPacket { Message = Language.Instance.GetMessageFromKey(LanguageKey.ITEM_NOT_DROPPABLE_HERE, Session.Account.Language), Type = 0 }); return; } invitem = Session.Character.Inventory.LoadBySlotAndType <IItemInstance>(putPacket.Slot, putPacket.PocketType); Session.SendPacket(invitem.GeneratePocketChange(putPacket.PocketType, putPacket.Slot)); Session.Character.MapInstance.Sessions.SendPacket(droppedItem.GenerateDrop()); } else { Session.SendPacket(new MsgPacket { Message = Language.Instance.GetMessageFromKey(LanguageKey.DROP_MAP_FULL, Session.Account.Language), Type = 0 }); } } else { Session.SendPacket(new MsgPacket { Message = Language.Instance.GetMessageFromKey(LanguageKey.BAD_DROP_AMOUNT, Session.Account.Language), Type = 0 }); } } else { Session.SendPacket(new MsgPacket { Message = Language.Instance.GetMessageFromKey(LanguageKey.ITEM_NOT_DROPPABLE, Session.Account.Language), Type = 0 }); } } }
public void PutItem(PutPacket putPacket) { lock (Session.Character.Inventory) { var invitem = Session.Character.Inventory.LoadBySlotAndType <ItemInstance>(putPacket.Slot, putPacket.PocketType); if (invitem != null && invitem.Item.IsDroppable && invitem.Item.IsTradable && !Session.Character.InExchangeOrTrade) { if (putPacket.Amount > 0 && putPacket.Amount <= _worldConfiguration.MaxItemAmount) { if (Session.Character.MapInstance.DroppedList.Count < 200) { var droppedItem = Session.Character.MapInstance.PutItem(putPacket.PocketType, putPacket.Slot, putPacket.Amount, ref invitem, Session); if (droppedItem == null) { Session.SendPacket(new MsgPacket() { Message = Language.Instance.GetMessageFromKey(LanguageKey.ITEM_NOT_DROPPABLE_HERE, Session.Account.Language), Type = 0 }); return; } if (droppedItem.Amount == 0) { Session.Character.Inventory.DeleteFromTypeAndSlot(invitem.Type, invitem.Slot); } Session.SendPacket(invitem.GeneratePocketChange(invitem.Type, invitem.Slot)); Session.Character.MapInstance.Broadcast(droppedItem.GenerateDrop()); } else { Session.SendPacket(new MsgPacket() { Message = Language.Instance.GetMessageFromKey(LanguageKey.DROP_MAP_FULL, Session.Account.Language), Type = 0 }); } } else { Session.SendPacket(new MsgPacket() { Message = Language.Instance.GetMessageFromKey(LanguageKey.BAD_DROP_AMOUNT, Session.Account.Language), Type = 0 }); } } else { Session.SendPacket(new MsgPacket() { Message = Language.Instance.GetMessageFromKey(LanguageKey.ITEM_NOT_DROPPABLE, Session.Account.Language), Type = 0 }); } } }