Exemplo n.º 1
0
        public bool OnInitGame(GameClient client)
        {
            int  gameType = Global.GetClientKuaFuServerLoginData(client).GameType;
            bool result;

            if (KuaFuManager.KuaFuWorldKuaFuGameServer && !KuaFuManager.KuaFuWorldGameTypes.Contains(gameType))
            {
                result = true;
            }
            else
            {
                switch (gameType)
                {
                case 1:
                    return(HuanYingSiYuanManager.getInstance().OnInitGame(client));

                case 2:
                    return(TianTiManager.getInstance().OnInitGame(client));

                case 3:
                    return(SingletonTemplate <MoRiJudgeManager> .Instance().OnInitGame(client));

                case 4:
                    return(ElementWarManager.getInstance().OnInitGame(client));

                case 5:
                    return(YongZheZhanChangManager.getInstance().OnInitGame(client));

                case 6:
                    return(KuaFuBossManager.getInstance().OnInitGame(client));

                case 7:
                case 32:
                    return(KuaFuMapManager.getInstance().OnInitGame(client));

                case 8:
                    return(SingletonTemplate <CopyTeamManager> .Instance().HandleKuaFuInitGame(client));

                case 10:
                    return(LangHunLingYuManager.getInstance().OnInitGameKuaFu(client));

                case 12:
                    return(SingletonTemplate <ZhengBaManager> .Instance().KuaFuInitGame(client));

                case 13:
                    return(SingletonTemplate <CoupleArenaManager> .Instance().KuaFuInitGame(client));

                case 15:
                    return(KingOfBattleManager.getInstance().OnInitGame(client));

                case 17:
                    return(ZhengDuoManager.getInstance().OnInitGame(client));

                case 19:
                    return(KarenBattleManager_MapWest.getInstance().OnInitGame(client));

                case 20:
                    return(KarenBattleManager_MapEast.getInstance().OnInitGame(client));

                case 22:
                    return(LingDiCaiJiManager.getInstance().KuaFuInitGame(client));

                case 24:
                    return(BangHuiMatchManager.getInstance().OnInitGameKuaFu(client));

                case 25:
                    return(KuaFuLueDuoManager.getInstance().OnInitGameKuaFu(client));

                case 26:
                    return(WanMoXiaGuManager.getInstance().OnInitGame(client));

                case 27:
                case 28:
                case 29:
                    return(CompManager.getInstance().OnInitGameKuaFu(client));

                case 30:
                    return(CompBattleManager.getInstance().OnInitGameKuaFu(client));

                case 31:
                    return(CompMineManager.getInstance().OnInitGameKuaFu(client));

                case 34:
                    return(TianTi5v5Manager.getInstance().OnInitGame(client));

                case 36:
                    return(ZorkBattleManager.getInstance().OnInitGameKuaFu(client));
                }
                EventObjectEx_I1 eventObject = new EventObjectEx_I1(client, 62, gameType);
                result = (GlobalEventSource4Scene.getInstance().fireEvent(eventObject, 10007) && eventObject.Result);
            }
            return(result);
        }
