Exemplo n.º 1
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);
        }
Exemplo n.º 2
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            int type = packet.ReadInt();
            int num  = 0;
            int num2 = 0;
            int num3 = 0;
            int num4 = 0;

            int[]           bag           = new int[3];
            StringBuilder   stringBuilder = new StringBuilder();
            List <ItemInfo> list          = new List <ItemInfo>();
            string          text          = "";

            switch (type)
            {
            case 0:
                if (AwardMgr.AddDailyAward(client.Player))
                {
                    using (PlayerBussiness playerBussiness = new PlayerBussiness())
                    {
                        if (playerBussiness.UpdatePlayerLastAward(client.Player.PlayerCharacter.ID, type))
                        {
                            stringBuilder.Append(LanguageMgr.GetTranslation("Nhận được Thẻ x2 kinh nghiệm 60 phút", new object[0]));
                        }
                        else
                        {
                            stringBuilder.Append(LanguageMgr.GetTranslation("GameUserDailyAward.Fail", new object[0]));
                        }
                        goto IL_29A;
                    }
                }
                stringBuilder.Append(LanguageMgr.GetTranslation("GameUserDailyAward.Fail1", new object[0]));
                goto IL_29A;

            case 1:
            case 4:
                goto IL_29A;

            case 2:
            {
                if (DateTime.Now.Date == client.Player.PlayerCharacter.LastGetEgg.Date)
                {
                    stringBuilder.Append("Bạn đã nhận 1 lần hôm nay!");
                    goto IL_29A;
                }
                using (PlayerBussiness playerBussiness2 = new PlayerBussiness())
                {
                    playerBussiness2.UpdatePlayerLastAward(client.Player.PlayerCharacter.ID, type);
                }
                ItemTemplateInfo itemTemplateInfo = ItemMgr.FindItemTemplate(112059);
                this.OpenUpItem(itemTemplateInfo.Data, bag, list, ref num2, ref num, ref num3, ref num4);
                goto IL_29A;
            }

            case 3:
            {
                int vIPLevel = client.Player.PlayerCharacter.VIPLevel;
                client.Player.LastVIPPackTime();
                ItemTemplateInfo itemTemplateInfo = ItemMgr.FindItemTemplate(ItemMgr.FindItemBoxTypeAndLv(2, vIPLevel).TemplateID);
                this.OpenUpItem(itemTemplateInfo.Data, bag, list, ref num2, ref num, ref num3, ref num4);
                using (PlayerBussiness playerBussiness3 = new PlayerBussiness())
                {
                    playerBussiness3.UpdateLastVIPPackTime(client.Player.PlayerCharacter.ID);
                    goto IL_29A;
                }
                break;
            }

            case 5:
                break;

            default:
                goto IL_29A;
            }
            using (ProduceBussiness produceBussiness = new ProduceBussiness())
            {
                DailyLogListInfo dailyLogListSingle = produceBussiness.GetDailyLogListSingle(client.Player.PlayerCharacter.ID);
                string           text2 = dailyLogListSingle.DayLog;
                text2.Split(new char[]
                {
                    ','
                });
                if (string.IsNullOrEmpty(text2))
                {
                    text2 = "True";
                    dailyLogListSingle.UserAwardLog = 0;
                }
                else
                {
                    text2 += ",True";
                }
                dailyLogListSingle.DayLog = text2;
                dailyLogListSingle.UserAwardLog++;
                produceBussiness.UpdateDailyLogList(dailyLogListSingle);
            }
            stringBuilder.Append("Điểm danh thành công!");
