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); }
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); }