예제 #1
0
        public void SendGoodManCard(string receiverName, int receiverID, string senderName, int senderID, PlayerBussiness db)
        {
            ItemTemplateInfo goodMan     = ItemMgr.FindItemTemplate(11105);
            ItemInfo         goodManCard = ItemInfo.CreateFromTemplate(goodMan, 1, (int)ItemAddType.webing);

            goodManCard.IsBinds = true;

            goodManCard.UserID = 0;
            db.AddGoods(goodManCard);

            MailInfo mail = new MailInfo();

            mail.Annex1     = goodManCard.ItemID.ToString();
            mail.Content    = LanguageMgr.GetTranslation("MarryApplyReplyHandler.Content");
            mail.Gold       = 0;
            mail.IsExist    = true;
            mail.Money      = 0;
            mail.Receiver   = receiverName;
            mail.ReceiverID = receiverID;
            mail.Sender     = senderName;
            mail.SenderID   = senderID;
            mail.Title      = LanguageMgr.GetTranslation("MarryApplyReplyHandler.Title");
            mail.Type       = (int)eMailType.Marry;
            db.SendMail(mail);
            //Spouse.Out.SendMailResponse(mail.ReceiverID, eMailRespose.Receiver);
        }
예제 #2
0
        public void SendGoodManCard(string receiverName, int receiverID, string senderName, int senderID, PlayerBussiness db)
        {
            ItemTemplateInfo goodMan     = ItemMgr.FindItemTemplate(11105);
            ItemInfo         goodManCard = ItemInfo.CreateFromTemplate(goodMan, 1, 112);

            goodManCard.IsBinds = true;
            GamePlayer player = WorldMgr.GetPlayerById(receiverID);

            goodManCard.UserID = 0;
            db.AddGoods(goodManCard);
            MailInfo mail = new MailInfo();

            mail.Annex1     = goodManCard.ItemID.ToString();
            mail.Content    = LanguageMgr.GetTranslation("MarryApplyReplyHandler.Content", new object[0]);
            mail.Gold       = 0;
            mail.IsExist    = true;
            mail.Money      = 0;
            mail.GiftToken  = 0;
            mail.Receiver   = receiverName;
            mail.ReceiverID = receiverID;
            mail.Sender     = senderName;
            mail.SenderID   = senderID;
            mail.Title      = LanguageMgr.GetTranslation("MarryApplyReplyHandler.Title", new object[0]);
            mail.Type       = 14;
            if (db.SendMail(mail) && player != null)
            {
                player.Out.SendMailResponse(mail.ReceiverID, eMailRespose.Receiver);
            }
        }
예제 #3
0
        private void HandlePlayerAddTemplate(GSPacketIn pkg)
        {
            GamePlayer player = WorldMgr.GetPlayerById(pkg.ClientID);

            if (player != null)
            {
                ItemTemplateInfo template = ItemMgr.FindItemTemplate(pkg.ReadInt());
                eBageType        type     = (eBageType)pkg.ReadByte();
                if (template != null)
                {
                    int      Count = pkg.ReadInt();
                    ItemInfo item  = ItemInfo.CreateFromTemplate(template, Count, 118);
                    item.Count     = Count;
                    item.ValidDate = pkg.ReadInt();
                    item.IsBinds   = pkg.ReadBoolean();
                    item.IsUsed    = pkg.ReadBoolean();
                    item.IsTips    = pkg.ReadBoolean();
                    item.IsLogs    = pkg.ReadBoolean();
                    int check = pkg.ReadInt();
                    if (check == template.TemplateID + Count)
                    {
                        if (!player.AddTemplate(item, type, item.Count, item.IsTips))
                        {
                        }
                    }
                    else
                    {
                        FightServerConnector.log.ErrorFormat("add template item error: userid {0} template id {1} count {2}", pkg.ClientID, template.TemplateID, Count);
                    }
                }
            }
        }
예제 #4
0
        public static bool VIPRewardDrop(int level, ref List <ItemInfo> info)
        {
            int  dropId = DropInventory.GetDropCondiction(eDropType.VIP, level.ToString(), "1");
            bool result;

            if (dropId > 0)
            {
                List <DropItem> unFiltItems = DropMgr.FindDropItem(dropId);
                for (int i = 0; i < unFiltItems.Count; i++)
                {
                    int itemCount         = DropInventory.random.Next(unFiltItems[i].BeginData, unFiltItems[i].EndData);
                    ItemTemplateInfo temp = ItemMgr.FindItemTemplate(unFiltItems[i].ItemId);
                    ItemInfo         item = ItemInfo.CreateFromTemplate(temp, itemCount, level);
                    if (item != null)
                    {
                        item.IsBinds   = unFiltItems[i].IsBind;
                        item.ValidDate = unFiltItems[i].ValueDate;
                        item.IsTips    = unFiltItems[i].IsTips;
                        item.IsLogs    = unFiltItems[i].IsLogs;
                        if (info == null)
                        {
                            info = new List <ItemInfo>();
                        }
                        info.Add(item);
                    }
                }
                result = true;
            }
            else
            {
                result = false;
            }
            return(result);
        }
예제 #5
0
        public override int HandlePacket(GamePlayer player, GSPacketIn packet)
        {
            int      Place      = packet.ReadInt();
            int      Templateid = packet.ReadInt();
            ItemInfo Item       = player.HideBag.GetItemAt(0);
            int      result2;

            if (Place <= 0 || Templateid <= 0)
            {
                result2 = 0;
            }
            else
            {
                int NeedMoney = 500;
                if (player.PlayerCharacter.GiftToken < NeedMoney)
                {
                    result2 = 0;
                }
                else
                {
                    bool result = false;
                    int  Hole   = this.GetItemHole(Place, Item);
                    if (Hole == Templateid)
                    {
                        ItemTemplateInfo template = ItemMgr.FindItemTemplate(Templateid);
                        if (template != null)
                        {
                            ItemInfo item = ItemInfo.CreateFromTemplate(template, 1, 119);
                            if (item != null)
                            {
                                if (player.RemoveGiftToken(NeedMoney) == NeedMoney)
                                {
                                    item.IsBinds = true;
                                    result       = true;
                                    player.HideBag.UpdateItem(Item);
                                    if (!player.AddItem(item))
                                    {
                                        player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Game.Server.GameUtils.Title2", new object[0]));
                                        player.SendItemToMail(item, LanguageMgr.GetTranslation("DismountGemHandler.Full", new object[0]), item.Template.Name, eMailType.Default);
                                        player.Out.SendMailResponse(player.PlayerCharacter.ID, eMailRespose.Receiver);
                                    }
                                    else
                                    {
                                        player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("DismountGem.success", new object[0]));
                                    }
                                }
                            }
                        }
                    }
                    if (!result)
                    {
                        player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("DismountGem.Fail", new object[0]));
                    }
                    result2 = 0;
                }
            }
            return(result2);
        }
