Esempio n. 1
0
        public static void startup()
        {
            //战盟事件管理器
            ZhanMengShiJianManager.getInstance().startup();

            //竞技场管理器
            JingJiChangManager.getInstance().startup();

            //离线摆摊
            LiXianBaiTanManager.getInstance().startup();

            //离线挂机
            LiXianGuaJiManager.getInstance().startup();

            //副本活动组队管理器
            CopyTeamManager.getInstance().startup();

            //指令注册管理器
            CmdRegisterTriggerManager.getInstance().startup();

            //发送指令管理
            SendCmdManager.getInstance().startup();

            //Boss AI管理器
            BossAIManager.getInstance().startup();

            //MU交易所
            SaleManager.getInstance().startup();

            //炼制系统
            LianZhiManager.GetInstance().startup();

            // 成就升级
            ChengJiuManager.GetInstance().startup();
        }
        public bool processCmd(GameClient client, string[] cmdParams)
        {
            if (Cmd == TCPGameServerCmds.CMD_SPR_COPYTEAM)
            {
                int teamType  = Convert.ToInt32(cmdParams[1]);
                int extTag1   = Convert.ToInt32(cmdParams[2]);
                int extTag2   = Convert.ToInt32(cmdParams[3]);
                int autoEnter = Convert.ToInt32(cmdParams[4]);

                if (teamType == (int)TeamCmds.Create) //创建队伍
                {
                    CopyTeamManager.getInstance().CreateCopyTeam(client, extTag1, extTag2, autoEnter);
                }
                else if (teamType == (int)TeamCmds.Apply) //申请组队
                {
                    CopyTeamManager.getInstance().ApplyCopyTeam(client, extTag1);
                }
                else if (teamType == (int)TeamCmds.Remove) //踢出队伍
                {
                    CopyTeamManager.getInstance().RemoveFromCopyTeam(client, extTag1);
                }
                else if (teamType == (int)TeamCmds.Quit) //离开组队
                {
                    CopyTeamManager.getInstance().QuitFromTeam(client);
                }
                else if (teamType == (int)TeamCmds.Ready) //准备状态变化
                {
                    CopyTeamManager.getInstance().Ready(client, extTag1);
                }
                else if (teamType == (int)TeamCmds.QuickJoinTeam) //快速加入
                {
                    CopyTeamManager.getInstance().QuickJoinTeam(client, extTag1);
                }
            }
            else if (Cmd == TCPGameServerCmds.CMD_SPR_REGEVENTNOTIFY)
            {
                int sceneIndex = Convert.ToInt32(cmdParams[1]);
                int ready      = Convert.ToInt32(cmdParams[2]);

                if (ready > 0)
                {
                    CopyTeamManager.getInstance().RegisterCopyTeamListNotify(client, sceneIndex);
                }
                else
                {
                    CopyTeamManager.getInstance().UnRegisterCopyTeamListNotify(client);
                }
            }
            else if (Cmd == TCPGameServerCmds.CMD_SPR_LISTCOPYTEAMS)
            {
                int startIndex = Convert.ToInt32(cmdParams[1]);
                int sceneIndex = Convert.ToInt32(cmdParams[2]);

                //列举队伍并返回列表
                CopyTeamManager.getInstance().ListAllTeams(client, startIndex, sceneIndex);
            }

            return(true);
        }
Esempio n. 3
0
        public bool OnInitGame(GameClient client)
        {
            int gameType = Global.GetClientKuaFuServerLoginData(client).GameType;

            switch (gameType)
            {
            case (int)GameTypes.HuanYingSiYuan:
                return(HuanYingSiYuanManager.getInstance().OnInitGame(client));

            case (int)GameTypes.TianTi:
                return(TianTiManager.getInstance().OnInitGame(client));

            case (int)GameTypes.YongZheZhanChang:
                return(YongZheZhanChangManager.getInstance().OnInitGame(client));

            case (int)GameTypes.KingOfBattle:
                return(KingOfBattleManager.getInstance().OnInitGame(client));

            case (int)GameTypes.MoRiJudge:
                return(MoRiJudgeManager.Instance().OnInitGame(client));

            case (int)GameTypes.ElementWar:
                return(ElementWarManager.getInstance().OnInitGame(client));

            case (int)GameTypes.KuaFuBoss:
                return(KuaFuBossManager.getInstance().OnInitGame(client));

            case (int)GameTypes.KuaFuMap:
                return(KuaFuMapManager.getInstance().OnInitGame(client));

            case (int)GameTypes.KuaFuCopy:
                return(CopyTeamManager.Instance().HandleKuaFuInitGame(client));

            case (int)GameTypes.LangHunLingYu:
                return(LangHunLingYuManager.getInstance().OnInitGameKuaFu(client));

            case (int)GameTypes.ZhengBa:
                return(ZhengBaManager.Instance().KuaFuInitGame(client));

            case (int)GameTypes.CoupleArena:
                return(CoupleArenaManager.Instance().KuaFuInitGame(client));
            }

            return(false);
        }
