/// <summary> /// 检查死亡的怪物是否为帮会副本boss并进行通关处理 /// </summary> public void ProcessMonsterDead(GameClient client, Monster monster) { // 怪物所在场景不是帮会地图 if (IsGuildCopyMap(monster.CurrentMapCode) == false) { return; } SystemXmlItem systemFuBenItem = null; if (!GameManager.systemFuBenMgr.SystemXmlItemDict.TryGetValue(monster.CurrentMapCode, out systemFuBenItem)) { return; } if (null == systemFuBenItem) { return; } int nBossID = systemFuBenItem.GetIntValue("BossID"); #if ___CC___FUCK___YOU___BB___ // 不是boss if (nBossID != monster.XMonsterInfo.MonsterId) { return; } #else // 不是boss if (nBossID != monster.MonsterInfo.ExtensionID) { return; } #endif // 没有对应副本? CopyMap copyMap = GameManager.CopyMapMgr.FindCopyMap(monster.CurrentCopyMapID); if (null == copyMap) { LogManager.WriteLog(LogTypes.Error, string.Format("GuildCopyMapManager::ProcessMonsterDead (null == copyMap), CurrentCopyMapID={0}", monster.CurrentCopyMapID)); return; } GuildCopyMap mapData = GameManager.GuildCopyMapMgr.FindGuildCopyMapBySeqID(copyMap.FuBenSeqID); if (null == mapData) { LogManager.WriteLog(LogTypes.Error, string.Format("GuildCopyMapManager::ProcessMonsterDead (null == mapData), copyMap.FuBenSeqID={0}", copyMap.FuBenSeqID)); return; } int guildid = mapData.GuildID; // 玩家没有帮会? GuildCopyMapDB data = GameManager.GuildCopyMapDBMgr.FindGuildCopyMapDB(guildid /*client.ClientData.Faction*//*不再用击杀者的帮会id*/, client.ServerId); if (null == data) { LogManager.WriteLog(LogTypes.Error, string.Format("GuildCopyMapManager::ProcessMonsterDead (null == data), guildid={0}", client.ClientData.Faction)); return; } List <GameClient> objsList = copyMap.GetClientsList(); // 副本里没人? if (null == objsList || objsList.Count <= 0) { LogManager.WriteLog(LogTypes.Error, string.Format("GuildCopyMapManager::ProcessMonsterDead (null == objsList || objsList.Count <= 0), CurrentCopyMapID={0}", monster.CurrentCopyMapID)); return; } // 更新副本记录的状态 if (copyMap.FubenMapID >= data.FuBenID) { data.FuBenID = copyMap.FubenMapID; data.State = (int)GuildCopyMapState.Passed; if (copyMap.FubenMapID == GameManager.GuildCopyMapMgr.FirstGuildCopyMapOrder) { data.Killers = monster.WhoKillMeName; } else { data.Killers += ","; data.Killers += monster.WhoKillMeName; } } #if ___CC___FUCK___YOU___BB___ //触发战盟事件 GlobalEventSource.getInstance().fireEvent(ZhanMengShijianEvent.createKillBossEvent(Global.FormatRoleName4(client), client.ClientData.Faction, monster.XMonsterInfo.MonsterId, client.ServerId)); #else //触发战盟事件 GlobalEventSource.getInstance().fireEvent(ZhanMengShijianEvent.createKillBossEvent(Global.FormatRoleName4(client), client.ClientData.Faction, monster.MonsterInfo.ExtensionID, client.ServerId)); #endif // 检查是否更新成功 bool result = GameManager.GuildCopyMapDBMgr.UpdateGuildCopyMapDB(data, client.ServerId); if (false == result) { string logStr = @"GuildCopyMapManager::ProcessMonsterDead (false == result), data.GuildID={0}, data.FuBenID={1}, data.State={2}, data.OpenDay={3}, data.Killers={4}"; LogManager.WriteLog(LogTypes.Error, string.Format(logStr, data.GuildID, data.FuBenID, data.State, data.OpenDay, data.Killers)); return; } }
public void ProcessMonsterDead(GameClient client, Monster monster) { if (this.IsGuildCopyMap(monster.CurrentMapCode)) { SystemXmlItem systemFuBenItem = null; if (GameManager.systemFuBenMgr.SystemXmlItemDict.TryGetValue(monster.CurrentMapCode, out systemFuBenItem)) { if (null != systemFuBenItem) { int nBossID = systemFuBenItem.GetIntValue("BossID", -1); if (nBossID == monster.MonsterInfo.ExtensionID) { CopyMap copyMap = GameManager.CopyMapMgr.FindCopyMap(monster.CurrentCopyMapID); if (null == copyMap) { LogManager.WriteLog(LogTypes.Error, string.Format("GuildCopyMapManager::ProcessMonsterDead (null == copyMap), CurrentCopyMapID={0}", monster.CurrentCopyMapID), null, true); } else { GuildCopyMap mapData = GameManager.GuildCopyMapMgr.FindGuildCopyMapBySeqID(copyMap.FuBenSeqID); if (null == mapData) { LogManager.WriteLog(LogTypes.Error, string.Format("GuildCopyMapManager::ProcessMonsterDead (null == mapData), copyMap.FuBenSeqID={0}", copyMap.FuBenSeqID), null, true); } else { int guildid = mapData.GuildID; GuildCopyMapDB data = GameManager.GuildCopyMapDBMgr.FindGuildCopyMapDB(guildid, client.ServerId); if (null == data) { LogManager.WriteLog(LogTypes.Error, string.Format("GuildCopyMapManager::ProcessMonsterDead (null == data), guildid={0}", client.ClientData.Faction), null, true); } else { List <GameClient> objsList = copyMap.GetClientsList(); if (objsList == null || objsList.Count <= 0) { LogManager.WriteLog(LogTypes.Error, string.Format("GuildCopyMapManager::ProcessMonsterDead (null == objsList || objsList.Count <= 0), CurrentCopyMapID={0}", monster.CurrentCopyMapID), null, true); } else { if (copyMap.FubenMapID >= data.FuBenID) { data.FuBenID = copyMap.FubenMapID; data.State = 2; if (copyMap.FubenMapID == GameManager.GuildCopyMapMgr.FirstGuildCopyMapOrder) { data.Killers = monster.WhoKillMeName; } else { GuildCopyMapDB guildCopyMapDB = data; guildCopyMapDB.Killers += ","; GuildCopyMapDB guildCopyMapDB2 = data; guildCopyMapDB2.Killers += monster.WhoKillMeName; } } GlobalEventSource.getInstance().fireEvent(ZhanMengShijianEvent.createKillBossEvent(Global.FormatRoleName4(client), client.ClientData.Faction, monster.MonsterInfo.ExtensionID, client.ServerId)); if (!GameManager.GuildCopyMapDBMgr.UpdateGuildCopyMapDB(data, client.ServerId)) { string logStr = "GuildCopyMapManager::ProcessMonsterDead (false == result), \r\n data.GuildID={0}, data.FuBenID={1}, data.State={2}, data.OpenDay={3}, data.Killers={4}"; LogManager.WriteLog(LogTypes.Error, string.Format(logStr, new object[] { data.GuildID, data.FuBenID, data.State, data.OpenDay, data.Killers }), null, true); } } } } } } } } } }