public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            bool result = packet.ReadBoolean();
            int UserID = packet.ReadInt();
            int AnswerId = packet.ReadInt();   //答复对话框ID
            //先判断自已有没有结婚
            if (result && client.Player.PlayerCharacter.IsMarried)
            {
                client.Player.Out.SendMessage(eMessageType.ChatERROR, LanguageMgr.GetTranslation("MarryApplyReplyHandler.Msg2"));                
            }

            using (PlayerBussiness db = new PlayerBussiness())
            {
                PlayerInfo tempSpouse = db.GetUserSingleByUserID(UserID);
                //发送好人卡
                if (!result)
                {
                    SendGoodManCard(tempSpouse.NickName, tempSpouse.ID, client.Player.PlayerCharacter.NickName, client.Player.PlayerCharacter.ID, db);
                    GameServer.Instance.LoginServer.SendUpdatePlayerMarriedStates(tempSpouse.ID);                    
                }

                //判断对方有没有结婚                
                if (tempSpouse == null || tempSpouse.Sex == client.Player.PlayerCharacter.Sex)
                {
                    return 1;
                }
                if (tempSpouse.IsMarried)
                {
                    client.Player.Out.SendMessage(eMessageType.ChatNormal, LanguageMgr.GetTranslation("MarryApplyReplyHandler.Msg3"));
                }

                MarryApplyInfo info = new MarryApplyInfo();
                info.UserID = UserID;
                info.ApplyUserID = client.Player.PlayerCharacter.ID;
                info.ApplyUserName = client.Player.PlayerCharacter.NickName;
                info.ApplyType = 2;
                info.LoveProclamation = "";
                info.ApplyResult = result;
                int id = 0;
                if (db.SavePlayerMarryNotice(info, AnswerId, ref id))
                {
                    if (result)
                    {                        
                        client.Player.Out.SendMarryApplyReply(client.Player, tempSpouse.ID, tempSpouse.NickName, result, false, id);
                        client.Player.LoadMarryProp();
                        SendSYSMessages(client.Player, tempSpouse);
                    }
                    GameServer.Instance.LoginServer.SendUpdatePlayerMarriedStates(tempSpouse.ID);
                    return 0;
                }
            }
            return 1;
        }
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            if (!client.Player.PlayerCharacter.IsMarried)
            {
                return 1;
            }

            if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked)
            {

                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked"));
                return 0;
            }

            if(client.Player.PlayerCharacter.IsCreatedMarryRoom)
            {
                client.Player.Out.SendMessage(eMessageType.ChatNormal, LanguageMgr.GetTranslation("DivorceApplyHandler.Msg2"));
                return 1;

            }

            int needMoney = GameProperties.PRICE_DIVORCED;
            if (client.Player.PlayerCharacter.Money < needMoney)
            {
                client.Player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("DivorceApplyHandler.Msg1"));
                return 1;
            }
            else
            {
                client.Player.RemoveMoney(needMoney);
                LogMgr.LogMoneyAdd(LogMoneyType.Marry, LogMoneyType.Marry_Unmarry, client.Player.PlayerCharacter.ID, needMoney, client.Player.PlayerCharacter.Money, 0, 0, 0,0, "", "", "");
                CountBussiness.InsertSystemPayCount(client.Player.PlayerCharacter.ID, needMoney, 0, (int)eConsumerType.Marry, (int)eSubConsumerType.Marry_Divorce);

                using (PlayerBussiness db = new PlayerBussiness())
                {
                    PlayerInfo tempSpouse = db.GetUserSingleByUserID(client.Player.PlayerCharacter.SpouseID);
                    if (tempSpouse == null || tempSpouse.Sex == client.Player.PlayerCharacter.Sex)
                    {
                        return 1;
                    }

                    MarryApplyInfo info = new MarryApplyInfo();
                    info.UserID = client.Player.PlayerCharacter.SpouseID;
                    info.ApplyUserID = client.Player.PlayerCharacter.ID;
                    info.ApplyUserName = client.Player.PlayerCharacter.NickName;
                    info.ApplyType = 3;
                    info.LoveProclamation = "";
                    info.ApplyResult = false;
                    int id = 0;
                    if (db.SavePlayerMarryNotice(info,0, ref id))
                    {
                        GameServer.Instance.LoginServer.SendUpdatePlayerMarriedStates(tempSpouse.ID);
                        client.Player.LoadMarryProp();
                    }
                }

                client.Player.QuestInventory.ClearMarryQuest(); //离婚后清除结婚后任务.
                client.Player.Out.SendPlayerDivorceApply(client.Player, true,true);
                client.Player.SendMessage(LanguageMgr.GetTranslation("DivorceApplyHandler.Msg3"));
            }

            return 0;
        }
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            //判断是否结婚
            if(client.Player.PlayerCharacter.IsMarried)  
            {
                return 1;
            }
            //是否有二级密码
            if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked)
            {
                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked"));
                return 1;
            }
            //开始求婚,购买戒指
            int SpouseID = packet.ReadInt();
            string loveProclamation = packet.ReadString();
            bool Broadcast = packet.ReadBoolean();
            bool result = false;
            bool removeRing = true;
            string SpouseName = "";
            using (PlayerBussiness db = new PlayerBussiness())
            {
                PlayerInfo tempSpouse = db.GetUserSingleByUserID(SpouseID);
                if (tempSpouse == null || tempSpouse.Sex == client.Player.PlayerCharacter.Sex)
                {
                    return 1;
                }
                if (tempSpouse.IsMarried)
                {
                    client.Player.Out.SendMessage(eMessageType.ChatNormal, LanguageMgr.GetTranslation("MarryApplyHandler.Msg2"));
                    return 1;
                }
                ItemInfo WeddingRing = client.Player.PropBag.GetItemByTemplateID(0,11103);
                if (WeddingRing == null)
                {                    
                    ShopItemInfo tempRing = ShopMgr.FindShopbyTemplatID(11103).FirstOrDefault();
                    if (tempRing != null)
                    {
                        //玩家身上钱是否足够。
                        if (client.Player.PlayerCharacter.Money >= tempRing.AValue1)
                        {
                            removeRing = false;
                        }
                        else
                        {
                            client.Player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("MarryApplyHandler.Msg1"));
                            return 1;
                        }
                    }
                    else
                    {
                        client.Player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("MarryApplyHandler.Msg6"));
                        return 1;
                    }
                }
                //插入结婚消息
                MarryApplyInfo info = new MarryApplyInfo();
                info.UserID = SpouseID;
                info.ApplyUserID = client.Player.PlayerCharacter.ID;
                info.ApplyUserName = client.Player.PlayerCharacter.NickName;
                info.ApplyType = 1;
                info.LoveProclamation = loveProclamation;
                info.ApplyResult = false;
                int id=0;
                if (db.SavePlayerMarryNotice(info,0,ref id))
                {
                    if (removeRing)
                    {
                        client.Player.RemoveItem(WeddingRing);
                    }
                    else
                    {
                        //未开始                        
                        ShopItemInfo tempRing = ShopMgr.FindShopbyTemplatID(11103).FirstOrDefault();
                        client.Player.RemoveMoney(tempRing.AValue1);
                        LogMgr.LogMoneyAdd(LogMoneyType.Marry, LogMoneyType.Marry_Spark, client.Player.PlayerCharacter.ID, tempRing.AValue1, client.Player.PlayerCharacter.Money, 0, 0, 0, "", tempRing.TemplateID.ToString(), "1");
                    }
                    client.Player.Out.SendPlayerMarryApply(client.Player, client.Player.PlayerCharacter.ID, client.Player.PlayerCharacter.NickName, loveProclamation,id);  //发送求婚信息
                    //发送消息给中心服务器
                    GameServer.Instance.LoginServer.SendUpdatePlayerMarriedStates(SpouseID);
                    SpouseName = tempSpouse.NickName;
                    result = true;

                    client.Player.Out.SendMessage(eMessageType.ChatNormal, LanguageMgr.GetTranslation("MarryApplyHandler.Msg3"));
                }

            }
            if (result && Broadcast && SpouseName != "")
            {
                string msg = LanguageMgr.GetTranslation("MarryApplyHandler.Msg5", client.Player.PlayerCharacter.NickName, SpouseName);
                GSPacketIn pkg = new GSPacketIn((byte)ePackageType.SYS_NOTICE);
                pkg.WriteInt(2);
                pkg.WriteString(msg);
                GameServer.Instance.LoginServer.SendPacket(pkg);
                GamePlayer[] players = WorldMgr.GetAllPlayers();
                foreach (GamePlayer p in players)
                {
                    p.Out.SendTCP(pkg);
                }
            }           
            return 0;
        }
