示例#1
0
        public void HandleMarryRoomDispose(GSPacketIn packet)
        {
            int roomId = packet.ReadInt();

            MarryRoom[] rooms = MarryRoomMgr.GetAllMarryRoom();
            MarryRoom[] array = rooms;
            for (int i = 0; i < array.Length; i++)
            {
                MarryRoom room = array[i];
                if (room.Info.ID == roomId)
                {
                    room.KillAllPlayer();
                    MarryRoomMgr.RemoveMarryRoom(room);
                    GSPacketIn pkg = new GSPacketIn(254);
                    pkg.WriteInt(roomId);
                    WorldMgr.MarryScene.SendToALL(pkg);
                    room.StopTimer();
                    GSPacketIn pkg2 = new GSPacketIn(249);
                    pkg2.WriteByte(9);
                    room.SendToAll(pkg2);
                    room.StopTimerForHymeneal();
                    room.SendUserRemoveLate();
                    room.SendMarryRoomInfoUpdateToScenePlayers(room);
                }
            }
        }
 public int HandlePacket(GameClient client, GSPacketIn packet)
 {
     if (client.Player.CurrentMarryRoom != null && client.Player.PlayerCharacter.ID == client.Player.CurrentMarryRoom.Info.PlayerID)
     {
         string    name             = packet.ReadString();
         bool      flag             = packet.ReadBoolean();
         string    pwd              = packet.ReadString();
         string    roomIntroduction = packet.ReadString();
         MarryRoom currentMarryRoom = client.Player.CurrentMarryRoom;
         currentMarryRoom.Info.RoomIntroduction = roomIntroduction;
         currentMarryRoom.Info.Name             = name;
         if (flag)
         {
             currentMarryRoom.Info.Pwd = pwd;
         }
         using (PlayerBussiness playerBussiness = new PlayerBussiness())
         {
             playerBussiness.UpdateMarryRoomInfo(currentMarryRoom.Info);
         }
         currentMarryRoom.SendMarryRoomInfoUpdateToScenePlayers(currentMarryRoom);
         client.Player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("MarryRoomInfoUpdateHandler.Successed", new object[0]));
         return(0);
     }
     return(1);
 }
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            if (client.Player.CurrentMarryRoom != null && client.Player.PlayerCharacter.ID == client.Player.CurrentMarryRoom.Info.PlayerID)
            {
                string roomName = packet.ReadString();

                bool isPwdChanged = packet.ReadBoolean();

                string pwd = packet.ReadString();

                string introduction = packet.ReadString();

                MarryRoom room = client.Player.CurrentMarryRoom;

                room.Info.RoomIntroduction = introduction;
                room.Info.Name             = roomName;
                if (isPwdChanged)
                {
                    room.Info.Pwd = pwd;
                }


                using (PlayerBussiness db = new PlayerBussiness())
                {
                    db.UpdateMarryRoomInfo(room.Info);
                }

                room.SendMarryRoomInfoUpdateToScenePlayers(room);

                client.Player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("MarryRoomInfoUpdateHandler.Successed"));
                return(0);
            }

            return(1);
        }
示例#4
0
        public override int HandlePacket(GamePlayer player, GSPacketIn packet)
        {
            int result;

            if (player.CurrentMarryRoom != null && player.PlayerCharacter.ID == player.CurrentMarryRoom.Info.PlayerID)
            {
                string    roomName     = packet.ReadString();
                bool      isPwdChanged = packet.ReadBoolean();
                string    pwd          = packet.ReadString();
                string    introduction = packet.ReadString();
                MarryRoom room         = player.CurrentMarryRoom;
                room.Info.RoomIntroduction = introduction;
                room.Info.Name             = roomName;
                if (isPwdChanged)
                {
                    room.Info.Pwd = pwd;
                }
                using (PlayerBussiness db = new PlayerBussiness())
                {
                    db.UpdateMarryRoomInfo(room.Info);
                }
                room.SendMarryRoomInfoUpdateToScenePlayers(room);
                player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("MarryRoomInfoUpdateHandler.Successed", new object[0]));
                result = 0;
            }
            else
            {
                result = 1;
            }
            return(result);
        }
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            GSPacketIn gSPacketIn = new GSPacketIn(240, client.Player.PlayerCharacter.ID);

            if (WorldMgr.MarryScene.AddPlayer(client.Player))
            {
                gSPacketIn.WriteBoolean(true);
            }
            else
            {
                gSPacketIn.WriteBoolean(false);
            }
            client.Out.SendTCP(gSPacketIn);
            if (client.Player.CurrentMarryRoom == null)
            {
                MarryRoom[] allMarryRoom = MarryRoomMgr.GetAllMarryRoom();
                MarryRoom[] array        = allMarryRoom;
                for (int i = 0; i < array.Length; i++)
                {
                    MarryRoom room = array[i];
                    client.Player.Out.SendMarryRoomInfo(client.Player, room);
                }
            }
            return(0);
        }
