private void InitScene(KarenBattleScene scene, GameClient client) { foreach (KarenBattleQiZhiConfig_West item in this.RuntimeData.NPCID2QiZhiConfigDict.Values) { scene.NPCID2QiZhiConfigDict.Add(item.QiZuoID, item.Clone() as KarenBattleQiZhiConfig_West); } scene.ScoreData.Clear(); for (int sideloop = 1; sideloop <= scene.SceneInfo.MaxLegions; sideloop++) { JunTuanRankData RankData = KarenBattleManager.getInstance().GetJunTuanRankDataBySide(sideloop); KarenBattleScoreData scoreData = new KarenBattleScoreData(); if (null != RankData) { scoreData.LegionID = RankData.JunTuanId; scoreData.Name = RankData.JunTuanName; } scene.ScoreData.Add(scoreData); } }
private bool CheckCanEnterKarenBattle(GameClient client) { bool result; if (client == null || client.ClientData.Faction == 0 || 0 == client.ClientData.JunTuanId) { result = false; } else if (client.ClientData.JunTuanZhiWu == 0 || 4 == client.ClientData.JunTuanZhiWu) { result = false; } else { JunTuanRankData RankData = this.GetJunTuanRankDataByClient(client); result = (null != RankData); } return(result); }
public void PushGameResultData(KarenBattleScene scene) { JunTuanRankData rankData = this.GetJunTuanRankDataBySide(scene.SuccessSide); if (null != rankData) { JunTuanBaseData baseData = JunTuanManager.getInstance().GetJunTuanBaseDataByJunTuanID(rankData.JunTuanId); if (null == baseData) { LogManager.WriteLog(LogTypes.Fatal, string.Format("无法获取军团基本信息 JunTuanId={0}", rankData.JunTuanId), null, true); } else if (baseData.BhList == null || baseData.BhList.Count == 0) { LogManager.WriteLog(LogTypes.Fatal, string.Format("军团基本信息BhList为空 JunTuanId={0}", rankData.JunTuanId), null, true); } else { int leaderBangHui = baseData.BhList[0]; int leaderServerID = 0; SceneUIClasses mapType = Global.GetMapSceneType(scene.m_nMapCode); int lingDiType = this.ConvertMapSceneTypeToCaiJiLingDiType(mapType); LingDiData oldLingDiData = null; List <LingDiData> LingDiList = JunTuanClient.getInstance().GetLingDiData(); if (null != LingDiList) { oldLingDiData = LingDiList.Find((LingDiData x) => x.LingDiType == lingDiType); } RoleData4Selector oldLeader = (oldLingDiData != null && oldLingDiData.RoleData != null) ? DataHelper.BytesToObject <RoleData4Selector>(oldLingDiData.RoleData, 0, oldLingDiData.RoleData.Length) : null; lock (this.Mutex) { if (!this.FactionIDVsServerIDDict.TryGetValue(leaderBangHui, out leaderServerID)) { JunTuanData data = JunTuanClient.getInstance().GetJunTuanData(leaderBangHui, rankData.JunTuanId, true); if (null == data) { LogManager.WriteLog(LogTypes.Fatal, string.Format("无法获取JunTuanData BangHuiID={0} JunTuanId={1}", leaderBangHui, rankData.JunTuanId), null, true); return; } LingDiCaiJiManager.getInstance().SetLingZhu(lingDiType, data.LeaderRoleId, rankData.JunTuanId, rankData.JunTuanName, null); EventLogManager.AddKarenBattleEvent(lingDiType, oldLeader, data.LeaderZoneId, rankData.JunTuanId, data.LeaderRoleId); return; } } BangHuiDetailData bhData = Global.GetBangHuiDetailData(-1, leaderBangHui, leaderServerID); if (null == bhData) { LogManager.WriteLog(LogTypes.Fatal, string.Format("无法获取帮会详细信息 BangHuiID={0} ServerID={1}", leaderBangHui, leaderServerID), null, true); } else { RoleDataEx dbRd = Global.sendToDB <RoleDataEx, string>(275, string.Format("{0}:{1}", -1, bhData.BZRoleID), leaderServerID); if (dbRd == null || dbRd.RoleID <= 0) { LogManager.WriteLog(LogTypes.Fatal, string.Format("无法获取帮主详细信息 BangHuiID={0} BZRoleID={1} ServerID={2}", leaderBangHui, bhData.BZRoleID, leaderServerID), null, true); } else { JunTuanManager.getInstance().OnInitGame(dbRd); RoleData4Selector leaderShowInfo = Global.RoleDataEx2RoleData4Selector(dbRd); LingDiCaiJiManager.getInstance().SetLingZhu(lingDiType, dbRd.RoleID, rankData.JunTuanId, rankData.JunTuanName, leaderShowInfo); EventLogManager.AddKarenBattleEvent(lingDiType, oldLeader, dbRd.ZoneID, rankData.JunTuanId, dbRd.RoleID); } } } } }
public bool ProcessGetKarenBattleStateCmd(GameClient client, int nID, byte[] bytes, string[] cmdParams) { try { int result = 0; int westcount = 0; int eastcount = 0; if (!this.IsGongNengOpened(client, true)) { client.sendCmd(nID, string.Format("{0}:{1}:{2}:{3}:{4}", new object[] { result, westcount, eastcount, "", "" }), false); return(true); } KarenGameStates timeState = KarenGameStates.None; this.CheckTimeCondition(ref timeState); if (this.CheckCanEnterKarenBattle(client)) { if (timeState == KarenGameStates.Wait) { result = 1; } else if (timeState == KarenGameStates.Start) { lock (this.Mutex) { foreach (KeyValuePair <int, KarenBattleSceneInfo> item in this.SceneDataDict) { KarenFuBenData fubenData = JunTuanClient.getInstance().GetKarenKuaFuFuBenData(item.Key); if (null != fubenData) { JunTuanRankData rankData = this.GetJunTuanRankDataByClient(client); if (null != rankData) { SceneUIClasses sceneType = Global.GetMapSceneType(item.Value.MapCode); if (sceneType == SceneUIClasses.KarenWest) { westcount = fubenData.GetRoleCountWithEnter(rankData.Rank); } else { eastcount = fubenData.GetRoleCountWithEnter(rankData.Rank); } } } } } result = 2; } } else if (timeState == KarenGameStates.Wait || timeState == KarenGameStates.Start) { JunTuanRankData RankData = this.GetJunTuanRankDataByClient(client); if (null != RankData) { result = 3; } else { result = 4; } } string eastjtname = ""; string westjtname = ""; List <LingDiData> LingDiList = JunTuanClient.getInstance().GetLingDiData(); if (null != LingDiList) { foreach (LingDiData item2 in LingDiList) { SceneUIClasses mapType = this.ConvertCaiJiLingDiTypeToMapSceneType(item2.LingDiType); if (mapType == SceneUIClasses.KarenWest) { westjtname = item2.JunTuanName; } else if (mapType == SceneUIClasses.KarenEast) { eastjtname = item2.JunTuanName; } } } client.sendCmd(nID, string.Format("{0}:{1}:{2}:{3}:{4}", new object[] { result, westcount, eastcount, westjtname, eastjtname }), false); return(true); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, Global.GetDebugHelperInfo(client.ClientSocket), false, false); } return(false); }
public bool ProcessKarenBattleEnterCmd(GameClient client, int nID, byte[] bytes, string[] cmdParams) { try { int result = 0; if (!this.IsGongNengOpened(client, true)) { client.sendCmd <int>(nID, result, false); return(true); } int roleID = Global.SafeConvertToInt32(cmdParams[0]); int mapCode = Global.SafeConvertToInt32(cmdParams[1]); KarenBattleSceneInfo sceneItem = null; KarenGameStates state = KarenGameStates.None; int eastcount = 0; int westcount = 0; JunTuanRankData rankData = this.GetJunTuanRankDataByClient(client); if (rankData == null || !this.CheckCanEnterKarenBattle(client)) { result = -5; client.sendCmd(nID, string.Format("{0}:{1}:{2}:{3}", new object[] { result, 0, westcount, eastcount }), false); return(true); } if (!this.CheckMap(client)) { result = -21; client.sendCmd(nID, string.Format("{0}:{1}:{2}:{3}", new object[] { result, 0, westcount, eastcount }), false); return(true); } result = this.CheckTimeCondition(ref state); if (state != KarenGameStates.Start) { result = -2001; client.sendCmd(nID, string.Format("{0}:{1}:{2}:{3}", new object[] { result, 0, westcount, eastcount }), false); return(true); } lock (this.Mutex) { if (!this.SceneDataDict.TryGetValue(mapCode, out sceneItem)) { result = -5; client.sendCmd(nID, string.Format("{0}:{1}:{2}:{3}", new object[] { result, 0, westcount, eastcount }), false); return(true); } foreach (KeyValuePair <int, KarenBattleSceneInfo> item in this.SceneDataDict) { KarenFuBenData fbData = JunTuanClient.getInstance().GetKarenKuaFuFuBenData(item.Key); if (null != fbData) { SceneUIClasses sType = Global.GetMapSceneType(item.Value.MapCode); if (sType == SceneUIClasses.KarenWest) { westcount = fbData.GetRoleCountWithEnter(rankData.Rank); } else { eastcount = fbData.GetRoleCountWithEnter(rankData.Rank); } } } DateTime lastEnterTime = Global.GetRoleParamsDateTimeFromDB(client, "20019"); if (!this.GMTest && TimeUtil.NowDateTime().Ticks - lastEnterTime.Ticks < 10000000L * (long)sceneItem.EnterCD) { GameManager.ClientMgr.NotifyImportantMsg(client, string.Format(GLang.GetLang(2615, new object[0]), sceneItem.EnterCD), GameInfoTypeIndexes.Error, ShowGameInfoTypes.ErrAndBox, 0); result = -2007; client.sendCmd(nID, string.Format("{0}:{1}:{2}:{3}", new object[] { result, 0, westcount, eastcount }), false); return(true); } KuaFuServerInfo kfserverInfo = null; KarenFuBenData fubenData = JunTuanClient.getInstance().GetKarenKuaFuFuBenData(mapCode); if (fubenData == null || !KuaFuManager.getInstance().TryGetValue(fubenData.ServerId, out kfserverInfo)) { result = -11000; client.sendCmd(nID, string.Format("{0}:{1}:{2}:{3}", new object[] { result, 0, westcount, eastcount }), false); return(true); } if (fubenData.GetRoleCountWithEnter(rankData.Rank) >= sceneItem.MaxEnterNum) { result = -22; client.sendCmd(nID, string.Format("{0}:{1}:{2}:{3}", new object[] { result, 0, westcount, eastcount }), false); return(true); } SceneUIClasses sceneType = Global.GetMapSceneType(sceneItem.MapCode); KuaFuServerLoginData clientKuaFuServerLoginData = Global.GetClientKuaFuServerLoginData(client); if (null != clientKuaFuServerLoginData) { clientKuaFuServerLoginData.RoleId = client.ClientData.RoleID; clientKuaFuServerLoginData.GameId = (long)fubenData.GameId; clientKuaFuServerLoginData.GameType = fubenData.GameType; clientKuaFuServerLoginData.EndTicks = fubenData.EndTime.Ticks; clientKuaFuServerLoginData.ServerId = client.ServerId; clientKuaFuServerLoginData.ServerIp = kfserverInfo.Ip; clientKuaFuServerLoginData.ServerPort = kfserverInfo.Port; clientKuaFuServerLoginData.FuBenSeqId = 0; } if (result >= 0) { result = JunTuanClient.getInstance().GameFuBenRoleChangeState(client.ServerId, client.ClientData.RoleID, (int)clientKuaFuServerLoginData.GameId, rankData.Rank, 4); if (result >= 0) { GlobalNew.RecordSwitchKuaFuServerLog(client); client.sendCmd <KuaFuServerLoginData>(14000, Global.GetClientKuaFuServerLoginData(client), false); } else { Global.GetClientKuaFuServerLoginData(client).RoleId = 0; } } } client.sendCmd(nID, string.Format("{0}:{1}:{2}:{3}", new object[] { result, 0, westcount, eastcount }), false); return(true); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, Global.GetDebugHelperInfo(client.ClientSocket), false, false); } return(false); }