public static bool OnKillMonster(GameClient client, Monster monster) { bool result; if (client.ClientData.FuBenID != LuoLanFaZhenCopySceneManager.LuoLanFaZhenFubenID) { result = false; } else { SingleLuoLanFaZhenFubenData fubenData = LuoLanFaZhenCopySceneManager.GetFubenData(client.ClientData.FuBenSeqID); if (null == fubenData) { result = false; } else { List <int> listMapCodes = null; bool bKillBoss = false; if (monster.MonsterInfo.ExtensionID == LuoLanFaZhenCopySceneManager.FinalBossID) { fubenData.FinalBossLeftNum = 0; bKillBoss = true; } else if (monster.MonsterInfo.ExtensionID == LuoLanFaZhenCopySceneManager.SpecialBossID) { FuBenInfoItem fuBenInfoItem = FuBenManager.FindFuBenInfoBySeqID(client.ClientData.FuBenSeqID); if (null == fuBenInfoItem) { return(false); } fubenData.SpecailBossLeftNum = 0; string msg = StringUtil.substitute(GLang.GetLang(98, new object[0]), new object[] { client.ClientData.RoleName }); listMapCodes = SingletonTemplate <CopyTeamManager> .Instance().GetTeamCopyMapCodes(LuoLanFaZhenCopySceneManager.LuoLanFaZhenFubenID); if (null == listMapCodes) { return(false); } foreach (int mapCode in listMapCodes) { LuoLanFaZhenCopySceneManager.BroadMapMessage(msg, mapCode, client.ClientData.FuBenSeqID); } bKillBoss = true; } if (bKillBoss) { if (null == listMapCodes) { listMapCodes = SingletonTemplate <CopyTeamManager> .Instance().GetTeamCopyMapCodes(LuoLanFaZhenCopySceneManager.LuoLanFaZhenFubenID); } if (null == listMapCodes) { return(false); } string cmdData = string.Format("{0}:{1}:{2}:{3}:{4}", new object[] { LuoLanFaZhenCopySceneManager.LuoLanFaZhenFubenID, LuoLanFaZhenCopySceneManager.FinalBossID, fubenData.FinalBossLeftNum, LuoLanFaZhenCopySceneManager.SpecialBossID, fubenData.SpecailBossLeftNum }); foreach (int mapCode in listMapCodes) { LuoLanFaZhenCopySceneManager.BroadMapData(760, cmdData, mapCode, client.ClientData.FuBenSeqID); } } result = true; } } return(result); }
public static TCPProcessCmdResults OnTeleport(GameClient client, int teleportID, TCPOutPacketPool pool, out TCPOutPacket tcpOutPacket) { tcpOutPacket = null; TCPProcessCmdResults result; if (client.ClientData.FuBenID != LuoLanFaZhenCopySceneManager.LuoLanFaZhenFubenID || client.ClientData.FuBenSeqID <= 0) { result = TCPProcessCmdResults.RESULT_FAILED; } else { SingleLuoLanFaZhenFubenData fubenData = LuoLanFaZhenCopySceneManager.GetFubenData(client.ClientData.FuBenSeqID); if (null == fubenData) { result = TCPProcessCmdResults.RESULT_FAILED; } else { FazhenMapData mapdata = null; SingleFazhenTelegateData teledata = null; lock (fubenData.MapDatas) { if (!fubenData.MapDatas.TryGetValue(client.ClientData.CopyMapID, out mapdata) || null == mapdata) { return(TCPProcessCmdResults.RESULT_FAILED); } } if (mapdata.MapCode != client.ClientData.MapCode || mapdata.CopyMapID != client.ClientData.CopyMapID) { result = TCPProcessCmdResults.RESULT_FAILED; } else { lock (mapdata.Telegates) { if (!mapdata.Telegates.TryGetValue(teleportID, out teledata) || null == teledata) { return(TCPProcessCmdResults.RESULT_FAILED); } } if (teledata.destMapCode <= 0) { result = TCPProcessCmdResults.RESULT_FAILED; } else { bool TeleToSpecial = false; if (teledata.SpecialDestMapCode > 0) { if (0 != fubenData.SpecailBossLeftNum) { int rand = Global.GetRandomNumber(0, 100); if (rand < LuoLanFaZhenCopySceneManager.SpecialTeleRate) { TeleToSpecial = true; } } } if (TeleToSpecial) { GameManager.ClientMgr.ChangeMap(TCPManager.getInstance().MySocketListener, TCPOutPacketPool.getInstance(), client, teleportID, teledata.SpecialDestMapCode, teledata.SpecialDestX, teledata.SpecialDestY, client.ClientData.RoleDirection, 123); } else { bool NeedSend = false; lock (teledata) { if (!teledata.usedAlready) { teledata.usedAlready = true; NeedSend = true; } } if (NeedSend) { FazhenMapProtoData senddata = new FazhenMapProtoData(); senddata.listTelegate = new List <FazhenTelegateProtoData>(); senddata.SrcMapCode = mapdata.MapCode; FazhenTelegateProtoData gatedata_s = new FazhenTelegateProtoData(); gatedata_s.gateId = teledata.gateId; gatedata_s.DestMapCode = teledata.destMapCode; senddata.listTelegate.Add(gatedata_s); LuoLanFaZhenCopySceneManager.BroadMapData <FazhenMapProtoData>(685, senddata, mapdata.MapCode, client.ClientData.FuBenSeqID); } GameManager.ClientMgr.ChangeMap(TCPManager.getInstance().MySocketListener, TCPOutPacketPool.getInstance(), client, teleportID, teledata.destMapCode, teledata.destX, teledata.destY, client.ClientData.RoleDirection, 123); } result = TCPProcessCmdResults.RESULT_OK; } } } } return(result); }