示例#6
0
        public static MarryRoom GetMarryRoombyID(int id, string pwd, ref string msg)
        {
            MarryRoom room = null;

            _locker.AcquireReaderLock();
            try
            {
                if (id > 0)
                {
                    if (_Rooms.Keys.Contains(id))
                    {
                        if (_Rooms[id].Info.Pwd != pwd)
                        {
                            msg = "Game.Server.Managers.PWDError";
                        }
                        else
                        {
                            room = _Rooms[id];
                        }
                    }
                }
            }
            finally
            {
                _locker.ReleaseReaderLock();
            }
            return(room);
        }
示例#7
0
        public override int HandlePacket(GamePlayer player, GSPacketIn packet)
        {
            GSPacketIn pkg = packet.Clone();

            if (WorldMgr.MarryScene.AddPlayer(player))
            {
                pkg.WriteBoolean(true);
            }
            else
            {
                pkg.WriteBoolean(false);
            }
            player.Out.SendTCP(pkg);
            if (player.CurrentMarryRoom == null)
            {
                MarryRoom[] list  = MarryRoomMgr.GetAllMarryRoom();
                MarryRoom[] array = list;
                for (int i = 0; i < array.Length; i++)
                {
                    MarryRoom g = array[i];
                    player.Out.SendMarryRoomInfo(player, g);
                }
            }
            return(0);
        }
示例#8
0
        public static MarryRoom CreateMarryRoom(GamePlayer player, MarryRoomInfo info)
        {
            if (!player.PlayerCharacter.IsMarried)
            {
                return(null);
            }
            MarryRoom marryRoom = null;
            DateTime  now       = DateTime.Now;

            info.PlayerID   = player.PlayerCharacter.ID;
            info.PlayerName = player.PlayerCharacter.NickName;
            if (player.PlayerCharacter.Sex)
            {
                info.GroomID   = info.PlayerID;
                info.GroomName = info.PlayerName;
                info.BrideID   = player.PlayerCharacter.SpouseID;
                info.BrideName = player.PlayerCharacter.SpouseName;
            }
            else
            {
                info.BrideID   = info.PlayerID;
                info.BrideName = info.PlayerName;
                info.GroomID   = player.PlayerCharacter.SpouseID;
                info.GroomName = player.PlayerCharacter.SpouseName;
            }
            info.BeginTime = now;
            info.BreakTime = now;
            using (PlayerBussiness playerBussiness = new PlayerBussiness())
            {
                if (playerBussiness.InsertMarryRoomInfo(info))
                {
                    marryRoom = new MarryRoom(info, MarryRoomMgr._processor);
                    GameServer.Instance.LoginServer.SendUpdatePlayerMarriedStates(info.GroomID);
                    GameServer.Instance.LoginServer.SendUpdatePlayerMarriedStates(info.BrideID);
                    GameServer.Instance.LoginServer.SendMarryRoomInfoToPlayer(info.GroomID, true, info);
                    GameServer.Instance.LoginServer.SendMarryRoomInfoToPlayer(info.BrideID, true, info);
                }
            }
            if (marryRoom != null)
            {
                MarryRoomMgr._locker.AcquireWriterLock();
                try
                {
                    MarryRoomMgr._Rooms.Add(marryRoom.Info.ID, marryRoom);
                }
                finally
                {
                    MarryRoomMgr._locker.ReleaseWriterLock();
                }
                if (marryRoom.AddPlayer(player))
                {
                    marryRoom.BeginTimer(3600000 * marryRoom.Info.AvailTime);
                    return(marryRoom);
                }
            }
            return(null);
        }