IL_29A:
            if (num != 0)
            {
                stringBuilder.Append(num + LanguageMgr.GetTranslation("OpenUpArkHandler.Money", new object[0]));
                client.Player.AddMoney(num);
            }
            if (num2 != 0)
            {
                stringBuilder.Append(num2 + LanguageMgr.GetTranslation("OpenUpArkHandler.Gold", new object[0]));
                client.Player.AddGold(num2);
            }
            if (num3 != 0)
            {
                stringBuilder.Append(num3 + LanguageMgr.GetTranslation("OpenUpArkHandler.GiftToken", new object[0]));
                client.Player.AddGiftToken(num3);
            }
            if (num4 != 0)
            {
                stringBuilder.Append(num4 + LanguageMgr.GetTranslation("OpenUpArkHandler.Medal", new object[0]));
                client.Player.AddMedal(num4);
            }
            StringBuilder stringBuilder2 = new StringBuilder();

            foreach (ItemInfo current in list)
            {
                stringBuilder2.Append(current.Template.Name + "x" + current.Count.ToString() + ",");
                if (!client.Player.AddTemplate(current, current.Template.BagType, current.Count))
                {
                    using (PlayerBussiness playerBussiness4 = new PlayerBussiness())
                    {
                        current.UserID = 0;
                        playerBussiness4.AddGoods(current);
                        MailInfo mailInfo = new MailInfo();
                        mailInfo.Annex1     = current.ItemID.ToString();
                        mailInfo.Content    = LanguageMgr.GetTranslation("OpenUpArkHandler.Content1", new object[0]) + current.Template.Name + LanguageMgr.GetTranslation("OpenUpArkHandler.Content2", new object[0]);
                        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      = LanguageMgr.GetTranslation("OpenUpArkHandler.Title", new object[0]) + current.Template.Name + "]";
                        mailInfo.Type       = 12;
                        playerBussiness4.SendMail(mailInfo);
                        text = LanguageMgr.GetTranslation("OpenUpArkHandler.Mail", new object[0]);
                    }
                }
            }
            if (stringBuilder2.Length > 0)
            {
                stringBuilder2.Remove(stringBuilder2.Length - 1, 1);
                string[] array = stringBuilder2.ToString().Split(new char[]
                {
                    ','
                });
                for (int i = 0; i < array.Length; i++)
                {
                    int num5 = 1;
                    for (int j = i + 1; j < array.Length; j++)
                    {
                        if (array[i].Contains(array[j]) && array[j].Length == array[i].Length)
                        {
                            num5++;
                            array[j] = j.ToString();
                        }
                    }
                    if (num5 > 1)
                    {
                        array[i]  = array[i].Remove(array[i].Length - 1, 1);
                        array[i] += num5.ToString();
                    }
                    if (array[i] != i.ToString())
                    {
                        array[i] += ",";
                        stringBuilder.Append(array[i]);
                    }
                }
            }
            if (stringBuilder.Length - 1 > 0)
            {
                stringBuilder.Remove(stringBuilder.Length - 1, 1);
                stringBuilder.Append(".");
            }
            client.Out.SendMessage(eMessageType.Normal, text + stringBuilder.ToString());
            if (!string.IsNullOrEmpty(text))
            {
                client.Out.SendMailResponse(client.Player.PlayerCharacter.ID, eMailRespose.Receiver);
            }
            return(2);
        }
