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 (ZhanDuiZhengBa_K.Mutex) { if (ZhanDuiZhengBa_K.StateMachine.GetCurrState() != 5) { if (!Consts.TestMode || ZhanDuiZhengBa_K.StateMachine.GetCurrState() != 6) { return(-2001); } } ZhanDuiZhengBa_K.JoinRolePkData roleData = ZhanDuiZhengBa_K.TodayJoinRoleDatas.Find((ZhanDuiZhengBa_K.JoinRolePkData _r) => _r.ZhanDuiID == zhanDuiID); if (roleData == null || roleData.CurrGameID == 0) { return(-4006); } ZhanDuiZhengBaPkLogData logData = null; ZhanDuiZhengBa_K.ThisLoopPkLogs.TryGetValue(roleData.CurrGameID, out logData); if (roleData == null || logData == null) { return(-4006); } if (!roleData.WaitReqEnter) { return(-2001); } 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 ZhanDuiZhengBaFuBenData copyData) { copyData = null; lock (ZhanDuiZhengBa_K.Mutex) { ZhanDuiZhengBa_K.JoinRolePkData roleData = ZhanDuiZhengBa_K.TodayJoinRoleDatas.Find((ZhanDuiZhengBa_K.JoinRolePkData _r) => _r.ZhanDuiID == zhanDuiID && _r.CurrGameID == gameId); ZhanDuiZhengBaPkLogData logData = null; ZhanDuiZhengBa_K.ThisLoopPkLogs.TryGetValue(gameId, out logData); if (roleData == null || logData == null) { return(-12); } if (!roleData.WaitReqEnter) { return(-12); } 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); }
public bool SavePkLog(ZhanDuiZhengBaPkLogData log) { bool result; if (log == null) { result = false; } else { try { string sql = string.Format("INSERT INTO t_zhandui_zhengba_pk_log(month,id,zhanduiid1,zoneid1,zhanduiname1,zhanduiid2,zoneid2,zhanduiname2,result,upgrade,starttime,endtime) VALUES({0},{1},{2},{3},'{4}',{5},{6},'{7}',{8},{9},'{10}','{11}');", new object[] { log.Month, log.ID, log.ZhanDuiID1, log.ZoneID1, log.ZhanDuiName1, log.ZhanDuiID2, log.ZoneID2, log.ZhanDuiName2, log.PkResult, log.UpGrade ? 1 : 0, log.StartTime.ToString("yyyy-MM-dd HH:mm:ss"), log.EndTime.ToString("yyyy-MM-dd HH:mm:ss") }); TianTiPersistence.Instance.AddDelayWriteSql(sql, null, null); } catch (Exception ex) { LogManager.WriteLog(LogTypes.Error, "SavePkLog failed!", ex, true); return(false); } result = true; } return(result); }
public static List <ZhanDuiZhengBaNtfPkResultData> ZhengBaPkResult(int gameId, int winner1) { List <ZhanDuiZhengBaNtfPkResultData> result; lock (ZhanDuiZhengBa_K.Mutex) { LogManager.WriteLog(LogTypes.Trace, string.Format("ZhanDuiZhengBa::ZhengBaPkResult,gameid={0},winner1={1}", gameId, winner1), null, true); ZhanDuiZhengBaPkLogData log = null; if (!ZhanDuiZhengBa_K.ThisLoopPkLogs.TryGetValue(gameId, out log)) { result = null; } else if (winner1 != log.ZhanDuiID1 && winner1 != log.ZhanDuiID2) { result = null; } else { ZhanDuiZhengBaMatchConfig matchConfig = ZhanDuiZhengBa_K._Config.MatchConfigList.Find((ZhanDuiZhengBaMatchConfig _m) => _m.ID == log.ID); ZhanDuiZhengBa_K.JoinRolePkData winJoinRole = ZhanDuiZhengBa_K.TodayJoinRoleDatas.Find((ZhanDuiZhengBa_K.JoinRolePkData _r) => _r.ZhanDuiID == winner1 && _r.CurrGameID == gameId); ZhanDuiZhengBa_K.JoinRolePkData faildJoinRole = ZhanDuiZhengBa_K.TodayJoinRoleDatas.Find((ZhanDuiZhengBa_K.JoinRolePkData _r) => _r.ZhanDuiID != winner1 && _r.CurrGameID == gameId); if (faildJoinRole != null && winJoinRole != null && faildJoinRole.ZhanDuiID != winJoinRole.ZhanDuiID) { ZhanDuiZhengBaZhanDuiData roleData = ZhanDuiZhengBa_K.SyncData.ZhanDuiList.Find((ZhanDuiZhengBaZhanDuiData _r) => _r.ZhanDuiID == faildJoinRole.ZhanDuiID); if (roleData != null) { int newState = 2; LogManager.WriteLog(LogTypes.Trace, string.Format("ZhanDuiZhengBa::ZhengBaPkResult,gameid={0},zhanduiid={1},newstate={2}", gameId, roleData.ZhanDuiID, newState), null, true); if (ZhanDuiZhengBa_K.Persistence.UpdateRole(ZhanDuiZhengBa_K.SyncData.Month, roleData.ZhanDuiID, roleData.Grade, newState)) { roleData.State = newState; ZhanDuiZhengBa_K.SyncData.RoleModTime = TimeUtil.NowDateTime(); } } ZhanDuiZhengBa_K.TodayJoinRoleDatas.RemoveAll((ZhanDuiZhengBa_K.JoinRolePkData _r) => _r.ZhanDuiID == faildJoinRole.ZhanDuiID); } if (winJoinRole != null) { bool bSaveUpdate = false; ZhanDuiZhengBaZhanDuiData roleData = ZhanDuiZhengBa_K.SyncData.ZhanDuiList.Find((ZhanDuiZhengBaZhanDuiData _r) => _r.ZhanDuiID == winJoinRole.ZhanDuiID); if (roleData != null) { int newGrade = (int)matchConfig.WillUpGrade; int newState = 1; LogManager.WriteLog(LogTypes.Trace, string.Format("ZhanDuiZhengBa::ZhengBaPkResult,gameid={0},zhanduiid={1},newstate={2}", gameId, roleData.ZhanDuiID, newState), null, true); if (ZhanDuiZhengBa_K.Persistence.UpdateRole(ZhanDuiZhengBa_K.SyncData.Month, roleData.ZhanDuiID, newGrade, newState)) { roleData.Grade = newGrade; roleData.State = newState; ZhanDuiZhengBa_K.SyncData.RoleModTime = TimeUtil.NowDateTime(); bSaveUpdate = true; } } if (bSaveUpdate) { log.UpGrade = true; ZhanDuiZhengBa_K.TodayJoinRoleDatas.RemoveAll((ZhanDuiZhengBa_K.JoinRolePkData _r) => _r.ZhanDuiID == winJoinRole.ZhanDuiID); } } log.EndTime = TimeUtil.NowDateTime(); if (winner1 > 0 && winner1 == log.ZhanDuiID1) { log.PkResult = 1; } else if (winner1 > 0 && winner1 == log.ZhanDuiID2) { log.PkResult = 2; } else { log.PkResult = 0; } ZhanDuiZhengBa_K.SyncData.PKLogList.Add(log); TimeUtil.AgeByDateTime(ref ZhanDuiZhengBa_K.SyncData.PKLogModTime); ZhanDuiZhengBa_K.Persistence.SavePkLog(log); ZhanDuiZhengBa_K.ThisLoopPkLogs.Remove(gameId); result = null; } } return(result); }
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); }