示例#9
0
 public static MarryRoom[] GetAllMarryRoom()
 {
     MarryRoom[] list = null;
     _locker.AcquireReaderLock();
     try
     {
         list = new MarryRoom[_Rooms.Count];
         _Rooms.Values.CopyTo(list, 0);
     }
     finally
     {
         _locker.ReleaseReaderLock();
     }
     return(list == null ? new MarryRoom[0] : list);
 }
示例#10
0
 public static void RemoveMarryRoom(MarryRoom room)
 {
     _locker.AcquireReaderLock();
     try
     {
         if (_Rooms.Keys.Contains(room.Info.ID))
         {
             _Rooms.Remove(room.Info.ID);
         }
     }
     finally
     {
         _locker.ReleaseReaderLock();
     }
 }
示例#11
0
 public static MarryRoom[] GetAllMarryRoom()
 {
     MarryRoom[] array = null;
     MarryRoomMgr._locker.AcquireReaderLock();
     try
     {
         array = new MarryRoom[MarryRoomMgr._Rooms.Count];
         MarryRoomMgr._Rooms.Values.CopyTo(array, 0);
     }
     finally
     {
         MarryRoomMgr._locker.ReleaseReaderLock();
     }
     if (array != null)
     {
         return(array);
     }
     return(new MarryRoom[0]);
 }
示例#12
0
 public static MarryRoom CreateMarryRoomFromDB(MarryRoomInfo roomInfo, int timeLeft)
 {
     MarryRoomMgr._locker.AcquireWriterLock();
     try
     {
         MarryRoom marryRoom = new MarryRoom(roomInfo, MarryRoomMgr._processor);
         if (marryRoom != null)
         {
             MarryRoomMgr._Rooms.Add(marryRoom.Info.ID, marryRoom);
             marryRoom.BeginTimer(60000 * timeLeft);
             return(marryRoom);
         }
     }
     finally
     {
         MarryRoomMgr._locker.ReleaseWriterLock();
     }
     return(null);
 }
示例#13
0
        public static MarryRoom CreateMarryRoomFromDB(MarryRoomInfo roomInfo, int timeLeft)
        {
            MarryRoom room = null;

            _locker.AcquireWriterLock();
            try
            {
                room = new MarryRoom(roomInfo, _processor);
                if (room != null)
                {
                    _Rooms.Add(room.Info.ID, room);

                    room.BeginTimer(60 * 1000 * timeLeft);
                    return(room);
                }
            }
            finally
            {
                _locker.ReleaseWriterLock();
            }

            return(null);
        }
