public static void GetWanmotaSweepReward(GameClient client, int nFubenID) { FuBenMapItem fuBenMapItem = FuBenManager.FindMapCodeByFuBenID(nFubenID, nFubenID); if (null != fuBenMapItem) { List <GoodsData> goodNormal = new List <GoodsData>(); List <int> goodsID = new List <int>(); WanMotaCopySceneManager.GetFubenItemReward(client, fuBenMapItem, false, goodNormal, goodsID); if (null == client.ClientData.LayerRewardData) { client.ClientData.LayerRewardData = new LayerRewardData(); } if (WanMotaCopySceneManager.IsWanMoTaMapCode(nFubenID)) { List <SingleLayerRewardData> listRewardData = null; SingleLayerRewardData layerReward = WanMotaCopySceneManager.AddSingleSweepReward(client, goodNormal, nFubenID - WanMotaCopySceneManager.nWanMoTaFirstFuBenOrder + 1, fuBenMapItem.Experience, fuBenMapItem.Money1, fuBenMapItem.nXingHunAward, out listRewardData); SweepWanMotaManager.UpdataSweepInfo(client, listRewardData); lock (client.ClientData.LayerRewardData) { client.ClientData.LayerRewardData.WanMoTaLayerRewardList.Add(layerReward); } } } }
public static void SendMsgToClientForWanMoTaCopyMapAward(GameClient client, CopyMap copyMap, bool anyAlive) { if (copyMap != null) { int fuBenSeqID = FuBenManager.FindFuBenSeqIDByRoleID(client.ClientData.RoleID); FuBenTongGuanData fubenTongGuanData = null; bool bFirstPassWanMoTa = false; if (fuBenSeqID > 0) { FuBenInfoItem fuBenInfoItem = FuBenManager.FindFuBenInfoBySeqID(fuBenSeqID); if (null != fuBenInfoItem) { fuBenInfoItem.EndTicks = TimeUtil.NOW(); int addFuBenNum = 1; if (fuBenInfoItem.nDayOfYear != TimeUtil.NowDateTime().DayOfYear) { addFuBenNum = 0; } int fuBenID = FuBenManager.FindFuBenIDByMapCode(client.ClientData.MapCode); if (fuBenID > 0) { if (WanMotaCopySceneManager.IsWanMoTaMapCode(client.ClientData.MapCode)) { if (!Global.FuBenPassed(client, fuBenID)) { bFirstPassWanMoTa = true; } } int usedSecs = (int)((fuBenInfoItem.EndTicks - fuBenInfoItem.StartTicks) / 1000L); Global.UpdateFuBenDataForQuickPassTimer(client, fuBenID, usedSecs, addFuBenNum); FuBenMapItem fuBenMapItem = FuBenManager.FindMapCodeByFuBenID(fuBenID, client.ClientData.MapCode); fubenTongGuanData = WanMotaCopySceneManager.GiveCopyMapGiftNoScore(client, fuBenMapItem, true); GameManager.DBCmdMgr.AddDBCmd(10053, string.Format("{0}:{1}:{2}:{3}", new object[] { client.ClientData.RoleID, Global.FormatRoleName(client, client.ClientData.RoleName), fuBenID, usedSecs }), null, client.ServerId); } } } GameManager.ClientMgr.NotifyAllFuBenBeginInfo(copyMap, client.ClientData.RoleID, !anyAlive); if (fubenTongGuanData != null && bFirstPassWanMoTa) { TCPOutPacket tcpOutPacket = DataHelper.ObjectToTCPOutPacket <FuBenTongGuanData>(fubenTongGuanData, Global._TCPManager.TcpOutPacketPool, 521); if (!Global._TCPManager.MySocketListener.SendData(client.ClientSocket, tcpOutPacket, true)) { } } } }
private bool InitConfig() { try { XElement xml = XElement.Load(Global.GameResPath("Config/MoRiShenPan.xml")); IEnumerable <XElement> xmlItems = xml.Elements(); foreach (XElement item in xmlItems) { MoRiMonster monster = new MoRiMonster(); monster.Id = (int)Global.GetSafeAttributeLong(item, "ID"); monster.Name = Global.GetSafeAttributeStr(item, "Name"); monster.MonsterId = (int)Global.GetSafeAttributeLong(item, "MonstersID"); monster.BirthX = (int)Global.GetSafeAttributeLong(item, "X"); monster.BirthY = (int)Global.GetSafeAttributeLong(item, "Y"); monster.KillLimitSecond = (int)Global.GetSafeAttributeLong(item, "Time"); string addBossProps = Global.GetSafeAttributeStr(item, "Props"); if (!string.IsNullOrEmpty(addBossProps) && addBossProps != "-1") { foreach (string prop in addBossProps.Split(new char[] { '|' })) { string[] prop_kv = prop.Split(new char[] { ',' }); if (prop_kv != null && prop_kv.Length == 2) { monster.ExtPropDict.Add((int)Enum.Parse(typeof(ExtPropIndexes), prop_kv[0]), (float)Convert.ToDouble(prop_kv[1])); } } } this.BossConfigList.Add(monster); } this.BossConfigList.Sort(delegate(MoRiMonster left, MoRiMonster right) { int result; if (left.Id < right.Id) { result = -1; } else if (left.Id > right.Id) { result = 1; } else { result = 0; } return(result); }); SystemXmlItem systemFuBenItem = null; if (!GameManager.systemFuBenMgr.SystemXmlItemDict.TryGetValue(70000, out systemFuBenItem)) { LogManager.WriteLog(LogTypes.Fatal, string.Format("缺少末日审判副本配置 CopyID={0}", 70000), null, true); return(false); } this.MapCode = systemFuBenItem.GetIntValue("MapCode", -1); FuBenMapItem fubenItem = FuBenManager.FindMapCodeByFuBenID(70000, this.MapCode); if (fubenItem == null) { LogManager.WriteLog(LogTypes.Fatal, string.Format("末日审判地图 {0} 配置错误", this.MapCode), null, true); return(false); } this.CopyMaxAliveMinutes = fubenItem.MaxTime; GameMap gameMap = null; if (!GameManager.MapMgr.DictMaps.TryGetValue(this.MapCode, out gameMap)) { LogManager.WriteLog(LogTypes.Fatal, string.Format("缺少末日审判地图 {0}", this.MapCode), null, true); return(false); } this.copyMapGirdWidth = gameMap.MapGridWidth; this.copyMapGirdHeight = gameMap.MapGridHeight; } catch (Exception ex) { LogManager.WriteLog(LogTypes.Fatal, string.Format("加载xml配置文件:{0}, 失败。", "Config/MoRiShenPan.xml"), ex, true); return(false); } return(true); }
/// <summary> // 万魔塔副本层奖励 /// </summary> public static void SendMsgToClientForWanMoTaCopyMapAward(GameClient client, CopyMap copyMap, bool anyAlive) { CopyMap tmpCopyMap = copyMap; if (tmpCopyMap == null) { return; } int fuBenSeqID = FuBenManager.FindFuBenSeqIDByRoleID(client.ClientData.RoleID); FuBenTongGuanData fubenTongGuanData = null; bool bFirstPassWanMoTa = false; if (fuBenSeqID > 0) //如果副本不存在 { FuBenInfoItem fuBenInfoItem = FuBenManager.FindFuBenInfoBySeqID(fuBenSeqID); if (null != fuBenInfoItem) { fuBenInfoItem.EndTicks = DateTime.Now.Ticks / 10000; int addFuBenNum = 1; if (fuBenInfoItem.nDayOfYear != TimeUtil.NowDateTime().DayOfYear) { addFuBenNum = 0; } int fuBenID = FuBenManager.FindFuBenIDByMapCode(client.ClientData.MapCode); if (fuBenID > 0) { if (WanMotaCopySceneManager.IsWanMoTaMapCode(client.ClientData.MapCode)) { // 第一次通过万魔塔某层 if (!Global.FuBenPassed(client, fuBenID)) { bFirstPassWanMoTa = true; } } int usedSecs = (int)((fuBenInfoItem.EndTicks - fuBenInfoItem.StartTicks) / 1000); // 更新玩家通关时间信息 Global.UpdateFuBenDataForQuickPassTimer(client, fuBenID, usedSecs, addFuBenNum); // LogManager.WriteLog(LogTypes.Info, string.Format("万魔塔首次通关标记:{0}", bFirstPassWanMoTa)); // 给玩家物品 FuBenMapItem fuBenMapItem = FuBenManager.FindMapCodeByFuBenID(fuBenID, client.ClientData.MapCode); fubenTongGuanData = GiveCopyMapGiftNoScore(client, fuBenMapItem, true); GameManager.DBCmdMgr.AddDBCmd((int)TCPGameServerCmds.CMD_DB_ADDFUBENHISTDATA, string.Format("{0}:{1}:{2}:{3}", client.ClientData.RoleID, Global.FormatRoleName(client, client.ClientData.RoleName), fuBenID, usedSecs), null); // 万魔塔通关不计活跃 ChenXiaojun //int nLev = -1; //SystemXmlItem systemFuBenItem = null; //if (!GameManager.systemFuBenMgr.SystemXmlItemDict.TryGetValue(fuBenID, out systemFuBenItem)) //{ // nLev = systemFuBenItem.GetIntValue("FuBenLevel"); //} //GameManager.ClientMgr.UpdateRoleDailyData_FuBenNum(client, 1, nLev); //副本通关 //Global.BroadcastFuBenOk(client, usedSecs, fuBenID); } } } GameManager.ClientMgr.NotifyAllFuBenBeginInfo(client, !anyAlive); if (fubenTongGuanData != null && bFirstPassWanMoTa) { //发送奖励到客户端 TCPOutPacket tcpOutPacket = DataHelper.ObjectToTCPOutPacket <FuBenTongGuanData>(fubenTongGuanData, Global._TCPManager.TcpOutPacketPool, (int)TCPGameServerCmds.CMD_SPR_FUBENPASSNOTIFY); if (!Global._TCPManager.MySocketListener.SendData(client.ClientSocket, tcpOutPacket)) { ; } } }