public static int GameState(int gameId, int state) { int result; lock (EscapeBattle_K.Mutex) { EscapeBattlePkLogData log = null; if (!EscapeBattle_K.ThisLoopPkLogs.TryGetValue(gameId, out log)) { result = -11003; } else { log.State = state; foreach (int zhanDuiID in log.ZhanDuiIDs) { EscapeBattle_K.JoinPkData pkData; if (EscapeBattle_K.JoinDict.TryGetValue(zhanDuiID, out pkData)) { EscapeBattle_K.ZhanDuiChangeState(pkData, state); } } result = 0; } } return(result); }
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 ZhengBaRequestEnter(int zhanDuiID, out int gameId, out int kuaFuServerID, out string[] ips, out int[] ports) { gameId = 0; kuaFuServerID = 0; ips = null; ports = null; lock (EscapeBattle_K.Mutex) { EscapeBattle_K.JoinPkData roleData; if (!EscapeBattle_K.JoinDict.TryGetValue(zhanDuiID, out roleData) || roleData.CurrGameID == 0) { return(-4006); } EscapeBattlePkLogData logData = null; if (!EscapeBattle_K.ThisLoopPkLogs.TryGetValue(roleData.CurrGameID, out logData)) { return(-4006); } if (logData.State >= 3) { return(-2008); } gameId = roleData.CurrGameID; kuaFuServerID = roleData.ToServerID; } KuaFuServerInfo serverInfo = KuaFuServerManager.GetKuaFuServerInfo(kuaFuServerID); int result; if (null != serverInfo) { ips = new string[] { serverInfo.Ip }; ports = new int[] { serverInfo.Port }; result = 0; } else { result = -11001; } return(result); }
public static int ZhengBaKuaFuLogin(AutoCSer.Net.TcpInternalServer.ServerSocketSender socket, int zhanDuiID, int gameId, int srcServerID, out EscapeBattleFuBenData copyData) { copyData = null; lock (EscapeBattle_K.Mutex) { EscapeBattle_K.JoinPkData roleData; if (!EscapeBattle_K.JoinDict.TryGetValue(zhanDuiID, out roleData) || roleData.CurrGameID == 0) { return(-4006); } EscapeBattlePkLogData logData = null; if (!EscapeBattle_K.ThisLoopPkLogs.TryGetValue(roleData.CurrGameID, out logData)) { return(-4006); } copyData = roleData.CopyData; } KuaFuServerInfo serverInfo = KuaFuServerManager.GetKuaFuServerInfo(srcServerID); int result; if (null != serverInfo) { copyData.IPs = new string[] { serverInfo.DbIp, serverInfo.DbIp }; copyData.Ports = new int[] { serverInfo.DbPort, serverInfo.LogDbPort }; result = 0; } else { result = -11000; } return(result); }
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); }