示例#14
0
        public override int HandlePacket(GamePlayer player, GSPacketIn packet)
        {
            bool isInMovie = packet.ReadBoolean();
            int  result;

            if (!player.PlayerCharacter.IsMarried)
            {
                result = 1;
            }
            else
            {
                if (player.PlayerCharacter.HasBagPassword && player.PlayerCharacter.IsLocked)
                {
                    player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked", new object[0]));
                    result = 0;
                }
                else
                {
                    int needMoney = AppConfig.AppSettings["DivorcedMoney"].ConvertToInt(5214);
                    if (player.PlayerCharacter.Money < needMoney)
                    {
                        player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("DivorceApplyHandler.Msg1", new object[0]));
                        result = 1;
                    }
                    else
                    {
                        if (player.PlayerCharacter.IsCreatedMarryRoom)
                        {
                            using (PlayerBussiness db = new PlayerBussiness())
                            {
                                db.DisposeMarryRoomInfo(player.PlayerCharacter.SelfMarryRoomID);
                                GameServer.Instance.LoginServer.SendMarryRoomDisposeToPlayer(player.PlayerCharacter.SelfMarryRoomID);
                            }
                            MarryRoom[] rooms = MarryRoomMgr.GetAllMarryRoom();
                            MarryRoom[] array = rooms;
                            for (int i = 0; i < array.Length; i++)
                            {
                                MarryRoom room = array[i];
                                if (room.Info.GroomID == player.PlayerCharacter.ID || room.Info.BrideID == player.PlayerCharacter.ID)
                                {
                                    room.KillAllPlayer();
                                    GameServer.Instance.LoginServer.SendUpdatePlayerMarriedStates(room.Info.GroomID);
                                    GameServer.Instance.LoginServer.SendUpdatePlayerMarriedStates(room.Info.BrideID);
                                    GameServer.Instance.LoginServer.SendMarryRoomInfoToPlayer(room.Info.GroomID, false, room.Info);
                                    GameServer.Instance.LoginServer.SendMarryRoomInfoToPlayer(room.Info.BrideID, false, room.Info);
                                    MarryRoomMgr.RemoveMarryRoom(room);
                                    GSPacketIn pkg = new GSPacketIn(254);
                                    pkg.WriteInt(room.Info.ID);
                                    WorldMgr.MarryScene.SendToALL(pkg);
                                    room.StopTimer();
                                    if (isInMovie)
                                    {
                                        GSPacketIn pkg2 = new GSPacketIn(249);
                                        pkg2.WriteByte(9);
                                        room.SendToAll(pkg2);
                                        room.StopTimerForHymeneal();
                                        room.SendUserRemoveLate();
                                    }
                                    break;
                                }
                            }
                        }
                        player.RemoveMoney(needMoney, LogMoneyType.Marry, LogMoneyType.Marry_Unmarry);
                        CountBussiness.InsertSystemPayCount(player.PlayerCharacter.ID, needMoney, 0, 0, 3);
                        using (PlayerBussiness db = new PlayerBussiness())
                        {
                            PlayerInfo tempSpouse = db.GetUserSingleAllUserID(player.PlayerCharacter.SpouseID);
                            if (tempSpouse == null || tempSpouse.Sex == player.PlayerCharacter.Sex)
                            {
                                result = 1;
                                return(result);
                            }
                            MarryApplyInfo info = new MarryApplyInfo();
                            info.UserID           = player.PlayerCharacter.SpouseID;
                            info.ApplyUserID      = player.PlayerCharacter.ID;
                            info.ApplyUserName    = 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);
                                player.LoadMarryProp();
                            }
                        }
                        player.QuestInventory.ClearMarryQuest();
                        player.Out.SendPlayerDivorceApply(player, true, true);
                        result = 0;
                    }
                }
            }
            return(result);
        }
示例#15
0
 public GSPacketIn SendMarryRoomInfo(GamePlayer player, MarryRoom room)
 {
     throw new NotImplementedException();
 }
        public override int HandlePacket(GamePlayer player, GSPacketIn packet)
        {
            MarryRoom room    = null;
            string    msg     = "";
            int       id      = packet.ReadInt();
            string    pwd     = packet.ReadString();
            int       sceneID = packet.ReadInt();
            int       result;

            if (id != 0)
            {
                room = MarryRoomMgr.GetMarryRoombyID(id, (pwd == null) ? "" : pwd, ref msg);
            }
            else
            {
                if (player.PlayerCharacter.IsCreatedMarryRoom)
                {
                    MarryRoom[] rooms = MarryRoomMgr.GetAllMarryRoom();
                    MarryRoom[] array = rooms;
                    for (int i = 0; i < array.Length; i++)
                    {
                        MarryRoom r = array[i];
                        if (r.Info.GroomID == player.PlayerCharacter.ID || r.Info.BrideID == player.PlayerCharacter.ID)
                        {
                            room = r;
                            break;
                        }
                    }
                }
                if (room == null && player.PlayerCharacter.SelfMarryRoomID != 0)
                {
                    player.Out.SendMarryRoomLogin(player, false);
                    MarryRoomInfo info = null;
                    using (PlayerBussiness db = new PlayerBussiness())
                    {
                        info = db.GetMarryRoomInfoSingle(player.PlayerCharacter.SelfMarryRoomID);
                    }
                    if (info != null)
                    {
                        player.Out.SendMessage(eMessageType.ChatNormal, LanguageMgr.GetTranslation("MarryRoomLoginHandler.RoomExist", new object[]
                        {
                            info.ServerID,
                            player.PlayerCharacter.SelfMarryRoomID
                        }));
                        result = 0;
                        return(result);
                    }
                }
            }
            if (room != null)
            {
                if (room.CheckUserForbid(player.PlayerCharacter.ID))
                {
                    player.Out.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation("MarryRoomLoginHandler.Forbid", new object[0]));
                    player.Out.SendMarryRoomLogin(player, false);
                    result = 1;
                    return(result);
                }
                if (room.RoomState == eRoomState.FREE)
                {
                    if (room.AddPlayer(player))
                    {
                        player.MarryMap = sceneID;
                        GSPacketIn pkg = player.Out.SendMarryRoomLogin(player, true);
                        room.SendMarryRoomInfoUpdateToScenePlayers(room);
                        result = 0;
                        return(result);
                    }
                }
                else
                {
                    player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("MarryRoomLoginHandler.AlreadyBegin", new object[0]));
                }
                player.Out.SendMarryRoomLogin(player, false);
            }
            else
            {
                player.Out.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation(string.IsNullOrEmpty(msg) ? "MarryRoomLoginHandler.Failed" : msg, new object[0]));
                player.Out.SendMarryRoomLogin(player, false);
            }
            result = 1;
            return(result);
        }