예제 #6
0
        private ItemInfo getitem(GameClient client, int type, string color, string skin, int id)
        {
            ConsortiaMgr.FindConsortiaInfo(client.Player.PlayerCharacter.ConsortiaID);
            ShopItemInfo shopItemInfoById = ShopMgr.GetShopItemInfoById(id);
            bool         flag             = false;
            ItemInfo     itemInfo         = null;

            if (shopItemInfoById != null)
            {
                itemInfo = ItemInfo.CreateFromTemplate(ItemMgr.FindItemTemplate(shopItemInfoById.TemplateID), 1, 102);
                if (shopItemInfoById.BuyType == 0)
                {
                    if (1 == type)
                    {
                        itemInfo.ValidDate = shopItemInfoById.AUnit;
                    }
                    if (2 == type)
                    {
                        itemInfo.ValidDate = shopItemInfoById.BUnit;
                    }
                    if (3 == type)
                    {
                        itemInfo.ValidDate = shopItemInfoById.CUnit;
                    }
                }
                else
                {
                    if (1 == type)
                    {
                        itemInfo.Count = shopItemInfoById.AUnit;
                    }
                    if (2 == type)
                    {
                        itemInfo.Count = shopItemInfoById.BUnit;
                    }
                    if (3 == type)
                    {
                        itemInfo.Count = shopItemInfoById.CUnit;
                    }
                }
                if (itemInfo != null || shopItemInfoById != null)
                {
                    itemInfo.Color = ((color == null) ? "" : color);
                    itemInfo.Skin  = ((skin == null) ? "" : skin);
                    if (flag)
                    {
                        itemInfo.IsBinds = true;
                        return(itemInfo);
                    }
                    itemInfo.IsBinds = Convert.ToBoolean(shopItemInfoById.IsBind);
                }
            }
            return(itemInfo);
        }
        public override bool CancelFinish(GamePlayer player)
        {
            ItemTemplateInfo itemTemplateInfo = ItemMgr.FindItemTemplate(this.m_info.Para1);

            if (itemTemplateInfo != null)
            {
                ItemInfo cloneItem = ItemInfo.CreateFromTemplate(itemTemplateInfo, this.m_info.Para2, 117);
                return(player.AddTemplate(cloneItem, eBageType.TempBag, this.m_info.Para2));
            }
            return(false);
        }
예제 #8
0
        public ItemInfo GetItemInfo()
        {
            ItemInfo itemInfo = null;

            if (this.SecondWeapon != 0)
            {
                itemInfo = ItemInfo.CreateFromTemplate(ItemMgr.FindItemTemplate(this.SecondWeapon), 1, 1);
                itemInfo.StrengthenLevel = this.StrengthLevel;
            }
            return(itemInfo);
        }
예제 #9
0
        public ItemInfo GetItemInfo()
        {
            ItemInfo item = null;

            if (this.SecondWeapon != 0)
            {
                ItemTemplateInfo secondWeaponTemp = ItemMgr.FindItemTemplate(this.SecondWeapon);
                item = ItemInfo.CreateFromTemplate(secondWeaponTemp, 1, 1);
                item.StrengthenLevel = this.StrengthLevel;
            }
            return(item);
        }
예제 #10
0
        /// <summary>
        /// 通过模板添加物品
        /// </summary>
        /// <param name="temp"></param>
        /// <param name="count"></param>
        /// <returns></returns>
        public int AddItemTemplate(ItemTemplateInfo temp, int count)
        {
            //ItemInfo info = new ItemInfo(temp);
            ItemInfo info = ItemInfo.CreateFromTemplate(temp, count);

            if (info == null)
            {
                return(-1);
            }
            ItemInfo.BuyItemDate(info, 0);
            info.UserID = _player.PlayerCharacter.ID;
            return(AddItem(info));
        }
예제 #11
0
        public static ItemInfo CreateItem(ShopItemInfo shopItem, int addtype, int valuetype, string color, string skin, bool isBinding)
        {
            if (shopItem == null)
            {
                throw new ArgumentNullException("shopItem");
            }
            ItemTemplateInfo template = ItemMgr.FindItemTemplate(shopItem.TemplateID);
            ItemInfo         item     = ItemInfo.CreateFromTemplate(template, 1, addtype);

            if (0 == shopItem.BuyType)
            {
                if (1 == valuetype)
                {
                    item.ValidDate = shopItem.AUnit;
                }
                if (2 == valuetype)
                {
                    item.ValidDate = shopItem.BUnit;
                }
                if (3 == valuetype)
                {
                    item.ValidDate = shopItem.CUnit;
                }
            }
            else
            {
                if (1 == valuetype)
                {
                    item.Count = shopItem.AUnit;
                }
                if (2 == valuetype)
                {
                    item.Count = shopItem.BUnit;
                }
                if (3 == valuetype)
                {
                    item.Count = shopItem.CUnit;
                }
            }
            item.Color = ((color == null) ? "" : color);
            item.Skin  = ((skin == null) ? "" : skin);
            if (isBinding)
            {
                item.IsBinds = true;
            }
            else
            {
                item.IsBinds = Convert.ToBoolean(shopItem.IsBind);
            }
            return(item);
        }
예제 #12
0
        public static List <ItemInfo> GetItemBoxAward(int DataId)
        {
            List <ItemBoxInfo> list  = ItemBoxMgr.FindItemBox(DataId);
            List <ItemInfo>    list2 = new List <ItemInfo>();

            foreach (ItemBoxInfo current in list)
            {
                ItemInfo itemInfo = ItemInfo.CreateFromTemplate(ItemMgr.FindItemTemplate(current.TemplateId), current.ItemCount, 105);
                itemInfo.IsBinds   = current.IsBind;
                itemInfo.ValidDate = current.ItemValid;
                list2.Add(itemInfo);
            }
            return(list2);
        }
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            PlayerInventory inventory = client.Player.GetInventory(eBageType.Store);
            PlayerInventory arg_19_0  = client.Player.PropBag;
            int             num       = 0;
            bool            isBinds   = true;

            for (int i = 1; i < 5; i++)
            {
                ItemInfo itemAt = inventory.GetItemAt(i);
                if (itemAt != null)
                {
                    inventory.RemoveItemAt(i);
                }
                if (itemAt.IsBinds)
                {
                    isBinds = true;
                }
                num += itemAt.Template.Quality;
            }
            int[] array = new int[]
            {
                7015,
                7016,
                7017,
                7018,
                7019,
                7021,
                7022,
                7023,
                7048,
                11041,
                15019,
                16015
            };
            Random   random     = new Random();
            int      num2       = random.Next(0, array.Length - 1);
            int      templateId = array[num2];
            ItemInfo itemInfo   = ItemInfo.CreateFromTemplate(ItemMgr.FindItemTemplate(templateId), 1, 105);

            itemInfo.IsBinds   = isBinds;
            itemInfo.BeginDate = DateTime.Now;
            if (itemInfo.Template.CategoryID != 11)
            {
                itemInfo.ValidDate = 7;
            }
            itemInfo.RemoveDate = DateTime.Now.AddDays(7.0);
            inventory.AddItemTo(itemInfo, 0);
            return(1);
        }