示例#4
0
 public bool SavePlayerMarryNotice(MarryApplyInfo info, int answerId, ref int id)
 {
     bool flag = false;
     try
     {
         SqlParameter[] SqlParameters = new SqlParameter[9]
     {
       new SqlParameter("@UserID", (object) info.UserID),
       new SqlParameter("@ApplyUserID", (object) info.ApplyUserID),
       new SqlParameter("@ApplyUserName", (object) info.ApplyUserName),
       new SqlParameter("@ApplyType", (object) info.ApplyType),
       new SqlParameter("@ApplyResult", (object) (int) (info.ApplyResult ? 1 : 0)),
       new SqlParameter("@LoveProclamation", (object) info.LoveProclamation),
       new SqlParameter("@AnswerId", (object) answerId),
       new SqlParameter("@ouototal", SqlDbType.Int),
       null
     };
         SqlParameters[7].Direction = ParameterDirection.Output;
         SqlParameters[8] = new SqlParameter("@Result", SqlDbType.Int);
         SqlParameters[8].Direction = ParameterDirection.ReturnValue;
         this.db.RunProcedure("SP_Insert_Marry_Notice", SqlParameters);
         id = (int)SqlParameters[7].Value;
         flag = (int)SqlParameters[8].Value == 0;
     }
     catch (Exception ex)
     {
         if (BaseBussiness.log.IsErrorEnabled)
             BaseBussiness.log.Error((object)"SavePlayerMarryNotice", ex);
     }
     return flag;
 }