示例#17
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            //if (client.Player.CurrentGame != null)
            //{
            //    client.Player.CurrentGame.RemovePlayer(client.Player);
            //}
            //if(client.Player.CurrentMarryRoom != null)
            //{
            //    client.Player.CurrentMarryRoom.RemovePlayer(client.Player);
            //}

            MarryRoom room = null;
            string    msg  = "";

            int    id      = packet.ReadInt();
            string pwd     = packet.ReadString();
            int    sceneID = packet.ReadInt();

            if (id != 0)
            {
                room = MarryRoomMgr.GetMarryRoombyID(id, pwd == null ? "" : pwd, ref msg);
            }
            else
            {
                if (client.Player.PlayerCharacter.IsCreatedMarryRoom)
                {
                    MarryRoom[] rooms = MarryRoomMgr.GetAllMarryRoom();

                    foreach (MarryRoom r in rooms)
                    {
                        if (r.Info.GroomID == client.Player.PlayerCharacter.ID || r.Info.BrideID == client.Player.PlayerCharacter.ID)
                        {
                            room = r;
                            break;
                        }
                    }
                }

                if (room == null && client.Player.PlayerCharacter.SelfMarryRoomID != 0)
                {
                    client.Player.Out.SendMarryRoomLogin(client.Player, false);
                    MarryRoomInfo info = null;
                    using (PlayerBussiness db = new PlayerBussiness())
                    {
                        info = db.GetMarryRoomInfoSingle(client.Player.PlayerCharacter.SelfMarryRoomID);
                    }

                    if (info != null)
                    {
                        client.Player.Out.SendMessage(eMessageType.ChatNormal, LanguageMgr.GetTranslation("MarryRoomLoginHandler.RoomExist", info.ServerID, client.Player.PlayerCharacter.SelfMarryRoomID));
                        return(0);
                    }
                }
            }

            if (room != null)
            {
                if (room.CheckUserForbid(client.Player.PlayerCharacter.ID))
                {
                    client.Out.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation("MarryRoomLoginHandler.Forbid"));
                    client.Player.Out.SendMarryRoomLogin(client.Player, false);
                    return(1);
                }

                if (room.RoomState == eRoomState.FREE)
                {
                    if (room.AddPlayer(client.Player))
                    {
                        client.Player.MarryMap = sceneID;

                        GSPacketIn pkg = client.Player.Out.SendMarryRoomLogin(client.Player, true);

                        room.SendMarryRoomInfoUpdateToScenePlayers(room);

                        return(0);
                    }
                }
                else
                {
                    client.Player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("MarryRoomLoginHandler.AlreadyBegin"));
                }

                client.Player.Out.SendMarryRoomLogin(client.Player, false);
            }
            else
            {
                client.Out.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation(string.IsNullOrEmpty(msg) ? "MarryRoomLoginHandler.Failed" : msg));
                client.Player.Out.SendMarryRoomLogin(client.Player, false);
            }

            return(1);
        }
        public override int HandlePacket(GamePlayer player, GSPacketIn packet)
        {
            int result;

            if (!player.PlayerCharacter.IsMarried)
            {
                result = 1;
            }
            else
            {
                if (player.PlayerCharacter.IsCreatedMarryRoom)
                {
                    result = 1;
                }
                else
                {
                    if (player.PlayerCharacter.HasBagPassword && player.PlayerCharacter.IsLocked)
                    {
                        player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked", new object[0]));
                        result = 0;
                    }
                    else
                    {
                        if (player.CurrentRoom != null)
                        {
                            player.CurrentRoom.RemovePlayerUnsafe(player);
                        }
                        if (player.CurrentMarryRoom != null)
                        {
                            player.CurrentMarryRoom.RemovePlayer(player);
                        }
                        MarryRoomInfo info = new MarryRoomInfo();
                        info.Name             = packet.ReadString().Replace(";", "");
                        info.Pwd              = packet.ReadString();
                        info.MapIndex         = packet.ReadInt();
                        info.AvailTime        = packet.ReadInt();
                        info.MaxCount         = packet.ReadInt();
                        info.GuestInvite      = packet.ReadBoolean();
                        info.RoomIntroduction = packet.ReadString();
                        info.ServerID         = GameServer.Instance.Config.ServerID;
                        info.IsHymeneal       = false;
                        string[] array = new string[]
                        {
                            "1",
                            "2",
                            "3"
                        };
                        string[] money = "2000,2700,3400".Split(new char[]
                        {
                            ','
                        });
                        if (money.Length < 3)
                        {
                            MarryRoomCreateHandler.log.Error("MarryRoomCreateMoney node in configuration file is wrong");

                            result = 1;
                        }
                        else
                        {
                            int needMoney;
                            switch (info.AvailTime)
                            {
                            case 2:
                                needMoney = int.Parse(money[0]);
                                break;

                            case 3:
                                needMoney = int.Parse(money[1]);
                                break;

                            case 4:
                                needMoney = int.Parse(money[2]);
                                break;

                            default:
                                needMoney      = int.Parse(money[2]);
                                info.AvailTime = 4;
                                break;
                            }
                            if (player.PlayerCharacter.Money >= needMoney)
                            {
                                MarryRoom room = MarryRoomMgr.CreateMarryRoom(player, info);
                                if (room != null)
                                {
                                    player.RemoveMoney(needMoney, LogMoneyType.Marry, LogMoneyType.Marry_Room);
                                    GSPacketIn pkg = player.Out.SendMarryRoomInfo(player, room);
                                    player.Out.SendMarryRoomLogin(player, true);
                                    room.SendToScenePlayer(pkg);
                                    CountBussiness.InsertSystemPayCount(player.PlayerCharacter.ID, needMoney, 0, 0, 0);
                                }
                                result = 0;
                            }
                            else
                            {
                                player.Out.SendMessage(eMessageType.ChatNormal, LanguageMgr.GetTranslation("UserFirecrackersCommand.MoneyNotEnough", new object[0]));
                                result = 1;
                            }
                        }
                    }
                }
            }
            return(result);
        }