Exemplo n.º 2
0
        public bool OnUserLogin(TMSKSocket socket, int verSign, string userID, string userName, string lastTime, string userToken, string isadult, string signCode, int serverId = 0, string ip = null, int port = 0, int roleId = 0, int gameType = 0, long gameId = 0L)
        {
            KuaFuServerLoginData kuaFuServerLoginData = socket.ClientKuaFuServerLoginData;

            if (serverId > 0 && ip != null)
            {
                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 && serverId > 0 && gameType > 0)
            {
                if (GameManager.ServerLineID != GameManager.ServerId)
                {
                    LogManager.WriteLog(LogTypes.Error, "GameManager.ServerLineID未配置,禁止跨服登录", null, true);
                    return(false);
                }
                if (string.IsNullOrEmpty(ip) || port <= 0 || gameType <= 0 || gameId <= 0L)
                {
                    LogManager.WriteLog(LogTypes.Error, string.Format("角色{0}未能在服务器列表中找本服务器,作为跨服服务器", kuaFuServerLoginData.RoleId), null, true);
                    return(false);
                }
                if (!KuaFuManager.getInstance().CanKuaFuLogin())
                {
                    return(false);
                }
                socket.ServerId = serverId;
                switch (gameType)
                {
                case 1:
                    socket.IsKuaFuLogin = HuanYingSiYuanClient.getInstance().KuaFuLogin(kuaFuServerLoginData);
                    goto IL_399;

                case 2:
                    socket.IsKuaFuLogin = TianTiClient.getInstance().KuaFuLogin(kuaFuServerLoginData);
                    goto IL_399;

                case 5:
                case 6:
                case 15:
                    socket.IsKuaFuLogin = YongZheZhanChangClient.getInstance().KuaFuLogin(kuaFuServerLoginData);
                    goto IL_399;

                case 7:
                    socket.IsKuaFuLogin = YongZheZhanChangClient.getInstance().CanEnterKuaFuMap(kuaFuServerLoginData);
                    goto IL_399;

                case 8:
                    socket.IsKuaFuLogin = SingletonTemplate <CopyTeamManager> .Instance().HandleKuaFuLogin(kuaFuServerLoginData);

                    goto IL_399;

                case 10:
                    socket.IsKuaFuLogin = LangHunLingYuManager.getInstance().CanEnterKuaFuMap(kuaFuServerLoginData);
                    goto IL_399;

                case 12:
                    socket.IsKuaFuLogin = SingletonTemplate <ZhengBaManager> .Instance().CanKuaFuLogin(kuaFuServerLoginData);

                    goto IL_399;

                case 13:
                    socket.IsKuaFuLogin = SingletonTemplate <CoupleArenaManager> .Instance().CanKuaFuLogin(kuaFuServerLoginData);

                    goto IL_399;

                case 17:
                    socket.IsKuaFuLogin = true;
                    goto IL_399;

                case 19:
                case 20:
                    socket.IsKuaFuLogin = KarenBattleManager.getInstance().KuaFuLogin(kuaFuServerLoginData);
                    goto IL_399;

                case 22:
                    socket.IsKuaFuLogin = true;
                    goto IL_399;

                case 24:
                    socket.IsKuaFuLogin = BangHuiMatchManager.getInstance().KuaFuLogin(kuaFuServerLoginData);
                    goto IL_399;

                case 25:
                    socket.IsKuaFuLogin = KuaFuLueDuoManager.getInstance().KuaFuLogin(kuaFuServerLoginData);
                    goto IL_399;

                case 27:
                case 28:
                case 29:
                    socket.IsKuaFuLogin = true;
                    goto IL_399;

                case 30:
                    socket.IsKuaFuLogin = CompBattleManager.getInstance().KuaFuLogin(kuaFuServerLoginData);
                    goto IL_399;

                case 31:
                    socket.IsKuaFuLogin = CompMineManager.getInstance().KuaFuLogin(kuaFuServerLoginData);
                    goto IL_399;

                case 32:
                    socket.IsKuaFuLogin = true;
                    goto IL_399;

                case 34:
                    socket.IsKuaFuLogin = TianTi5v5Manager.getInstance().CanKuaFuLogin(kuaFuServerLoginData);
                    goto IL_399;

                case 36:
                    socket.IsKuaFuLogin = ZorkBattleManager.getInstance().KuaFuLogin(kuaFuServerLoginData);
                    goto IL_399;
                }
                EventObjectEx_I1 eventObject = new EventObjectEx_I1(kuaFuServerLoginData, 61, gameType);
                if (GlobalEventSource4Scene.getInstance().fireEvent(eventObject, 10007))
                {
                    socket.IsKuaFuLogin = eventObject.Result;
                }
IL_399:
                string dbIp = "";
                int    dbPort    = 0;
                string logDbIp   = "";
                int    logDbPort = 0;
                if (kuaFuServerLoginData.ips != null && kuaFuServerLoginData.ports != null)
                {
                    dbIp      = kuaFuServerLoginData.ips[0];
                    logDbIp   = kuaFuServerLoginData.ips[1];
                    dbPort    = kuaFuServerLoginData.ports[0];
                    logDbPort = kuaFuServerLoginData.ports[1];
                }
                else if (!KuaFuManager.getInstance().GetKuaFuDbServerInfo(serverId, out dbIp, out dbPort, out logDbIp, out logDbPort))
                {
                    LogManager.WriteLog(LogTypes.Error, string.Format("GameType{0}未能找到角色{1}的原服务器的服务器IP和端口", gameType, kuaFuServerLoginData.RoleId), null, true);
                    return(false);
                }
                if (socket.IsKuaFuLogin && serverId != 0)
                {
                    if (serverId != 0)
                    {
                        if (!this.InitGameDbConnection(serverId, dbIp, dbPort, logDbIp, logDbPort))
                        {
                            LogManager.WriteLog(LogTypes.Error, string.Format("连接角色{0}的原服务器的GameDBServer和LogDBServer失败", kuaFuServerLoginData.RoleId), null, true);
                            return(false);
                        }
                    }
                    return(socket.IsKuaFuLogin);
                }
            }
            else
            {
                if (GameManager.IsKuaFuServer)
                {
                    LogManager.WriteLog(LogTypes.Error, "跨服服务器禁止非跨服登录,请检查是否将LineID配置,原服应当为1", null, true);
                    return(false);
                }
                if (KuaFuManager.getInstance().LocalLogin(userID))
                {
                    kuaFuServerLoginData.RoleId   = 0;
                    kuaFuServerLoginData.GameId   = 0L;
                    kuaFuServerLoginData.GameType = 0;
                    kuaFuServerLoginData.ServerId = 0;
                    socket.ServerId     = 0;
                    socket.IsKuaFuLogin = false;
                    return(true);
                }
            }
            LogManager.WriteLog(LogTypes.Error, string.Format("未能找到角色{0}的跨服活动或副本信息", kuaFuServerLoginData.RoleId), null, true);
            return(false);
        }