Esempio n. 4
0
        public static void initialize()
        {
            //战盟事件管理器
            ZhanMengShiJianManager.getInstance().initialize();

            //竞技场管理器
            JingJiChangManager.getInstance().initialize();

            //离线摆摊
            LiXianBaiTanManager.getInstance().initialize();

            //离线挂机
            LiXianGuaJiManager.getInstance().initialize();

            //副本活动组队管理器
            CopyTeamManager.getInstance().initialize();

            //指令注册管理器
            CmdRegisterTriggerManager.getInstance().initialize();

            //发送指令管理
            SendCmdManager.getInstance().initialize();

            //Boss AI管理器
            BossAIManager.getInstance().initialize();

            //洗炼管理器
            WashPropsManager.initialize();

            //MU交易所
            SaleManager.getInstance().initialize();

            //炼制系统
            LianZhiManager.GetInstance().initialize();

            // 成就升级
            ChengJiuManager.GetInstance().initialize();

            //恶魔来袭
            EMoLaiXiCopySceneManager.LoadEMoLaiXiCopySceneInfo();
        }
Esempio n. 5
0
        //玩家杀死特殊BOSS
        public static bool OnKillMonster(GameClient client, Monster monster)
        {
            if (client.ClientData.FuBenID != LuoLanFaZhenFubenID)
            {
                return(false);
            }

            SingleLuoLanFaZhenFubenData fubenData = GetFubenData(client.ClientData.FuBenSeqID);

            if (null == fubenData)
            {
                return(false);
            }

            List <int> listMapCodes = null;

            bool bKillBoss = false;

#if ___CC___FUCK___YOU___BB___
            if (monster.XMonsterInfo.MonsterId == FinalBossID)     //杀死的是否罗兰法阵的通关Boss
            {
                fubenData.FinalBossLeftNum = 0;
                bKillBoss = true;
            }
            else if (monster.XMonsterInfo.MonsterId == SpecialBossID)  //杀死的是否罗兰法阵的特殊Boss
            {
                //是
                FuBenInfoItem fuBenInfoItem = FuBenManager.FindFuBenInfoBySeqID(client.ClientData.FuBenSeqID);
                if (null == fuBenInfoItem)
                {
                    return(false);
                }

                fubenData.SpecailBossLeftNum = 0;

                //改变奖励系数
                //fuBenInfoItem.AwardRate = SpecialAwardRate;

                //广播消息给副本内所有玩家
                string msg = StringUtil.substitute(Global.GetLang("『{0}』击杀了时空盗贼,令本次通关奖励翻倍!"), client.ClientData.RoleName);

                listMapCodes = CopyTeamManager.Instance().GetTeamCopyMapCodes(LuoLanFaZhenFubenID);
                if (null == listMapCodes)
                {
                    return(false);
                }
                foreach (var mapCode in listMapCodes)
                {
                    BroadMapMessage(msg, mapCode, client.ClientData.FuBenSeqID);
                }

                bKillBoss = true;
            }
#else
            if (monster.MonsterInfo.ExtensionID == FinalBossID)     //杀死的是否罗兰法阵的通关Boss
            {
                fubenData.FinalBossLeftNum = 0;
                bKillBoss = true;
            }
            else if (monster.MonsterInfo.ExtensionID == SpecialBossID)  //杀死的是否罗兰法阵的特殊Boss
            {
                //是
                FuBenInfoItem fuBenInfoItem = FuBenManager.FindFuBenInfoBySeqID(client.ClientData.FuBenSeqID);
                if (null == fuBenInfoItem)
                {
                    return(false);
                }

                fubenData.SpecailBossLeftNum = 0;

                //改变奖励系数
                //fuBenInfoItem.AwardRate = SpecialAwardRate;

                //广播消息给副本内所有玩家
                string msg = StringUtil.substitute(Global.GetLang("『{0}』击杀了时空盗贼,令本次通关奖励翻倍!"), client.ClientData.RoleName);

                listMapCodes = CopyTeamManager.Instance().GetTeamCopyMapCodes(LuoLanFaZhenFubenID);
                if (null == listMapCodes)
                {
                    return(false);
                }
                foreach (var mapCode in listMapCodes)
                {
                    BroadMapMessage(msg, mapCode, client.ClientData.FuBenSeqID);
                }

                bKillBoss = true;
            }
#endif
            //通知副本内所有玩家boss数量改变
            if (bKillBoss)
            {
                //杀死了boss
                if (null == listMapCodes)
                {
                    listMapCodes = CopyTeamManager.Instance().GetTeamCopyMapCodes(LuoLanFaZhenFubenID);
                }

                if (null == listMapCodes)
                {
                    return(false);
                }

                //通知副本内所有玩家boss数量改变
                string cmdData = string.Format("{0}:{1}:{2}:{3}:{4}", LuoLanFaZhenFubenID, FinalBossID, fubenData.FinalBossLeftNum, SpecialBossID, fubenData.SpecailBossLeftNum);
                foreach (var mapCode in listMapCodes)
                {
                    BroadMapData((int)TCPGameServerCmds.CMD_SPR_FAZHEN_BOSS, cmdData, mapCode, client.ClientData.FuBenSeqID);
                }
            }

            return(true);
        }
