public int HandlePacket(GameClient client, GSPacketIn packet) { int num = 0; int num2 = 0; int num3 = 0; int num4 = 0; int num5 = 0; StringBuilder stringBuilder = new StringBuilder(); eMessageType eMessageType = eMessageType.Normal; string translateId = "UserBuyItemHandler.Success"; GSPacketIn gSPacketIn = new GSPacketIn(44); List <ItemInfo> list = new List <ItemInfo>(); List <bool> list2 = new List <bool>(); List <int> list3 = new List <int>(); StringBuilder stringBuilder2 = new StringBuilder(); bool flag = false; ConsortiaInfo consortiaInfo = ConsortiaMgr.FindConsortiaInfo(client.Player.PlayerCharacter.ConsortiaID); int num6 = packet.ReadInt(); for (int i = 0; i < num6; i++) { packet.ReadInt(); int iD = packet.ReadInt(); int num7 = packet.ReadInt(); string text = packet.ReadString(); bool item = packet.ReadBoolean(); string text2 = packet.ReadString(); int item2 = packet.ReadInt(); packet.ReadBoolean(); ShopItemInfo shopItemInfoById = ShopMgr.GetShopItemInfoById(iD); if (shopItemInfoById == null) { client.Out.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation("UserBuyItemHandler.FailByPermission", new object[0])); return(1); } if (!ShopMgr.CanBuy(shopItemInfoById.ShopID, (consortiaInfo == null) ? 1 : consortiaInfo.ShopLevel, ref flag, client.Player.PlayerCharacter.ConsortiaID, client.Player.PlayerCharacter.Riches)) { client.Out.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation("UserBuyItemHandler.FailByPermission", new object[0])); return(1); } ItemTemplateInfo goods = ItemMgr.FindItemTemplate(shopItemInfoById.TemplateID); ItemInfo itemInfo = ItemInfo.CreateFromTemplate(goods, 1, 102); if (shopItemInfoById.BuyType == 0) { if (1 == num7) { itemInfo.ValidDate = shopItemInfoById.AUnit; } if (2 == num7) { itemInfo.ValidDate = shopItemInfoById.BUnit; } if (3 == num7) { itemInfo.ValidDate = shopItemInfoById.CUnit; } } else { if (1 == num7) { itemInfo.Count = shopItemInfoById.AUnit; } if (2 == num7) { itemInfo.Count = shopItemInfoById.BUnit; } if (3 == num7) { itemInfo.Count = shopItemInfoById.CUnit; } } if (itemInfo != null || shopItemInfoById != null) { itemInfo.Color = ((text == null) ? "" : text); itemInfo.Skin = ((text2 == null) ? "" : text2); if (flag) { itemInfo.IsBinds = true; } else { itemInfo.IsBinds = Convert.ToBoolean(shopItemInfoById.IsBind); } stringBuilder2.Append(num7); stringBuilder2.Append(","); list.Add(itemInfo); list2.Add(item); list3.Add(item2); ItemInfo.SetItemType(shopItemInfoById, num7, ref num, ref num2, ref num3, ref num4, ref num5); } } int val = packet.ReadInt(); if (list.Count == 0) { return(1); } if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked", new object[0])); return(1); } bool flag2 = false; int num8 = 0; if (num <= client.Player.PlayerCharacter.Gold && num2 <= client.Player.PlayerCharacter.Money && num3 <= client.Player.PlayerCharacter.Offer && num4 <= client.Player.PlayerCharacter.GiftToken) { num8++; client.Player.AddExpVip(num2); client.Player.RemoveMoney(num2); client.Player.RemoveGold(num); client.Player.RemoveOffer(num3); client.Player.RemoveGiftToken(num4); string text3 = ""; int num9 = 0; MailInfo mailInfo = new MailInfo(); StringBuilder stringBuilder3 = new StringBuilder(); stringBuilder3.Append(LanguageMgr.GetTranslation("GoodsPresentHandler.AnnexRemark", new object[0])); for (int j = 0; j < list.Count; j++) { text3 += ((text3 == "") ? list[j].TemplateID.ToString() : ("," + list[j].TemplateID.ToString())); if (!client.Player.AddTemplate(list[j], list[j].Template.BagType, list[j].Count)) { flag2 = true; using (PlayerBussiness playerBussiness = new PlayerBussiness()) { list[j].UserID = 0; playerBussiness.AddGoods(list[j]); num9++; stringBuilder3.Append(num9); stringBuilder3.Append("、"); stringBuilder3.Append(list[j].Template.Name); stringBuilder3.Append("x"); stringBuilder3.Append(list[j].Count); stringBuilder3.Append(";"); switch (num9) { case 1: mailInfo.Annex1 = list[j].ItemID.ToString(); mailInfo.Annex1Name = list[j].Template.Name; break; case 2: mailInfo.Annex2 = list[j].ItemID.ToString(); mailInfo.Annex2Name = list[j].Template.Name; break; case 3: mailInfo.Annex3 = list[j].ItemID.ToString(); mailInfo.Annex3Name = list[j].Template.Name; break; case 4: mailInfo.Annex4 = list[j].ItemID.ToString(); mailInfo.Annex4Name = list[j].Template.Name; break; case 5: mailInfo.Annex5 = list[j].ItemID.ToString(); mailInfo.Annex5Name = list[j].Template.Name; break; } if (num9 == 5) { num9 = 0; mailInfo.AnnexRemark = stringBuilder3.ToString(); stringBuilder3.Remove(0, stringBuilder3.Length); stringBuilder3.Append(LanguageMgr.GetTranslation("GoodsPresentHandler.AnnexRemark", new object[0])); mailInfo.Content = LanguageMgr.GetTranslation("UserBuyItemHandler.Title", new object[0]) + mailInfo.Annex1Name + "]"; mailInfo.Gold = 0; mailInfo.Money = 0; mailInfo.Receiver = client.Player.PlayerCharacter.NickName; mailInfo.ReceiverID = client.Player.PlayerCharacter.ID; mailInfo.Sender = mailInfo.Receiver; mailInfo.SenderID = mailInfo.ReceiverID; mailInfo.Title = mailInfo.Content; mailInfo.Type = 8; playerBussiness.SendMail(mailInfo); eMessageType = eMessageType.ERROR; translateId = "UserBuyItemHandler.Mail"; mailInfo.Revert(); } } } } if (num9 > 0) { using (PlayerBussiness playerBussiness2 = new PlayerBussiness()) { mailInfo.AnnexRemark = stringBuilder3.ToString(); mailInfo.Content = LanguageMgr.GetTranslation("UserBuyItemHandler.Title", new object[0]) + mailInfo.Annex1Name + "]"; mailInfo.Gold = 0; mailInfo.Money = 0; mailInfo.Receiver = client.Player.PlayerCharacter.NickName; mailInfo.ReceiverID = client.Player.PlayerCharacter.ID; mailInfo.Sender = mailInfo.Receiver; mailInfo.SenderID = mailInfo.ReceiverID; mailInfo.Title = mailInfo.Content; mailInfo.Type = 8; playerBussiness2.SendMail(mailInfo); eMessageType = eMessageType.ERROR; translateId = "UserBuyItemHandler.Mail"; } } if (eMessageType == eMessageType.ERROR) { client.Out.SendMailResponse(client.Player.PlayerCharacter.ID, eMailRespose.Receiver); } client.Player.OnPaid(num2, num, num3, num4, num5, stringBuilder.ToString()); LogMgr.LogMoneyAdd(LogMoneyType.Shop, LogMoneyType.Shop_Buy, client.Player.PlayerCharacter.ID, num2, client.Player.PlayerCharacter.Money, num, num4, num3, num5, "牌子编号", text3, stringBuilder2.ToString()); } else { if (num2 > client.Player.PlayerCharacter.Money) { translateId = "UserBuyItemHandler.NoMoney"; } if (num > client.Player.PlayerCharacter.Gold) { translateId = "UserBuyItemHandler.NoGold"; } if (num3 > client.Player.PlayerCharacter.Offer) { translateId = "UserBuyItemHandler.NoOffer"; } if (num4 > client.Player.PlayerCharacter.GiftToken) { translateId = "UserBuyItemHandler.GiftToken"; } if (num5 > client.Player.PlayerCharacter.medal) { translateId = "UserBuyItemHandler.Medal"; } eMessageType = eMessageType.ERROR; } int val2 = 0; if (num8 == num6) { val2 = (flag2 ? 2 : 1); } client.Player.MainBag.SaveToDatabase(); client.Player.PropBag.SaveToDatabase(); gSPacketIn.WriteInt(val2); gSPacketIn.WriteInt(val); client.Out.SendMessage(eMessageType, LanguageMgr.GetTranslation(translateId, new object[0])); client.Out.SendTCP(gSPacketIn); return(0); }
public int HandlePacket(GameClient client, GSPacketIn packet) { int num = 0; int num2 = 0; int offer = 0; int num3 = 0; int medal = 0; StringBuilder stringBuilder = new StringBuilder(); eMessageType eMessageType = eMessageType.Normal; string translateId = "UserPresentGoodsHandler.Success"; string str = packet.ReadString(); string nickName = packet.ReadString(); int num4 = packet.ReadInt(); List <ItemInfo> list = new List <ItemInfo>(); StringBuilder stringBuilder2 = new StringBuilder(); GamePlayer clientByPlayerNickName = WorldMgr.GetClientByPlayerNickName(nickName); PlayerInfo playerInfo; if (clientByPlayerNickName == null) { using (PlayerBussiness playerBussiness = new PlayerBussiness()) { playerInfo = playerBussiness.GetUserSingleByNickName(nickName); goto IL_78; } } playerInfo = clientByPlayerNickName.PlayerCharacter; IL_78: bool flag = false; for (int i = 0; i < num4; i++) { int iD = packet.ReadInt(); int num5 = packet.ReadInt(); string text = packet.ReadString(); string text2 = packet.ReadString(); packet.ReadInt(); ShopItemInfo shopItemInfoById = ShopMgr.GetShopItemInfoById(iD); ItemTemplateInfo goods = ItemMgr.FindItemTemplate(shopItemInfoById.TemplateID); ItemInfo itemInfo = ItemInfo.CreateFromTemplate(goods, 1, 102); if (shopItemInfoById.BuyType == 0) { if (1 == num5) { itemInfo.ValidDate = shopItemInfoById.AUnit; } if (2 == num5) { itemInfo.ValidDate = shopItemInfoById.BUnit; } if (3 == num5) { itemInfo.ValidDate = shopItemInfoById.CUnit; } } else { if (1 == num5) { itemInfo.Count = shopItemInfoById.AUnit; } if (2 == num5) { itemInfo.Count = shopItemInfoById.BUnit; } if (3 == num5) { itemInfo.Count = shopItemInfoById.CUnit; } } if (itemInfo != null || shopItemInfoById != null) { itemInfo.Color = ((text == null) ? "" : text); itemInfo.Skin = ((text2 == null) ? "" : text2); if (flag) { itemInfo.IsBinds = true; } else { itemInfo.IsBinds = Convert.ToBoolean(shopItemInfoById.IsBind); } stringBuilder2.Append(num5); stringBuilder2.Append(","); list.Add(itemInfo); ItemInfo.SetItemType(shopItemInfoById, num5, ref num, ref num2, ref offer, ref num3, ref medal); } } if (list.Count == 0) { return(1); } if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked", new object[0])); return(1); } if (num <= client.Player.PlayerCharacter.Gold && num2 <= client.Player.PlayerCharacter.Money && num3 <= client.Player.PlayerCharacter.GiftToken) { client.Player.RemoveMoney(num2); client.Player.RemoveGold(num); client.Player.RemoveGiftToken(num3); string text3 = ""; int num6 = 0; MailInfo mailInfo = new MailInfo(); StringBuilder stringBuilder3 = new StringBuilder(); stringBuilder3.Append(LanguageMgr.GetTranslation("GoodsPresentHandler.AnnexRemark", new object[0])); for (int j = 0; j < list.Count; j++) { text3 += ((text3 == "") ? list[j].TemplateID.ToString() : ("," + list[j].TemplateID.ToString())); using (PlayerBussiness playerBussiness2 = new PlayerBussiness()) { list[j].UserID = 0; playerBussiness2.AddGoods(list[j]); num6++; stringBuilder3.Append(num6); stringBuilder3.Append("、"); stringBuilder3.Append(list[j].Template.Name); stringBuilder3.Append("x"); stringBuilder3.Append(list[j].Count); stringBuilder3.Append(";"); switch (num6) { case 1: mailInfo.Annex1 = list[j].ItemID.ToString(); mailInfo.Annex1Name = list[j].Template.Name; break; case 2: mailInfo.Annex2 = list[j].ItemID.ToString(); mailInfo.Annex2Name = list[j].Template.Name; break; case 3: mailInfo.Annex3 = list[j].ItemID.ToString(); mailInfo.Annex3Name = list[j].Template.Name; break; case 4: mailInfo.Annex4 = list[j].ItemID.ToString(); mailInfo.Annex4Name = list[j].Template.Name; break; case 5: mailInfo.Annex5 = list[j].ItemID.ToString(); mailInfo.Annex5Name = list[j].Template.Name; break; } if (num6 == 5) { num6 = 0; mailInfo.AnnexRemark = stringBuilder3.ToString(); stringBuilder3.Remove(0, stringBuilder3.Length); stringBuilder3.Append(LanguageMgr.GetTranslation("GoodsPresentHandler.AnnexRemark", new object[0])); mailInfo.Content = LanguageMgr.GetTranslation("UserBuyItemHandler.Title", new object[0]) + mailInfo.Annex1Name + "] " + str; mailInfo.Gold = 0; mailInfo.Money = 0; mailInfo.Receiver = playerInfo.NickName; mailInfo.ReceiverID = playerInfo.ID; mailInfo.Sender = client.Player.PlayerCharacter.NickName; mailInfo.SenderID = client.Player.PlayerCharacter.ID; mailInfo.Title = mailInfo.Content; mailInfo.Type = 8; playerBussiness2.SendMail(mailInfo); eMessageType = eMessageType.ERROR; mailInfo.Revert(); } } } if (num6 > 0) { using (PlayerBussiness playerBussiness3 = new PlayerBussiness()) { mailInfo.AnnexRemark = stringBuilder3.ToString(); mailInfo.Content = LanguageMgr.GetTranslation("UserBuyItemHandler.Title", new object[0]) + mailInfo.Annex1Name + "] " + str; mailInfo.Gold = 0; mailInfo.Money = 0; mailInfo.Receiver = playerInfo.NickName; mailInfo.ReceiverID = playerInfo.ID; mailInfo.Sender = client.Player.PlayerCharacter.NickName; mailInfo.SenderID = client.Player.PlayerCharacter.ID; mailInfo.Title = mailInfo.Content; mailInfo.Type = 8; playerBussiness3.SendMail(mailInfo); eMessageType = eMessageType.ERROR; } } if (eMessageType == eMessageType.ERROR && clientByPlayerNickName != null) { clientByPlayerNickName.Out.SendMailResponse(client.Player.PlayerCharacter.ID, eMailRespose.Receiver); } client.Player.OnPaid(num2, num, offer, num3, medal, stringBuilder.ToString()); LogMgr.LogMoneyAdd(LogMoneyType.Shop, LogMoneyType.Shop_Buy, client.Player.PlayerCharacter.ID, num2, client.Player.PlayerCharacter.Money, num, num3, offer, medal, "牌子编号", text3, stringBuilder2.ToString()); } else { if (num > client.Player.PlayerCharacter.Gold) { translateId = "UserBuyItemHandler.NoGold"; } if (num2 > client.Player.PlayerCharacter.Money) { translateId = "UserBuyItemHandler.NoMoney"; } if (num3 > client.Player.PlayerCharacter.GiftToken) { translateId = "UserBuyItemHandler.GiftToken"; } eMessageType = eMessageType.ERROR; } client.Out.SendMessage(eMessageType, LanguageMgr.GetTranslation(translateId, new object[0])); return(0); }
public override int HandlePacket(GamePlayer player, GSPacketIn packet) { int totalMoney = 0; eMessageType eMsg = eMessageType.Normal; string msg = "GoodsPresentHandler.Success"; GSPacketIn pkg = new GSPacketIn(57); string content = packet.ReadString(); string nickName = packet.ReadString(); List <ItemInfo> buyItems = new List <ItemInfo>(); List <ItemInfo> canNotBuyItems = new List <ItemInfo>(); Dictionary <int, int> changeLimitShopsID = new Dictionary <int, int>(); StringBuilder allItemsStr = new StringBuilder(); StringBuilder allTypesStr = new StringBuilder(); bool buyResult = false; int result; if (player.PlayerCharacter.HasBagPassword && player.PlayerCharacter.IsLocked) { player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked", new object[0])); result = 0; } else { using (PlayerBussiness db = new PlayerBussiness()) { PlayerInfo receiver = db.GetUserSingleByNickName(nickName); if (receiver != null) { int count = packet.ReadInt(); for (int i = 0; i < count; i++) { int goodsId = packet.ReadInt(); int type = packet.ReadInt(); string color = packet.ReadString(); string skin = packet.ReadString(); int gold = 0; int money = 0; int offer = 0; int gifttoken = 0; ShopItemInfo shopItem = ShopMgr.GetShopItemInfoById(goodsId); if (shopItem != null && shopItem.ShopID != 21 && shopItem.ShopID != 22) { List <int> tempInfo = ShopMgr.GetShopItemBuyConditions(shopItem, type, ref gold, ref money, ref offer, ref gifttoken); if (gold <= 0 && offer <= 0 && gifttoken <= 0 && tempInfo.Count <= 0) { ItemInfo item = ShopMgr.CreateItem(shopItem, 102, type, color, skin, false); int limitCount = ShopMgr.GetLimitCountByID(goodsId); if (limitCount == -1 || limitCount > 0) { if (player.PlayerCharacter.Money >= money + totalMoney) { totalMoney += money; allTypesStr.Append(type).Append(","); allItemsStr.Append(item.TemplateID).Append(","); buyItems.Add(item); if (limitCount != -1) { ShopMgr.SubtractShopLimit(goodsId); this.Notice(player, goodsId, item.Template.Name); if (!changeLimitShopsID.ContainsKey(goodsId)) { changeLimitShopsID.Add(goodsId, ShopMgr.GetLimitCountByID(goodsId)); } else { changeLimitShopsID[goodsId] = ShopMgr.GetLimitCountByID(goodsId); } } //LogMgr.LogMoneyAdd(LogMoneyType.Shop, LogMoneyType.Shop_Present, player.PlayerCharacter.ID, money, gold, gifttoken, offer, "", item.TemplateID, 2, item.Count); } else { canNotBuyItems.Add(item); } } } } } if (buyItems.Count == 0) { player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("UserBuyItemHandler.Failed", new object[0])); result = 1; return(result); } player.RemoveMoney(totalMoney, LogMoneyType.Shop, LogMoneyType.Shop_Present); int annexIndex = 0; MailInfo message = new MailInfo(); StringBuilder annexRemark = new StringBuilder(); annexRemark.Append(LanguageMgr.GetTranslation("GoodsPresentHandler.AnnexRemark", new object[0])); player.StackItem(ref buyItems); player.OnPlayerGoodsPresent(buyItems.Count); foreach (ItemInfo item in buyItems) { // ItemInfo item; db.AddGoods(item); annexIndex++; annexRemark.Append(annexIndex); annexRemark.Append("、"); annexRemark.Append(item.Template.Name); annexRemark.Append("x"); annexRemark.Append(item.Count); annexRemark.Append(";"); switch (annexIndex) { case 1: message.Annex1 = item.ItemID.ToString(); message.Annex1Name = item.Template.Name; break; case 2: message.Annex2 = item.ItemID.ToString(); message.Annex2Name = item.Template.Name; break; case 3: message.Annex3 = item.ItemID.ToString(); message.Annex3Name = item.Template.Name; break; case 4: message.Annex4 = item.ItemID.ToString(); message.Annex4Name = item.Template.Name; break; case 5: message.Annex5 = item.ItemID.ToString(); message.Annex5Name = item.Template.Name; break; } if (annexIndex == 5) { annexIndex = 0; message.AnnexRemark = annexRemark.ToString(); annexRemark.Remove(0, annexRemark.Length); annexRemark.Append(LanguageMgr.GetTranslation("GoodsPresentHandler.AnnexRemark", new object[0])); message.Content = content; message.Gold = 0; message.Money = 0; message.GiftToken = 0; message.Receiver = receiver.NickName; message.ReceiverID = receiver.ID; message.Sender = player.PlayerCharacter.NickName; message.SenderID = player.PlayerCharacter.ID; message.Title = message.Sender + LanguageMgr.GetTranslation("GoodsPresentHandler.Content", new object[0]) + message.Annex1Name + "]"; message.Type = 10; db.SendMail(message); message.Revert(); } } if (annexIndex > 0) { message.AnnexRemark = annexRemark.ToString(); message.Content = content; message.Gold = 0; message.Money = 0; message.GiftToken = 0; message.Receiver = receiver.NickName; message.ReceiverID = receiver.ID; message.Sender = player.PlayerCharacter.NickName; message.SenderID = player.PlayerCharacter.ID; message.Title = message.Sender + LanguageMgr.GetTranslation("GoodsPresentHandler.Content", new object[0]) + message.Annex1Name + "]"; message.Type = 10; db.SendMail(message); message.Revert(); } if (canNotBuyItems.Count > 0) { string title = LanguageMgr.GetTranslation("UserBuyItemHandler.ListTitle", new object[0]); StringBuilder Content = new StringBuilder(); if (buyItems.Count > 0) { Content.Append(LanguageMgr.GetTranslation("UserBuyItemHandler.BuyList", new object[] { buyItems.Count })); for (int i = 0; i < buyItems.Count; i++) { Content.Append(string.Format("{0}{1}", (i == 0) ? "" : ";", buyItems[i].Template.Name)); } } if (canNotBuyItems.Count > 0) { Content.Append(LanguageMgr.GetTranslation("UserBuyItemHandler.NoBuyList", new object[] { "\n" })); for (int j = 0; j < canNotBuyItems.Count; j++) { Content.Append(string.Format("{0}{1}", (j == 0) ? "" : ";", canNotBuyItems[j].Template.Name)); } } if (player.SendMail(Content.ToString(), title, null, eMailType.BuyItem)) { player.Out.SendMailResponse(player.PlayerCharacter.ID, eMailRespose.Receiver); } } player.OnPaid(totalMoney, 0, 0, 0, ""); player.Out.SendMailResponse(receiver.ID, eMailRespose.Receiver); player.Out.SendMailResponse(player.PlayerCharacter.ID, eMailRespose.Send); buyResult = (buyItems.Count == count); } else { buyResult = false; eMsg = eMessageType.ERROR; msg = "GoodsPresentHandler.NoUser"; } } this.UpdateLimitShopCount(player, changeLimitShopsID); pkg.WriteBoolean(buyResult); player.Out.SendMessage(eMsg, LanguageMgr.GetTranslation(msg, new object[0])); player.Out.SendTCP(pkg); result = 0; } return(result); }
public int HandlePacket(GameClient client, GSPacketIn packet) { int gold = 0; //表示金币 int money = 0; //表示点券 int offer = 0; //表示功勋 int gifttoken = 0; //表示礼劵 StringBuilder payGoods = new StringBuilder(); //表示支付物品ID eMessageType eMsg = eMessageType.Normal; string msg = "GoodsPresentHandler.Success"; string content = packet.ReadString(); //赠送人留言 string nickName = packet.ReadString(); //购买人昵称 List <int> needitemsinfo = new List <int>(); //存放兑换物品的templateID,Count if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked")); return(0); } using (PlayerBussiness db = new PlayerBussiness()) { PlayerInfo receiver = db.GetUserSingleByNickName(nickName); if (receiver != null) { List <ItemInfo> items = new List <ItemInfo>(); StringBuilder types = new StringBuilder(); int count = packet.ReadInt(); for (int i = 0; i < count; i++) { int GoodsID = packet.ReadInt(); //序号 int type = packet.ReadInt(); //购买方式 string color = packet.ReadString(); //颜色 string skin = packet.ReadString(); //皮肤 ShopItemInfo shopItem = Bussiness.Managers.ShopMgr.GetShopItemInfoById(GoodsID); //获取商品信息 if (shopItem == null) //商品不存在 { continue; } ItemTemplateInfo goods = Bussiness.Managers.ItemMgr.FindItemTemplate(shopItem.TemplateID); //查找物品属性 ItemInfo item = ItemInfo.CreateFromTemplate(goods, 1, (int)ItemAddType.Gift); //构建物品临时属性 if (item == null) { continue; } //未开始 //if (shopitem.AValue1 <= 0 || shopitem.Beat <= 0) // continue; item.Color = color == null ? "" : color; item.Skin = skin == null ? "" : skin; if (item == null) { continue; } types.Append(type); types.Append(","); items.Add(item); needitemsinfo = ItemInfo.SetItemType(shopItem, type, ref gold, ref money, ref offer, ref gifttoken); } if (items.Count == 0) { return(1); } ////////////////////////////////////////////////////////////////////////////////////// //玩家背包中是否有兑换物品所需要的物品 int icount = client.Player.MainBag.GetItems().Count; //获取个数 bool result = true; for (int j = 0; j < needitemsinfo.Count; j += 2) { if (client.Player.GetItemCount(needitemsinfo[j]) < needitemsinfo[j + 1]) { result = false; } } if (!result) { eMsg = eMessageType.ERROR; msg = "UserBuyItemHandler.NoBuyItem"; return(1); } ///////////////////////////////////////////////////////////// if (gold <= client.Player.PlayerCharacter.Gold && money <= client.Player.PlayerCharacter.Money && offer <= client.Player.PlayerCharacter.Offer && gifttoken <= client.Player.PlayerCharacter.GiftToken) { types.Remove(types.Length - 1, 1); client.Player.RemoveMoney(money); client.Player.RemoveGold(gold); client.Player.RemoveOffer(offer); client.Player.RemoveGiftToken(gifttoken); /////////////////////////////////////////////////////////////////////////////////////////////////////////////// //从玩家背包中删除兑换所需要的物品 for (int j = 0; j < needitemsinfo.Count; j += 2) { client.Player.RemoveTemplate(needitemsinfo[j], needitemsinfo[j + 1]); payGoods.Append(needitemsinfo[j].ToString() + ":"); } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// string itemIDs = ""; int annexIndex = 0; MailInfo message = new MailInfo(); StringBuilder annexRemark = new StringBuilder(); annexRemark.Append(LanguageMgr.GetTranslation("GoodsPresentHandler.AnnexRemark")); foreach (ItemInfo item in items) { itemIDs += (itemIDs == "" ? item.TemplateID.ToString() : "," + item.TemplateID.ToString()); item.UserID = 0; db.AddGoods(item); annexIndex++; annexRemark.Append(annexIndex); annexRemark.Append("、"); annexRemark.Append(item.Template.Name); annexRemark.Append("x"); annexRemark.Append(item.Count); annexRemark.Append(";"); switch (annexIndex) { case 1: message.Annex1 = item.ItemID.ToString(); message.Annex1Name = item.Template.Name; break; case 2: message.Annex2 = item.ItemID.ToString(); message.Annex2Name = item.Template.Name; break; case 3: message.Annex3 = item.ItemID.ToString(); message.Annex3Name = item.Template.Name; break; case 4: message.Annex4 = item.ItemID.ToString(); message.Annex4Name = item.Template.Name; break; case 5: message.Annex5 = item.ItemID.ToString(); message.Annex5Name = item.Template.Name; break; } if (annexIndex == 5) { annexIndex = 0; message.AnnexRemark = annexRemark.ToString(); annexRemark.Remove(0, annexRemark.Length); annexRemark.Append(LanguageMgr.GetTranslation("GoodsPresentHandler.AnnexRemark")); message.Content = content; message.Gold = 0; message.Money = 0; message.Receiver = receiver.NickName; message.ReceiverID = receiver.ID; message.Sender = client.Player.PlayerCharacter.NickName; message.SenderID = client.Player.PlayerCharacter.ID; message.Title = message.Sender + LanguageMgr.GetTranslation("GoodsPresentHandler.Content") + message.Annex1Name + "]"; message.Type = (int)eMailType.PresentItem; db.SendMail(message); message.Revert(); } } if (annexIndex > 0) { message.AnnexRemark = annexRemark.ToString(); message.Content = content; message.Gold = 0; message.Money = 0; message.Receiver = receiver.NickName; message.ReceiverID = receiver.ID; message.Sender = client.Player.PlayerCharacter.NickName; message.SenderID = client.Player.PlayerCharacter.ID; message.Title = message.Sender + LanguageMgr.GetTranslation("GoodsPresentHandler.Content") + message.Annex1Name + "]"; message.Type = (int)eMailType.PresentItem; db.SendMail(message); } LogMgr.LogMoneyAdd(LogMoneyType.Shop, LogMoneyType.Shop_Present, client.Player.PlayerCharacter.ID, money, client.Player.PlayerCharacter.Money, gold, gifttoken, offer, payGoods.ToString(), itemIDs, types.ToString()); client.Out.SendMailResponse(receiver.ID, eMailRespose.Receiver); client.Out.SendMailResponse(client.Player.PlayerCharacter.ID, eMailRespose.Send); } else { eMsg = eMessageType.ERROR; msg = "GoodsPresentHandler.NoMoney"; } } else { eMsg = eMessageType.ERROR; msg = "GoodsPresentHandler.NoUser"; } } client.Out.SendMessage(eMsg, LanguageMgr.GetTranslation(msg)); return(0); }
public int HandlePacket(GameClient client, GSPacketIn packet) { if (countConnect >= 3000) { client.Disconnect(); return(0); } int gold = 0; //表示金币 int money = 0; //表示点券 int offer = 0; //表示功勋 int gifttoken = 0; //表示礼劵 int medal = 0; StringBuilder payGoods = new StringBuilder(); //表示支付物品ID eMessageType eMsg = eMessageType.Normal; string msg = "UserBuyItemHandler.Success"; List <ItemInfo> buyitems = new List <ItemInfo>(); //购买物品列表 //List<int> needitemsinfo = new List<int>(); //购买所需物品列表 List <bool> dresses = new List <bool>(); List <int> places = new List <int>(); StringBuilder types = new StringBuilder(); bool isBind = false; ConsortiaInfo consotia = ConsortiaMgr.FindConsortiaInfo(client.Player.PlayerCharacter.ConsortiaID); int count = packet.ReadInt(); for (int i = 0; i < count; i++) { int buyFrom = packet.ReadInt(); int GoodsID = packet.ReadInt(); int type = packet.ReadInt(); string color = packet.ReadString(); bool dress = packet.ReadBoolean(); string skin = packet.ReadString(); int place = packet.ReadInt(); //这里开始处理公会商店 ShopItemInfo shopItem = Bussiness.Managers.ShopMgr.GetShopItemInfoById(GoodsID); //获取商品信息 //if (shopItem.ShopID == 2 || !Bussiness.Managers.ShopMgr.CanBuy(shopItem.ShopID, consotia == null ? 1 : consotia.ShopLevel, ref isBind, client.Player.PlayerCharacter.ConsortiaID, client.Player.PlayerCharacter.Riches)) if (!Bussiness.Managers.ShopMgr.CanBuy(shopItem.ShopID, consotia == null ? 1 : consotia.ShopLevel, ref isBind, client.Player.PlayerCharacter.ConsortiaID, client.Player.PlayerCharacter.Riches)) { client.Out.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation("UserBuyItemHandler.FailByPermission")); return(1); } //if (shopItem == null) //{ // continue; //} ItemTemplateInfo goods = Bussiness.Managers.ItemMgr.FindItemTemplate(shopItem.TemplateID); //获取物品属性 ItemInfo item = ItemInfo.CreateFromTemplate(goods, 1, (int)ItemAddType.Buy); //创建物品模板 //////////////////////////////////////////////////////////////////////////////////////////////////// //判断有限期 if (0 == shopItem.BuyType) //时间购买类型 { if (1 == type) { item.ValidDate = shopItem.AUnit; } if (2 == type) { item.ValidDate = shopItem.BUnit; } if (3 == type) { item.ValidDate = shopItem.CUnit; } } else //数量购买类型 { if (1 == type) { item.Count = shopItem.AUnit; } if (2 == type) { item.Count = shopItem.BUnit; } if (3 == type) { item.Count = shopItem.CUnit; } } //////////////////////////////////////////////////////////////////////////////////////////////////////// if (item == null && shopItem == null) { continue; } item.Color = color == null ? "" : color; item.Skin = skin == null ? "" : skin; if (isBind == true) { item.IsBinds = true; } else { item.IsBinds = Convert.ToBoolean(shopItem.IsBind); } types.Append(type); types.Append(","); buyitems.Add(item); dresses.Add(dress); places.Add(place); ItemInfo.SetItemType(shopItem, type, ref gold, ref money, ref offer, ref gifttoken, ref medal); } if (buyitems.Count == 0) { return(1); } if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked) { client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked")); return(1); } //判断金币或礼券等是否足够 if (gold <= client.Player.PlayerCharacter.Gold && money <= client.Player.PlayerCharacter.Money && offer <= client.Player.PlayerCharacter.Offer && gifttoken <= client.Player.PlayerCharacter.GiftToken)// && //medal <= client.Player.PlayerCharacter.medal) { client.Player.RemoveMoney(money); client.Player.RemoveGold(gold); client.Player.RemoveOffer(offer); client.Player.RemoveGiftToken(gifttoken); //client.Player.RemoveMedal(medal); string itemIDs = ""; int annexIndex = 0; MailInfo message = new MailInfo(); StringBuilder annexRemark = new StringBuilder(); annexRemark.Append(LanguageMgr.GetTranslation("GoodsPresentHandler.AnnexRemark")); for (int i = 0; i < buyitems.Count; i++) { itemIDs += (itemIDs == "" ? buyitems[i].TemplateID.ToString() : "," + buyitems[i].TemplateID.ToString()); if (client.Player.AddTemplate(buyitems[i], buyitems[i].Template.BagType, buyitems[i].Count)) { if (dresses[i] && buyitems[i].CanEquip()) { int slot = client.Player.MainBag.FindItemEpuipSlot(buyitems[i].Template); if ((slot == 9 || slot == 10) && (places[i] == 9 || places[i] == 10)) { slot = places[i]; } else if ((slot == 7 || slot == 8) && (places[i] == 7 || places[i] == 8)) { slot = places[i]; } client.Player.MainBag.MoveItem(buyitems[i].Place, slot, 0); msg = "UserBuyItemHandler.Save"; } } else { using (PlayerBussiness db = new PlayerBussiness()) { buyitems[i].UserID = 0; db.AddGoods(buyitems[i]); annexIndex++; annexRemark.Append(annexIndex); annexRemark.Append("、"); annexRemark.Append(buyitems[i].Template.Name); annexRemark.Append("x"); annexRemark.Append(buyitems[i].Count); annexRemark.Append(";"); switch (annexIndex) { case 1: message.Annex1 = buyitems[i].ItemID.ToString(); message.Annex1Name = buyitems[i].Template.Name; break; case 2: message.Annex2 = buyitems[i].ItemID.ToString(); message.Annex2Name = buyitems[i].Template.Name; break; case 3: message.Annex3 = buyitems[i].ItemID.ToString(); message.Annex3Name = buyitems[i].Template.Name; break; case 4: message.Annex4 = buyitems[i].ItemID.ToString(); message.Annex4Name = buyitems[i].Template.Name; break; case 5: message.Annex5 = buyitems[i].ItemID.ToString(); message.Annex5Name = buyitems[i].Template.Name; break; } if (annexIndex == 5) { annexIndex = 0; message.AnnexRemark = annexRemark.ToString(); annexRemark.Remove(0, annexRemark.Length); annexRemark.Append(LanguageMgr.GetTranslation("GoodsPresentHandler.AnnexRemark")); message.Content = LanguageMgr.GetTranslation("UserBuyItemHandler.Title") + message.Annex1Name + "]"; message.Gold = 0; message.Money = 0; message.Receiver = client.Player.PlayerCharacter.NickName; message.ReceiverID = client.Player.PlayerCharacter.ID; message.Sender = message.Receiver; message.SenderID = message.ReceiverID; message.Title = message.Content; message.Type = (int)eMailType.BuyItem; db.SendMail(message); eMsg = eMessageType.ERROR; msg = "UserBuyItemHandler.Mail"; message.Revert(); } } } } if (annexIndex > 0) { using (PlayerBussiness db = new PlayerBussiness()) { message.AnnexRemark = annexRemark.ToString(); message.Content = LanguageMgr.GetTranslation("UserBuyItemHandler.Title") + message.Annex1Name + "]"; message.Gold = 0; message.Money = 0; message.Receiver = client.Player.PlayerCharacter.NickName; message.ReceiverID = client.Player.PlayerCharacter.ID; message.Sender = message.Receiver; message.SenderID = message.ReceiverID; message.Title = message.Content; message.Type = (int)eMailType.BuyItem; db.SendMail(message); eMsg = eMessageType.ERROR; msg = "UserBuyItemHandler.Mail"; } } if (eMsg == eMessageType.ERROR) { client.Out.SendMailResponse(client.Player.PlayerCharacter.ID, eMailRespose.Receiver); } client.Player.OnPaid(money, gold, offer, gifttoken, medal, payGoods.ToString());//触发任务事件 LogMgr.LogMoneyAdd(LogMoneyType.Shop, LogMoneyType.Shop_Buy, client.Player.PlayerCharacter.ID, money, client.Player.PlayerCharacter.Money, gold, gifttoken, offer, medal, "牌子编号", itemIDs, types.ToString()); } else { if (gold > client.Player.PlayerCharacter.Gold) { msg = "UserBuyItemHandler.NoGold"; } if (offer > client.Player.PlayerCharacter.Offer) { msg = "UserBuyItemHandler.NoOffer"; } if (gifttoken > client.Player.PlayerCharacter.GiftToken) { msg = "UserBuyItemHandler.GiftToken"; } if (medal > client.Player.PlayerCharacter.medal) { msg = "UserBuyItemHandler.Medal"; } eMsg = eMessageType.ERROR; } client.Out.SendMessage(eMsg, LanguageMgr.GetTranslation(msg)); return(0); }
public void SendStoreToMail() { if (_player.PlayerCharacter.ConsortiaID != 0) { return; } bool response = false; int annexIndex = 0; MailInfo message = new MailInfo(); StringBuilder annexRemark = new StringBuilder(); annexRemark.Append(LanguageMgr.GetTranslation("Game.Server.GameUtils.CommonBag.AnnexRemark")); _player.SaveIntoDatabase(); using (PlayerBussiness db = new PlayerBussiness()) { for (int i = 0; i < _count; i++) { ItemInfo item = m_items[i]; if (item == null) { continue; } RemoveItem(item); response = true; annexIndex++; annexRemark.Append(annexIndex); annexRemark.Append("、"); annexRemark.Append(item.Template.Name); annexRemark.Append("x"); annexRemark.Append(item.Count); annexRemark.Append(";"); switch (annexIndex) { case 1: message.Annex1 = item.ItemID.ToString(); message.Annex1Name = item.Template.Name; break; case 2: message.Annex2 = item.ItemID.ToString(); message.Annex2Name = item.Template.Name; break; case 3: message.Annex3 = item.ItemID.ToString(); message.Annex3Name = item.Template.Name; break; case 4: message.Annex4 = item.ItemID.ToString(); message.Annex4Name = item.Template.Name; break; case 5: message.Annex5 = item.ItemID.ToString(); message.Annex5Name = item.Template.Name; break; } if (annexIndex == 5) { annexIndex = 0; message.AnnexRemark = annexRemark.ToString(); annexRemark.Remove(0, annexRemark.Length); annexRemark.Append(LanguageMgr.GetTranslation("GoodsPresentHandler.AnnexRemark")); message.Content = ""; message.Gold = 0; message.Money = 0; message.Receiver = _player.PlayerCharacter.NickName; message.ReceiverID = _player.PlayerCharacter.ID; message.Sender = LanguageMgr.GetTranslation("Game.Server.GameUtils.CommonBag.Sender"); message.SenderID = _player.PlayerCharacter.ID; message.Title = message.Annex1Name; //message.AnnexRemark;// LanguageMgr.GetTranslation("Game.Server.GameUtils.CommonBag.Title"); message.Type = (int)eMailType.StoreCanel; db.SendMail(message); message.Revert(); } } if (annexIndex > 0) { message.AnnexRemark = annexRemark.ToString(); message.Content = ""; message.Gold = 0; message.Money = 0; message.Receiver = _player.PlayerCharacter.NickName; message.ReceiverID = _player.PlayerCharacter.ID; message.Sender = LanguageMgr.GetTranslation("Game.Server.GameUtils.CommonBag.Sender"); message.SenderID = _player.PlayerCharacter.ID; message.Title = message.Annex1Name; //message.AnnexRemark;// LanguageMgr.GetTranslation("Game.Server.GameUtils.CommonBag.Title"); message.Type = (int)eMailType.StoreCanel; db.SendMail(message); } } _player.SaveIntoDatabase(); if (response) { _player.Out.SendMailResponse(_player.PlayerCharacter.ID, eMailRespose.Receiver); } }