Beispiel #1
0
        public List <ConfigCrowdrankprizeEntity> GetRankPrizes(EnumCrowdPrizeCategory category, int categorySub)
        {
            var key = BuildRankPrizeKey((int)category, categorySub);

            if (_rankPrizeDic.ContainsKey(key))
            {
                return(_rankPrizeDic[key]);
            }
            return(null);
        }
Beispiel #2
0
        static bool SavePrizeRecord(Guid managerId, EnumCrowdPrizeCategory category, string source, string prizeItemString, string siteId)
        {
            CrosscrowdPrizerecordEntity record = new CrosscrowdPrizerecordEntity();

            record.Category   = (int)category;
            record.ManagerId  = managerId;
            record.PrizeItems = prizeItemString;
            record.RowTime    = DateTime.Now;
            record.Source     = source;
            record.SiteId     = siteId;
            return(CrosscrowdPrizerecordMgr.Insert(record));
        }
Beispiel #3
0
        static MessageCode BuildPrizeMail(CrosscrowdInfoEntity crowd, MailBuilder mail, EnumCrowdPrizeCategory category, int categorySub, int maxPoint, int maxLegendCount, ref string prizeItemString)
        {
            try
            {//11 天梯奖励     12击杀奖励
                var prizes = CacheFactory.CrowdCache.GetRankPrizes(category, categorySub);
                if (prizes != null)
                {
                    //1	金币
                    //2	卡库	卡库id
                    //3	物品	物品code
                    //4	非彩色球魂
                    //5	点券
                    //7 绑定点卷
                    var itemCode = 0;
                    foreach (var entity in prizes)
                    {
                        if (!RandomHelper.CheckPercentage(entity.Rate))
                        {
                            continue;
                        }
                        switch (entity.Type)
                        {
                        case 1:
                            mail.AddAttachment(EnumCurrencyType.Coin, entity.Count);
                            prizeItemString += string.Format("1Coin:{0}|", entity.Count);
                            break;

                        case 2:
                            itemCode = CacheFactory.LotteryCache.LotteryByLib(entity.SubType);
                            if (itemCode > 0)
                            {
                                mail.AddAttachment(entity.Count, itemCode, entity.IsBinding, entity.Strength);
                                prizeItemString += string.Format("2Item-C:{0},I:{1},B:{2},S:{3}|", entity.Count,
                                                                 itemCode, entity.IsBinding, entity.Strength);
                            }
                            break;

                        case 3:
                            if (maxLegendCount != -1 && entity.SubType == 310165)
                            {
                                if (crowd.PrizeLegendCount < maxLegendCount)
                                {
                                    BuildPrizeMailItem(mail, entity, "3Item", ref prizeItemString);
                                    crowd.PrizeLegendCount++;
                                }
                            }
                            else
                            {
                                BuildPrizeMailItem(mail, entity, "3Item", ref prizeItemString);
                            }
                            break;

                        case 4:
                            itemCode = CacheFactory.ItemsdicCache.RandomBallsoulOthercolorForWCH();
                            if (itemCode > 0)
                            {
                                mail.AddAttachment(entity.Count, itemCode, entity.IsBinding, entity.Strength);
                                prizeItemString += string.Format("4Item-C:{0},I:{1},B:{2},S:{3}|", entity.Count,
                                                                 itemCode, entity.IsBinding, entity.Strength);
                            }
                            break;

                        case 5:
                            var totalPrizePoint = crowd.PrizePoint;
                            if (category == EnumCrowdPrizeCategory.CrossRank)
                            {
                                int point = RandomHelper.GetInt32(entity.Min, entity.Max);
                                if (point > 0)
                                {
                                    mail.AddAttachment(EnumCurrencyType.Point, point);
                                    prizeItemString += string.Format("5Point:{0}|", point);
                                }
                            }
                            else if (maxPoint == -1 || totalPrizePoint < maxPoint)
                            {
                                int point = RandomHelper.GetInt32(entity.Min, entity.Max);
                                totalPrizePoint += point;
                                if (totalPrizePoint > maxPoint)
                                {
                                    point           = maxPoint - crowd.PrizePoint;
                                    totalPrizePoint = maxPoint;
                                }
                                if (maxPoint != -1)
                                {
                                    crowd.PrizePoint = totalPrizePoint;
                                }
                                if (point > 0)
                                {
                                    mail.AddAttachment(EnumCurrencyType.Point, point);
                                    prizeItemString += string.Format("5Point:{0}|", point);
                                }
                            }
                            break;

                        case 6:
                            int prizeCount = 0;
                            if (RandomHelper.CheckPercentage(entity.Min))
                            {
                                prizeCount = RandomHelper.GetInt32(21, 30);
                            }
                            else if (RandomHelper.CheckPercentage(entity.Max))
                            {
                                prizeCount = RandomHelper.GetInt32(16, 20);
                            }
                            else
                            {
                                prizeCount = RandomHelper.GetInt32(6, 15);
                            }
                            //var prizeCount = RandomHelper.GetInt32(entity.Min, entity.Max);
                            mail.AddAttachment(prizeCount, entity.SubType, entity.IsBinding, entity.Strength);
                            prizeItemString += string.Format("3Item-C:{0},I:{1},B:{2},S:{3}|", prizeCount,
                                                             entity.SubType, entity.IsBinding, entity.Strength);
                            break;

                        case 7:
                            var totalBindPoint = crowd.PrizePoint;
                            if (category == EnumCrowdPrizeCategory.CrossRank)
                            {
                                int point = RandomHelper.GetInt32(entity.Min, entity.Max);
                                if (point > 0)
                                {
                                    mail.AddAttachment(EnumCurrencyType.BindPoint, point);
                                    prizeItemString += string.Format("8Point:{0}|", point);
                                }
                            }
                            else if (maxPoint == -1 || totalBindPoint < maxPoint)
                            {
                                int point = RandomHelper.GetInt32(entity.Min, entity.Max);
                                totalBindPoint += point;
                                if (totalBindPoint > maxPoint)
                                {
                                    point          = maxPoint - crowd.PrizePoint;
                                    totalBindPoint = maxPoint;
                                }
                                if (maxPoint != -1)
                                {
                                    crowd.PrizePoint = totalBindPoint;
                                }
                                if (point > 0)
                                {
                                    mail.AddAttachment(EnumCurrencyType.BindPoint, point);
                                    prizeItemString += string.Format("8Point:{0}|", point);
                                }
                            }
                            break;
                        }
                    }
                    if (category == EnumCrowdPrizeCategory.CrossKill)
                    {
                        if (isKillDouble)
                        {
                            mail.AddAttachment(1, 310154, false, 1);
                            prizeItemString += string.Format("3Item-C:{0},I:{1},B:{2},S:{3}|", 1,
                                                             310154, false, 1);
                        }
                    }
                    prizeItemString = prizeItemString.TrimEnd('|');
                }
            }
            catch (Exception ex)
            {
                return(MessageCode.NbParameterError);
            }
            return(MessageCode.Success);
        }