Esempio n. 6
0
        public static void initialize()
        {
#if BetaConfig
            int round = 9;
            Console.WriteLine("连接调试器或按任意键继续");
            do
            {
                Console.Write("\b\b" + round);
                if (Console.KeyAvailable)
                {
                    break;
                }
                Thread.Sleep(1000);
            } while (--round > 0);
            Console.Write("\b\b");
#endif
            //战盟事件管理器
            ZhanMengShiJianManager.getInstance().initialize();

            //竞技场管理器
            JingJiChangManager.getInstance().initialize();

            //离线摆摊
            LiXianBaiTanManager.getInstance().initialize();

            //离线挂机
            LiXianGuaJiManager.getInstance().initialize();

            //副本活动组队管理器
            CopyTeamManager.Instance().initialize();

            //指令注册管理器
            CmdRegisterTriggerManager.getInstance().initialize();

            //发送指令管理
            SendCmdManager.getInstance().initialize();

            //Boss AI管理器
            BossAIManager.getInstance().initialize();

            //洗炼管理器
            WashPropsManager.initialize();

            //MU交易所
            SaleManager.getInstance().initialize();

            //炼制系统
            LianZhiManager.GetInstance().initialize();

            // 成就升级
            ChengJiuManager.GetInstance().initialize();

            //声望勋章
            PrestigeMedalManager.getInstance().initialize();

            UnionPalaceManager.getInstance().initialize();
            UserActivateManager.getInstance().initialize();

            PetSkillManager.getInstance().initialize();

            //玩家召回
            UserReturnManager.getInstance().initialize();

            //天赋
            TalentManager.getInstance().initialize();

            //每日专享
            TodayManager.getInstance().initialize();

            FundManager.getInstance().initialize();

            //警告
            WarnManager.getInstance().initialize();

            //恶魔来袭
            EMoLaiXiCopySceneManager.LoadEMoLaiXiCopySceneInfo();

            //罗兰法阵副本
            LuoLanFaZhenCopySceneManager.initialize();

            //情侣副本管理器
            MarryFuBenMgr.getInstance().initialize();
            MarryLogic.LoadMarryBaseConfig();
            MarryPartyLogic.getInstance().LoadMarryPartyConfig();

            //领地
            BuildingManager.getInstance().initialize();

            // 藏宝秘境
            OnePieceManager.getInstance().initialize();

            //初始化跨服相关管理器
            RegisterManager4Scene((int)SceneUIClasses.Normal, KuaFuManager.getInstance());
            // RegisterManager4Scene((int)SceneUIClasses.LangHunLingYu, LangHunLingYuManager.getInstance());

            //注册罗兰城战管理器
            RegisterManager4Scene((int)SceneUIClasses.LuoLanChengZhan, LuoLanChengZhanManager.getInstance());
            RegisterManager4Scene((int)SceneUIClasses.Normal, FashionManager.getInstance());
            RegisterManager4Scene((int)SceneUIClasses.HuanYingSiYuan, HuanYingSiYuanManager.getInstance());
            RegisterManager4Scene((int)ManagerTypes.ClientGoodsList, JingLingQiYuanManager.getInstance());
            RegisterManager4Scene((int)SceneUIClasses.TianTi, TianTiManager.getInstance());
            RegisterManager4Scene((int)SceneUIClasses.YongZheZhanChang, YongZheZhanChangManager.getInstance());
            RegisterManager4Scene((int)SceneUIClasses.KingOfBattle, KingOfBattleManager.getInstance());
            RegisterManager4Scene((int)SceneUIClasses.MoRiJudge, MoRiJudgeManager.Instance());
            RegisterManager4Scene((int)SceneUIClasses.ElementWar, ElementWarManager.getInstance());
            RegisterManager4Scene((int)SceneUIClasses.CopyWolf, CopyWolfManager.getInstance());
            RegisterManager4Scene((int)SceneUIClasses.KuaFuBoss, KuaFuBossManager.getInstance());
            RegisterManager4Scene((int)SceneUIClasses.KuaFuMap, KuaFuMapManager.getInstance());
            RegisterManager4Scene((int)SceneUIClasses.Spread, SpreadManager.getInstance());
            RegisterManager4Scene((int)SceneUIClasses.KFZhengBa, ZhengBaManager.Instance());
            RegisterManager4Scene((int)SceneUIClasses.CoupleArena, CoupleArenaManager.Instance());
            RegisterManager4Scene((int)SceneUIClasses.Ally, AllyManager.getInstance());
            RegisterManager4Scene((int)SceneUIClasses.CoupleWish, CoupleWishManager.Instance());

            // 读取外挂列表和相关配置
            RobotTaskValidator.getInstance().Initialize(false, 0, 0, "");

            //初始化圣物系统相关配置
            HolyItemManager.getInstance().Initialize();

            //初始化塔罗牌相关配置
            TarotManager.getInstance().Initialize();

            // 七日活动
            SevenDayActivityMgr.Instance().initialize();

            // 魂石
            SoulStoneManager.Instance().initialize();

            TradeBlackManager.Instance().LoadConfig();
            //调用所有注册的管理模块的初始化函数
            lock (Scene2ManagerDict)
            {
                foreach (var list in Scene2ManagerDict.Values)
                {
                    foreach (var m in list)
                    {
                        bool      success = m.initialize();
                        IManager2 m2      = m as IManager2;
                        if (null != m2)
                        {
                            success = success && m2.initialize(GameCoreInterface.getinstance());
                        }

                        if (GameManager.ServerStarting && !success)
                        {
                            LogManager.WriteLog(LogTypes.Fatal, string.Format("执行{0}.initialize()失败,按任意键继续启动!", m.GetType()));
                            //Console.ReadKey(); HX_SERVER close the copy scenes;
                        }
                    }
                }
            }

            //应用宝
            TenManager.getInstance().initialize();
            TenRetutnManager.getInstance().initialize();

            //礼包码
            GiftCodeNewManager.getInstance().initialize();
        }
