public override int HandlePacket(GamePlayer player, GSPacketIn packet) { int bagType = (int)packet.ReadByte(); int place = packet.ReadInt(); PlayerInventory arkBag = player.GetInventory((eBageType)bagType); ItemInfo goods = arkBag.GetItemAt(place); string full = ""; List <ItemInfo> infos = new List <ItemInfo>(); int result; if (goods != null && goods.IsValidItem() && goods.Template.CategoryID == 11 && goods.Template.Property1 == 6 && player.PlayerCharacter.Grade >= goods.Template.NeedLevel) { int money = 0; int gold = 0; int giftToken = 0; int[] bags = new int[3]; int gp = 0; this.OpenUpItem(goods.Template.Data, bags, infos, ref gold, ref money, ref giftToken, ref gp); if (infos.Count == 0 && gold == 0 && money == 0 && giftToken == 0 && gp == 0) { result = 0; return(result); } bags[goods.GetBagType()]--; if (player.RemoveItem(goods, eItemRemoveType.Use)) { player.OnUsingItem(goods.Template.TemplateID); StringBuilder notice = new StringBuilder(); StringBuilder msg = new StringBuilder(); msg.Append(LanguageMgr.GetTranslation("OpenUpArkHandler.Start", new object[0])); if (money != 0) { msg.Append(money + LanguageMgr.GetTranslation("OpenUpArkHandler.Money", new object[0])); player.AddMoney(money, LogMoneyType.Box, LogMoneyType.Box_Open); } if (gold != 0) { msg.Append(gold + LanguageMgr.GetTranslation("OpenUpArkHandler.Gold", new object[0])); player.AddGold(gold); } if (giftToken != 0) { msg.Append(giftToken + LanguageMgr.GetTranslation("OpenUpArkHandler.GiftToken", new object[0])); player.AddGiftToken(giftToken); } if (gp != 0) { msg.Append(gp + LanguageMgr.GetTranslation("OpenUpArkHandler.Gp", new object[0])); player.AddGpDirect(gp); } StringBuilder msga = new StringBuilder(); foreach (ItemInfo info in infos) { msg.Append(info.Template.Name + "x" + info.Count.ToString() + ","); List <ItemInfo> list = ItemMgr.SpiltGoodsMaxCount(info); List <ItemInfo> last = new List <ItemInfo>(); foreach (ItemInfo it in list) { if (!player.AddItem(it)) { last.Add(it); } } if (last.Count > 0) { player.SendItemsToMail(last, LanguageMgr.GetTranslation("OpenUpArkHandler.Content1", new object[0]) + info.Template.Name + LanguageMgr.GetTranslation("OpenUpArkHandler.Content2", new object[0]), LanguageMgr.GetTranslation("OpenUpArkHandler.Title", new object[0]) + info.Template.Name + "]", eMailType.Common); full = LanguageMgr.GetTranslation("OpenUpArkHandler.Mail", new object[0]); } } foreach (ItemInfo info in infos) { player.SendItemNotice(info, goods.Template.Name, 3); } msg.Remove(msg.Length - 1, 1); msg.Append("."); player.Out.SendMessage(eMessageType.Normal, full + msg.ToString()); if (!string.IsNullOrEmpty(full)) { player.Out.SendMailResponse(player.PlayerCharacter.ID, eMailRespose.Receiver); } } } result = 1; return(result); }
public override int HandlePacket(GamePlayer player, GSPacketIn packet) { int bagType = packet.ReadInt(); int place = packet.ReadInt(); int goodsID = packet.ReadInt(); int type = packet.ReadInt(); bool ignoreBagLock = packet.ReadBoolean(); int result; if (player.PlayerCharacter.HasBagPassword && player.PlayerCharacter.IsLocked && !ignoreBagLock) { player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked", new object[0])); result = 0; } else { ItemInfo item; string msg; if (place == -1) { int gold = 0; int money = 0; int offer = 0; int gifttoken = 0; ShopItemInfo info = ShopMgr.GetShopItemInfoById(goodsID); if (null == info) { result = 1; return(result); } List <int> payGoods = ShopMgr.GetShopItemBuyConditions(info, type, ref gold, ref money, ref offer, ref gifttoken); if (offer > 0 || payGoods.Count > 0) { result = 1; return(result); } item = ShopMgr.CreateItem(info, 102, type, "", "", true); if (item == null) { result = 1; return(result); } player.RemoveMoney(money, LogMoneyType.Shop, LogMoneyType.Shop_Card); player.RemoveGold(gold); player.RemoveOffer(offer); player.RemoveGiftToken(gifttoken); //LogMgr.LogMoneyAdd(LogMoneyType.Shop, LogMoneyType.Shop_Card, player.PlayerCharacter.ID, money, gold, 0, 0, "", item.TemplateID, 1, item.Count); msg = "CardUseHandler.Success"; } else { item = player.PropBag.GetItemAt(place); msg = "CardUseHandler.Success"; } if (item != null) { string msg2 = string.Empty; if (item.Template.Property1 != 21) { AbstractBuffer buffer = BufferList.CreateBuffer(item.Template, item.ValidDate); if (buffer != null) { buffer.Start(player); if (place != -1) { player.OnUsingItem(item.TemplateID); player.PropBag.RemoveItem(item, eItemRemoveType.Use); } } player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation(msg, new object[0])); } else { if (item.IsValidItem()) { player.AddGpDirect(item.Template.Property2); player.OnUsingItem(item.TemplateID); player.RemoveItem(item, eItemRemoveType.Use); msg2 = "GPDanUser.Success"; } player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation(msg2, new object[] { item.Template.Property2 })); } } result = 0; } return(result); }