コード例 #1
0
 public static void ParseAwardsItemList(string str, ref AwardsItemList awardsItemList, char splitChar1 = '|', char splitChar2 = ',')
 {
     awardsItemList.Add(str);
 }
コード例 #2
0
        public static void ParseAwardsGoodsList(string str, List <GoodsData> goodsDataList, char splitChar1 = '|', char splitChar2 = ',')
        {
            AwardsItemList awardsItemList = new AwardsItemList();

            awardsItemList.Add(str);
        }
コード例 #3
0
        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());
            }
        }