Esempio n. 7
0
        public static void destroy()
        {
            //战盟事件管理器
            ZhanMengShiJianManager.getInstance().destroy();

            //竞技场管理器
            JingJiChangManager.getInstance().destroy();

            //离线摆摊
            LiXianBaiTanManager.getInstance().destroy();

            //离线挂机
            LiXianGuaJiManager.getInstance().destroy();

            //副本活动组队管理器
            CopyTeamManager.Instance().destroy();

            //指令注册管理器
            CmdRegisterTriggerManager.getInstance().destroy();

            //发送指令管理
            SendCmdManager.getInstance().destroy();

            //Boss AI管理器
            BossAIManager.getInstance().destroy();

            //MU交易所
            SaleManager.getInstance().destroy();

            //炼制系统
            LianZhiManager.GetInstance().destroy();

            // 成就升级
            ChengJiuManager.GetInstance().destroy();

            //声望勋章
            PrestigeMedalManager.getInstance().destroy();

            UnionPalaceManager.getInstance().destroy();
            UserActivateManager.getInstance().destroy();

            PetSkillManager.getInstance().destroy();

            //玩家召回
            UserReturnManager.getInstance().destroy();

            //天赋
            TalentManager.getInstance().destroy();

            //每日专享
            TodayManager.getInstance().destroy();

            FundManager.getInstance().destroy();

            WarnManager.getInstance().destroy();

            //情侣副本管理器
            MarryFuBenMgr.getInstance().destroy();

            //领地
            BuildingManager.getInstance().destroy();

            //藏宝秘境
            OnePieceManager.getInstance().destroy();

            TenManager.getInstance().destroy();

            // 七日活动
            SevenDayActivityMgr.Instance().destroy();

            SoulStoneManager.Instance().destroy();

            //调用所有注册的管理模块的销毁函数
            lock (Scene2ManagerDict)
            {
                foreach (var list in Scene2ManagerDict.Values)
                {
                    foreach (var m in list)
                    {
                        m.destroy();
                    }
                }
            }
        }