Exemplo n.º 3
0
        public override int HandlePacket(GamePlayer player, GSPacketIn packet)
        {
            eBageType bagType   = (eBageType)packet.ReadByte();
            int       place     = packet.ReadInt();
            int       payType   = (int)packet.ReadByte();
            int       price     = packet.ReadInt();
            int       mouthful  = packet.ReadInt();
            int       validDate = packet.ReadInt();
            string    msg       = "AuctionAddHandler.Fail";

            payType = 1;
            int result;

            if (player.PlayerCharacter.HasBagPassword && player.PlayerCharacter.IsLocked)
            {
                player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked", new object[0]));
                result = 0;
            }
            else
            {
                if (price < 0 || (mouthful != 0 && mouthful < price))
                {
                    result = 0;
                }
                else
                {
                    if (payType != 0)
                    {
                        payType = 1;
                    }
                    int needGold = (validDate == 0) ? 100 : ((validDate == 1) ? 200 : 300);
                    needGold = ((needGold < 1) ? 1 : needGold);
                    ItemInfo goods = player.GetItemAt(bagType, place);
                    if (price < 0)
                    {
                        msg = "AuctionAddHandler.Msg1";
                    }
                    else
                    {
                        if (mouthful != 0 && mouthful < price)
                        {
                            msg = "AuctionAddHandler.Msg2";
                        }
                        else
                        {
                            if (needGold > player.PlayerCharacter.Gold)
                            {
                                msg = "AuctionAddHandler.Msg3";
                            }
                            else
                            {
                                if (goods == null)
                                {
                                    msg = "AuctionAddHandler.Msg4";
                                }
                                else
                                {
                                    if (goods.IsBinds)
                                    {
                                        msg = "AuctionAddHandler.Msg5";
                                    }
                                    else
                                    {
                                        if (goods.ItemID == 0)
                                        {
                                            using (PlayerBussiness db = new PlayerBussiness())
                                            {
                                                db.AddGoods(goods);
                                            }
                                        }
                                        AuctionInfo info = new AuctionInfo();
                                        info.AuctioneerID   = player.PlayerCharacter.ID;
                                        info.AuctioneerName = player.PlayerCharacter.NickName;
                                        info.BeginDate      = DateTime.Now;
                                        info.BuyerID        = 0;
                                        info.BuyerName      = "";
                                        info.IsExist        = true;
                                        info.ItemID         = goods.ItemID;
                                        info.Mouthful       = mouthful;
                                        info.PayType        = payType;
                                        info.Price          = price;
                                        info.Rise           = price / 10;
                                        info.Rise           = ((info.Rise < 1) ? 1 : info.Rise);
                                        info.Name           = goods.Template.Name;
                                        info.Category       = goods.Template.CategoryID;
                                        info.ValidDate      = ((validDate == 0) ? 8 : ((validDate == 1) ? 24 : 48));
                                        info.TemplateID     = goods.TemplateID;
                                        info.Random         = AuctionAddHandler.random.Next(45, 75);
                                        using (PlayerBussiness db = new PlayerBussiness())
                                        {
                                            if (db.AddAuction(info))
                                            {
                                                player.TakeOutItem(goods);
                                                player.SaveIntoDatabase();
                                                player.RemoveGold(needGold);
                                                msg = "AuctionAddHandler.Msg6";
                                                player.Out.SendAuctionRefresh(info, info.AuctionID, true, goods);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation(msg, new object[0]));
                    result = 0;
                }
            }
            return(result);
        }
Exemplo n.º 4
0
        public static bool AddSignAwards(GamePlayer player, int DailyLog)
        {
            DailyAwardInfo[] allAwardInfo = AwardMgr.GetAllAwardInfo();
            new StringBuilder();
            string value      = string.Empty;
            bool   flag       = false;
            int    templateId = 0;
            int    num        = 1;
            int    validDate  = 0;
            bool   isBinds    = true;
            bool   result     = false;

            DailyAwardInfo[] array = allAwardInfo;
            for (int i = 0; i < array.Length; i++)
            {
                DailyAwardInfo dailyAwardInfo = array[i];
                flag = true;
                if (DailyLog <= 9)
                {
                    if (DailyLog != 3)
                    {
                        if (DailyLog == 9)
                        {
                            if (dailyAwardInfo.Type == DailyLog)
                            {
                                templateId = dailyAwardInfo.TemplateID;
                                num        = dailyAwardInfo.Count;
                                validDate  = dailyAwardInfo.ValidDate;
                                isBinds    = dailyAwardInfo.IsBinds;
                                result     = true;
                            }
                        }
                    }
                    else
                    {
                        if (dailyAwardInfo.Type == DailyLog)
                        {
                            num = dailyAwardInfo.Count;
                            player.AddGiftToken(num);
                            result = true;
                        }
                    }
                }
                else
                {
                    if (DailyLog != 17)
                    {
                        if (DailyLog == 26)
                        {
                            if (dailyAwardInfo.Type == DailyLog)
                            {
                                templateId = dailyAwardInfo.TemplateID;
                                num        = dailyAwardInfo.Count;
                                validDate  = dailyAwardInfo.ValidDate;
                                isBinds    = dailyAwardInfo.IsBinds;
                                result     = true;
                            }
                        }
                    }
                    else
                    {
                        if (dailyAwardInfo.Type == DailyLog)
                        {
                            templateId = dailyAwardInfo.TemplateID;
                            num        = dailyAwardInfo.Count;
                            validDate  = dailyAwardInfo.ValidDate;
                            isBinds    = dailyAwardInfo.IsBinds;
                            result     = true;
                        }
                    }
                }
            }
            ItemTemplateInfo itemTemplateInfo = ItemMgr.FindItemTemplate(templateId);

            if (itemTemplateInfo != null)
            {
                int num2 = num;
                for (int j = 0; j < num2; j += itemTemplateInfo.MaxCount)
                {
                    int      count    = (j + itemTemplateInfo.MaxCount > num2) ? (num2 - j) : itemTemplateInfo.MaxCount;
                    ItemInfo itemInfo = ItemInfo.CreateFromTemplate(itemTemplateInfo, count, 113);
                    itemInfo.ValidDate = validDate;
                    itemInfo.IsBinds   = isBinds;
                    if (!player.AddTemplate(itemInfo, itemInfo.Template.BagType, itemInfo.Count))
                    {
                        flag = true;
                        using (PlayerBussiness playerBussiness = new PlayerBussiness())
                        {
                            itemInfo.UserID = 0;
                            playerBussiness.AddGoods(itemInfo);
                            MailInfo mailInfo = new MailInfo();
                            mailInfo.Annex1  = itemInfo.ItemID.ToString();
                            mailInfo.Content = LanguageMgr.GetTranslation("AwardMgr.AddDailyAward.Content", new object[]
                            {
                                itemInfo.Template.Name
                            });
                            mailInfo.Gold       = 0;
                            mailInfo.Money      = 0;
                            mailInfo.Receiver   = player.PlayerCharacter.NickName;
                            mailInfo.ReceiverID = player.PlayerCharacter.ID;
                            mailInfo.Sender     = mailInfo.Receiver;
                            mailInfo.SenderID   = mailInfo.ReceiverID;
                            mailInfo.Title      = LanguageMgr.GetTranslation("AwardMgr.AddDailyAward.Title", new object[]
                            {
                                itemInfo.Template.Name
                            });
                            mailInfo.Type = 15;
                            playerBussiness.SendMail(mailInfo);
                            value = LanguageMgr.GetTranslation("AwardMgr.AddDailyAward.Mail", new object[0]);
                        }
                    }
                }
            }
            if (flag && !string.IsNullOrEmpty(value))
            {
                player.Out.SendMailResponse(player.PlayerCharacter.ID, eMailRespose.Receiver);
            }
            return(result);
        }
Exemplo n.º 5
0
        public bool HandleCommand(TankMarryLogicProcessor process, GamePlayer player, GSPacketIn packet)
        {
            if (player.CurrentMarryRoom == null || player.CurrentMarryRoom.RoomState != eRoomState.FREE)
            {
                return(false);
            }

            if (player.PlayerCharacter.ID != player.CurrentMarryRoom.Info.GroomID && player.PlayerCharacter.ID != player.CurrentMarryRoom.Info.BrideID)
            {
                return(false);
            }

            int needMoney = GameProperties.PRICE_PROPOSE;

            if (player.CurrentMarryRoom.Info.IsHymeneal)
            {
                if (player.PlayerCharacter.Money < needMoney)
                {
                    player.Out.SendMessage(eMessageType.ChatNormal, LanguageMgr.GetTranslation("UserFirecrackersCommand.MoneyNotEnough"));
                    return(false);
                }
            }

            GamePlayer Groom = player.CurrentMarryRoom.GetPlayerByUserID(player.CurrentMarryRoom.Info.GroomID);

            if (Groom == null)
            {
                player.Out.SendMessage(eMessageType.ChatNormal, LanguageMgr.GetTranslation("HymenealCommand.NoGroom"));
                return(false);
            }

            GamePlayer Bride = player.CurrentMarryRoom.GetPlayerByUserID(player.CurrentMarryRoom.Info.BrideID);

            if (Bride == null)
            {
                player.Out.SendMessage(eMessageType.ChatNormal, LanguageMgr.GetTranslation("HymenealCommand.NoBride"));
                return(false);
            }

            bool       result  = false;
            bool       isFirst = false;
            GSPacketIn pkg     = packet.Clone();

            int hymenealState = packet.ReadInt();

            if (1 == hymenealState)
            {
                player.CurrentMarryRoom.RoomState = eRoomState.FREE;
            }
            else
            {
                player.CurrentMarryRoom.RoomState = eRoomState.Hymeneal;
                player.CurrentMarryRoom.BeginTimerForHymeneal(170 * 1000);

                if (!player.PlayerCharacter.IsGotRing)
                {
                    isFirst = true;
                    ItemTemplateInfo ringTemplate = ItemMgr.FindItemTemplate(9022);
                    ItemInfo         ring1        = ItemInfo.CreateFromTemplate(ringTemplate, 1, (int)ItemAddType.webing);
                    ring1.IsBinds = true;
                    //Groom.CurrentInventory.AddItem(ring1, 11);
                    using (PlayerBussiness pb = new PlayerBussiness())
                    {
                        ring1.UserID = 0;
                        pb.AddGoods(ring1);

                        string content = LanguageMgr.GetTranslation("HymenealCommand.Content", Bride.PlayerCharacter.NickName);

                        MailInfo mail = new MailInfo();
                        mail.Annex1     = ring1.ItemID.ToString();
                        mail.Content    = content;
                        mail.Gold       = 0;
                        mail.IsExist    = true;
                        mail.Money      = 0;
                        mail.Receiver   = Groom.PlayerCharacter.NickName;
                        mail.ReceiverID = Groom.PlayerCharacter.ID;
                        mail.Sender     = LanguageMgr.GetTranslation("HymenealCommand.Sender");
                        mail.SenderID   = 0;
                        mail.Title      = LanguageMgr.GetTranslation("HymenealCommand.Title");
                        mail.Type       = (int)eMailType.Marry;
                        if (pb.SendMail(mail))
                        {
                            result = true;
                        }
                        player.Out.SendMailResponse(mail.ReceiverID, eMailRespose.Receiver);
                    }


                    ItemInfo ring2 = ItemInfo.CreateFromTemplate(ringTemplate, 1, (int)ItemAddType.webing);
                    ring2.IsBinds = true;
                    //Bride.CurrentInventory.AddItem(ring2, 11);
                    using (PlayerBussiness pb = new PlayerBussiness())
                    {
                        ring2.UserID = 0;
                        pb.AddGoods(ring2);

                        string content = LanguageMgr.GetTranslation("HymenealCommand.Content", Groom.PlayerCharacter.NickName);

                        MailInfo mail = new MailInfo();
                        mail.Annex1     = ring2.ItemID.ToString();
                        mail.Content    = content;
                        mail.Gold       = 0;
                        mail.IsExist    = true;
                        mail.Money      = 0;
                        mail.Receiver   = Bride.PlayerCharacter.NickName;
                        mail.ReceiverID = Bride.PlayerCharacter.ID;
                        mail.Sender     = LanguageMgr.GetTranslation("HymenealCommand.Sender");
                        mail.SenderID   = 0;
                        mail.Title      = LanguageMgr.GetTranslation("HymenealCommand.Title");
                        mail.Type       = (int)eMailType.Marry;
                        if (pb.SendMail(mail))
                        {
                            result = true;
                        }
                        player.Out.SendMailResponse(mail.ReceiverID, eMailRespose.Receiver);
                    }


                    player.CurrentMarryRoom.Info.IsHymeneal = true;

                    using (PlayerBussiness db = new PlayerBussiness())
                    {
                        db.UpdateMarryRoomInfo(player.CurrentMarryRoom.Info);

                        //更新IsGotRing的数据库
                        db.UpdatePlayerGotRingProp(Groom.PlayerCharacter.ID, Bride.PlayerCharacter.ID);

                        //通过数据库读入PlayerCharacter内存
                        Groom.LoadMarryProp();
                        Bride.LoadMarryProp();
                    }

                    //Groom.PlayerCharacter.IsGotRing = true;
                    //Bride.PlayerCharacter.IsGotRing = true;
                }
                else
                {
                    isFirst = false;
                    result  = true;
                }

                if (!isFirst)
                {
                    //player.SetMoney(-needMoney, MoneyRemoveType.Marry);
                    player.RemoveMoney(needMoney);
                    LogMgr.LogMoneyAdd(LogMoneyType.Marry, LogMoneyType.Marry_Hymeneal, player.PlayerCharacter.ID, needMoney, player.PlayerCharacter.Money, 0, 0, 0, "", "", "");
                    CountBussiness.InsertSystemPayCount(player.PlayerCharacter.ID, needMoney, 0, (int)eConsumerType.Marry, (int)eSubConsumerType.Marry_Hymeneal);
                }

                pkg.WriteInt(player.CurrentMarryRoom.Info.ID);
                pkg.WriteBoolean(result);
                //0 player.CurrentMarryRoom.SendToAll(pkg);
                //0 player.CurrentMarryRoom.SendToAllForScene(pkg,1);
                player.CurrentMarryRoom.SendToAll(pkg);

                if (result)
                {
                    string     msg     = LanguageMgr.GetTranslation("HymenealCommand.Succeed", Groom.PlayerCharacter.NickName, Bride.PlayerCharacter.NickName);
                    GSPacketIn message = player.Out.SendMessage(eMessageType.ChatNormal, msg);
                    player.CurrentMarryRoom.SendToPlayerExceptSelfForScene(message, player);
                }
            }

            return(true);
        }
Exemplo n.º 6
0
        public bool HandleCommand(TankMarryLogicProcessor process, GamePlayer player, GSPacketIn packet)
        {
            bool result2;

            if (player.CurrentMarryRoom == null || player.CurrentMarryRoom.RoomState != eRoomState.FREE)
            {
                result2 = false;
            }
            else
            {
                if (player.PlayerCharacter.ID != player.CurrentMarryRoom.Info.GroomID && player.PlayerCharacter.ID != player.CurrentMarryRoom.Info.BrideID)
                {
                    result2 = false;
                }
                else
                {
                    int needMoney = 500;
                    if (player.CurrentMarryRoom.Info.IsHymeneal)
                    {
                        if (player.PlayerCharacter.Money < needMoney)
                        {
                            player.Out.SendMessage(eMessageType.ChatNormal, LanguageMgr.GetTranslation("UserFirecrackersCommand.MoneyNotEnough", new object[0]));
                            result2 = false;
                            return(result2);
                        }
                    }
                    GamePlayer Groom = player.CurrentMarryRoom.GetPlayerByUserID(player.CurrentMarryRoom.Info.GroomID);
                    if (Groom == null)
                    {
                        player.Out.SendMessage(eMessageType.ChatNormal, LanguageMgr.GetTranslation("HymenealCommand.NoGroom", new object[0]));
                        result2 = false;
                    }
                    else
                    {
                        GamePlayer Bride = player.CurrentMarryRoom.GetPlayerByUserID(player.CurrentMarryRoom.Info.BrideID);
                        if (Bride == null)
                        {
                            player.Out.SendMessage(eMessageType.ChatNormal, LanguageMgr.GetTranslation("HymenealCommand.NoBride", new object[0]));
                            result2 = false;
                        }
                        else
                        {
                            bool       result        = false;
                            bool       isFirst       = false;
                            GSPacketIn pkg           = packet.Clone();
                            int        hymenealState = packet.ReadInt();
                            if (1 == hymenealState)
                            {
                                player.CurrentMarryRoom.RoomState = eRoomState.FREE;
                            }
                            else
                            {
                                player.CurrentMarryRoom.RoomState = eRoomState.Hymeneal;
                                player.CurrentMarryRoom.BeginTimerForHymeneal(170000);
                                if (!player.PlayerCharacter.IsGotRing)
                                {
                                    isFirst = true;
                                    ItemTemplateInfo ringTemplate = ItemMgr.FindItemTemplate(9022);
                                    ItemInfo         ring         = ItemInfo.CreateFromTemplate(ringTemplate, 1, 112);
                                    ring.IsBinds = true;
                                    using (PlayerBussiness pb = new PlayerBussiness())
                                    {
                                        ring.UserID = 0;
                                        pb.AddGoods(ring);
                                        string content = LanguageMgr.GetTranslation("HymenealCommand.Content", new object[]
                                        {
                                            Bride.PlayerCharacter.NickName
                                        });
                                        MailInfo mail = new MailInfo();
                                        mail.Annex1     = ring.ItemID.ToString();
                                        mail.Content    = content;
                                        mail.Gold       = 0;
                                        mail.IsExist    = true;
                                        mail.Money      = 0;
                                        mail.GiftToken  = 0;
                                        mail.Receiver   = Groom.PlayerCharacter.NickName;
                                        mail.ReceiverID = Groom.PlayerCharacter.ID;
                                        mail.Sender     = LanguageMgr.GetTranslation("HymenealCommand.Sender", new object[0]);
                                        mail.SenderID   = 0;
                                        mail.Title      = LanguageMgr.GetTranslation("HymenealCommand.Title", new object[0]);
                                        mail.Type       = 14;
                                        if (pb.SendMail(mail))
                                        {
                                            result = true;
                                        }
                                        player.Out.SendMailResponse(mail.ReceiverID, eMailRespose.Receiver);
                                    }
                                    ItemInfo ring2 = ItemInfo.CreateFromTemplate(ringTemplate, 1, 112);
                                    ring2.IsBinds = true;
                                    using (PlayerBussiness pb = new PlayerBussiness())
                                    {
                                        ring2.UserID = 0;
                                        pb.AddGoods(ring2);
                                        string content = LanguageMgr.GetTranslation("HymenealCommand.Content", new object[]
                                        {
                                            Groom.PlayerCharacter.NickName
                                        });
                                        MailInfo mail = new MailInfo();
                                        mail.Annex1     = ring2.ItemID.ToString();
                                        mail.Content    = content;
                                        mail.Gold       = 0;
                                        mail.IsExist    = true;
                                        mail.Money      = 0;
                                        mail.GiftToken  = 0;
                                        mail.Receiver   = Bride.PlayerCharacter.NickName;
                                        mail.ReceiverID = Bride.PlayerCharacter.ID;
                                        mail.Sender     = LanguageMgr.GetTranslation("HymenealCommand.Sender", new object[0]);
                                        mail.SenderID   = 0;
                                        mail.Title      = LanguageMgr.GetTranslation("HymenealCommand.Title", new object[0]);
                                        mail.Type       = 14;
                                        if (pb.SendMail(mail))
                                        {
                                            result = true;
                                        }
                                        player.Out.SendMailResponse(mail.ReceiverID, eMailRespose.Receiver);
                                    }
                                    player.CurrentMarryRoom.Info.IsHymeneal = true;
                                    using (PlayerBussiness db = new PlayerBussiness())
                                    {
                                        db.UpdateMarryRoomInfo(player.CurrentMarryRoom.Info);
                                        db.UpdatePlayerGotRingProp(Groom.PlayerCharacter.ID, Bride.PlayerCharacter.ID);
                                        Groom.LoadMarryProp();
                                        Bride.LoadMarryProp();
                                    }
                                }
                                else
                                {
                                    isFirst = false;
                                    result  = true;
                                }
                                if (!isFirst)
                                {
                                    player.RemoveMoney(needMoney, LogMoneyType.Marry, LogMoneyType.Marry_Hymeneal);
                                    CountBussiness.InsertSystemPayCount(player.PlayerCharacter.ID, needMoney, 0, 0, 1);
                                }
                                pkg.WriteInt(player.CurrentMarryRoom.Info.ID);
                                pkg.WriteBoolean(result);
                                player.CurrentMarryRoom.SendToAll(pkg);
                                if (result)
                                {
                                    string msg = LanguageMgr.GetTranslation("HymenealCommand.Succeed", new object[]
                                    {
                                        Groom.PlayerCharacter.NickName,
                                        Bride.PlayerCharacter.NickName
                                    });
                                    GSPacketIn message = player.Out.SendMessage(eMessageType.ChatNormal, msg);
                                    player.CurrentMarryRoom.SendToPlayerExceptSelfForScene(message, player);
                                }
                            }
                            result2 = true;
                        }
                    }
                }
            }
            return(result2);
        }
Exemplo n.º 7
0
        //0表示男女,1男2女
        //type 1表示物品,2表示金币,3表示点券,4表示经验,5表示功勋,6表示BUFF
        public static bool AddDailyAward(GamePlayer player)
        {
            if (DateTime.Now.Date == player.PlayerCharacter.LastAward.Date)
            {
                return(false);
            }

            //if (player.PlayerCharacter.DayLoginCount > 0)
            //    return false;

            player.PlayerCharacter.DayLoginCount++;
            player.PlayerCharacter.LastAward = DateTime.Now;
            DailyAwardInfo[] infos = GetAllAwardInfo();
            StringBuilder    msg   = new StringBuilder();
            string           full  = string.Empty;
            bool             has   = false;

            foreach (DailyAwardInfo info in infos)
            {
                if (info.Sex != 0 && (player.PlayerCharacter.Sex ? 1 : 2) != info.Sex)
                {
                    continue;
                }

                has = true;
                switch (info.Type)
                {
                case 1:
                    ItemTemplateInfo itemTemplateInfo = Bussiness.Managers.ItemMgr.FindItemTemplate(info.TemplateID);
                    if (itemTemplateInfo != null)
                    {
                        int itemCount = info.Count;
                        for (int len = 0; len < itemCount; len += itemTemplateInfo.MaxCount)
                        {
                            int      count = len + itemTemplateInfo.MaxCount > itemCount ? itemCount - len : itemTemplateInfo.MaxCount;
                            ItemInfo item  = ItemInfo.CreateFromTemplate(itemTemplateInfo, count, (int)ItemAddType.DailyAward);
                            item.ValidDate = info.ValidDate;
                            item.IsBinds   = info.IsBinds;

                            //if (player.AddItem(item, Game.Server.Statics.ItemAddType.DailyAward, item.GetBagType()) == -1)
                            if (!player.AddTemplate(item, item.Template.BagType, item.Count))
                            {
                                using (PlayerBussiness db = new PlayerBussiness())
                                {
                                    item.UserID = 0;
                                    db.AddGoods(item);

                                    MailInfo message = new MailInfo();
                                    message.Annex1     = item.ItemID.ToString();
                                    message.Content    = LanguageMgr.GetTranslation("AwardMgr.AddDailyAward.Content", item.Template.Name);
                                    message.Gold       = 0;
                                    message.Money      = 0;
                                    message.Receiver   = player.PlayerCharacter.NickName;
                                    message.ReceiverID = player.PlayerCharacter.ID;
                                    message.Sender     = message.Receiver;
                                    message.SenderID   = message.ReceiverID;
                                    message.Title      = LanguageMgr.GetTranslation("AwardMgr.AddDailyAward.Title", item.Template.Name);
                                    message.Type       = (int)eMailType.DailyAward;
                                    db.SendMail(message);

                                    full = LanguageMgr.GetTranslation("AwardMgr.AddDailyAward.Mail");
                                }
                            }
                        }
                    }
                    break;

                case 2:
                    player.AddGold(info.Count);
                    break;

                case 3:
                    player.AddMoney(info.Count);
                    LogMgr.LogMoneyAdd(LogMoneyType.Award, LogMoneyType.Award_Daily, player.PlayerCharacter.ID, info.Count, player.PlayerCharacter.Money, 0, 0, 0, "", "", "");
                    break;

                case 4:
                    player.AddGP(info.Count);
                    break;

                case 5:
                    player.AddOffer(info.Count, false);
                    break;

                case 6:
                    ItemTemplateInfo template = Bussiness.Managers.ItemMgr.FindItemTemplate(info.TemplateID);
                    if (template != null)
                    {
                        AbstractBuffer buffer = BufferList.CreateBufferHour(template, info.ValidDate);
                        buffer.Start(player);
                    }
                    break;
                }
            }


            if (has)
            {
                //player.Out.SendMessage(eMessageType.DailyAward, full + msg.ToString());

                if (!string.IsNullOrEmpty(full))
                {
                    player.Out.SendMailResponse(player.PlayerCharacter.ID, eMailRespose.Receiver);
                }
            }

            return(true);
        }