public static int getAwardRate(int FuBenID, int FuBenSeqID) { int result; if (FuBenID != LuoLanFaZhenCopySceneManager.LuoLanFaZhenFubenID) { result = 1; } else { SingleLuoLanFaZhenFubenData fubenData = LuoLanFaZhenCopySceneManager.GetFubenData(FuBenSeqID); if (null == fubenData) { result = 1; } else if (fubenData.SpecailBossLeftNum == 0) { result = LuoLanFaZhenCopySceneManager.SpecialAwardRate; } else { result = 1; } } return(result); }
public static TCPProcessCmdResults ProcessFazhenBossCMD(TCPManager tcpMgr, TMSKSocket socket, TCPClientPool tcpClientPool, TCPOutPacketPool pool, int nID, byte[] data, int count, out TCPOutPacket tcpOutPacket) { tcpOutPacket = null; string cmdData = null; try { cmdData = new UTF8Encoding().GetString(data, 0, count); } catch (Exception) { LogManager.WriteLog(LogTypes.Error, string.Format("解析指令字符串错误, CMD={0}, Client={1}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket, false)), null, true); return(TCPProcessCmdResults.RESULT_FAILED); } try { string[] fields = cmdData.Split(new char[] { ':' }); if (fields.Length != 1) { LogManager.WriteLog(LogTypes.Error, string.Format("指令参数个数错误, CMD={0}, Client={1}, Recv={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket, false), fields.Length), null, true); return(TCPProcessCmdResults.RESULT_FAILED); } int roleID = Convert.ToInt32(fields[0]); GameClient client = GameManager.ClientMgr.FindClient(socket); if (KuaFuManager.getInstance().ClientCmdCheckFaild(nID, client, ref roleID)) { LogManager.WriteLog(LogTypes.Error, string.Format("根据RoleID定位GameClient对象失败, CMD={0}, Client={1}, RoleID={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket, false), roleID), null, true); return(TCPProcessCmdResults.RESULT_FAILED); } if (client.ClientData.FuBenID != LuoLanFaZhenCopySceneManager.LuoLanFaZhenFubenID) { return(TCPProcessCmdResults.RESULT_OK); } SingleLuoLanFaZhenFubenData fubenData = LuoLanFaZhenCopySceneManager.GetFubenData(client.ClientData.FuBenSeqID); if (null == fubenData) { return(TCPProcessCmdResults.RESULT_OK); } string strcmd = string.Format("{0}:{1}:{2}:{3}:{4}", new object[] { LuoLanFaZhenCopySceneManager.LuoLanFaZhenFubenID, LuoLanFaZhenCopySceneManager.FinalBossID, fubenData.FinalBossLeftNum, LuoLanFaZhenCopySceneManager.SpecialBossID, fubenData.SpecailBossLeftNum }); tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, 760); return(TCPProcessCmdResults.RESULT_DATA); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, "ProcessFazhenBossCMD", false, false); } return(TCPProcessCmdResults.RESULT_FAILED); }
public static TCPProcessCmdResults ProcessFazhenTeleportCMD(TCPManager tcpMgr, TMSKSocket socket, TCPClientPool tcpClientPool, TCPOutPacketPool pool, int nID, byte[] data, int count, out TCPOutPacket tcpOutPacket) { tcpOutPacket = null; string cmdData = null; try { cmdData = new UTF8Encoding().GetString(data, 0, count); } catch (Exception) { LogManager.WriteLog(LogTypes.Error, string.Format("解析指令字符串错误, CMD={0}, Client={1}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket, false)), null, true); return(TCPProcessCmdResults.RESULT_FAILED); } try { string[] fields = cmdData.Split(new char[] { ':' }); if (fields.Length != 2) { LogManager.WriteLog(LogTypes.Error, string.Format("指令参数个数错误, CMD={0}, Client={1}, Recv={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket, false), fields.Length), null, true); return(TCPProcessCmdResults.RESULT_FAILED); } int roleID = Convert.ToInt32(fields[0]); int MapCode = 0; if (!int.TryParse(fields[1], out MapCode)) { LogManager.WriteLog(LogTypes.Error, string.Format("ProcessFazhenTeleportCMD, roleID={0}, MapCode={1}", roleID, fields[1]), null, true); return(TCPProcessCmdResults.RESULT_OK); } GameClient client = GameManager.ClientMgr.FindClient(socket); if (KuaFuManager.getInstance().ClientCmdCheckFaild(nID, client, ref roleID)) { LogManager.WriteLog(LogTypes.Error, string.Format("根据RoleID定位GameClient对象失败, CMD={0}, Client={1}, RoleID={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket, false), roleID), null, true); return(TCPProcessCmdResults.RESULT_FAILED); } if (client.ClientData.MapCode != MapCode) { return(TCPProcessCmdResults.RESULT_OK); } if (client.ClientData.FuBenID != LuoLanFaZhenCopySceneManager.LuoLanFaZhenFubenID) { return(TCPProcessCmdResults.RESULT_OK); } SingleLuoLanFaZhenFubenData fubenData = LuoLanFaZhenCopySceneManager.GetFubenData(client.ClientData.FuBenSeqID); if (null == fubenData) { return(TCPProcessCmdResults.RESULT_OK); } FazhenMapData mapData = null; lock (fubenData.MapDatas) { fubenData.MapDatas.TryGetValue(client.ClientData.CopyMapID, out mapData); if (null == mapData) { return(TCPProcessCmdResults.RESULT_OK); } } FazhenMapProtoData senddata = new FazhenMapProtoData(); senddata.listTelegate = new List <FazhenTelegateProtoData>(); senddata.SrcMapCode = mapData.MapCode; lock (mapData.Telegates) { List <int> listGateID = mapData.Telegates.Keys.ToList <int>(); if (null != listGateID) { foreach (int gateid in listGateID) { SingleFazhenTelegateData gatedata = mapData.Telegates[gateid]; if (null != gatedata) { FazhenTelegateProtoData gatedata_s = new FazhenTelegateProtoData(); gatedata_s.gateId = gateid; if (gatedata.usedAlready || LuoLanFaZhenCopySceneManager.GM_OpenState == 1) { gatedata_s.DestMapCode = gatedata.destMapCode; } else { gatedata_s.DestMapCode = 0; } senddata.listTelegate.Add(gatedata_s); } } } } byte[] bytes = DataHelper.ObjectToBytes <FazhenMapProtoData>(senddata); tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, bytes, 0, bytes.Length, 685); return(TCPProcessCmdResults.RESULT_DATA); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, "ProcessFazhenTeleportCMD", false, false); } return(TCPProcessCmdResults.RESULT_FAILED); }
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); }
public static bool EnterFubenMapWhenLogin(GameClient client) { return(null != LuoLanFaZhenCopySceneManager.GetFubenData(client.ClientData.FuBenSeqID)); }