예제 #14
0
        /// <summary>
        /// 通过模板添加物品,成功返回ItemInfo实例,失败返回null。
        /// </summary>
        /// <param name="temp"></param>
        /// <returns></returns>
        public ItemInfo AddItemTemplate(ItemTemplateInfo temp)
        {
            ItemInfo info = ItemInfo.CreateFromTemplate(temp, 1);

            //info.Count = 1;
            if (AddItem(info) != -1)
            {
                return(info);
            }
            else
            {
                return(null);
            }
        }
예제 #15
0
        public override bool CancelFinish(GamePlayer player)
        {
            ItemTemplateInfo template = ItemMgr.FindItemTemplate(m_info.Para1);

            if (template != null)
            {
                ItemInfo item = ItemInfo.CreateFromTemplate(template, m_info.Para2, (int)ItemAddType.TurnProperty);
                return(player.AddTemplate(item, eBageType.TempBag, m_info.Para2));
            }
            else
            {
                return(false);
            }
        }
예제 #16
0
        public void RevertPetHandle(GameClient client, int place, string msg)
        {
            int num = Convert.ToInt32(PetMgr.FindConfig("RecycleCost").Value);

            if (client.Player.PlayerCharacter.Money >= num)
            {
                UsersPetinfo     petAt        = client.Player.PetBag.GetPetAt(place);
                UsersPetinfo     usersPetinfo = new UsersPetinfo();
                ItemTemplateInfo goods        = ItemMgr.FindItemTemplate(334100);
                ItemInfo         itemInfo     = ItemInfo.CreateFromTemplate(goods, 1, 0);
                itemInfo.IsBinds        = true;
                itemInfo.DefendCompose  = petAt.GP;
                itemInfo.AgilityCompose = petAt.MaxGP;
                if (!client.Player.PropBag.AddTemplate(itemInfo, 1))
                {
                    client.Player.SendItemToMail(itemInfo, LanguageMgr.GetTranslation("UserChangeItemPlaceHandler.full", new object[0]), LanguageMgr.GetTranslation("UserChangeItemPlaceHandler.full", new object[0]), eMailType.ItemOverdue);
                    client.Player.Out.SendMailResponse(client.Player.PlayerCharacter.ID, eMailRespose.Receiver);
                }
                int iD = petAt.ID;
                using (PlayerBussiness playerBussiness = new PlayerBussiness())
                {
                    usersPetinfo = playerBussiness.GetAdoptPetSingle(iD);
                }
                petAt.Blood   = usersPetinfo.Blood;
                petAt.Attack  = usersPetinfo.Attack;
                petAt.Defence = usersPetinfo.Defence;
                petAt.Agility = usersPetinfo.Agility;
                petAt.Luck    = usersPetinfo.Luck;
                int arg_158_0  = client.Player.PlayerCharacter.ID;
                int templateID = usersPetinfo.TemplateID;
                petAt.TemplateID = templateID;
                petAt.Skill      = usersPetinfo.Skill;
                petAt.SkillEquip = usersPetinfo.SkillEquip;
                petAt.GP         = 0;
                petAt.Level      = 1;
                petAt.MaxGP      = 55;
                bool flag = client.Player.PetBag.UpGracePet(petAt, place, false, 0, 0, ref msg);
                client.Player.SendMessage("Phục hồi thành công!");
                client.Player.RemoveMoney(num);
                if (flag)
                {
                    client.Player.Out.SendUpdatePetInfo(client.Player.PlayerCharacter, client.Player.PetBag.GetPets());
                    return;
                }
            }
            else
            {
                client.Player.SendMessage(msg);
            }
        }
예제 #17
0
        public override bool CancelFinish(GamePlayer player)
        {
            ItemTemplateInfo template = ItemMgr.FindItemTemplate(this.m_info.Para1);
            bool             result;

            if (template != null)
            {
                ItemInfo item = ItemInfo.CreateFromTemplate(template, this.m_info.Para2, 117);
                item.IsBinds = true;
                result       = player.AddTemplate(item, template.BagType, this.m_info.Para2);
            }
            else
            {
                result = false;
            }
            return(result);
        }
예제 #18
0
        public virtual bool GainFriendFields(int userId, int fieldId)
        {
            GamePlayer       playerById       = WorldMgr.GetPlayerById(userId);
            ItemTemplateInfo itemTemplateInfo = ItemMgr.FindItemTemplate(this.m_fields[fieldId].SeedID);
            ItemTemplateInfo goods            = ItemMgr.FindItemTemplate(itemTemplateInfo.Property4);
            ItemInfo         item             = ItemInfo.CreateFromTemplate(goods, 1, 102);
            List <ItemInfo>  list             = new List <ItemInfo>();

            this.AccelerateTimeFields();
            if (this.GetFieldAt(fieldId).isDig())
            {
                return(false);
            }
            object @lock;

            Monitor.Enter(@lock = this.m_lock);
            try
            {
                if (this.m_fields[fieldId].GainCount <= 9)
                {
                    bool result = false;
                    return(result);
                }
                this.m_fields[fieldId].GainCount--;
            }
            finally
            {
                Monitor.Exit(@lock);
            }
            if (!this.m_player.PropBag.StackItemToAnother(item) && !this.m_player.PropBag.AddItem(item))
            {
                list.Add(item);
            }
            if (playerById != null && playerById.Farm.Status == 1)
            {
                playerById.Farm.UpdateGainCount(fieldId, this.m_fields[fieldId].GainCount);
                playerById.Out.SendtoGather(playerById.PlayerCharacter, this.m_fields[fieldId]);
            }
            this.m_player.Out.SendtoGather(this.m_player.PlayerCharacter, this.m_fields[fieldId]);
            if (list.Count > 0)
            {
                this.m_player.SendItemsToMail(list, "Bagfull trả về thư!", "Bagfull trả về thư!", eMailType.ItemOverdue);
                this.m_player.Out.SendMailResponse(this.m_player.PlayerCharacter.ID, eMailRespose.Receiver);
            }
            return(true);
        }