示例#19
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            if (!client.Player.PlayerCharacter.IsMarried)
            {
                return(1);
            }

            if (client.Player.PlayerCharacter.IsCreatedMarryRoom)
            {
                //client.Player.Out.SendMessage(eMessageType.ChatNormal, LanguageMgr.GetTranslation("MarryRoomCreateHandler.Msg1"));
                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.CurrentRoom != null)
            {
                client.Player.CurrentRoom.RemovePlayerUnsafe(client.Player);
            }

            if (client.Player.CurrentMarryRoom != null)
            {
                client.Player.CurrentMarryRoom.RemovePlayer(client.Player);
            }

            //GamePlayer tempPlayer = WorldMgr.GetPlayerById(client.Player.PlayerCharacter.SpouseID);
            //if(tempPlayer != null)
            //{
            //    if (tempPlayer.IsMarryRommCreating)
            //    {
            //        client.Player.Out.SendMessage(eMessageType.ChatNormal, LanguageMgr.GetTranslation("MarryRoomCreateHandler.IsCreating"));
            //        return 1;
            //    }
            //}

            //client.Player.IsMarryRommCreating = true;

            MarryRoomInfo info = new MarryRoomInfo();

            info.Name             = packet.ReadString().Replace(";", "");
            info.Pwd              = packet.ReadString();
            info.MapIndex         = packet.ReadInt();
            info.AvailTime        = packet.ReadInt();
            info.MaxCount         = packet.ReadInt();
            info.GuestInvite      = packet.ReadBoolean();
            info.RoomIntroduction = packet.ReadString();
            info.ServerID         = GameServer.Instance.Configuration.ServerID;
            info.IsHymeneal       = false;

            string[] money = GameProperties.PRICE_MARRY_ROOM.Split(',');
            if (money.Length < 3)
            {
                if (log.IsErrorEnabled)
                {
                    log.Error("MarryRoomCreateMoney node in configuration file is wrong");
                }

                return(1);
            }

            int needMoney = 0;

            switch (info.AvailTime)
            {
            case 2:
                needMoney = int.Parse(money[0]);
                break;

            case 3:
                needMoney = int.Parse(money[1]);
                break;

            case 4:
                needMoney = int.Parse(money[2]);
                break;

            default:
                needMoney      = int.Parse(money[2]);
                info.AvailTime = 4;
                break;
            }

            if (client.Player.PlayerCharacter.Money >= needMoney)
            {
                MarryRoom room = MarryRoomMgr.CreateMarryRoom(client.Player, info);

                if (room != null)
                {
                    client.Player.RemoveMoney(needMoney);
                    LogMgr.LogMoneyAdd(LogMoneyType.Marry, LogMoneyType.Marry_Room, client.Player.PlayerCharacter.ID, needMoney, client.Player.PlayerCharacter.Money, 0, 0, 0, 0, "", "", "");
                    GSPacketIn pkg = client.Player.Out.SendMarryRoomInfo(client.Player, room);
                    client.Player.Out.SendMarryRoomLogin(client.Player, true);
                    room.SendToScenePlayer(pkg);

                    CountBussiness.InsertSystemPayCount(client.Player.PlayerCharacter.ID, needMoney, 0, (int)eConsumerType.Marry, (int)eSubConsumerType.Marry_MarryRoom);
                }

                return(0);
            }
            else
            {
                client.Player.Out.SendMessage(eMessageType.ChatNormal, LanguageMgr.GetTranslation("UserFirecrackersCommand.MoneyNotEnough"));
            }

            return(1);
        }
