public static void ParseAwardsItemList(string str, ref AwardsItemList awardsItemList, char splitChar1 = '|', char splitChar2 = ',') { awardsItemList.Add(str); }
public static void ParseAwardsGoodsList(string str, List <GoodsData> goodsDataList, char splitChar1 = '|', char splitChar2 = ',') { AwardsItemList awardsItemList = new AwardsItemList(); awardsItemList.Add(str); }
private void ProcessRoleBattleExpAndFlagAward(GameClient client, int successSide, int paiMing) { ProcessTask.ProcessAddTaskVal(client, TaskTypes.Battle, -1, 1, new object[0]); List <BattleManager.Award> awardByScore = this.BattleAwardByScore; if (null == awardByScore) { LogManager.WriteLog(LogTypes.Error, string.Format("处理大乱斗结束奖励时, 奖励列表项未空", new object[0]), null, true); } else { double expAward = 0.0; double MoJingAward = 0.0; double chengJiuAward = 0.0; AwardsItemList awardsItemList = new AwardsItemList(); bool successed = successSide == client.ClientData.BattleWhichSide; double awardmuti = 0.0; HeFuAwardTimesActivity hefuact = HuodongCachingMgr.GetHeFuAwardTimesActivity(); if (hefuact != null && hefuact.InActivityTime()) { awardmuti += (double)hefuact.activityTimes; } JieRiMultAwardActivity jieriact = HuodongCachingMgr.GetJieRiMultAwardActivity(); if (null != jieriact) { JieRiMultConfig config = jieriact.GetConfig(2); if (null != config) { awardmuti += config.GetMult(); } } SpecPriorityActivity spAct = HuodongCachingMgr.GetSpecPriorityActivity(); if (null != spAct) { awardmuti += spAct.GetMult(SpecPActivityBuffType.SPABT_Battle); } awardmuti = Math.Max(1.0, awardmuti); foreach (BattleManager.Award award in awardByScore) { if (client.ClientData.BattleKilledNum >= award.MinJiFen && client.ClientData.BattleKilledNum < award.MaxJiFen) { expAward = (double)(client.ClientData.BattleKilledNum * award.ExpXiShu); if (award.MoJingXiShu > 0.0) { MoJingAward = (double)((int)((double)client.ClientData.BattleKilledNum * award.MoJingXiShu)); } if (award.ChengJiuXiShu > 0.0) { chengJiuAward = (double)((int)((double)client.ClientData.BattleKilledNum * award.ChengJiuXiShu)); } if (!successed) { if (expAward > 0.0) { expAward *= 0.8; } if (MoJingAward > 0.0) { MoJingAward *= 0.8; } if (chengJiuAward > 0.0) { chengJiuAward *= 0.8; } } expAward = (double)((long)(expAward * Data.ChangeLifeEverydayExpRate[client.ClientData.ChangeLifeCount])); expAward = Math.Max(expAward, (double)award.MinExp * Data.ChangeLifeEverydayExpRate[client.ClientData.ChangeLifeCount]); expAward = Math.Min(expAward, (double)award.MaxExp * Data.ChangeLifeEverydayExpRate[client.ClientData.ChangeLifeCount]); MoJingAward = Math.Max(MoJingAward, (double)award.MinMoJing); MoJingAward = Math.Min(MoJingAward, (double)award.MaxMoJing); chengJiuAward = Math.Max(chengJiuAward, (double)award.MinChengJiu); chengJiuAward = Math.Min(chengJiuAward, (double)award.MaxChengJiu); if (expAward > 0.0) { expAward = (double)((int)(expAward * awardmuti)); } if (MoJingAward > 0.0) { MoJingAward = (double)((int)(MoJingAward * awardmuti)); } if (chengJiuAward > 0.0) { chengJiuAward = (double)((int)(chengJiuAward * awardmuti)); } break; } } foreach (SystemXmlItem xml in GameManager.SystemBattlePaiMingAwards.SystemXmlItemDict.Values) { if (null != xml) { int min = xml.GetIntValue("MinPaiMing", -1) - 1; int max = xml.GetIntValue("MaxPaiMing", -1) - 1; if (paiMing >= min && paiMing <= max) { awardsItemList.AddNoRepeat(xml.GetStringValue("Goods")); } } } if (expAward > 0.0) { GameManager.ClientMgr.ProcessRoleExperience(client, (long)expAward, true, false, false, "none"); } if (MoJingAward > 0.0) { GameManager.ClientMgr.ModifyTianDiJingYuanValue(client, (int)MoJingAward, "阵营战", false, true, false); } if (chengJiuAward > 0.0) { GameManager.ClientMgr.ModifyChengJiuPointsValue(client, (int)chengJiuAward, "阵营战", false, true); } List <GoodsData> goodsDataList = Global.ConvertToGoodsDataList(awardsItemList.Items, -1); if (!Global.CanAddGoodsDataList(client, goodsDataList)) { GameManager.ClientMgr.SendMailWhenPacketFull(client, goodsDataList, GLang.GetLang(13, new object[0]), string.Format(GLang.GetLang(14, new object[0]), paiMing + 1)); } else { for (int i = 0; i < goodsDataList.Count; i++) { Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, client, goodsDataList[i].GoodsID, goodsDataList[i].GCount, goodsDataList[i].Quality, "", goodsDataList[i].Forge_level, goodsDataList[i].Binding, 0, "", true, 1, "阵营战排名奖励", "1900-01-01 12:00:00", 0, goodsDataList[i].BornIndex, goodsDataList[i].Lucky, 0, goodsDataList[i].ExcellenceInfo, goodsDataList[i].AppendPropLev, 0, null, null, 0, true); } } GameManager.ClientMgr.NotifySelfSuiTangBattleAward(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client, this.TangKilledNum, this.SuiKilledNum, (long)expAward, (int)MoJingAward, (int)chengJiuAward, successed, paiMing, awardsItemList.ToString()); } }