예제 #19
0
        private static bool AddDailyAward(GamePlayer player, int getWay)
        {
            ItemInfo item = ItemInfo.CreateFromTemplate(ItemMgr.FindItemTemplate(100 + player.VIPLevel), 1, 0);

            item.IsBinds = true;
            if (player.AddItem(item))
            {
                player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("GameUserDailyAward.Success", new object[0]));
            }
            else
            {
                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", new object[]
                    {
                        item.Template.Name
                    });
                    message.Gold       = 0;
                    message.Money      = 0;
                    message.GiftToken  = 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", new object[]
                    {
                        item.Template.Name
                    });
                    message.Type = 15;
                    db.SendMail(message);
                    string full = LanguageMgr.GetTranslation("AwardMgr.AddDailyAward.Mail", new object[0]);
                    player.Out.SendMessage(eMessageType.Normal, full);
                    player.Out.SendMailResponse(player.PlayerCharacter.ID, eMailRespose.Receiver);
                }
            }

            return(true);
        }
예제 #20
0
        private void HandlePlayerAddTemplate1(GSPacketIn pkg)
        {
            GamePlayer player = WorldMgr.GetPlayerById(pkg.ClientID);

            if (player != null)
            {
                ItemTemplateInfo template = ItemMgr.FindItemTemplate(pkg.ReadInt());
                eBageType        type     = (eBageType)pkg.ReadByte();
                if (template != null)
                {
                    int      Count = pkg.ReadInt();
                    ItemInfo item  = ItemInfo.CreateFromTemplate(template, Count, (int)ItemAddType.FightGet);
                    item.Count     = Count;
                    item.ValidDate = pkg.ReadInt();
                    item.IsBinds   = pkg.ReadBoolean();
                    item.IsUsed    = pkg.ReadBoolean();
                    player.AddTemplate(item, type, item.Count);
                }
            }
        }
예제 #21
0
        private void HandlePlayerAddTemplate1(GSPacketIn pkg)
        {
            GamePlayer playerById = WorldMgr.GetPlayerById(pkg.ClientID);

            if (playerById != null)
            {
                ItemTemplateInfo itemTemplateInfo = ItemMgr.FindItemTemplate(pkg.ReadInt());
                eBageType        bagType          = (eBageType)pkg.ReadByte();
                if (itemTemplateInfo != null)
                {
                    int      count    = pkg.ReadInt();
                    ItemInfo itemInfo = ItemInfo.CreateFromTemplate(itemTemplateInfo, count, 118);
                    itemInfo.Count     = count;
                    itemInfo.ValidDate = pkg.ReadInt();
                    itemInfo.IsBinds   = pkg.ReadBoolean();
                    itemInfo.IsUsed    = pkg.ReadBoolean();
                    playerById.AddTemplate(itemInfo, bagType, itemInfo.Count);
                }
            }
        }
예제 #22
0
        public virtual bool GainField(int fieldId)
        {
            this.AccelerateTimeFields();
            if (this.GetFieldAt(fieldId).isDig())
            {
                return(false);
            }
            ItemTemplateInfo itemTemplateInfo = ItemMgr.FindItemTemplate(this.m_fields[fieldId].SeedID);
            ItemTemplateInfo goods            = ItemMgr.FindItemTemplate(itemTemplateInfo.Property4);
            ItemInfo         itemInfo         = ItemInfo.CreateFromTemplate(goods, 1, 102);
            List <ItemInfo>  list             = new List <ItemInfo>();

            itemInfo.Count = this.m_fields[fieldId].GainCount;
            if (base.killCropField(fieldId))
            {
                if (!this.m_player.PropBag.StackItemToAnother(itemInfo) && !this.m_player.PropBag.AddItem(itemInfo))
                {
                    list.Add(itemInfo);
                }
                this.m_player.Out.SendtoGather(this.m_player.PlayerCharacter, this.m_fields[fieldId]);
                foreach (int current in this.m_player.ViFarms)
                {
                    GamePlayer playerById = WorldMgr.GetPlayerById(current);
                    if (playerById != null && playerById.Farm.Status == current)
                    {
                        playerById.Out.SendtoGather(this.m_player.PlayerCharacter, this.m_fields[fieldId]);
                    }
                }
                this.m_player.OnCropPrimaryEvent();
                if (list.Count > 0)
                {
                    this.m_player.SendItemsToMail(list, "Bagfull trả về thư!", "Bagfull trả về thư!", eMailType.ItemOverdue);
                    this.m_player.Out.SendMailResponse(this.m_player.PlayerCharacter.ID, eMailRespose.Receiver);
                }
                return(true);
            }
            return(false);
        }
예제 #23
0
        public void SendGoodManCard(string receiverName, int receiverID, string senderName, int senderID, PlayerBussiness db)
        {
            ItemTemplateInfo goods    = ItemMgr.FindItemTemplate(11105);
            ItemInfo         itemInfo = ItemInfo.CreateFromTemplate(goods, 1, 112);

            itemInfo.IsBinds = true;
            itemInfo.UserID  = 0;
            db.AddGoods(itemInfo);
            db.SendMail(new MailInfo
            {
                Annex1     = itemInfo.ItemID.ToString(),
                Content    = LanguageMgr.GetTranslation("MarryApplyReplyHandler.Content", new object[0]),
                Gold       = 0,
                IsExist    = true,
                Money      = 0,
                Receiver   = receiverName,
                ReceiverID = receiverID,
                Sender     = senderName,
                SenderID   = senderID,
                Title      = LanguageMgr.GetTranslation("MarryApplyReplyHandler.Title", new object[0]),
                Type       = 14
            });
        }
