コード例 #1
0
ファイル: FriendsBusiness.cs プロジェクト: abel/sinan
 /// <summary>
 /// 被祝福者得到的道具与数量
 /// </summary>
 /// <param name="beBless"></param>
 /// <param name="count"></param>
 /// <returns></returns>
 private static string BeBless(Variant beBless, out int count)
 {
     int min = beBless.GetIntOrDefault("Min");
     int max = beBless.GetIntOrDefault("Max");
     Variant goods = beBless.GetValueOrDefault<Variant>("GoodsID");
     int rate = NumberRandom.Next(0, 100);
     string goodsid = "";
     foreach (var k in goods)
     {
         string[] strs = k.Value.ToString().Split('-');
         int m = Convert.ToInt32(strs[0]);
         int n = Convert.ToInt32(strs[1]);
         if (rate >= m && rate <= n)
         {
             goodsid = k.Key;
             break;
         }
     }
     count = NumberRandom.Next(min, max + 1);
     return goodsid;
 }
コード例 #2
0
ファイル: FightApc_AI.cs プロジェクト: abel/sinan
        /// <summary>
        /// 检查对象是否满足条件
        /// </summary>
        /// <param name="f"></param>
        /// <param name="condition"></param>
        /// <returns></returns>
        static bool checkCondition(FightObject f, Variant condition, int round)
        {
            Variant caseHp = condition.GetVariantOrDefault("CaseHP");
            Variant caseMp = condition.GetVariantOrDefault("CaseMP");
            IList caseBuff = condition.GetValueOrDefault<IList>("CaseBuff");
            IList caseRound = condition.GetValueOrDefault<IList>("CaseRound");
            if (caseHp != null)
            {
                double a = caseHp.GetDoubleOrDefault("A");
                double b = caseHp.GetDoubleOrDefault("B");
                if (a > 0 && a < 1) //百分比
                {
                    double test = (f.HP * 1.0) / f.Life.ShengMing;
                    if (test <= a || test > b)
                    {
                        return false;
                    }
                }
                else
                {
                    if (f.HP <= a || f.HP > b)
                    {
                        return false;
                    }
                }
            }

            if (caseMp != null)
            {
                double a = caseMp.GetDoubleOrDefault("A");
                double b = caseMp.GetDoubleOrDefault("B");
                if (a > 0 && a < 1) //百分比
                {
                    double test = (f.MP * 1.0) / f.Life.MoFa;
                    if (test <= a || test > b)
                    {
                        return false;
                    }
                }
                else
                {
                    if (f.MP <= a || f.MP > b)
                    {
                        return false;
                    }
                }
            }

            if (caseBuff != null)
            {
                bool find = false;
                foreach (var b in f.Buffers)
                {
                    if (caseBuff.Contains(b.ID))
                    {
                        find = true;
                        break;
                    }
                }
                if (!find) return false;
            }

            if (caseRound != null && caseRound.Count > 0)
            {
                return caseRound.Contains(round);
            }
            return true;
        }