示例#5
0
 public bool InsertPlayerMarryApply(MarryApplyInfo info)
 {
     bool flag = false;
     try
     {
         SqlParameter[] SqlParameters = new SqlParameter[7]
     {
       new SqlParameter("@UserID", (object) info.UserID),
       new SqlParameter("@ApplyUserID", (object) info.ApplyUserID),
       new SqlParameter("@ApplyUserName", (object) info.ApplyUserName),
       new SqlParameter("@ApplyType", (object) info.ApplyType),
       new SqlParameter("@ApplyResult", (object) (int) (info.ApplyResult ? 1 : 0)),
       new SqlParameter("@LoveProclamation", (object) info.LoveProclamation),
       new SqlParameter("@Result", SqlDbType.Int)
     };
         SqlParameters[6].Direction = ParameterDirection.ReturnValue;
         this.db.RunProcedure("SP_Insert_Marry_Apply", SqlParameters);
         flag = (int)SqlParameters[6].Value == 0;
     }
     catch (Exception ex)
     {
         if (BaseBussiness.log.IsErrorEnabled)
             BaseBussiness.log.Error((object)"InsertPlayerMarryApply", ex);
     }
     return flag;
 }
示例#6
0
        public bool SavePlayerMarryNotice(MarryApplyInfo info, int answerId, ref int id)
        {
            bool result = false;
            try
            {
                SqlParameter[] para = new SqlParameter[9];
                para[0] = new SqlParameter("@UserID", info.UserID);
                para[1] = new SqlParameter("@ApplyUserID", info.ApplyUserID);
                para[2] = new SqlParameter("@ApplyUserName", info.ApplyUserName);
                para[3] = new SqlParameter("@ApplyType", info.ApplyType);
                para[4] = new SqlParameter("@ApplyResult", info.ApplyResult);
                para[5] = new SqlParameter("@LoveProclamation", info.LoveProclamation);
                para[6] = new SqlParameter("@AnswerId", answerId);
                para[7] = new SqlParameter("@ouototal", System.Data.SqlDbType.Int);
                para[7].Direction = ParameterDirection.Output;
                para[8] = new SqlParameter("@Result", System.Data.SqlDbType.Int);
                para[8].Direction = ParameterDirection.ReturnValue;


                db.RunProcedure("SP_Insert_Marry_Notice", para);
                id = (int)para[7].Value;
                result = (int)para[8].Value == 0;


            }
            catch (Exception e)
            {
                if (log.IsErrorEnabled)
                    log.Error("SavePlayerMarryNotice", e);
            }

            return result;
        }
示例#7
0
        public MarryApplyInfo[] GetPlayerMarryApply(int UserID)
        {
            SqlDataReader reader = null;
            List<MarryApplyInfo> infos = new List<MarryApplyInfo>();
            try
            {
                SqlParameter[] para = new SqlParameter[1];
                para[0] = new SqlParameter("@UserID", UserID);

                db.GetReader(ref reader, "SP_Get_Marry_Apply", para);
                while (reader.Read())
                {
                    MarryApplyInfo info = new MarryApplyInfo();
                    info.UserID = (int)reader["UserID"];
                    info.ApplyUserID = (int)reader["ApplyUserID"];
                    info.ApplyUserName = reader["ApplyUserName"].ToString();
                    info.ApplyType = (int)reader["ApplyType"];
                    info.ApplyResult = (bool)reader["ApplyResult"];
                    info.LoveProclamation = reader["LoveProclamation"].ToString();
                    info.ID = (int)reader["Id"];
                    infos.Add(info);
                }

                return infos.ToArray();
            }
            catch (Exception e)
            {
                if (log.IsErrorEnabled)
                    log.Error("GetPlayerMarryApply", e);
            }
            finally
            {
                if (reader != null && !reader.IsClosed)
                    reader.Close();
            }

            return null;
        }
示例#8
0
        public bool InsertPlayerMarryApply(MarryApplyInfo info)
        {
            bool result = false;
            try
            {
                SqlParameter[] para = new SqlParameter[7];
                para[0] = new SqlParameter("@UserID", info.UserID);
                para[1] = new SqlParameter("@ApplyUserID", info.ApplyUserID);
                para[2] = new SqlParameter("@ApplyUserName", info.ApplyUserName);
                para[3] = new SqlParameter("@ApplyType", info.ApplyType);
                para[4] = new SqlParameter("@ApplyResult", info.ApplyResult);
                para[5] = new SqlParameter("@LoveProclamation", info.LoveProclamation);
                para[6] = new SqlParameter("@Result", System.Data.SqlDbType.Int);
                para[6].Direction = ParameterDirection.ReturnValue;
                db.RunProcedure("SP_Insert_Marry_Apply", para);
                result = (int)para[6].Value == 0;

            }
            catch (Exception e)
            {
                if (log.IsErrorEnabled)
                    log.Error("InsertPlayerMarryApply", e);
            }

            return result;
        }