예제 #24
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            int gold      = 0;       //表示金币
            int money     = 0;       //表示点券
            int offer     = 0;       //表示功勋
            int gifttoken = 0;       //表示礼劵
            int medal     = 0;
            //StringBuilder payGoods = new StringBuilder();          //表示支付物品ID
            int GoodsID = packet.ReadInt();                        //商品
            int type    = 1;                                       //购买类型



            ShopItemInfo shopItem = Bussiness.Managers.ShopMgr.GetShopItemInfoById(GoodsID);                   //获取商品信息

            if (shopItem == null)                                                                              //商品不存在
            {
                return(0);
            }

            ItemTemplateInfo prop = Bussiness.Managers.ItemMgr.FindItemTemplate(shopItem.TemplateID);         //获取物品模

            ItemInfo.SetItemType(shopItem, type, ref gold, ref money, ref offer, ref gifttoken, ref medal);   //获取购买价格及需要物品

            //eMessageType eMsg = eMessageType.Normal;
            //string msg = "UserBuyItemHandler.Success";

            if (prop.CategoryID == 10)
            {
                PlayerInfo pi = client.Player.PlayerCharacter;
                //未开始
                if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked && (money > 0 || offer > 0 || gifttoken > 0 || medal > 0))//GoodsID == 11408))
                {
                    client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked"));
                    return(0);
                }

                /*/////////////////////////////////////////////////////////////////////////////////////
                 * //玩家背包中是否有兑换物品所需要的物品
                 * 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";
                 *  client.Out.SendMessage(eMsg,LanguageMgr.GetTranslation(msg));
                 *  return 1;
                 * }
                 * ////////////////////////////////////////////////////////////*/

                if (gold <= pi.Gold && money <= (pi.Money < 0 ? 0 : pi.Money) && offer <= pi.Offer && gifttoken <= pi.GiftToken && medal <= pi.medal)
                {
                    ItemInfo info = ItemInfo.CreateFromTemplate(prop, 1, (int)ItemAddType.Buy);

                    ////////////////////////////////////////////////////////////////////////////////////////////////////
                    //判断有限期
                    if (0 == shopItem.BuyType)                              //时间购买类型
                    {
                        if (1 == type)
                        {
                            info.ValidDate = shopItem.AUnit;
                        }
                        if (2 == type)
                        {
                            info.ValidDate = shopItem.BUnit;
                        }
                        if (3 == type)
                        {
                            info.ValidDate = shopItem.CUnit;
                        }
                    }
                    else                                                  //数量购买类型
                    {
                        if (1 == type)
                        {
                            info.Count = shopItem.AUnit;
                        }
                        if (2 == type)
                        {
                            info.Count = shopItem.BUnit;
                        }
                        if (3 == type)
                        {
                            info.Count = shopItem.CUnit;
                        }
                    }
                    ////////////////////////////////////////////////////////////////////////////////////////////////////////

                    if (client.Player.FightBag.AddItem(info, 0))
                    {
                        client.Player.RemoveGold(gold);
                        client.Player.RemoveMoney(money);
                        client.Player.RemoveOffer(offer);
                        client.Player.RemoveGiftToken(gifttoken);
                        client.Player.RemoveMedal(medal);

                        /*//////////////////////////////////////////////////////////////////////////////////////////////////////////////
                         * //从玩家背包中删除兑换所需要的物品
                         * for (int j = 0; j < needitemsinfo.Count; j += 2)
                         * {
                         *  client.Player.RemoveTemplate(needitemsinfo[j], needitemsinfo[j + 1]);
                         *  payGoods.Append(needitemsinfo[j].ToString() + ":");
                         * }
                         * ////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
                        LogMgr.LogMoneyAdd(LogMoneyType.Shop, LogMoneyType.Shop_Buy, client.Player.PlayerCharacter.ID, money, client.Player.PlayerCharacter.Money, gold, 0, 0, 0, "牌子编号", prop.TemplateID.ToString(), type.ToString());
                    }
                }
                else
                {
                    client.Out.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation("PropBuyHandler.NoMoney"));
                }
            }
            return(0);
        }
예제 #25
0
파일: NTM1083.cs 프로젝트: uvbs/DDTank-3.0
        public override void OnNewTurnStarted()
        {
            List <ItemTemplateInfo> goods = new List <ItemTemplateInfo>();

            List <ItemInfo> items = new List <ItemInfo>();

            foreach (Player player in Game.GetAllFightPlayers())
            {
                foreach (SimpleNpc npc in Game.GetLivedLivings())
                {
                    if (npc.Distance(player.X, player.Y) <= 100)
                    {
                        canPlayMovie = true;
                    }
                }
            }

            if (Game.TurnIndex > 1 && Game.CurrentPlayer.Delay > Game.PveGameDelay)
            {
                for (int i = 0; i < 5; i++)
                {
                    if (SomeNpc.Count < 15)
                    {
                        SomeNpc.Add(Game.CreateNpc(201, (i + 1) * 100, 500, 1));
                    }
                    else
                    {
                        break;
                    }
                }
            }

            if (Game.CurrentPlayer.Delay < Game.PveGameDelay)
            {
                if (Tip.CurrentAction == "Empty")
                {
                    Tip.PlayMovie("tip1", 0, 3000);
                }
                if (preKillNum < Game.TotalKillCount && killCount < 2)
                {
                    killCount++;
                }

                if (killCount == 2)
                {
                    Tip.PlayMovie("tip2", 0, 2000);
                }

                if (canPlayMovie)
                {
                    Tip.PlayMovie("tip3", 0, 2000);
                }

                goods.Add(Bussiness.Managers.ItemMgr.FindItemTemplate(10001));
                goods.Add(Bussiness.Managers.ItemMgr.FindItemTemplate(10003));
                goods.Add(Bussiness.Managers.ItemMgr.FindItemTemplate(10018));

                foreach (ItemTemplateInfo info in goods)
                {
                    items.Add(ItemInfo.CreateFromTemplate(info, 1, 101));
                }

                foreach (Player player in Game.GetAllFightPlayers())
                {
                    player.CanGetProp = false;
                    player.PlayerDetail.ClearFightBag();
                    foreach (ItemInfo item in items)
                    {
                        player.PlayerDetail.AddTemplate(item, eBageType.FightBag, item.Count);
                    }
                }
            }
        }
예제 #26
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, 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);
        }
예제 #27
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            int          num              = 0;
            int          num2             = 0;
            int          num3             = 0;
            int          num4             = 0;
            int          num5             = 0;
            int          iD               = packet.ReadInt();
            int          num6             = 1;
            ShopItemInfo shopItemInfoById = ShopMgr.GetShopItemInfoById(iD);

            if (shopItemInfoById == null)
            {
                return(0);
            }
            ItemTemplateInfo itemTemplateInfo = ItemMgr.FindItemTemplate(shopItemInfoById.TemplateID);

            ItemInfo.SetItemType(shopItemInfoById, num6, ref num, ref num2, ref num3, ref num4, ref num5);
            if (itemTemplateInfo.CategoryID == 10)
            {
                PlayerInfo playerCharacter = client.Player.PlayerCharacter;
                if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked && (num2 > 0 || num3 > 0 || num4 > 0 || num5 > 0))
                {
                    client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked", new object[0]));
                    return(0);
                }
                if (num <= playerCharacter.Gold && num2 <= ((playerCharacter.Money < 0) ? 0 : playerCharacter.Money) && num3 <= playerCharacter.Offer && num4 <= playerCharacter.GiftToken && num5 <= playerCharacter.medal)
                {
                    ItemInfo itemInfo = ItemInfo.CreateFromTemplate(itemTemplateInfo, 1, 102);
                    if (shopItemInfoById.BuyType == 0)
                    {
                        if (1 == num6)
                        {
                            itemInfo.ValidDate = shopItemInfoById.AUnit;
                        }
                        if (2 == num6)
                        {
                            itemInfo.ValidDate = shopItemInfoById.BUnit;
                        }
                        if (3 == num6)
                        {
                            itemInfo.ValidDate = shopItemInfoById.CUnit;
                        }
                    }
                    else
                    {
                        if (1 == num6)
                        {
                            itemInfo.Count = shopItemInfoById.AUnit;
                        }
                        if (2 == num6)
                        {
                            itemInfo.Count = shopItemInfoById.BUnit;
                        }
                        if (3 == num6)
                        {
                            itemInfo.Count = shopItemInfoById.CUnit;
                        }
                    }
                    if (client.Player.FightBag.AddItem(itemInfo, 0))
                    {
                        client.Player.RemoveGold(num);
                        client.Player.RemoveMoney(num2);
                        client.Player.RemoveOffer(num3);
                        client.Player.RemoveGiftToken(num4);
                        client.Player.RemoveMedal(num5);
                        LogMgr.LogMoneyAdd(LogMoneyType.Shop, LogMoneyType.Shop_Buy, client.Player.PlayerCharacter.ID, num2, client.Player.PlayerCharacter.Money, num, 0, 0, 0, "牌子编号", itemTemplateInfo.TemplateID.ToString(), num6.ToString());
                    }
                }
                else
                {
                    client.Out.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation("PropBuyHandler.NoMoney", new object[0]));
                }
            }
            return(0);
        }
예제 #28
0
        private void receiveResult(GamePlayer player, GSPacketIn packet)
        {
            int num = packet.ReadInt();

            packet.ReadInt();
            ThreadSafeRandom threadSafeRandom = new ThreadSafeRandom();
            int num2;
            int num3;

            switch (num)
            {
            case 1:
                num2 = threadSafeRandom.Next(2, 13);
                num3 = DiceSystemMgr.MoneyXUDoi;
                break;

            case 2:
                num2 = threadSafeRandom.Next(4, 7);
                num3 = DiceSystemMgr.MoneyXULon;
                break;

            case 3:
                num2 = threadSafeRandom.Next(1, 4);
                num3 = DiceSystemMgr.MoneyXUNho;
                break;

            default:
                num2 = threadSafeRandom.Next(1, 7);
                num3 = DiceSystemMgr.MoneyMacDinh;
                break;
            }
            GSPacketIn gSPacketIn = new GSPacketIn(134);

            gSPacketIn.WriteByte(4);
            gSPacketIn.WriteInt(player.DicePlace.CurrentPosition);
            gSPacketIn.WriteInt(num2);
            player.DicePlace.CurrentPosition += num2;
            if (player.DicePlace.CurrentPosition > 18)
            {
                player.DicePlace.CurrentPosition -= 18;
            }
            int num4 = threadSafeRandom.Next(6, 9);

            player.DicePlace.LuckIntegral += num4;
            if (player.DicePlace.LuckIntegral > 50 && player.DicePlace.LuckIntegralLevel == -1)
            {
                player.DicePlace.LuckIntegralLevel = 0;
                ItemInfo itemInfo  = ItemInfo.CreateFromTemplate(ItemMgr.FindItemTemplate(11036), 1, 116);
                ItemInfo itemInfo2 = ItemInfo.CreateFromTemplate(ItemMgr.FindItemTemplate(200549), 1, 116);
                itemInfo.Count    = 1;
                itemInfo2.Count   = 1;
                itemInfo.IsBinds  = true;
                itemInfo2.IsBinds = true;
                player.AddItem(itemInfo);
                player.AddItem(itemInfo2);
            }
            if (player.DicePlace.LuckIntegral > 250 && player.DicePlace.LuckIntegralLevel == 0)
            {
                player.DicePlace.LuckIntegralLevel = 1;
                ItemInfo itemInfo3 = ItemInfo.CreateFromTemplate(ItemMgr.FindItemTemplate(40002), 1, 116);
                ItemInfo itemInfo4 = ItemInfo.CreateFromTemplate(ItemMgr.FindItemTemplate(200549), 1, 116);
                itemInfo3.Count   = 1;
                itemInfo4.Count   = 1;
                itemInfo3.IsBinds = true;
                itemInfo4.IsBinds = true;
                player.AddItem(itemInfo3);
                player.AddItem(itemInfo4);
            }
            gSPacketIn.WriteInt(player.DicePlace.LuckIntegral);
            gSPacketIn.WriteInt(player.DicePlace.LuckIntegralLevel);
            gSPacketIn.WriteInt(0);
            DiceSystemItem diceSystemItem = player.DicePlace.ItemDice[player.DicePlace.CurrentPosition];
            ItemInfo       itemInfo5      = ItemInfo.CreateFromTemplate(ItemMgr.FindItemTemplate(diceSystemItem.TemplateID), 1, 116);

            itemInfo5.IsBinds         = diceSystemItem.IsBind;
            itemInfo5.StrengthenLevel = diceSystemItem.StrengthLevel;
            itemInfo5.Count           = diceSystemItem.Count;
            itemInfo5.ValidDate       = diceSystemItem.Validate;
            gSPacketIn.WriteString(string.Concat(new object[]
            {
                itemInfo5.Template.Name,
                " x ",
                itemInfo5.Count,
                "."
            }));
            if (player.RemoveMoney(num3) == num3)
            {
                player.AddItem(itemInfo5);
            }
            player.Out.SendTCP(gSPacketIn);
        }
예제 #29
0
        /// <summary>
        /// 用户领奖
        /// </summary>
        /// <param name="quest"></param>
        /// <param name="rewardItemID"></param>
        /// <returns></returns>
        public bool Finish(BaseQuest baseQuest, int selectedItem)
        {
            //if (baseQuest.CanCompleted(m_player) == false)
            //    return false;

            #region 定义变量
            //提示用户
            string msg = "";
            //奖励Buff
            string        RewardBuffName = string.Empty;
            int           RewardBuffTime = 0;
            QuestInfo     qinfo          = baseQuest.Info;
            QuestDataInfo qdata          = baseQuest.Data;
            #endregion

            #region 从游戏中领取奖品
            m_player.BeginAllChanges();
            try
            {
                if (baseQuest.Finish(m_player))
                {
                    RemoveQuest(baseQuest);

                    //固定奖励&选择奖励
                    List <QuestAwardInfo> awards = QuestMgr.GetQuestGoods(qinfo);
                    List <ItemInfo>       mainBg = new List <ItemInfo>();
                    List <ItemInfo>       propBg = new List <ItemInfo>();
                    foreach (QuestAwardInfo award in awards)
                    {
                        //获取固定奖励 或者 已经选取的可选奖励
                        if (award.IsSelect == false || award.RewardItemID == selectedItem)
                        {
                            ItemTemplateInfo temp = Bussiness.Managers.ItemMgr.FindItemTemplate(award.RewardItemID);
                            if (temp != null)
                            {
                                msg = msg + LanguageMgr.GetTranslation("Game.Server.Quests.FinishQuest.RewardProp", temp.Name, award.RewardItemCount) + " ";
                                Int32 tempCount = award.RewardItemCount;
                                if (award.IsCount == true)
                                {
                                    tempCount = tempCount * qdata.RandDobule;
                                }

                                for (int len = 0; len < tempCount; len += temp.MaxCount)
                                {
                                    int      count = len + temp.MaxCount > award.RewardItemCount ? award.RewardItemCount - len : temp.MaxCount;
                                    ItemInfo item  = ItemInfo.CreateFromTemplate(temp, count, (int)ItemAddType.Quest);
                                    if (item == null)
                                    {
                                        continue;
                                    }
                                    item.ValidDate       = award.RewardItemValid;
                                    item.IsBinds         = true;
                                    item.StrengthenLevel = award.StrengthenLevel; //等级
                                    item.AttackCompose   = award.AttackCompose;   //攻击加成
                                    item.DefendCompose   = award.DefendCompose;   //防御加成
                                    item.AgilityCompose  = award.AgilityCompose;  //敏捷加成
                                    item.LuckCompose     = award.LuckCompose;     //幸运加成
                                    if (temp.BagType == eBageType.PropBag)
                                    {
                                        propBg.Add(item);
                                    }
                                    else
                                    {
                                        mainBg.Add(item);
                                    }
                                }
                            }
                        }
                    }

                    //判断背包的空位是否足够
                    if (mainBg.Count > 0 && m_player.MainBag.GetEmptyCount() < mainBg.Count)
                    {
                        baseQuest.CancelFinish(m_player);
                        m_player.Out.SendMessage(eMessageType.ERROR, m_player.GetInventoryName(eBageType.MainBag) + LanguageMgr.GetTranslation("Game.Server.Quests.BagFull") + " ");
                        return(false);
                    }
                    if (propBg.Count > 0 && m_player.PropBag.GetEmptyCount() < propBg.Count)
                    {
                        baseQuest.CancelFinish(m_player);
                        m_player.Out.SendMessage(eMessageType.ERROR, m_player.GetInventoryName(eBageType.PropBag) + LanguageMgr.GetTranslation("Game.Server.Quests.BagFull") + " ");
                        return(false);
                    }

                    //把物品放入背包
                    foreach (ItemInfo item in mainBg)
                    {
                        m_player.AddTemplate(item, eBageType.MainBag, 1);
                    }
                    foreach (ItemInfo item in propBg)
                    {
                        m_player.AddTemplate(item, eBageType.PropBag, 1);
                    }

                    msg = LanguageMgr.GetTranslation("Game.Server.Quests.FinishQuest.Reward") + msg;

                    //发放Buff
                    if ((qinfo.RewardBuffID > 0) && (qinfo.RewardBuffDate > 0))
                    {
                        ItemTemplateInfo temp = Bussiness.Managers.ItemMgr.FindItemTemplate(qinfo.RewardBuffID);
                        if (temp != null)
                        {
                            RewardBuffTime = qinfo.RewardBuffDate * qdata.RandDobule;
                            AbstractBuffer buffer = BufferList.CreateBufferHour(temp, RewardBuffTime);
                            buffer.Start(m_player);
                            msg = msg + LanguageMgr.GetTranslation("Game.Server.Quests.FinishQuest.RewardBuff", temp.Name, RewardBuffTime) + " ";
                        }
                    }

                    //奖励金币
                    if (qinfo.RewardGold != 0)
                    {
                        int rewardGold = qinfo.RewardGold * qdata.RandDobule;
                        m_player.AddGold(rewardGold);
                        msg = msg + LanguageMgr.GetTranslation("Game.Server.Quests.FinishQuest.RewardGold", rewardGold) + " ";
                    }
                    //奖励点卷
                    if (qinfo.RewardMoney != 0)
                    {
                        int rewardMoney = qinfo.RewardMoney * qdata.RandDobule;
                        m_player.AddMoney(qinfo.RewardMoney * qdata.RandDobule);
                        LogMgr.LogMoneyAdd(LogMoneyType.Award, LogMoneyType.Award_Quest, m_player.PlayerCharacter.ID, rewardMoney, m_player.PlayerCharacter.Money, 0, 0, 0, "", "", "");//添加日志
                        msg = msg + LanguageMgr.GetTranslation("Game.Server.Quests.FinishQuest.RewardMoney", rewardMoney) + " ";
                    }
                    //奖励GP
                    if (qinfo.RewardGP != 0)
                    {
                        int rewardGp = qinfo.RewardGP * qdata.RandDobule;
                        m_player.AddGP(rewardGp);
                        msg = msg + LanguageMgr.GetTranslation("Game.Server.Quests.FinishQuest.RewardGB1", rewardGp) + " ";
                    }
                    //有公会则奖励财富
                    if ((qinfo.RewardRiches != 0) && (m_player.PlayerCharacter.ConsortiaID != 0))
                    {
                        int riches = qinfo.RewardRiches * qdata.RandDobule;
                        m_player.AddRichesOffer(riches);
                        using (ConsortiaBussiness db = new ConsortiaBussiness())
                        {
                            db.ConsortiaRichAdd(m_player.PlayerCharacter.ConsortiaID, ref riches);
                        }
                        msg = msg + LanguageMgr.GetTranslation("Game.Server.Quests.FinishQuest.RewardRiches", riches) + " ";
                    }
                    //奖励功勋
                    if (qinfo.RewardOffer != 0)
                    {
                        int rewardOffer = qinfo.RewardOffer * qdata.RandDobule;
                        m_player.AddOffer(rewardOffer, false);
                        msg = msg + LanguageMgr.GetTranslation("Game.Server.Quests.FinishQuest.RewardOffer", rewardOffer) + " ";
                    }
                    //奖励礼劵
                    if (qinfo.RewardGiftToken != 0)
                    {
                        int rewardGiftToken = qinfo.RewardGiftToken * qdata.RandDobule;
                        m_player.AddGiftToken(rewardGiftToken);
                        msg = msg + LanguageMgr.GetTranslation("Game.Server.Quests.FinishQuest.RewardGiftToken", rewardGiftToken + " ");
                    }
                    m_player.Out.SendMessage(eMessageType.Normal, msg);
                    SetQuestFinish(baseQuest.Info.ID);
                    m_player.PlayerCharacter.QuestSite = m_states;
                }
                OnQuestsChanged(baseQuest);
            }
            catch (Exception ex)
            {
                if (log.IsErrorEnabled)
                {
                    log.Error("Quest Finish:" + ex);
                }
                return(false);
            }
            finally
            {
                m_player.CommitAllChanges();
            }
            #endregion
            return(true);
        }
예제 #30
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 pRICE_PROPOSE = GameProperties.PRICE_PROPOSE;

            if (player.CurrentMarryRoom.Info.IsHymeneal && player.PlayerCharacter.Money < pRICE_PROPOSE)
            {
                player.Out.SendMessage(eMessageType.ChatNormal, LanguageMgr.GetTranslation("UserFirecrackersCommand.MoneyNotEnough", new object[0]));
                return(false);
            }
            GamePlayer playerByUserID = player.CurrentMarryRoom.GetPlayerByUserID(player.CurrentMarryRoom.Info.GroomID);

            if (playerByUserID == null)
            {
                player.Out.SendMessage(eMessageType.ChatNormal, LanguageMgr.GetTranslation("HymenealCommand.NoGroom", new object[0]));
                return(false);
            }
            GamePlayer playerByUserID2 = player.CurrentMarryRoom.GetPlayerByUserID(player.CurrentMarryRoom.Info.BrideID);

            if (playerByUserID2 == null)
            {
                player.Out.SendMessage(eMessageType.ChatNormal, LanguageMgr.GetTranslation("HymenealCommand.NoBride", new object[0]));
                return(false);
            }
            bool       flag       = false;
            bool       flag2      = false;
            GSPacketIn gSPacketIn = packet.Clone();
            int        num        = packet.ReadInt();

            if (1 == num)
            {
                player.CurrentMarryRoom.RoomState = eRoomState.FREE;
            }
            else
            {
                player.CurrentMarryRoom.RoomState = eRoomState.Hymeneal;
                player.CurrentMarryRoom.BeginTimerForHymeneal(170000);
                if (!player.PlayerCharacter.IsGotRing)
                {
                    flag2 = true;
                    ItemTemplateInfo goods    = ItemMgr.FindItemTemplate(9022);
                    ItemInfo         itemInfo = ItemInfo.CreateFromTemplate(goods, 1, 112);
                    itemInfo.IsBinds = true;
                    using (PlayerBussiness playerBussiness = new PlayerBussiness())
                    {
                        itemInfo.UserID = 0;
                        playerBussiness.AddGoods(itemInfo);
                        string translation = LanguageMgr.GetTranslation("HymenealCommand.Content", new object[]
                        {
                            playerByUserID2.PlayerCharacter.NickName
                        });
                        MailInfo mailInfo = new MailInfo();
                        mailInfo.Annex1     = itemInfo.ItemID.ToString();
                        mailInfo.Content    = translation;
                        mailInfo.Gold       = 0;
                        mailInfo.IsExist    = true;
                        mailInfo.Money      = 0;
                        mailInfo.Receiver   = playerByUserID.PlayerCharacter.NickName;
                        mailInfo.ReceiverID = playerByUserID.PlayerCharacter.ID;
                        mailInfo.Sender     = LanguageMgr.GetTranslation("HymenealCommand.Sender", new object[0]);
                        mailInfo.SenderID   = 0;
                        mailInfo.Title      = LanguageMgr.GetTranslation("HymenealCommand.Title", new object[0]);
                        mailInfo.Type       = 14;
                        if (playerBussiness.SendMail(mailInfo))
                        {
                            flag = true;
                        }
                        player.Out.SendMailResponse(mailInfo.ReceiverID, eMailRespose.Receiver);
                    }
                    ItemInfo itemInfo2 = ItemInfo.CreateFromTemplate(goods, 1, 112);
                    itemInfo2.IsBinds = true;
                    using (PlayerBussiness playerBussiness2 = new PlayerBussiness())
                    {
                        itemInfo2.UserID = 0;
                        playerBussiness2.AddGoods(itemInfo2);
                        string translation2 = LanguageMgr.GetTranslation("HymenealCommand.Content", new object[]
                        {
                            playerByUserID.PlayerCharacter.NickName
                        });
                        MailInfo mailInfo2 = new MailInfo();
                        mailInfo2.Annex1     = itemInfo2.ItemID.ToString();
                        mailInfo2.Content    = translation2;
                        mailInfo2.Gold       = 0;
                        mailInfo2.IsExist    = true;
                        mailInfo2.Money      = 0;
                        mailInfo2.Receiver   = playerByUserID2.PlayerCharacter.NickName;
                        mailInfo2.ReceiverID = playerByUserID2.PlayerCharacter.ID;
                        mailInfo2.Sender     = LanguageMgr.GetTranslation("HymenealCommand.Sender", new object[0]);
                        mailInfo2.SenderID   = 0;
                        mailInfo2.Title      = LanguageMgr.GetTranslation("HymenealCommand.Title", new object[0]);
                        mailInfo2.Type       = 14;
                        if (playerBussiness2.SendMail(mailInfo2))
                        {
                            flag = true;
                        }
                        player.Out.SendMailResponse(mailInfo2.ReceiverID, eMailRespose.Receiver);
                    }
                    player.CurrentMarryRoom.Info.IsHymeneal = true;
                    using (PlayerBussiness playerBussiness3 = new PlayerBussiness())
                    {
                        playerBussiness3.UpdateMarryRoomInfo(player.CurrentMarryRoom.Info);
                        playerBussiness3.UpdatePlayerGotRingProp(playerByUserID.PlayerCharacter.ID, playerByUserID2.PlayerCharacter.ID);
                        playerByUserID.LoadMarryProp();
                        playerByUserID2.LoadMarryProp();
                        goto IL_429;
                    }
                }
                flag2 = false;
                flag  = true;
IL_429:
                if (!flag2)
                {
                    player.RemoveMoney(pRICE_PROPOSE);
                    LogMgr.LogMoneyAdd(LogMoneyType.Marry, LogMoneyType.Marry_Hymeneal, player.PlayerCharacter.ID, pRICE_PROPOSE, player.PlayerCharacter.Money, 0, 0, 0, 0, "", "", "");
                    CountBussiness.InsertSystemPayCount(player.PlayerCharacter.ID, pRICE_PROPOSE, 0, 0, 1);
                }
                gSPacketIn.WriteInt(player.CurrentMarryRoom.Info.ID);
                gSPacketIn.WriteBoolean(flag);
                player.CurrentMarryRoom.SendToAll(gSPacketIn);
                if (flag)
                {
                    string translation3 = LanguageMgr.GetTranslation("HymenealCommand.Succeed", new object[]
                    {
                        playerByUserID.PlayerCharacter.NickName,
                        playerByUserID2.PlayerCharacter.NickName
                    });
                    GSPacketIn packet2 = player.Out.SendMessage(eMessageType.ChatNormal, translation3);
                    player.CurrentMarryRoom.SendToPlayerExceptSelfForScene(packet2, player);
                }
            }
            return(true);
        }