Esempio n. 8
0
        public static void startup()
        {
            //战盟事件管理器
            ZhanMengShiJianManager.getInstance().startup();

            //竞技场管理器
            JingJiChangManager.getInstance().startup();

            //离线摆摊
            LiXianBaiTanManager.getInstance().startup();

            //离线挂机
            LiXianGuaJiManager.getInstance().startup();

            //副本活动组队管理器
            CopyTeamManager.Instance().startup();

            //指令注册管理器
            CmdRegisterTriggerManager.getInstance().startup();

            //发送指令管理
            SendCmdManager.getInstance().startup();

            //Boss AI管理器
            BossAIManager.getInstance().startup();

            //MU交易所
            SaleManager.getInstance().startup();

            //炼制系统
            LianZhiManager.GetInstance().startup();

            // 成就升级
            ChengJiuManager.GetInstance().startup();

            //玩家召回
            UserReturnManager.getInstance().startup();

            //天赋
            TalentManager.getInstance().startup();

            //每日专享
            TodayManager.getInstance().startup();

            FundManager.getInstance().startup();

            WarnManager.getInstance().startup();

            //声望勋章
            PrestigeMedalManager.getInstance().startup();

            UnionPalaceManager.getInstance().startup();
            UserActivateManager.getInstance().startup();

            PetSkillManager.getInstance().startup();

            //领地
            BuildingManager.getInstance().startup();

            //藏宝秘境
            OnePieceManager.getInstance().startup();

            TenManager.getInstance().startup();

            // 七日活动
            SevenDayActivityMgr.Instance().startup();

            SoulStoneManager.Instance().startup();

            //调用所有注册的管理模块的启动函数
            lock (Scene2ManagerDict)
            {
                foreach (var list in Scene2ManagerDict.Values)
                {
                    foreach (var m in list)
                    {
                        bool success = m.startup();
                        if (GameManager.ServerStarting && !success)
                        {
                            LogManager.WriteLog(LogTypes.Fatal, string.Format("初始化{0}.startup()失败,按任意键忽略此错误并继续启动服务器!", m.GetType()));
                            Console.ReadKey();
                        }
                    }
                }
            }
        }
