/// <summary> /// 添加副本 /// </summary> /// <param name="client"></param> /// <param name="copyMap"></param> /// <param name="sceneType"></param> public void AddCopyScenes(GameClient client, CopyMap copyMap, SceneUIClasses sceneType) { if (sceneType != SceneUIClasses.CoupleArena) { return; } int fuBenSeqId = copyMap.FuBenSeqID; int mapCode = copyMap.MapCode; lock (Mutex) { CoupleArenaCopyScene scene = null; if (!this.FuBenSeq2CopyScenes.TryGetValue(fuBenSeqId, out scene)) { scene = new CoupleArenaCopyScene(); scene.GameId = (int)Global.GetClientKuaFuServerLoginData(client).GameId; scene.FuBenSeq = fuBenSeqId; scene.MapCode = mapCode; scene.CopyMap = copyMap; FuBenSeq2CopyScenes[fuBenSeqId] = scene; } scene.EnterRoleSide[client.ClientData.RoleID] = client.ClientData.BattleWhichSide; copyMap.IsKuaFuCopy = true; copyMap.SetRemoveTicks(TimeUtil.NOW() + (WarCfg.WaitSec + WarCfg.FightSec + WarCfg.ClearSec + 120) * TimeUtil.SECOND); GlobalNew.UpdateKuaFuRoleDayLogData(client.ServerId, client.ClientData.RoleID, TimeUtil.NowDateTime(), client.ClientData.ZoneID, 0, 1, 0, 0, (int)GameTypes.CoupleArena); } }
public static bool RemoveCopyScene(CopyMap copyMap, SceneUIClasses sceneType) { bool success = true; lock (GlobalServiceManager.Scene2ManagerDict) { List <IManager> list; if (GlobalServiceManager.Scene2ManagerDict.TryGetValue((int)sceneType, out list)) { foreach (IManager i in list) { ICopySceneManager m2 = i as ICopySceneManager; if (null != m2) { try { success = (success && m2.RemoveCopyScene(copyMap, sceneType)); } catch (Exception ex) { LogManager.WriteException(ex.ToString()); } } } } } return(success); }
public bool ProcessJoinCmd(GameClient client, int nID, byte[] bytes, string[] cmdParams) { try { SceneUIClasses sceneType = Global.GetMapSceneType(client.ClientData.MapCode); if (sceneType != SceneUIClasses.Normal) { client.sendCmd(nID, "-21".ToString(), false); return(true); } if (!this.IsGongNengOpened(client, true)) { client.sendCmd(nID, "-2001".ToString(), false); return(true); } if (client.ClientData.SignUpGameType != 0) { client.sendCmd(nID, "-2002".ToString(), false); return(true); } if (KuaFuManager.getInstance().IsInCannotJoinKuaFuCopyTime(client)) { client.sendCmd(nID, "-2004".ToString(), false); return(true); } SystemXmlItem systemFuBenItem = null; if (!GameManager.systemFuBenMgr.SystemXmlItemDict.TryGetValue(this._runtimeData.CopyID, out systemFuBenItem)) { client.sendCmd(nID, "-3".ToString(), false); return(true); } int minLevel = systemFuBenItem.GetIntValue("MinLevel", -1); int minZhuanSheng = systemFuBenItem.GetIntValue("MinZhuanSheng", -1); int levelLimit = minZhuanSheng * 100 + minLevel; if (client.ClientData.ChangeLifeCount * 100 + client.ClientData.Level < levelLimit) { client.sendCmd(nID, "-19".ToString(), false); return(true); } int oldCount = this.GetElementWarCount(client); if (oldCount >= systemFuBenItem.GetIntValue("FinishNumber", -1)) { client.sendCmd(nID, "-16".ToString(), false); return(true); } int result = 0; if (result > 0) { client.ClientData.SignUpGameType = 4; GlobalNew.UpdateKuaFuRoleDayLogData(client.ServerId, client.ClientData.RoleID, TimeUtil.NowDateTime(), client.ClientData.ZoneID, 1, 0, 0, 0, 4); } client.sendCmd <int>(nID, result, false); return(true); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, Global.GetDebugHelperInfo(client.ClientSocket), false, false); } return(false); }
public void AddCopyScene(GameClient client, CopyMap copyMap, SceneUIClasses sceneType) { if (copyMap.MapCode == this.MapCode) { int fuBenSeqId = copyMap.FuBenSeqID; int mapCode = copyMap.MapCode; lock (this.copyDict) { MoRiJudgeCopy copy = null; if (!this.copyDict.TryGetValue(fuBenSeqId, out copy)) { copy = new MoRiJudgeCopy(); copy.MyCopyMap = copyMap; copy.GameId = Global.GetClientKuaFuServerLoginData(client).GameId; copy.StateTimeData.GameType = 3; copy.StartTime = TimeUtil.NowDateTime(); copy.EndTime = copy.StartTime.AddMinutes((double)this.CopyMaxAliveMinutes); copy.LimitKillCount = 0; copy.RoleCount = 1; copy.Passed = false; this.copyDict[fuBenSeqId] = copy; } else { copy.RoleCount++; } } FuBenManager.AddFuBenSeqID(client.ClientData.RoleID, copyMap.FuBenSeqID, 0, copyMap.FubenMapID); copyMap.IsKuaFuCopy = true; copyMap.SetRemoveTicks(TimeUtil.NOW() + (long)((this.CopyMaxAliveMinutes + 3) * 60000)); GlobalNew.UpdateKuaFuRoleDayLogData(client.ServerId, client.ClientData.RoleID, TimeUtil.NowDateTime(), client.ClientData.ZoneID, 0, 1, 0, 0, 3); } }
public void OnInitGame(SceneUIClasses ManagerType, GameClient client) { lock (this.Mutex) { this.FactionIDVsServerIDDict[client.ClientData.Faction] = client.ServerId; } Global.SaveRoleParamsDateTimeToDB(client, "20019", TimeUtil.NowDateTime(), true); EventLogManager.AddKarenBattleEnterEvent(this.ConvertMapSceneTypeToCaiJiLingDiType(ManagerType), client); }
/// <summary> /// 罗兰城战攻防竞价申请指令处理 /// </summary> /// <param name="client"></param> /// <param name="nID"></param> /// <param name="bytes"></param> /// <param name="cmdParams"></param> /// <returns></returns> public bool ProcessTianTiJoinCmd(GameClient client, int nID, byte[] bytes, string[] cmdParams) { try { SceneUIClasses sceneType = Global.GetMapSceneType(client.ClientData.MapCode); if (sceneType != SceneUIClasses.Normal) { client.sendCmd(nID, StdErrorCode.Error_Denied_In_Current_Map); return(true); } if (!IsGongNengOpened(client, true)) { client.sendCmd(nID, StdErrorCode.Error_Not_In_valid_Time); return(true); } int result = StdErrorCode.Error_Not_In_valid_Time; int gropuIndex = client.ClientData.TianTiData.DuanWeiId; TimeSpan time = TimeUtil.NowDateTime().TimeOfDay; lock (RuntimeData.Mutex) { for (int i = 0; i < RuntimeData.TimePoints.Count - 1; i += 2) { if (time >= RuntimeData.TimePoints[i] && time < RuntimeData.TimePoints[i + 1]) { result = StdErrorCode.Error_Success; break; } } } if (result >= 0) { result = TianTiClient.getInstance().TianTiSignUp(client.strUserID, client.ClientData.RoleID, client.ClientData.ZoneID, (int)GameTypes.TianTi, gropuIndex, client.ClientData.CombatForce); if (result > 0) { client.ClientData.SignUpGameType = (int)GameTypes.TianTi; GlobalNew.UpdateKuaFuRoleDayLogData(client.ServerId, client.ClientData.RoleID, TimeUtil.NowDateTime(), client.ClientData.ZoneID, 1, 0, 0, 0, (int)GameTypes.TianTi); } } //发送结果给客户端 client.sendCmd(nID, result); return(true); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, Global.GetDebugHelperInfo(client.ClientSocket), false); } return(false); }
public MarryFubenResult ClientReady(GameClient client, int FuBenID) { MarryFubenResult result; if (!client.ClientData.IsMainOccupation) { result = MarryFubenResult.Error_Denied_For_Minor_Occupation; } else if (-1 == client.ClientData.MyMarriageData.byMarrytype) { result = MarryFubenResult.NotMarriaged; } else if (client.ClientData.CopyMapID > 0 && client.ClientData.FuBenSeqID > 0) { result = MarryFubenResult.InFuben; } else { SceneUIClasses sceneType = Global.GetMapSceneType(client.ClientData.MapCode); if (sceneType == SceneUIClasses.ShuiJingHuanJing || sceneType == SceneUIClasses.GuZhanChang) { result = MarryFubenResult.InFuben; } else { GameClient Spouseclient = GameManager.ClientMgr.FindClient(client.ClientData.MyMarriageData.nSpouseID); MarriageInstance FubenInstance = this.GetMarriageInstance(client); if (null == FubenInstance) { result = MarryFubenResult.Error; } else if (1 == FubenInstance.nHusband_state && 1 == FubenInstance.nWife_state && FubenInstance.nHusband_FuBenID == FubenInstance.nWife_FuBenID) { result = MarryFubenResult.IsReaday; } else { if (1 == client.ClientData.MyMarriageData.byMarrytype) { FubenInstance.nHusband_state = 1; FubenInstance.nHusband_FuBenID = FuBenID; } else if (2 == client.ClientData.MyMarriageData.byMarrytype) { FubenInstance.nWife_state = 1; FubenInstance.nWife_FuBenID = FuBenID; } this.GetMarriageInstanceState(client, FubenInstance); this.GetMarriageInstanceState(Spouseclient, FubenInstance); result = MarryFubenResult.Success; } } } return(result); }
private int GiveRoleAwards(GameClient client, int success, KarenBattleSceneInfo sceneInfo) { long addExp = 0L; int addBindJinBi = 0; addExp = Global.GetExpMultiByZhuanShengExpXiShu(client, sceneInfo.Exp); addBindJinBi = sceneInfo.BandJinBi; List <AwardsItemData> awardsItemDataList; if (success > 0) { awardsItemDataList = sceneInfo.WinAwardsItemList.Items; } else { addExp = (long)((double)addExp * 0.8); addBindJinBi = (int)((double)addBindJinBi * 0.8); awardsItemDataList = sceneInfo.LoseAwardsItemList.Items; } addExp -= addExp % 10000L; addBindJinBi -= addBindJinBi % 10000; string sSubject = "阿卡伦战场奖励"; SceneUIClasses mapType = Global.GetMapSceneType(sceneInfo.MapCode); string sContent; if (SceneUIClasses.KarenWest == mapType) { sContent = GLang.GetLang(2617, new object[0]); } else { sContent = GLang.GetLang(2618, new object[0]); } if (awardsItemDataList != null && !Global.CanAddGoodsNum(client, awardsItemDataList.Count)) { Global.UseMailGivePlayerAward2(client, awardsItemDataList, GLang.GetLang(2616, new object[0]), sContent, 0, 0, 0); } else if (awardsItemDataList != null) { foreach (AwardsItemData item in awardsItemDataList) { Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, client, item.GoodsID, item.GoodsNum, 0, "", item.Level, item.Binding, 0, "", true, 1, sSubject, "1900-01-01 12:00:00", 0, 0, item.IsHaveLuckyProp, 0, item.ExcellencePorpValue, item.AppendLev, 0, null, null, 0, true); } } if (addExp > 0L) { GameManager.ClientMgr.ProcessRoleExperience(client, addExp, true, true, false, "none"); } if (addBindJinBi > 0) { GameManager.ClientMgr.AddMoney1(client, addBindJinBi, sSubject, true); } return(1); }
// 检查该地图是否允许操作 private bool CheckMap(GameClient client) { SceneUIClasses sceneType = Global.GetMapSceneType(client.ClientData.MapCode); if (sceneType != SceneUIClasses.Normal) { return(false); } return(true); }
public bool ProcessGuanZhanTrackingCmd(GameClient client, int nID, byte[] bytes, string[] cmdParams) { try { int roleID = Convert.ToInt32(cmdParams[0]); int beTrackRID = Convert.ToInt32(cmdParams[1]); if (KuaFuManager.getInstance().ClientCmdCheckFaild(nID, client, ref roleID)) { return(true); } lock (this.Mutex) { if (client.ClientData.HideGM == 0 || roleID == beTrackRID) { return(true); } int posX = 0; int posY = 0; if (!this.GetGuanZhanPos(client.ClientData.MapCode, ref posX, ref posY)) { int result = -21; client.sendCmd(nID, string.Format("{0}:{1}", result, -1), false); return(true); } if (-1 == beTrackRID) { this.CancleTracking(client, true); return(true); } GameClient beTrackingClient = GameManager.ClientMgr.FindClient(beTrackRID); if (beTrackingClient == null || beTrackingClient.ClientData.HideGM > 0 || beTrackingClient.ClientData.WaitingNotifyChangeMap || beTrackingClient.ClientData.WaitingForChangeMap) { int result = -21; client.sendCmd(nID, string.Format("{0}:{1}", result, -1), false); return(true); } SceneUIClasses srcSceneType = Global.GetMapSceneType(client.ClientData.MapCode); SceneUIClasses tarSceneType = Global.GetMapSceneType(beTrackingClient.ClientData.MapCode); if (srcSceneType != tarSceneType) { int result = -21; client.sendCmd(nID, string.Format("{0}:{1}", result, -1), false); return(true); } this.Tracking(client, beTrackingClient); } return(true); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, Global.GetDebugHelperInfo(client.ClientSocket), false, false); } return(false); }
public KarenBattleSceneInfo TryGetKarenBattleSceneInfoBySceneType(SceneUIClasses SceneType) { foreach (KeyValuePair <int, KarenBattleSceneInfo> item in this.SceneDataDict) { if (Global.GetMapSceneType(item.Value.MapCode) == SceneType) { return(item.Value); } } return(null); }
public void OnLeaveScene(GameClient client, SceneUIClasses sceneType, bool logout = false) { if (client.ClientSocket.IsKuaFuLogin) { switch (sceneType) { case SceneUIClasses.HuanYingSiYuan: HuanYingSiYuanManager.getInstance().OnLogout(client); break; case SceneUIClasses.TianTi: TianTiManager.getInstance().OnLogout(client); break; case SceneUIClasses.YongZheZhanChang: YongZheZhanChangManager.getInstance().OnLogout(client); break; case SceneUIClasses.KingOfBattle: KingOfBattleManager.getInstance().OnLogout(client); break; case SceneUIClasses.MoRiJudge: MoRiJudgeManager.Instance().OnLogOut(client); break; case SceneUIClasses.ElementWar: ElementWarManager.getInstance().OnLogout(client); break; case SceneUIClasses.LangHunLingYu: LangHunLingYuManager.getInstance().OnLogout(client); break; case SceneUIClasses.CopyWolf: CopyWolfManager.getInstance().OnLogout(client); break; case SceneUIClasses.KFZhengBa: ZhengBaManager.Instance().OnLogout(client); break; case SceneUIClasses.CoupleArena: CoupleArenaManager.Instance().OnLeaveFuBen(client); break; } if (!logout) { GotoLastMap(client); } } }
public void TryTrackingOther(GameClient tClient, GameClient lostClient) { try { SceneUIClasses sceneType = Global.GetMapSceneType(lostClient.ClientData.MapCode); GuanZhanData gzData = new GuanZhanData(); if (SceneUIClasses.BangHuiMatch == sceneType) { BangHuiMatchManager.getInstance().FillGuanZhanData(lostClient, gzData); } if (SceneUIClasses.EscapeBattle == sceneType) { EscapeBattleManager.getInstance().FillGuanZhanData(lostClient, gzData); } List <GuanZhanRoleMiniData> roleList = null; if (gzData.RoleMiniDataDict.TryGetValue(lostClient.ClientData.BattleWhichSide, out roleList)) { foreach (GuanZhanRoleMiniData r in roleList) { if (r.RoleID != lostClient.ClientData.RoleID) { GameClient beTrackingClient = GameManager.ClientMgr.FindClient(r.RoleID); if (null != beTrackingClient) { this.Tracking(tClient, beTrackingClient); return; } } } } gzData.RoleMiniDataDict.Remove(lostClient.ClientData.BattleWhichSide); foreach (List <GuanZhanRoleMiniData> rolelist in gzData.RoleMiniDataDict.Values) { foreach (GuanZhanRoleMiniData r in roleList) { if (r.RoleID != lostClient.ClientData.RoleID) { GameClient beTrackingClient = GameManager.ClientMgr.FindClient(r.RoleID); if (null != beTrackingClient) { this.Tracking(tClient, beTrackingClient); return; } } } } } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, "", false, false); } }
/// <summary> /// 添加任意地图的动态怪物到生成队列 radius 是格子坐标范围,不是像素点坐标范围!!!! /// </summary> /// <param name="mapCode"></param> /// <param name="copyMap"></param> /// <returns>怪物种子对象,并非实际的怪物对象</returns> public Monster AddDynamicMonsters(int mapCode, int monsterID, int copyMapID = -1, int addNum = 1, int gridX = 0, int gridY = 0, int radius = 3, int pursuitRadius = 0, SceneUIClasses managerType = SceneUIClasses.Normal, object tag = null) { //先打印下怪物日志,便于调试 TraceAllDynamicMonsters(); MonsterZone monsterZone = null; if (!MonsterDynamicZoneDict.TryGetValue(mapCode, out monsterZone)) { return(null); } Monster seedMonster = GetDynamicMonsterSeed(monsterID); if (null == seedMonster) { return(null); } int index = 0; if (copyMapID >= 0) { index = Global.Clamp(copyMapID % Max_WaitingAddDynamicMonsterQueneCount, 0, Max_WaitingAddDynamicMonsterQueneCount - 1); } else { index = Global.Clamp(mapCode % Max_WaitingAddDynamicMonsterQueneCount, 0, Max_WaitingAddDynamicMonsterQueneCount - 1); } //等待爆副本怪的队列 lock (WaitingAddDynamicMonsterQueue) //线程锁 { WaitingAddDynamicMonsterQueue[index].Enqueue(new MonsterZoneQueueItem() { CopyMapID = copyMapID, BirthCount = addNum, MyMonsterZone = monsterZone, seedMonster = seedMonster, ToX = gridX, ToY = gridY, Radius = radius, PursuitRadius = pursuitRadius, Tag = tag, ManagerType = managerType, }); } return(seedMonster); }
/// <summary> /// 添加一个场景 /// </summary> public bool AddTianTiCopyScenes(GameClient client, CopyMap copyMap, SceneUIClasses sceneType) { if (sceneType == SceneUIClasses.TianTi) { int fuBenSeqId = copyMap.FuBenSeqID; int mapCode = copyMap.MapCode; lock (RuntimeData.Mutex) { TianTiScene tianTiScene = null; if (!TianTiSceneDict.TryGetValue(fuBenSeqId, out tianTiScene)) { tianTiScene = new TianTiScene(); tianTiScene.CopyMap = copyMap; tianTiScene.CleanAllInfo(); tianTiScene.GameId = (int)Global.GetClientKuaFuServerLoginData(client).GameId; tianTiScene.m_nMapCode = mapCode; tianTiScene.CopyMapId = copyMap.CopyMapID; tianTiScene.FuBenSeqId = fuBenSeqId; tianTiScene.m_nPlarerCount = 1; TianTiSceneDict[fuBenSeqId] = tianTiScene; } else { tianTiScene.m_nPlarerCount++; } copyMap.IsKuaFuCopy = true; SaveClientBattleSide(tianTiScene, client); copyMap.SetRemoveTicks(TimeUtil.NOW() + RuntimeData.TotalSecs * TimeUtil.SECOND); if (tianTiScene.SuccessSide == -1) { client.sendCmd((int)TCPGameServerCmds.CMD_SPR_TIANTI_AWARD, new TianTiAwardsData() { Success = -1 }); } } //更新状态 TianTiClient.getInstance().GameFuBenRoleChangeState(client.ClientData.RoleID, (int)KuaFuRoleStates.StartGame); GlobalNew.UpdateKuaFuRoleDayLogData(client.ServerId, client.ClientData.RoleID, TimeUtil.NowDateTime(), client.ClientData.ZoneID, 0, 1, 0, 0, (int)GameTypes.TianTi); return(true); } return(false); }
/// <summary> /// 删除一个场景 /// </summary> public bool RemoveCopyScene(CopyMap copyMap, SceneUIClasses sceneType) { if (sceneType == SceneUIClasses.LangHunLingYu) { lock (RuntimeData.Mutex) { LangHunLingYuScene LangHunLingYuScene; RuntimeData.SceneDict.TryRemove(copyMap.FuBenSeqID, out LangHunLingYuScene); } return(true); } return(false); }
/// <summary> /// 删除一个场景 /// </summary> public bool RemoveCopyScene(CopyMap copyMap, SceneUIClasses sceneType) { if (sceneType == SceneUIClasses.YongZheZhanChang) { lock (RuntimeData.Mutex) { YongZheZhanChangScene YongZheZhanChangScene; SceneDict.TryRemove(copyMap.FuBenSeqID, out YongZheZhanChangScene); } return(true); } return(false); }
/// <summary> /// 删除一个场景 /// </summary> public bool RemoveCopyScene(CopyMap copyMap, SceneUIClasses sceneType) { if (sceneType == SceneUIClasses.KingOfBattle) { lock (RuntimeData.Mutex) { KingOfBattleScene KingOfBattleScene; SceneDict.TryRemove(copyMap.FuBenSeqID, out KingOfBattleScene); } return(true); } return(false); }
/// <summary> /// 移除副本 /// </summary> /// <param name="copyMap"></param> /// <param name="sceneType"></param> public void RemoveCopyScene(CopyMap copyMap, SceneUIClasses sceneType) { if (copyMap == null || sceneType != SceneUIClasses.CoupleArena) { return; } lock (Mutex) { CoupleArenaCopyScene scene = null; if (FuBenSeq2CopyScenes.TryGetValue(copyMap.FuBenSeqID, out scene)) { FuBenSeq2CopyScenes.Remove(copyMap.FuBenSeqID); GameId2FuBenData.Remove(scene.GameId); } } }
/// <summary> /// 删除一个场景 /// </summary> public bool RemoveTianTiCopyScene(CopyMap copyMap, SceneUIClasses sceneType) { if (sceneType == SceneUIClasses.TianTi) { lock (RuntimeData.Mutex) { TianTiScene tianTiScene; if (TianTiSceneDict.TryRemove(copyMap.FuBenSeqID, out tianTiScene)) { RuntimeData.GameId2FuBenSeq.Remove(tianTiScene.GameId); } } return(true); } return(false); }
private int ConvertMapSceneTypeToCaiJiLingDiType(SceneUIClasses mapsceneType) { int result; if (mapsceneType == SceneUIClasses.KarenWest) { result = 0; } else if (mapsceneType == SceneUIClasses.KarenEast) { result = 1; } else { result = -1; } return(result); }
// 添加一个末日审判副本 public void AddCopyScene(GameClient client, CopyMap copyMap, SceneUIClasses sceneType) { if (copyMap.MapCode == this.MapCode) { int fuBenSeqId = copyMap.FuBenSeqID; int mapCode = copyMap.MapCode; lock (copyDict) { MoRiJudgeCopy copy = null; if (!copyDict.TryGetValue(fuBenSeqId, out copy)) { copy = new MoRiJudgeCopy(); copy.MyCopyMap = copyMap; copy.GameId = Global.GetClientKuaFuServerLoginData(client).GameId; copy.StateTimeData.GameType = (int)GameTypes.MoRiJudge; // 副本的统计信息 copy.StartTime = TimeUtil.NowDateTime(); copy.EndTime = copy.StartTime.AddMinutes(this.CopyMaxAliveMinutes); copy.LimitKillCount = 0; copy.RoleCount = 1; copy.Passed = false; copyDict[fuBenSeqId] = copy; } else { copy.RoleCount++; } } FuBenManager.AddFuBenSeqID(client.ClientData.RoleID, copyMap.FuBenSeqID, 0, copyMap.FubenMapID); copyMap.IsKuaFuCopy = true; // 增加清除时间 copyMap.SetRemoveTicks(TimeUtil.NOW() + (this.CopyMaxAliveMinutes + 3) * TimeUtil.MINITE); //更新状态 // MoRiJudgeClient.getInstance().GameFuBenRoleChangeState(client.ClientData.RoleID, (int)KuaFuRoleStates.StartGame); // 开始游戏统计 GlobalNew.UpdateKuaFuRoleDayLogData(client.ServerId, client.ClientData.RoleID, TimeUtil.NowDateTime(), client.ClientData.ZoneID, 0, 1, 0, 0, (int)GameTypes.MoRiJudge); } }
public bool AddCopyScenes(GameClient client, CopyMap copyMap, SceneUIClasses sceneType) { bool result; if (copyMap.MapCode == this.RuntimeData.MapID) { int fuBenSeqId = copyMap.FuBenSeqID; int mapCode = copyMap.MapCode; lock (this.RuntimeData.Mutex) { WanMoXiaGuScene scene = null; if (!this.SceneDict.TryGetValue(fuBenSeqId, out scene)) { scene = new WanMoXiaGuScene(); scene.CopyMapInfo = copyMap; scene.CleanAllInfo(); scene.GameId = Global.GetClientKuaFuServerLoginData(client).GameId; scene.MapID = mapCode; scene.CopyMapID = copyMap.CopyMapID; scene.FuBenSeqId = fuBenSeqId; scene.PlayerCount = 1; scene.BossLifePercent = 1.0; this.SceneDict[fuBenSeqId] = scene; } else { scene.PlayerCount++; } client.ClientData.BattleWhichSide = 1; client.SceneObject = scene; copyMap.IsKuaFuCopy = true; copyMap.CustomPassAwards = true; copyMap.SetRemoveTicks(TimeUtil.NOW() + (long)(this.RuntimeData.TotalSecs * 1000)); GameManager.ClientMgr.BroadSpecialCopyMapMessage <WanMoXiaGuScoreData>(1266, scene.ScoreData, scene.CopyMapInfo); } result = true; } else { result = false; } return(result); }
public bool RemoveCopyScene(CopyMap copyMap, SceneUIClasses sceneType) { bool result; if (sceneType == SceneUIClasses.KuaFuBoss) { lock (this.RuntimeData.Mutex) { KuaFuBossScene KuaFuBossScene; this.SceneDict.TryRemove(copyMap.FuBenSeqID, out KuaFuBossScene); } result = true; } else { result = false; } return(result); }
public bool ProcessGuanZhanRoleMiniDataCmd(GameClient client, int nID, byte[] bytes, string[] cmdParams) { try { int roleID = Convert.ToInt32(cmdParams[0]); if (KuaFuManager.getInstance().ClientCmdCheckFaild(nID, client, ref roleID)) { return(true); } if (client.ClientData.HideGM == 0) { return(true); } int posX = 0; int posY = 0; if (!this.GetGuanZhanPos(client.ClientData.MapCode, ref posX, ref posY)) { return(true); } SceneUIClasses sceneType = Global.GetMapSceneType(client.ClientData.MapCode); GuanZhanData gzData = new GuanZhanData(); if (SceneUIClasses.BangHuiMatch == sceneType) { BangHuiMatchManager.getInstance().FillGuanZhanData(client, gzData); } if (SceneUIClasses.LangHunLingYu == sceneType) { LangHunLingYuManager.getInstance().FillGuanZhanData(client, gzData); } if (SceneUIClasses.EscapeBattle == sceneType) { EscapeBattleManager.getInstance().FillGuanZhanData(client, gzData); } client.sendCmd <GuanZhanData>(nID, gzData, false); return(true); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, Global.GetDebugHelperInfo(client.ClientSocket), false, false); } return(false); }
public bool RemoveCopyScene(CopyMap copyMap, SceneUIClasses sceneType) { bool result; if (sceneType == SceneUIClasses.KarenWest) { lock (this.RuntimeData.Mutex) { KarenBattleScene BattleScene; this.SceneDict.TryRemove(copyMap.FuBenSeqID, out BattleScene); this.RuntimeData.FuBenItemData.Remove(BattleScene.GameId); } result = true; } else { result = false; } return(result); }
public bool IsKuaFuMap(int mapCode) { SceneUIClasses sceneType = Global.GetMapSceneType(mapCode); switch (sceneType) { case SceneUIClasses.HuanYingSiYuan: case SceneUIClasses.TianTi: case SceneUIClasses.YongZheZhanChang: case SceneUIClasses.MoRiJudge: case SceneUIClasses.ElementWar: case SceneUIClasses.KuaFuBoss: case SceneUIClasses.KaLunTe: case SceneUIClasses.HuanShuYuan: case SceneUIClasses.LangHunLingYu: case SceneUIClasses.CopyWolf: case SceneUIClasses.KFZhengBa: case SceneUIClasses.CoupleArena: case SceneUIClasses.KingOfBattle: return(true); } return(false); }
public bool CanEnterKuaFuMap(KuaFuServerLoginData kuaFuServerLoginData) { SceneUIClasses sceneType = Global.GetMapSceneType((int)kuaFuServerLoginData.GameId); bool result; if (SceneUIClasses.ChongShengMap == sceneType) { result = true; } else { KuaFuMapRoleData kuaFuMapRoleData = YongZheZhanChangClient.getInstance().GetKuaFuMapRoleData(kuaFuServerLoginData.RoleId); if (kuaFuMapRoleData == null || kuaFuMapRoleData.KuaFuServerId != GameManager.ServerId || (long)kuaFuMapRoleData.KuaFuMapCode != kuaFuServerLoginData.GameId) { LogManager.WriteLog(LogTypes.Error, string.Format("{0}不具有进入跨服地图{1}的资格", kuaFuServerLoginData.RoleId, kuaFuServerLoginData.GameId), null, true); result = false; } else { result = true; } } return(result); }
/// <summary> /// 添加任意地图的动态怪物到生成队列 radius 是格子坐标范围,不是像素点坐标范围!!!! /// </summary> /// <param name="mapCode"></param> /// <param name="copyMap"></param> public void AddDynamicRobot(int mapCode, Robot robot, int copyMapID = -1, int addNum = 1, int gridX = 0, int gridY = 0, int radius = 3, int pursuitRadius = 0, SceneUIClasses managerType = SceneUIClasses.Normal, object tag = null) { //先打印下怪物日志,便于调试 TraceAllDynamicMonsters(); MonsterZone monsterZone = null; if (!MonsterDynamicZoneDict.TryGetValue(mapCode, out monsterZone)) { return; } robot.MonsterZoneNode = monsterZone; //等待爆副本怪的队列 lock (WaitingReloadRobotQueue) //线程锁 { WaitingReloadRobotQueue.Enqueue(new MonsterZoneQueueItem() { CopyMapID = copyMapID, BirthCount = addNum, MyMonsterZone = monsterZone, seedMonster = robot, ToX = gridX, ToY = gridY, Radius = radius, PursuitRadius = pursuitRadius, Tag = tag, ManagerType = managerType, }); } }
public bool AddCopyScenes(GameClient client, CopyMap copyMap, SceneUIClasses sceneType) { bool result; if (sceneType == SceneUIClasses.KuaFuBoss) { int fuBenSeqId = copyMap.FuBenSeqID; int mapCode = copyMap.MapCode; int roleId = client.ClientData.RoleID; int gameId = (int)Global.GetClientKuaFuServerLoginData(client).GameId; DateTime now = TimeUtil.NowDateTime(); KuaFuBossScene scene = null; lock (this.RuntimeData.Mutex) { if (!this.SceneDict.TryGetValue(fuBenSeqId, out scene)) { KuaFuBossSceneInfo sceneInfo = null; YongZheZhanChangFuBenData fuBenData; if (!this.RuntimeData.FuBenItemData.TryGetValue(gameId, out fuBenData)) { LogManager.WriteLog(LogTypes.Error, "跨服Boss没有为副本找到对应的跨服副本数据,GameID:" + gameId, null, true); } if (!this.RuntimeData.SceneDataDict.TryGetValue(fuBenData.GroupIndex, out sceneInfo)) { LogManager.WriteLog(LogTypes.Error, "跨服Boss没有为副本找到对应的档位数据,ID:" + fuBenData.GroupIndex, null, true); } scene = new KuaFuBossScene(); scene.CopyMap = copyMap; scene.CleanAllInfo(); scene.GameId = gameId; scene.m_nMapCode = mapCode; scene.CopyMapId = copyMap.CopyMapID; scene.FuBenSeqId = fuBenSeqId; scene.m_nPlarerCount = 1; scene.SceneInfo = sceneInfo; DateTime startTime = now.Date.Add(this.GetStartTime(sceneInfo.Id)); scene.StartTimeTicks = startTime.Ticks / 10000L; scene.GameStatisticalData.GameId = gameId; this.SceneDict[fuBenSeqId] = scene; List <BattleDynamicMonsterItem> dynMonsterList; if (this.RuntimeData.SceneDynMonsterDict.TryGetValue(mapCode, out dynMonsterList)) { scene.DynMonsterList = dynMonsterList; } } else { scene.m_nPlarerCount++; } copyMap.IsKuaFuCopy = true; copyMap.SetRemoveTicks(TimeUtil.NOW() + (long)(scene.SceneInfo.TotalSecs * 1000)); } GameMap gameMap = null; if (GameManager.MapMgr.DictMaps.TryGetValue(copyMap.MapCode, out gameMap)) { scene.MapGridWidth = gameMap.MapGridWidth; scene.MapGridHeight = gameMap.MapGridHeight; } YongZheZhanChangClient.getInstance().GameFuBenRoleChangeState(roleId, 5, 0, 0); result = true; } else { result = false; } return(result); }