示例#20
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            if (!client.Player.PlayerCharacter.IsMarried)
            {
                return(1);
            }
            if (client.Player.PlayerCharacter.IsCreatedMarryRoom)
            {
                return(1);
            }
            if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked)
            {
                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked", new object[0]));
                return(0);
            }
            if (client.Player.CurrentRoom != null)
            {
                client.Player.CurrentRoom.RemovePlayerUnsafe(client.Player);
            }
            if (client.Player.CurrentMarryRoom != null)
            {
                client.Player.CurrentMarryRoom.RemovePlayer(client.Player);
            }
            MarryRoomInfo marryRoomInfo = new MarryRoomInfo();

            marryRoomInfo.Name             = packet.ReadString().Replace(";", "");
            marryRoomInfo.Pwd              = packet.ReadString();
            marryRoomInfo.MapIndex         = packet.ReadInt();
            marryRoomInfo.AvailTime        = packet.ReadInt();
            marryRoomInfo.MaxCount         = packet.ReadInt();
            marryRoomInfo.GuestInvite      = packet.ReadBoolean();
            marryRoomInfo.RoomIntroduction = packet.ReadString();
            marryRoomInfo.ServerID         = GameServer.Instance.Configuration.ServerID;
            marryRoomInfo.IsHymeneal       = false;
            string[] array = GameProperties.PRICE_MARRY_ROOM.Split(new char[]
            {
                ','
            });
            if (array.Length < 3)
            {
                if (MarryRoomCreateHandler.log.IsErrorEnabled)
                {
                    MarryRoomCreateHandler.log.Error("MarryRoomCreateMoney node in configuration file is wrong");
                }
                return(1);
            }
            int num;

            switch (marryRoomInfo.AvailTime)
            {
            case 2:
                num = int.Parse(array[0]);
                break;

            case 3:
                num = int.Parse(array[1]);
                break;

            case 4:
                num = int.Parse(array[2]);
                break;

            default:
                num = int.Parse(array[2]);
                marryRoomInfo.AvailTime = 4;
                break;
            }
            if (client.Player.PlayerCharacter.Money >= num)
            {
                MarryRoom marryRoom = MarryRoomMgr.CreateMarryRoom(client.Player, marryRoomInfo);
                if (marryRoom != null)
                {
                    client.Player.RemoveMoney(num);
                    LogMgr.LogMoneyAdd(LogMoneyType.Marry, LogMoneyType.Marry_Room, client.Player.PlayerCharacter.ID, num, client.Player.PlayerCharacter.Money, 0, 0, 0, 0, "", "", "");
                    GSPacketIn packet2 = client.Player.Out.SendMarryRoomInfo(client.Player, marryRoom);
                    client.Player.Out.SendMarryRoomLogin(client.Player, true);
                    marryRoom.SendToScenePlayer(packet2);
                    CountBussiness.InsertSystemPayCount(client.Player.PlayerCharacter.ID, num, 0, 0, 0);
                }
                return(0);
            }
            client.Player.Out.SendMessage(eMessageType.ChatNormal, LanguageMgr.GetTranslation("UserFirecrackersCommand.MoneyNotEnough", new object[0]));
            return(1);
        }
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
            MarryRoom marryRoom = null;
            string    text      = "";
            int       num       = packet.ReadInt();
            string    text2     = packet.ReadString();
            int       marryMap  = packet.ReadInt();

            if (num != 0)
            {
                marryRoom = MarryRoomMgr.GetMarryRoombyID(num, (text2 == null) ? "" : text2, ref text);
            }
            else
            {
                if (client.Player.PlayerCharacter.IsCreatedMarryRoom)
                {
                    MarryRoom[] allMarryRoom = MarryRoomMgr.GetAllMarryRoom();
                    MarryRoom[] array        = allMarryRoom;
                    for (int i = 0; i < array.Length; i++)
                    {
                        MarryRoom marryRoom2 = array[i];
                        if (marryRoom2.Info.GroomID == client.Player.PlayerCharacter.ID || marryRoom2.Info.BrideID == client.Player.PlayerCharacter.ID)
                        {
                            marryRoom = marryRoom2;
                            break;
                        }
                    }
                }
                if (marryRoom == null && client.Player.PlayerCharacter.SelfMarryRoomID != 0)
                {
                    client.Player.Out.SendMarryRoomLogin(client.Player, false);
                    MarryRoomInfo marryRoomInfo = null;
                    using (PlayerBussiness playerBussiness = new PlayerBussiness())
                    {
                        marryRoomInfo = playerBussiness.GetMarryRoomInfoSingle(client.Player.PlayerCharacter.SelfMarryRoomID);
                    }
                    if (marryRoomInfo != null)
                    {
                        client.Player.Out.SendMessage(eMessageType.ChatNormal, LanguageMgr.GetTranslation("MarryRoomLoginHandler.RoomExist", new object[]
                        {
                            marryRoomInfo.ServerID,
                            client.Player.PlayerCharacter.SelfMarryRoomID
                        }));
                        return(0);
                    }
                }
            }
            if (marryRoom != null)
            {
                if (marryRoom.CheckUserForbid(client.Player.PlayerCharacter.ID))
                {
                    client.Out.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation("MarryRoomLoginHandler.Forbid", new object[0]));
                    client.Player.Out.SendMarryRoomLogin(client.Player, false);
                    return(1);
                }
                if (marryRoom.RoomState == eRoomState.FREE)
                {
                    if (marryRoom.AddPlayer(client.Player))
                    {
                        client.Player.MarryMap = marryMap;
                        client.Player.Out.SendMarryRoomLogin(client.Player, true);
                        marryRoom.SendMarryRoomInfoUpdateToScenePlayers(marryRoom);
                        return(0);
                    }
                }
                else
                {
                    client.Player.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("MarryRoomLoginHandler.AlreadyBegin", new object[0]));
                }
                client.Player.Out.SendMarryRoomLogin(client.Player, false);
            }
            else
            {
                client.Out.SendMessage(eMessageType.ERROR, LanguageMgr.GetTranslation(string.IsNullOrEmpty(text) ? "MarryRoomLoginHandler.Failed" : text, new object[0]));
                client.Player.Out.SendMarryRoomLogin(client.Player, false);
            }
            return(1);
        }