public void Buy(MapleClient c, int itemId, short quantity) { if (quantity <= 0) { Console.WriteLine($"{c.Player.Name} is buying an invalid amount: { quantity } of itemid: { itemId}"); c.Close(); return; } MapleShopItem item = FindByItemId(itemId); MapleItemInformationProvider ii = MapleItemInformationProvider.Instance; if (item != null && item.Price > 0 && c.Player.Meso.Value >= item.Price * quantity) { if (MapleInventoryManipulator.CheckSpace(c, itemId, quantity, "")) { if (itemId >= 5000000 && itemId <= 5000100) { if (quantity > 1) { quantity = 1; } int petId = MaplePet.Create(itemId); MapleInventoryManipulator.AddById(c, itemId, quantity, "Pet was purchased.", null, petId); } else if (ii.IsRechargable(itemId)) { short rechquantity = ii.GetSlotMax(c, item.ItemId); MapleInventoryManipulator.AddById(c, itemId, rechquantity, "Rechargable item purchased.", null, -1); } else { MapleInventoryManipulator.AddById(c, itemId, quantity, c.Player.Name + " bought " + quantity + " for " + item.Price * quantity + " from shop " + ShopId); } c.Player.GainMeso(-(item.Price * quantity), false); c.Send(PacketCreator.ConfirmShopTransaction(0)); } else { c.Send(PacketCreator.ConfirmShopTransaction(3)); } } }
public void Load(int id) { try { using (var db = new NeoMapleStoryDatabase()) { var cashItemQuery = db.CashShopInventories.Where(x => x.AId == m_accountId).Select(x => x); foreach (var item in cashItemQuery) { var citem = new MapleCashShopInventoryItem(item.UniqueId, item.ItemId, item.Sn, item.Quantity, item.IsGift) { Expire = item.ExpireDate, Sender = item.Sender }; if (CashShopItems.ContainsKey(citem.UniqueId)) { CashShopItems[citem.UniqueId] = citem; } else { CashShopItems.Add(citem.UniqueId, citem); } } var cashGiftQuery = db.CashShopGifts.Where(x => x.AId == m_accountId).Select(x => x); foreach (var giftinfo in cashGiftQuery) { MapleCashShopInventoryItem gift; if (giftinfo.ItemId >= 5000000 && giftinfo.ItemId <= 5000100) { int petId = MaplePet.Create(giftinfo.ItemId, m_player); gift = new MapleCashShopInventoryItem(petId, giftinfo.ItemId, giftinfo.Sn, 1, true); } else { gift = new MapleCashShopInventoryItem(giftinfo.RingUniqueId, giftinfo.ItemId, giftinfo.Sn, giftinfo.Quantity, true) { IsRing = giftinfo.RingUniqueId > 0 }; } gift.Expire = giftinfo.ExpireDate; gift.Sender = giftinfo.Sender; gift.Message = giftinfo.Message; if (CashShopGifts.ContainsKey(gift.UniqueId)) { CashShopGifts[gift.UniqueId] = gift; } else { CashShopGifts.Add(gift.UniqueId, gift); } if (CashShopItems.ContainsKey(gift.UniqueId)) { CashShopItems[gift.UniqueId] = gift; } else { CashShopItems.Add(gift.UniqueId, gift); } Save(); } var deleteGiftQuery = db.CashShopGifts.Where(x => x.AId == m_accountId).Select(x => x); db.CashShopGifts.RemoveRange(deleteGiftQuery); db.SaveChanges(); } } catch (Exception e) { Console.WriteLine(e.Message); } }