public void ThreadProc(object state) { do { Thread.Sleep(1000); }while (!this.Persistence.Initialized); for (;;) { try { DateTime now = TimeUtil.NowDateTime(); Global.UpdateNowTime(now); if (now > this.CheckRoleTimerProcTime) { this.CheckRoleTimerProcTime = now.AddSeconds(1.428); int signUpCnt; int startCnt; this.CheckRoleTimerProc(now, out signUpCnt, out startCnt); ClientAgentManager.Instance().SetGameTypeLoad(this.GameType, signUpCnt, startCnt); } if (now > this.SaveServerStateProcTime) { this.SaveServerStateProcTime = now.AddSeconds(30.0); if (now.Hour >= 3 && now.Hour < 4) { this.ClearRolePairFightCount(); this.Persistence.UpdateTianTiRankData(now, false, false); } } if (now > this.CheckGameFuBenTime) { this.CheckGameFuBenTime = now.AddSeconds(1000.0); this.CheckGameFuBenTimerProc(now); } AsyncDataItem[] asyncEvArray = ZhengBaManagerK.Instance().Update(); ClientAgentManager.Instance().BroadCastAsyncEvent(this.GameType, asyncEvArray); this.Persistence.WriteRoleInfoDataProc(); CoupleArenaService.getInstance().Update(); CoupleWishService.getInstance().Update(); zhengDuoService.Instance().Update(now); BangHuiMatchService.Instance().Update(now); CompService.Instance().Update(now); TianTi5v5Service.ThreadProc(null); Zork5v5Service.Instance().Update(now); int sleepMS = (int)(TimeUtil.NowDateTime() - now).TotalMilliseconds; this.Persistence.SaveCostTime(sleepMS); sleepMS = 1000 - sleepMS; if (sleepMS < 50) { sleepMS = 50; } Thread.Sleep(sleepMS); } catch (Exception ex) { LogManager.WriteExceptionUseCache(ex.ToString()); } } }
public static int GameResult(int gameId, List <int> zhanDuiScoreList) { int result; lock (EscapeBattle_K.Mutex) { EscapeBattlePkLogData log = null; LogManager.WriteLog(LogTypes.Trace, string.Format("EscapeBattle::GameResult,gameid={0},scoreList={1}", gameId, string.Join <int>("_", zhanDuiScoreList)), null, true); if (!EscapeBattle_K.ThisLoopPkLogs.TryGetValue(gameId, out log)) { result = 3; } else { DateTime now = TimeUtil.NowDateTime(); for (int i = 0; i < zhanDuiScoreList.Count - 1; i += 2) { int zhanDuiID = zhanDuiScoreList[i]; int score = zhanDuiScoreList[i + 1]; if (log.ZhanDuiIDs.Contains(zhanDuiID)) { EscapeBattle_K.JoinPkData pkData; if (EscapeBattle_K.JoinDict.TryGetValue(zhanDuiID, out pkData)) { if (pkData.InGame) { pkData.InGame = false; pkData.CurrGameID = 0; pkData.DuanWeiJiFen = TianTi5v5Service.UpdateEscapeZhanDui(pkData.ZhanDuiID, score, now); } } LogManager.WriteLog(LogTypes.Trace, string.Format("EscapeBattle::GameResult,gameid={0},zhanduiid={1},score={2}", gameId, zhanDuiID, score), null, true); EscapeBattle_K.ZhanDuiChangeState(pkData, 5); } } bool canRemove = true; foreach (int zhanDuiID in log.ZhanDuiIDs) { EscapeBattle_K.JoinPkData pkData; if (EscapeBattle_K.JoinDict.TryGetValue(zhanDuiID, out pkData) && pkData.InGame) { canRemove = false; } } if (canRemove) { EscapeBattle_K.ThisLoopPkLogs.Remove(gameId); ClientAgentManager.Instance().RemoveKfFuben(EscapeBattle_K.GameType, log.ToServerID, (long)log.GameID); } result = 0; } } return(result); }
public static int ZhanDuiJoin(int zhanDuiID, int jiFen, int readyNum) { DateTime now = TimeUtil.NowDateTime(); int result; if (!EscapeBattleConsts.CheckOpenState(now)) { result = -11004; } else { TianTi5v5ZhanDuiData zhanDuiData = TianTi5v5Service.GetZhanDuiData(zhanDuiID); if (null == zhanDuiData) { result = -4031; } else { lock (EscapeBattle_K.Mutex) { EscapeBattle_K.JoinPkData joinData; if (!EscapeBattle_K.JoinDict.TryGetValue(zhanDuiID, out joinData)) { joinData = new EscapeBattle_K.JoinPkData { ZhanDuiID = zhanDuiID }; EscapeBattle_K.JoinDict[zhanDuiID] = joinData; } joinData.DuanWeiJiFen = zhanDuiData.EscapeJiFen; joinData.ZhanDuiName = zhanDuiData.ZhanDuiName; joinData.ZoneId = zhanDuiData.ZoneID; joinData.ReadyNum = readyNum; if (readyNum > 0) { joinData.ReadyState = true; joinData.State = 2; } else if (readyNum == 0) { joinData.ReadyState = false; } } result = 0; } } return(result); }
public TianTi5v5RankData ZhanDuiGetRankingData(DateTime modifyTime) { return(TianTi5v5Service.ZhanDuiGetRankingData(modifyTime)); }
public KuaFu5v5FuBenData ZhanDuiGetFuBenData(int gameId) { return(TianTi5v5Service.ZhanDuiGetFuBenData(gameId)); }
public int ZhanDuiRoleChangeState(int serverId, int zhanDuiID, int roleId, int state, int gameID) { return(TianTi5v5Service.ZhanDuiRoleChangeState(serverId, zhanDuiID, roleId, state, gameID)); }
public int ZhanDuiRoleSignUp(int serverId, int gameType, int teamID, long zhanLi, int groupIndex) { return(TianTi5v5Service.ZhanDuiRoleSignUp(serverId, gameType, teamID, zhanLi, groupIndex)); }
public int UpdateZhanDuiData(TianTi5v5ZhanDuiData data, ZhanDuiDataModeTypes modeType) { return(TianTi5v5Service.UpdateZhanDuiData(data, modeType)); }
public int DeleteZhanDui(int serverID, int roleid, int teamID) { return(TianTi5v5Service.DeleteZhanDui(serverID, roleid, teamID)); }
public int UpdateZhanDuiXuanYan(long teamID, string xuanYan) { return(TianTi5v5Service.UpdateZhanDuiXuanYan(teamID, xuanYan)); }
public int CreateZhanDui(int serverID, TianTi5v5ZhanDuiData pData) { return(TianTi5v5Service.CreateZhanDui(serverID, pData)); }
private static bool CreateGameFuBen(DateTime now, params EscapeBattle_K.JoinPkData[] joinArr) { for (int side = 1; side <= joinArr.Length; side++) { joinArr[side - 1].Side = side; if (joinArr[side - 1].InGame) { return(true); } } int toServerId = 0; int gameId = TianTiPersistence.Instance.GetNextGameId(); if (ClientAgentManager.Instance().AssginKfFuben(EscapeBattle_K.GameType, (long)gameId, 10, out toServerId)) { EscapeBattleFuBenData copyData = new EscapeBattleFuBenData(); copyData.GameID = (long)gameId; copyData.ServerID = toServerId; EscapeBattleNtfEnterData data = new EscapeBattleNtfEnterData(); data.ToServerId = toServerId; data.GameId = gameId; EscapeBattlePkLogData log = new EscapeBattlePkLogData(); log.Season = EscapeBattle_K.SyncData.Season; log.StartTime = now; log.GameID = gameId; log.ToServerID = toServerId; EscapeBattleMatchConfig config = EscapeBattle_K._Config.MatchConfigList[0]; log.EndTime = now.AddSeconds((double)config.TotalSecs); foreach (EscapeBattle_K.JoinPkData joinRole in joinArr) { copyData.SideDict[(long)joinRole.ZhanDuiID] = joinRole.Side; copyData.RoleDict.AddRange(TianTi5v5Service.GetZhanDuiMemberIDs(joinRole.ZhanDuiID)); joinRole.ToServerID = toServerId; joinRole.CurrGameID = gameId; joinRole.CopyData = copyData; joinRole.InGame = true; data.ZhanDuiIDList.Add(joinRole.ZhanDuiID); log.ZhanDuiIDs.Add(joinRole.ZhanDuiID); log.ZoneIDs.Add(joinRole.ZoneId); log.ZhanDuiNames.Add(joinRole.ZhanDuiName); EscapeBattle_K.JoinPkData zhandui; if (EscapeBattle_K.JoinDict.TryGetValue(joinRole.ZhanDuiID, out zhandui)) { zhandui.InGame = true; zhandui.CurrGameID = gameId; zhandui.Side = joinRole.Side; zhandui.ToServerID = toServerId; zhandui.CopyData = copyData; zhandui.State = 3; zhandui.ReadyState = false; zhandui.ReadyNum = 0; } } EscapeBattle_K.AsyncEvQ.Enqueue(KFCallMsg.New <EscapeBattleNtfEnterData>(KuaFuEventTypes.EscapeBattle_NotifyEnter, data)); EscapeBattle_K.ThisLoopPkLogs[gameId] = log; if (!EscapeBattle_K.NeedUpdateRank) { EscapeBattle_K.NeedUpdateRank = true; } LogManager.WriteLog(LogTypes.Trace, string.Format("大逃杀第{0}赛季战队成员通知入场,GameID={1},zhanduiIDs={2}", EscapeBattle_K.SyncData.Season, data.GameId, string.Join <int>(",", log.ZhanDuiIDs)), null, true); return(true); } LogManager.WriteLog(LogTypes.Warning, string.Format("大逃杀第{0}赛季分配游戏服务器失败", EscapeBattle_K.SyncData.Season), null, true); return(false); }
private static void InitCmdDict() { Program.CmdDict.AddCmdHandler("exit", new ParameterizedThreadStart(Program.ExitCmdHandler)); Program.CmdDict.AddCmdHandler("reload", new ParameterizedThreadStart(Program.ReloadCmdHandler)); Program.CmdDict.AddCmdHandler("clear", new ParameterizedThreadStart(Program.ClearCmdHandler)); Program.CmdDict.AddCmdHandler("load", new ParameterizedThreadStart(Program.ReloadCmdHandler)); Program.CmdDict.AddCmdHandler("tcpinfo", new ParameterizedThreadStart(CmdMonitor.ShowServerTCPInfo)); Program.CmdDict.AddCmdHandler("opt", delegate(object x) { Program.OptCmdProc(x); }); Program.CmdDict.AddCmdHelp("组队天梯,排行刷新", new string[] { "tianti5v5", "paihang" }); Program.CmdDict.AddCmdHelp("组队天梯,排行刷新,重建月度排行", new string[] { "tianti5v5", "paihang", "month" }); Program.CmdDict.AddCmdHandler("tianti5v5", delegate(object x) { string[] cmdFields = x as string[]; if (cmdFields.Length >= 2 && cmdFields[1] == "paihang") { TianTi5v5Service.UpdateZhanDuiRankData(TimeUtil.NowDateTime(), cmdFields.Length >= 3 && cmdFields[2] == "month"); Console.Write("组队天梯,排行刷新"); } else { Console.Write("组队天梯,未知命令!"); } }); Program.CmdDict.AddCmdHelp("组队天梯,排行重建,会先重建组队竞技月排行", new string[] { "zhanduizhengba", "load" }); Program.CmdDict.AddCmdHelp("战队争霸,排行刷新", new string[] { "zhanduizhengba", "reload" }); Program.CmdDict.AddCmdHandler("zhanduizhengba", delegate(object x) { string[] cmdFields = x as string[]; if (cmdFields.Length >= 2 && cmdFields[1] == "load") { TianTi5v5Service.PaiHangCopy(TimeUtil.NowDateTime()); ZhanDuiZhengBa_K.LoadSyncData(TimeUtil.NowDateTime(), false); Console.Write("战队争霸,排行重建"); } else if (cmdFields.Length >= 2 && cmdFields[1] == "reload") { ZhanDuiZhengBa_K.LoadSyncData(TimeUtil.NowDateTime(), cmdFields[1] == "reload"); Console.Write("战队争霸,排行刷新"); } else { Console.Write("战队争霸,未知命令!"); } }); Program.CmdDict.AddCmdHandler("serverlist", delegate(object x) { KuaFuServerManager.UpdateServerListAge(); }); Program.CmdDict.AddCmdHandler("flushcity", delegate(object x) { YongZheZhanChangPersistence.Instance.LangHunLingYuBroadcastServerIdHashSet.Clear(); }); Program.CmdDict.AddCmdHandler("testmode", delegate(object x) { Global.TestMode = !Global.TestMode; if (Global.TestMode) { Consts.TianTiRoleCountTotal = 1; } else { Consts.TianTiRoleCountTotal = 2; } Console.WriteLine("测试模式状态:{0}", Global.TestMode); }); Program.CmdDict.AddCmdHandler("-maxteamcopy", delegate(object x) { try { string[] cmdFields = x as string[]; int copyId = Convert.ToInt32(cmdFields[1]); int num = Convert.ToInt32(cmdFields[2]); ConstData.MaxCopyTeamMemberNumDict[copyId] = num; string msg = string.Format("设置组队副本{0}人数上线为{1}", copyId, num); Console.WriteLine(msg); } catch (Exception ex) { LogManager.WriteException(ex.ToString()); } }); Program.CmdDict.AddCmdHandler("-help", delegate(object x) { try { string[] args = x as string[]; if (args != null && args.Length > 0) { args = args.Skip(1).ToArray <string>(); } Program.CmdDict.ShowHelp(args); } catch (Exception ex) { LogManager.WriteException(ex.ToString()); } }); }
private static bool CreateGameFuBen(DateTime now, ZhanDuiZhengBaMatchConfig matchConfig, ZhanDuiZhengBa_K.JoinRolePkData joinRole1, ZhanDuiZhengBa_K.JoinRolePkData joinRole2) { bool result; if (joinRole1.CurrGameID > 0) { result = true; } else { int betterZhanDuiID = (joinRole1.Rank < joinRole2.Rank) ? joinRole1.ZhanDuiID : joinRole2.ZhanDuiID; int toServerId = 0; int gameId = TianTiPersistence.Instance.GetNextGameId(); if (ClientAgentManager.Instance().AssginKfFuben(ZhanDuiZhengBa_K.GameType, (long)gameId, 10, out toServerId)) { ZhanDuiZhengBaFuBenData copyData = new ZhanDuiZhengBaFuBenData(); copyData.GameID = (long)gameId; copyData.SideDict[(long)joinRole1.ZhanDuiID] = 1; copyData.SideDict[(long)joinRole2.ZhanDuiID] = 2; copyData.BetterZhanDuiID = betterZhanDuiID; copyData.ConfigID = matchConfig.ID; copyData.JoinGrade = (int)matchConfig.JoinGrade; copyData.NewGrade = (int)matchConfig.WillUpGrade; copyData.ServerID = toServerId; copyData.RoleDict.AddRange(TianTi5v5Service.GetZhanDuiMemberIDs(joinRole1.ZhanDuiID)); if (joinRole1.ZhanDuiID != joinRole2.ZhanDuiID) { copyData.RoleDict.AddRange(TianTi5v5Service.GetZhanDuiMemberIDs(joinRole2.ZhanDuiID)); } joinRole1.ToServerID = (joinRole2.ToServerID = toServerId); joinRole1.CurrGameID = (joinRole2.CurrGameID = gameId); joinRole1.CopyData = (joinRole2.CopyData = copyData); joinRole1.WaitReqEnter = (joinRole2.WaitReqEnter = true); ZhanDuiZhengBaNtfEnterData data = new ZhanDuiZhengBaNtfEnterData(); data.ZhanDuiID1 = joinRole1.ZhanDuiID; data.ZhanDuiID2 = joinRole2.ZhanDuiID; data.ToServerId = toServerId; data.GameId = gameId; data.Day = ZhanDuiZhengBa_K.SyncData.RealActID; ZhanDuiZhengBa_K.AsyncEvQ.Enqueue(KFCallMsg.New <ZhanDuiZhengBaNtfEnterData>(KuaFuEventTypes.ZhanDuiZhengBa_NotifyEnter, data)); LogManager.WriteLog(LogTypes.Info, string.Format("战队争霸第{0}轮战队成员通知入场,zhanduiID1={1},zhanduiID2={2}", ZhanDuiZhengBa_K.SyncData.RealActID, joinRole1.ZhanDuiID, joinRole2.ZhanDuiID), null, true); ZhanDuiZhengBaPkLogData log = new ZhanDuiZhengBaPkLogData(); log.Month = ZhanDuiZhengBa_K.SyncData.Month; log.ID = ZhanDuiZhengBa_K.SyncData.RealActID; log.ZhanDuiID1 = joinRole1.ZhanDuiID; log.ZoneID1 = joinRole1.ZoneId; log.ZhanDuiName1 = joinRole1.RoleName; log.ZhanDuiID2 = joinRole2.ZhanDuiID; log.ZoneID2 = joinRole2.ZoneId; log.ZhanDuiName2 = joinRole2.RoleName; log.StartTime = now; log.BetterZhanDuiID = betterZhanDuiID; log.GameID = (long)gameId; ZhanDuiZhengBa_K.ThisLoopPkLogs[gameId] = log; result = true; } else { LogManager.WriteLog(LogTypes.Error, string.Format("战队争霸第{0}轮分配游戏服务器失败,zhanduiID1={1},zhanduiID2={2}", ZhanDuiZhengBa_K.SyncData.RealActID, joinRole1.ZhanDuiID, joinRole2.ZhanDuiID), null, true); result = false; } } return(result); }
public ZhanDuiZhengBaSyncData LoadZhengBaSyncData(DateTime now, int selectRoleIfNewCreate) { ZhanDuiZhengBaSyncData syncData = new ZhanDuiZhengBaSyncData(); syncData.Month = ZhengBaUtils.MakeMonth(now); syncData.IsThisMonthInActivity = false; List <ZhanDuiZhengBaZhanDuiData> rankList = new List <ZhanDuiZhengBaZhanDuiData>(); List <ZhanDuiZhengBaZhanDuiData> zhanDuiList = new List <ZhanDuiZhengBaZhanDuiData>(); List <ZhanDuiZhengBaPkLogData> pkLogList = new List <ZhanDuiZhengBaPkLogData>(); if (KuaFuServerManager.IsGongNengOpened(113)) { TianTi5v5RankData rankData = TianTi5v5Service.ZhanDuiGetRankingData(DateTime.MinValue); bool bMonthFirst = this.CheckZhengBaRank(selectRoleIfNewCreate, syncData.Month); if (bMonthFirst) { syncData.IsThisMonthInActivity = true; } else if (syncData.Month == ZhengBaUtils.MakeMonth(rankData.ModifyTime) && rankData.MonthPaiHangList.Count > ZhanDuiZhengBaConsts.MinZhanDuiNum) { syncData.IsThisMonthInActivity = true; int[] groupArray = MathEx.MatchGroupBinary(64); int i = 0; while (i < 64 && i < rankData.MonthPaiHangList.Count) { int group = Array.IndexOf <int>(groupArray, i + 1) + 1; TianTi5v5ZhanDuiData data = rankData.MonthPaiHangList[i]; ZhanDuiZhengBaZhanDuiData zhandui = new ZhanDuiZhengBaZhanDuiData { ZhanDuiName = data.ZhanDuiName, ZhanDuiID = data.ZhanDuiID, ZhanLi = (long)((int)data.ZhanDouLi), DuanWeiId = data.DuanWeiId, DuanWeiRank = data.DuanWeiRank, ZoneId = data.ZoneID, MemberList = new List <RoleOccuNameZhanLi>(), Group = group }; foreach (TianTi5v5ZhanDuiRoleData a in data.teamerList) { if (a.RoleID == data.LeaderRoleID) { zhandui.MemberList.Insert(0, new RoleOccuNameZhanLi { RoleName = a.RoleName, Occupation = a.RoleOcc, ZhanLi = a.ZhanLi }); } else { zhandui.MemberList.Add(new RoleOccuNameZhanLi { RoleName = a.RoleName, Occupation = a.RoleOcc, ZhanLi = a.ZhanLi }); } } rankList.Add(zhandui); i++; } if (!this.BuildZhengBaRank(syncData.Month, rankList)) { LogManager.WriteLog(LogTypes.Fatal, "生成并写入战队争霸64强数据失败!", null, true); syncData.IsThisMonthInActivity = false; } } if (syncData.IsThisMonthInActivity) { zhanDuiList = this.LoadZhengBaRankData(syncData.Month); pkLogList = this.LoadPkLogList(syncData.Month); } } syncData.ZhanDuiList = zhanDuiList; syncData.PKLogList = pkLogList; syncData.RoleModTime = now; return(syncData); }