Esempio n. 9
0
        public bool OnUserLogin(TMSKSocket socket, int verSign, string userID, string userName, string lastTime, string userToken, string isadult, string signCode, int serverId, string ip, int port, int roleId, int gameType, long gameId)
        {
            KuaFuServerLoginData kuaFuServerLoginData = socket.ClientKuaFuServerLoginData;

            kuaFuServerLoginData.ServerId   = serverId;
            kuaFuServerLoginData.ServerIp   = ip;
            kuaFuServerLoginData.ServerPort = port;
            kuaFuServerLoginData.RoleId     = roleId;
            kuaFuServerLoginData.GameType   = gameType;
            kuaFuServerLoginData.GameId     = gameId;

            if (kuaFuServerLoginData.WebLoginToken == null)
            {
                kuaFuServerLoginData.WebLoginToken = new WebLoginToken()
                {
                    VerSign  = verSign,
                    UserID   = userID,
                    UserName = userName,
                    LastTime = lastTime,
                    Isadult  = isadult,
                    SignCode = signCode,
                };
            }

            if (roleId > 0)
            {
                // 跨服服务器的两个ID相等,如果不想等,则配置错误;
                // 如果想要去掉这个限制,允许区游戏服务器兼作跨服活动服务器(混合使用),必须先修改GameManager.ServerLineID相关的逻辑,使其可以兼容
                // 完成修改前,这个限制不可取消.
                if (GameManager.ServerLineID != GameManager.ServerId)
                {
                    LogManager.WriteLog(LogTypes.Error, "GameManager.ServerLineID未配置,禁止跨服登录");
                    return(false);
                }

                //跨服登录,限制rid
                if (!string.IsNullOrEmpty(ip) && port > 0 && gameType > 0 && gameId > 0 /* && HuanYingSiYuanClient.getInstance().CanKuaFuLogin()*/)
                {
                    string dbIp      = "";
                    int    dbPort    = 0;
                    string logDbIp   = "";
                    int    logDbPort = 0;
                    socket.ServerId = serverId;
                    switch (gameType)
                    {
                    case (int)GameTypes.HuanYingSiYuan:
                    {
                        if (!HuanYingSiYuanClient.getInstance().CanKuaFuLogin())
                        {
                            return(false);
                        }

                        socket.IsKuaFuLogin = HuanYingSiYuanClient.getInstance().KuaFuLogin(kuaFuServerLoginData);
                        if (!HuanYingSiYuanClient.getInstance().GetKuaFuDbServerInfo(serverId, out dbIp, out dbPort, out logDbIp, out logDbPort))
                        {
                            LogManager.WriteLog(LogTypes.Error, string.Format("未能找到角色{0}的原服务器的服务器IP和端口", kuaFuServerLoginData.RoleId));
                            return(false);
                        }
                    }
                    break;

                    case (int)GameTypes.TianTi:
                    {
                        if (!TianTiClient.getInstance().CanKuaFuLogin())
                        {
                            return(false);
                        }

                        socket.IsKuaFuLogin = TianTiClient.getInstance().KuaFuLogin(kuaFuServerLoginData);
                        if (!TianTiClient.getInstance().GetKuaFuDbServerInfo(serverId, out dbIp, out dbPort, out logDbIp, out logDbPort))
                        {
                            LogManager.WriteLog(LogTypes.Error, string.Format("未能找到角色{0}的原服务器的服务器IP和端口", kuaFuServerLoginData.RoleId));
                            return(false);
                        }
                    }
                    break;

                    case (int)GameTypes.KingOfBattle:
                    case (int)GameTypes.YongZheZhanChang:
                    case (int)GameTypes.KuaFuBoss:
                    {
                        if (!YongZheZhanChangClient.getInstance().CanKuaFuLogin())
                        {
                            return(false);
                        }

                        socket.IsKuaFuLogin = YongZheZhanChangClient.getInstance().KuaFuLogin(kuaFuServerLoginData);
                        if (!YongZheZhanChangClient.getInstance().GetKuaFuDbServerInfo(serverId, out dbIp, out dbPort, out logDbIp, out logDbPort))
                        {
                            LogManager.WriteLog(LogTypes.Error, string.Format("未能找到角色{0}的原服务器的服务器IP和端口", kuaFuServerLoginData.RoleId));
                            return(false);
                        }
                    }
                    break;

                    case (int)GameTypes.KuaFuMap:
                    {
                        if (!YongZheZhanChangClient.getInstance().CanKuaFuLogin())
                        {
                            return(false);
                        }

                        socket.IsKuaFuLogin = YongZheZhanChangClient.getInstance().CanEnterKuaFuMap(kuaFuServerLoginData);
                        if (!YongZheZhanChangClient.getInstance().GetKuaFuDbServerInfo(serverId, out dbIp, out dbPort, out logDbIp, out logDbPort))
                        {
                            LogManager.WriteLog(LogTypes.Error, string.Format("未能找到角色{0}的原服务器的服务器IP和端口", kuaFuServerLoginData.RoleId));
                            return(false);
                        }
                    }
                    break;

                    case (int)GameTypes.LangHunLingYu:
                    {
                        if (!YongZheZhanChangClient.getInstance().CanKuaFuLogin())
                        {
                            return(false);
                        }

                        socket.IsKuaFuLogin = LangHunLingYuManager.getInstance().CanEnterKuaFuMap(kuaFuServerLoginData);
                        if (!YongZheZhanChangClient.getInstance().GetKuaFuDbServerInfo(serverId, out dbIp, out dbPort, out logDbIp, out logDbPort))
                        {
                            LogManager.WriteLog(LogTypes.Error, string.Format("未能找到角色{0}的原服务器的服务器IP和端口", kuaFuServerLoginData.RoleId));
                            return(false);
                        }
                    }
                    break;

                    case (int)GameTypes.KuaFuCopy:
                    {
                        if (!KFCopyRpcClient.getInstance().CanKuaFuLogin())
                        {
                            return(false);
                        }

                        socket.IsKuaFuLogin = CopyTeamManager.Instance().HandleKuaFuLogin(kuaFuServerLoginData);
                        if (!KFCopyRpcClient.getInstance().GetKuaFuDbServerInfo(serverId, out dbIp, out dbPort, out logDbIp, out logDbPort))
                        {
                            LogManager.WriteLog(LogTypes.Error, string.Format("未能找到角色{0}的原服务器的服务器IP和端口", kuaFuServerLoginData.RoleId));
                            return(false);
                        }
                    }
                    break;

                    case (int)GameTypes.ZhengBa:
                    {
                        if (!TianTiClient.getInstance().CanKuaFuLogin())
                        {
                            return(false);
                        }

                        socket.IsKuaFuLogin = ZhengBaManager.Instance().CanKuaFuLogin(kuaFuServerLoginData);
                        if (!TianTiClient.getInstance().GetKuaFuDbServerInfo(serverId, out dbIp, out dbPort, out logDbIp, out logDbPort))
                        {
                            LogManager.WriteLog(LogTypes.Error, string.Format("未能找到角色{0}的原服务器的服务器IP和端口", kuaFuServerLoginData.RoleId));
                            return(false);
                        }
                    }
                    break;

                    case (int)GameTypes.CoupleArena:
                    {
                        if (!TianTiClient.getInstance().CanKuaFuLogin())
                        {
                            return(false);
                        }

                        socket.IsKuaFuLogin = CoupleArenaManager.Instance().CanKuaFuLogin(kuaFuServerLoginData);
                        if (!TianTiClient.getInstance().GetKuaFuDbServerInfo(serverId, out dbIp, out dbPort, out logDbIp, out logDbPort))
                        {
                            LogManager.WriteLog(LogTypes.Error, string.Format("未能找到角色{0}的原服务器的服务器IP和端口", kuaFuServerLoginData.RoleId));
                            return(false);
                        }
                    }
                    break;
                    }

                    if (socket.IsKuaFuLogin && serverId != 0)
                    {
                        if (serverId != 0)
                        {
                            if (!InitGameDbConnection(serverId, dbIp, dbPort, logDbIp, logDbPort))
                            {
                                LogManager.WriteLog(LogTypes.Error, string.Format("连接角色{0}的原服务器的GameDBServer和LogDBServer失败", kuaFuServerLoginData.RoleId));
                                return(false);
                            }
                        }

                        return(socket.IsKuaFuLogin);
                    }
                }
                else
                {
                    LogManager.WriteLog(LogTypes.Error, string.Format("角色{0}未能在服务器列表中找本服务器,作为跨服服务器", kuaFuServerLoginData.RoleId));
                    return(false);
                }
            }
            else
            {
                //非跨服登录
                if (HuanYingSiYuanClient.getInstance().LocalLogin(userID))
                {
                    kuaFuServerLoginData.RoleId   = 0;
                    kuaFuServerLoginData.GameId   = 0;
                    kuaFuServerLoginData.GameType = 0;
                    kuaFuServerLoginData.ServerId = 0;
                    socket.ServerId     = 0;
                    socket.IsKuaFuLogin = false;
                    return(true);
                }
            }

            LogManager.WriteLog(LogTypes.Error, string.Format("未能找到角色{0}的跨服活动或副本信息", kuaFuServerLoginData.RoleId));
            return(false);
        }