public static void ExperienceCopyMapCreateMonster(GameClient client, ExperienceCopyScene ExperienceMapInfo, ExperienceCopyMapDataInfo exMap, int nWave) { ExperienceMapInfo.m_ExperienceCopyMapCreateMonsterFlag = 1; ExperienceMapInfo.m_ExperienceCopyMapCreateMonsterWave++; GameMap gameMap = null; if (!GameManager.MapMgr.DictMaps.TryGetValue(ExperienceMapInfo.m_MapCodeID, out gameMap)) { LogManager.WriteLog(LogTypes.Error, string.Format("经验副本 地图配置 ID = {0}", ExperienceMapInfo.m_MapCodeID), null, true); } else { int gridX = gameMap.CorrectWidthPointToGridPoint(exMap.posX) / gameMap.MapGridWidth; int gridY = gameMap.CorrectHeightPointToGridPoint(exMap.posZ) / gameMap.MapGridHeight; int gridNum = gameMap.CorrectWidthPointToGridPoint(exMap.Radius); int nTotal = 0; List <int> nListID = exMap.MonsterIDList[nWave]; List <int> nListNum = exMap.MonsterNumList[nWave]; for (int i = 0; i < nListID.Count; i++) { int nID = nListID[i]; int nNum = nListNum[i]; GameManager.MonsterZoneMgr.AddDynamicMonsters(ExperienceMapInfo.m_MapCodeID, nID, ExperienceMapInfo.m_CopyMapID, nNum, gridX, gridY, gridNum, 0, SceneUIClasses.Normal, null, null); nTotal += nNum; ExperienceMapInfo.m_ExperienceCopyMapCreateMonsterNum += nNum; ExperienceMapInfo.m_ExperienceCopyMapRemainMonsterNum += nNum; } ExperienceMapInfo.m_ExperienceCopyMapNeedKillMonsterNum = ExperienceMapInfo.m_ExperienceCopyMapCreateMonsterNum * exMap.CreateNextWaveMonsterCondition[nWave] / 100; if (client != null) { ExperienceCopySceneManager.SendMsgToClientForExperienceCopyMapInfo(client, ExperienceMapInfo.m_ExperienceCopyMapCreateMonsterWave); } } }
public static void ExperienceCopyMapKillMonster(GameClient client, Monster monster) { ExperienceCopyMapDataInfo TmpExInfo = null; if (Data.ExperienceCopyMapDataInfoList.TryGetValue(client.ClientData.MapCode, out TmpExInfo)) { ExperienceCopyScene tmpExSceneInfo = null; lock (ExperienceCopySceneManager.m_ExperienceListCopyMapsInfo) { if (!ExperienceCopySceneManager.m_ExperienceListCopyMapsInfo.TryGetValue(client.ClientData.FuBenSeqID, out tmpExSceneInfo)) { return; } } if (tmpExSceneInfo != null) { CopyMap TmpCopyMapInfo = null; if (ExperienceCopySceneManager.m_ExperienceListCopyMaps.TryGetValue(client.ClientData.FuBenSeqID, out TmpCopyMapInfo)) { if (TmpCopyMapInfo != null) { tmpExSceneInfo.m_ExperienceCopyMapKillMonsterNum++; tmpExSceneInfo.m_ExperienceCopyMapKillMonsterTotalNum++; tmpExSceneInfo.m_ExperienceCopyMapRemainMonsterNum--; if (tmpExSceneInfo.m_ExperienceCopyMapCreateMonsterFlag == 1 && tmpExSceneInfo.m_ExperienceCopyMapKillMonsterNum == tmpExSceneInfo.m_ExperienceCopyMapNeedKillMonsterNum) { tmpExSceneInfo.m_ExperienceCopyMapCreateMonsterFlag = 0; tmpExSceneInfo.m_ExperienceCopyMapKillMonsterNum = 0; tmpExSceneInfo.m_ExperienceCopyMapCreateMonsterNum = 0; } if (tmpExSceneInfo.m_ExperienceCopyMapCreateMonsterWave == TmpExInfo.MonsterIDList.Count && tmpExSceneInfo.m_ExperienceCopyMapKillMonsterTotalNum == TmpExInfo.MonsterSum) { ExperienceCopySceneManager.SendMsgToClientForExperienceCopyMapAward(client); } int nWave = tmpExSceneInfo.m_ExperienceCopyMapCreateMonsterWave; if (tmpExSceneInfo.m_ExperienceCopyMapKillMonsterTotalNum == TmpExInfo.MonsterSum || tmpExSceneInfo.m_ExperienceCopyMapRemainMonsterNum == 0) { nWave++; } ExperienceCopySceneManager.SendMsgToClientForExperienceCopyMapInfo(client, nWave); } } } } }