コード例 #3
0
ファイル: ArenaInfo.cs プロジェクト: abel/sinan
        /// <summary>
        /// 竞技场创建限制
        /// </summary>
        /// <param name="note"></param>
        /// <param name="model">选择条件</param>
        /// <param name="v">限制条件</param>
        /// <returns></returns>
        private static bool ArenaLimit(UserNote note, ArenaBase model, Variant v)
        {
            int score = 0;
            int level = note.Player.Level;
            int fightvalue = 0;
            Variant gametime = v.GetValueOrDefault<Variant>("GameTime").GetValueOrDefault<Variant>(model.GameTime.ToString());
            if (gametime == null)
            {
                //请选择战斗时长
                note.Call(ArenaCommand.CreateArenaR, false, TipManager.GetMessage(ArenaReturn.ArenaLimit1));
                return false;
            }
            score += gametime.GetIntOrDefault("Score");
            fightvalue += gametime.GetIntOrDefault("FightValue");

            Variant group = v.GetValueOrDefault<Variant>("Group").GetValueOrDefault<Variant>(model.Group.ToString());
            if (group == null)
            {
                //请选择分组
                note.Call(ArenaCommand.CreateArenaR, false, TipManager.GetMessage(ArenaReturn.ArenaLimit2));
                return false;
            }
            score += group.GetIntOrDefault("Score");
            fightvalue += group.GetIntOrDefault("FightValue");

            if (!string.IsNullOrEmpty(model.PassWord))
            {
                Variant password = v.GetValueOrDefault<Variant>("PassWord").GetValueOrDefault<Variant>("1");
                if (password != null)
                {
                    score += password.GetIntOrDefault("Score");
                    fightvalue += password.GetIntOrDefault("FightValue");
                }
            }

            Variant petlevel = v.GetValueOrDefault<Variant>("PetLevel").GetValueOrDefault<Variant>(model.PetMin + "-" + model.PetMax);
            if (petlevel == null)
            {
                //请选择战宠等级
                note.Call(ArenaCommand.CreateArenaR, false, TipManager.GetMessage(ArenaReturn.ArenaLimit3));
                return false;
            }
            score += petlevel.GetIntOrDefault("Score");
            fightvalue += petlevel.GetIntOrDefault("FightValue");

            Variant petnumber = v.GetValueOrDefault<Variant>("PetNumber").GetValueOrDefault<Variant>(model.PetNumber.ToString());
            if (petnumber == null)
            {
                //请选择各组产战宠物数量
                note.Call(ArenaCommand.CreateArenaR, false, TipManager.GetMessage(ArenaReturn.ArenaLimit4));
                return false;
            }
            score += petnumber.GetIntOrDefault("Score");
            fightvalue += petnumber.GetIntOrDefault("FightValue");

            Variant preparetime = v.GetValueOrDefault<Variant>("PrepareTime").GetValueOrDefault<Variant>(model.PrepareTime.ToString());
            if (preparetime == null)
            {
                //请选择准备时间
                note.Call(ArenaCommand.CreateArenaR, false, TipManager.GetMessage(ArenaReturn.ArenaLimit5));
                return false;
            }
            score += preparetime.GetIntOrDefault("Score");
            fightvalue += preparetime.GetIntOrDefault("FightValue");

            Variant scene = v.GetValueOrDefault<Variant>("Scene").GetValueOrDefault<Variant>(model.Scene.ToString());
            if (scene == null)
            {
                //请选择竞技场
                note.Call(ArenaCommand.CreateArenaR, false, TipManager.GetMessage(ArenaReturn.ArenaLimit6));
                return false;
            }
            Variant userpets = v.GetValueOrDefault<Variant>("UserPets").GetValueOrDefault<Variant>(model.UserPets.ToString());
            if (userpets == null)
            {
                //请选择角色参战宠物数量
                note.Call(ArenaCommand.CreateArenaR, false, TipManager.GetMessage(ArenaReturn.ArenaLimit7));
                return false;
            }
            score += userpets.GetIntOrDefault("Score");
            fightvalue += userpets.GetIntOrDefault("FightValue");

            Variant fightpoor = v.GetValueOrDefault<Variant>("FightPoor").GetValueOrDefault<Variant>(model.FightPoor.ToString());
            if (fightpoor == null)
            {
                //请选择战绩差
                note.Call(ArenaCommand.CreateArenaR, false, TipManager.GetMessage(ArenaReturn.ArenaLimit8));
                return false;
            }
            score += fightpoor.GetIntOrDefault("Score");
            fightvalue += fightpoor.GetIntOrDefault("FightValue");

            //if (note.Player.FightValue< fightvalue)
            //{
            //    note.Call(ArenaCommand.CreateArenaR, false, "战绩值不足");
            //    return false;
            //}

            if (score < 0)
            {
                //配置有问题
                note.Call(ArenaCommand.CreateArenaR, false, TipManager.GetMessage(ArenaReturn.ArenaLimit9));
                return false;
            }

            if (note.Player.Score < score)
            {
                //石币不足,不能创建
                note.Call(ArenaCommand.CreateArenaR, false, TipManager.GetMessage(ArenaReturn.ArenaLimit10));
                return false;
            }

            if (!note.Player.AddScore(-score, FinanceType.CreateArena))
            {
                //石币不足,不能创建
                note.Call(ArenaCommand.CreateArenaR, false, TipManager.GetMessage(ArenaReturn.ArenaLimit10));
                return false;
            }

            //if (!note.Player.AddFightValue(-fightvalue, true, FinanceType.CreateArena))
            //{
            //    note.Call(ArenaCommand.CreateArenaR, false, "战绩值不足");
            //    return false;
            //}
            //战绩设置
            model.FightValue = note.Player.FightValue;
            return true;
        }