コード例 #1
0
ファイル: RangeHelper.cs プロジェクト: abel/sinan
 public static Point NewPoint(Variant point)
 {
     if (point == null) return Point.Empty;
     int x = point.GetIntOrDefault("X");
     int y = point.GetIntOrDefault("Y");
     return new Point(x, y);
 }
コード例 #2
0
ファイル: FinishBusiness.cs プロジェクト: abel/sinan
        /// <summary>
        /// 判断是否存在要求回收的物品
        /// </summary>
        /// <param name="note"></param>
        /// <param name="s"></param>
        /// <returns>true表示发生变化</returns>
        public static bool Task10004(UserNote note, Variant s)
        {
            if (s.GetIntOrDefault("Cur") == s.GetIntOrDefault("Total"))
                return false;
            if (!s.ContainsKey("GoodsID"))
                return false;

            if (s.GetIntOrDefault("Type") != 10004)
                return false;

            int m = GameConfigAccess.Instance.GetStactCount(s.GetStringOrDefault("GoodsID"));

            if (m <= 0) return false;

            PlayerEx burden = note.Player.B0;

            IList c = burden.Value.GetValue<IList>("C");
            int number = 0;
            foreach (Variant d in c)
            {
                if (d.GetStringOrDefault("G") == s.GetStringOrDefault("GoodsID"))
                {
                    number += d.GetIntOrDefault("A");
                }
            }

            if (number >= s.GetIntOrDefault("Total"))
                s["Cur"] = s.GetIntOrDefault("Total");
            else
                s["Cur"] = number;
            return true;
        }
コード例 #3
0
ファイル: LimitTeam.cs プロジェクト: abel/sinan
 public static LimitTeam Create(string name, Variant v)
 {
     int minMember = v.GetIntOrDefault("MinMember");
     int maxMember = v.GetIntOrDefault("MaxMember");
     if (minMember > 0 || maxMember > 0)
     {
         return new LimitTeam(name, minMember, maxMember);
     }
     return null;
 }
コード例 #4
0
ファイル: LimitFamily.cs プロジェクト: abel/sinan
 public static LimitFamily Create(string name, Variant v)
 {
     int dayDev = v.GetIntOrDefault("DayDev");
     int familyTask = v.GetIntOrDefault("FamilyTask");
     if (familyTask > 0 || dayDev > 0)
     {
         return new LimitFamily(name, dayDev, familyTask);
     }
     return null;
 }
コード例 #5
0
ファイル: LimitLevel.cs プロジェクト: abel/sinan
 public static LimitLevel Create(string name, Variant v)
 {
     int minLev = v.GetIntOrDefault("MinLevel");
     int maxLev = v.GetIntOrDefault("MaxLevel");
     if (minLev > 1 || maxLev > 0)
     {
         return new LimitLevel(name, minLev, maxLev);
     }
     return null;
 }
コード例 #6
0
ファイル: RangeHelper.cs プロジェクト: abel/sinan
 /// <summary>
 /// 
 /// </summary>
 /// <param name="range"></param>
 /// <param name="fourfold">是否扩大选择区</param>
 /// <returns></returns>
 public static Rectangle NewRectangle(Variant range, bool fourfold = false)
 {
     if (range == null) return Rectangle.Empty;
     int x = range.GetIntOrDefault("X");
     int y = range.GetIntOrDefault("Y");
     int w = range.GetIntOrDefault("W");
     int h = range.GetIntOrDefault("H");
     if (fourfold)
     {
         return new Rectangle(x - w, y - h, w << 1, h << 1);
     }
     return new Rectangle(x, y, w, h);
 }
コード例 #7
0
ファイル: PlayerBusiness_Skill.cs プロジェクト: abel/sinan
        /// <summary>
        /// 学习宠物技能(御宠图鉴)
        /// </summary>
        /// <param name="variant"></param>
        public bool AddPetBook(Variant c)
        {
            string skillID = c.GetStringOrDefault("SkillID");
            if (string.IsNullOrEmpty(skillID)) return false;

            int level = c.GetIntOrDefault("SkillLev");
            var skill = m_petBook.Value.GetValueOrDefault<List<object>>(skillID);
            if (skill == null)
            {
                skill = new List<object>();
                m_petBook.Value[skillID] = skill;
            }
            if (skill.Contains(level))
            {
                return false;
            }
            int mustslevel = level - 1;
            if (mustslevel > 0 && (!skill.Contains(mustslevel)))
            {
                return false;
            }
            skill.Add(level);
            m_petBook.Save();
            this.Call(ClientCommand.UpdateActorR, new PlayerExDetail(m_petBook));
            return true;
        }
コード例 #8
0
ファイル: APC.cs プロジェクト: abel/sinan
 public Apc(Variant config)
 {
     ID = config.GetStringOrDefault("_id");
     this.Name = config.GetStringOrDefault("Name");
     Name = config.GetStringOrDefault("Name");
     m_value = config.GetVariantOrDefault("Value");
     m_life = new PlayerProperty();
     if (m_value != null)
     {
         m_life.Add(m_value);
         this.Level = m_value.GetIntOrDefault("Level");
     }
     this.ApcType = FighterType.APC;
     Variant ui = config.GetVariantOrDefault("UI");
     if (ui != null)
     {
         this.Skin = ui.GetStringOrDefault("Skin");
         string apcType = ui.GetStringOrDefault("Type");
         if (apcType == "BB")
         {
             this.ApcType = FighterType.BB;
         }
         else if (apcType == "Boss")
         {
             this.ApcType = FighterType.Boss;
         }
     }
 }
コード例 #9
0
ファイル: LimitCoin.cs プロジェクト: abel/sinan
 public static LimitScore Create(string name, Variant v)
 {
     int coin = v.GetIntOrDefault("Coin");
     if (coin > 0)
     {
         return new LimitScore(name, coin);
     }
     return null;
 }
コード例 #10
0
ファイル: LimitBond.cs プロジェクト: abel/sinan
 public static LimitScore Create(string name, Variant v)
 {
     int bond = v.GetIntOrDefault("Bond");
     if (bond > 0)
     {
         return new LimitScore(name, bond);
     }
     return null;
 }
コード例 #11
0
ファイル: LimitScore.cs プロジェクト: abel/sinan
 public static LimitScore Create(string name, Variant v)
 {
     int score = v.GetIntOrDefault("Score");
     if (score > 0)
     {
         return new LimitScore(name, score);
     }
     return null;
 }
コード例 #12
0
ファイル: LimitMaxinto.cs プロジェクト: abel/sinan
 public static LimitMaxinto Create(string ectypeID, string name, Variant v)
 {
     int maxInto = v.GetIntOrDefault("MaxInto");
     if (maxInto > 0)
     {
         return new LimitMaxinto(ectypeID, name, maxInto);
     }
     return null;
 }
コード例 #13
0
ファイル: Box.cs プロジェクト: abel/sinan
 public Box(Variant config)
 {
     ID = config.GetStringOrDefault("_id");
     Name = config.GetStringOrDefault("Name");
     m_value = config.GetVariantOrDefault("Value");
     if (m_value != null)
     {
         this.SceneID = m_value.GetStringOrDefault("SceneID");
         this.GoodsID = m_value.GetStringOrDefault("GoodsID");
         this.OpenMS = m_value.GetIntOrDefault("OpenMS");
         this.GrowSecond = m_value.GetIntOrDefault("GrowSecond");
         this.MaxOpen = m_value.GetIntOrDefault("MaxOpen");
         m_range = RangeHelper.NewRectangle(m_value.GetVariantOrDefault("Range"), true);
     }
     Variant ui = config.GetVariantOrDefault("UI");
     if (ui != null)
     {
         this.Skin = ui.GetStringOrDefault("Skin");
     }
     if (this.GrowSecond <= 0)
     {
         this.GrowSecond = 30;
     }
 }
コード例 #14
0
ファイル: FightAction.cs プロジェクト: abel/sinan
 public FightAction(Variant v, int fightCount)
 {
     this.ActionType = (ActionType)(v.GetIntOrDefault("fType"));
     this.Sender = v.GetStringOrDefault("handler");
     object obj;
     if (v.TryGetValueT("target", out obj))
     {
         this.Target = (obj == null ? string.Empty : obj.ToString());
     }
     if (v.TryGetValueT("parameter", out obj))
     {
         this.Parameter = (obj == null ? string.Empty : obj.ToString());
     }
     this.FightCount = fightCount;
 }
コード例 #15
0
ファイル: FightPet.cs プロジェクト: abel/sinan
 private static string GetPetSkin(Variant v)
 {
     string skin = v.GetStringOrDefault("Skin");
     int rank = v.GetIntOrDefault("PetsRank");
     int index = skin.IndexOf('|');
     if (index >= 0)
     {
         string[] skins = skin.Split('|');
         if (rank < skins.Length)
         {
             return skins[rank];
         }
     }
     return skin + rank.ToString();
 }
コード例 #16
0
ファイル: PetProperty.cs プロジェクト: abel/sinan
        public static PlayerProperty CreatePlayerProperty(Variant v)
        {
            PlayerProperty life = new PlayerProperty();

            life.LiLiang = v.GetIntOrDefault("LiLiang");
            life.TiZhi = v.GetIntOrDefault("TiZhi");
            life.ZhiLi = v.GetIntOrDefault("ZhiLi");
            life.JingShen = v.GetIntOrDefault("JingShen");
            life.KangShangHai = v.GetIntOrDefault("KangShangHai");

            //-----------------------
            life.WuLiXiShou = v.GetDoubleOrDefault("WuLiXiShou");
            life.MoFaXiShou = v.GetDoubleOrDefault("MoFaXiShou");
            life.FanJiLv = v.GetDoubleOrDefault("FanJiLv");
            life.HeJiLv = v.GetDoubleOrDefault("HeJiLv");
            life.TaoPaoLv = v.GetDoubleOrDefault("TaoPaoLv");
            life.BaoJiShangHai = v.GetDoubleOrDefault("BaoJiShangHai");
            life.HeJiShangHai = v.GetDoubleOrDefault("HeJiShangHai");

            life.SuDu = v.GetIntOrDefault("SuDu");
            life.BaoJi = v.GetIntOrDefault("BaoJi");
            life.MingZhong = v.GetIntOrDefault("MingZhong");
            life.ShanBi = v.GetIntOrDefault("ShanBi");

            life.BaoJiLv = v.GetDoubleOrDefault("BaoJiLv");
            life.MingZhongLv = v.GetDoubleOrDefault("MingZhongLv");
            life.ShanBiLv = v.GetDoubleOrDefault("ShanBiLv");
            //----------------------------------
            life.ShengMing = v.GetVariantOrDefault("ShengMing").GetIntOrDefault("M");
            life.MoFa = v.GetVariantOrDefault("MoFa").GetIntOrDefault("M");
            life.GongJi = v.GetVariantOrDefault("GongJi").GetIntOrDefault("V");
            life.MoFaGongJi = v.GetVariantOrDefault("MoFaGongJi").GetIntOrDefault("V");
            life.FangYu = v.GetVariantOrDefault("FangYu").GetIntOrDefault("V");
            life.MoFaFangYu = v.GetVariantOrDefault("MoFaFangYu").GetIntOrDefault("V");

            return life;
        }
コード例 #17
0
ファイル: PlayerBusiness_Buffer.cs プロジェクト: abel/sinan
        public bool SetPKProtect(Variant v, int number = 1)
        {
            int second = v.GetIntOrDefault("S") * number;
            if (second > 0)
            {
                DateTime now = DateTime.UtcNow;
                Variant pk = m_assist.Value.GetVariantOrDefault("PK");
                if (pk == null)
                {
                    pk = new Variant();
                    m_assist.Value["PK"] = pk;
                    pk["A"] = 0;
                    pk["T"] = now.AddSeconds(second);
                }
                else
                {
                    DateTime t = pk.GetDateTimeOrDefault("T");
                    if (t < now)
                    {
                        t = now.AddSeconds(second);
                    }
                    else
                    {
                        t = t.AddSeconds(second);
                        //最多累计24小时
                        if ((t - now).TotalHours > 24)
                        {
                            return false;
                        }
                    }

                    pk["T"] = t;// t.AddSeconds(second);
                }
                this.Call(ClientCommand.UpdateActorR, new PlayerExDetail(m_assist));
                m_assist.Save();
                return true;
            }
            return false;
        }
コード例 #18
0
ファイル: PlayerBusiness_Buffer.cs プロジェクト: abel/sinan
 public bool SetFightPro(Variant v, int number = 1)
 {
     string name = v.GetStringOrDefault("ProType");
     if (name == "WG" || name == "MG" || name == "MF" || name == "WF" || name == "CP")
     {
         int a = v.GetIntOrDefault("A");
         int second = v.GetIntOrDefault("S") * number;
         if (a > 0 && second > 0)
         {
             SetFightPro(name, a, second);
             return true;
         }
     }
     return false;
 }
コード例 #19
0
ファイル: PlayerBusiness_Buffer.cs プロジェクト: abel/sinan
 public bool SetDoubleExp(Variant v, int number = 1)
 {
     double a = v.GetDoubleOrDefault("A");
     int second = v.GetIntOrDefault("S") * number;
     if (a > 0 && second > 0)
     {
         SetASTBuffer("RExp", a, second);
     }
     return true;
 }
コード例 #20
0
ファイル: PlayerBusiness_Buffer.cs プロジェクト: abel/sinan
 /// <summary>
 /// 设置自动加满(累加方式)
 /// "RHP":角色血/魔加满
 /// "PHP":宠物血/魔加满
 /// </summary>
 /// <param name="v"></param>
 public bool SetAutoFull(Variant v, int number = 1)
 {
     if (v == null) return false;
     foreach (string name in autoKeys)
     {
         int rhp = v.GetIntOrDefault(name) * number;
         if (rhp > 0)
         {
             m_assist.Value.SetOrInc(name, rhp);
             FristAdd(name);
         }
     }
     this.Call(ClientCommand.UpdateActorR, new PlayerExDetail(m_assist));
     m_assist.Save();
     return true;
 }
コード例 #21
0
ファイル: PlayerBusiness_Buffer.cs プロジェクト: abel/sinan
 public bool SetAutoFight(Variant v, int number = 1)
 {
     int second = v.GetIntOrDefault("S") * number;
     if (second > 0)
     {
         SetASTBuffer("AF", 1, second);
     }
     return true;
 }
コード例 #22
0
ファイル: APCProperty.cs プロジェクト: abel/sinan
        /// <summary>
        /// 加成.
        /// </summary>
        /// <param name="v"></param>
        /// <returns></returns>
        public virtual void Add(Variant v)
        {
            if (v != null && v.Count > 0)
            {
                ShengMing += v.GetIntOrDefault("ShengMing");
                MoFa += v.GetIntOrDefault("MoFa");
                GongJi += v.GetIntOrDefault("GongJi");
                MoFaGongJi += v.GetIntOrDefault("MoFaGongJi");
                FangYu += v.GetIntOrDefault("FangYu");
                MoFaFangYu += v.GetIntOrDefault("MoFaFangYu");

                WuLiXiShou += v.GetDoubleOrDefault("WuLiXiShou");
                MoFaXiShou += v.GetDoubleOrDefault("MoFaXiShou");
                FanJiLv += v.GetDoubleOrDefault("FanJiLv");
                HeJiLv += v.GetDoubleOrDefault("HeJiLv");
                TaoPaoLv += v.GetDoubleOrDefault("TaoPaoLv");
                BaoJiShangHai += v.GetDoubleOrDefault("BaoJiShangHai");
                HeJiShangHai += v.GetDoubleOrDefault("HeJiShangHai");

                SuDu += v.GetIntOrDefault("SuDu");
                BaoJi += v.GetIntOrDefault("BaoJi");
                MingZhong += v.GetIntOrDefault("MingZhong");
                ShanBi += v.GetIntOrDefault("ShanBi");

                BaoJiLv += v.GetDoubleOrDefault("BaoJiLv");
                MingZhongLv += v.GetDoubleOrDefault("MingZhongLv");
                ShanBiLv += v.GetDoubleOrDefault("ShanBiLv");
            }
        }
コード例 #23
0
ファイル: BurdenManager.cs プロジェクト: abel/sinan
        /// <summary>
        /// 得到装被附加属性
        /// </summary>
        /// <param name="affix">附加属性</param>
        /// <param name="v">产生的附加属性</param>
        public static void GetAffix(Variant affix, Variant v)
        {
            if (affix == null)
                return;
            int min = affix.GetIntOrDefault("Min");
            int max = affix.GetIntOrDefault("Max");
            if (min > max)
                return;

            Variant lift = affix.GetVariantOrDefault("Life");

            if (lift == null)
                return;

            foreach (var item in lift)
            {
                if (v.ContainsKey(item.Key))
                    continue;

                Variant tmp = (Variant)item.Value;
                if (tmp == null)
                    continue;

                int m = tmp.GetIntOrDefault("Min");
                int n = tmp.GetIntOrDefault("Max");
                double range = tmp.GetDoubleOrDefault("Range");

                if (NumberRandom.RandomHit(range))
                {
                    //表示成功
                    v.Add(item.Key, NumberRandom.Next(m, n + 1));
                    if (v.Count >= max)
                        break;
                }
            }

            if (lift.Count > min && v.Count < min)
            {
                //回调
                GetAffix(affix, v);
            }
        }
コード例 #24
0
ファイル: BaseConfig.cs プロジェクト: abel/sinan
        public BaseConfig(Variant config)
        {
            this.BaseDirectory = AppDomain.CurrentDomain.BaseDirectory;

            this.Platform = config.GetStringOrDefault("Platform", Sinan.Entity.Platform.Tencent);
            this.DirConfig = Path.Combine(this.BaseDirectory, fixPath(config.GetStringOrDefault("DirConfig", "Config")));

            this.Crossdomain = Path.Combine(DirConfig, fixPath(config.GetStringOrDefault("Crossdomain", "crossdomain.txt")));
            this.DirBase = Path.Combine(DirConfig, fixPath(config.GetStringOrDefault("DirBase", "base")));
            this.DirGame = Path.Combine(DirConfig, fixPath(config.GetStringOrDefault("DirGame", "game")));
            this.DirDB = Path.Combine(DirConfig, fixPath(config.GetStringOrDefault("DirDB", "db")));

            this.Language = config.GetStringOrDefault("Language");
            if (!string.IsNullOrWhiteSpace(Language))
            {
                string path = Path.Combine(DirConfig, fixPath(Language));
                if (Directory.Exists(path))
                {
                    this.DirBase = path;
                }
            }

            this.DirPlugin = Path.Combine(BaseDirectory, fixPath(config.GetStringOrDefault("DirPlugin", "Plugins")));
            this.Log4Config = Path.Combine(BaseDirectory, fixPath(config.GetStringOrDefault("Log4Config", "log4net.config")));

            this.DbBase = config.GetStringOrDefault("DbBase");
            this.DbLog = config.GetStringOrDefault("DbLog");
            this.DbPlayer = config.GetStringOrDefault("DbPlayer");

            string epGame = config.GetStringOrDefault("EpGame");
            this.EpGame = CreateEndPoint(epGame);

            string epGM = config.GetStringOrDefault("EpGM");
            this.EpGM = CreateEndPoint(epGM);

            string epGMM = config.GetStringOrDefault("EpGMM");
            this.EpGMM = CreateEndPoint(epGMM);

            string epShip = config.GetStringOrDefault("EpShip");
            this.EpShip = CreateEndPoint(epShip);

            this.MaxClient = config.GetIntOrDefault("MaxClient", 500);
            this.SendQueueSize = config.GetIntOrDefault("SendQueueSize", 100);
            this.MaxLevel = config.GetIntOrDefault("MaxLevel", 100);
            this.MaxNameLen = config.GetIntOrDefault("MaxNameLen", 16);

            this.Zoneid = config.GetIntOrDefault("Zoneid");
            this.ZoneEpoch = config.GetUtcTimeOrDefault("ZoneEpoch");

            this.DesKey = config.GetStringOrDefault("DESKey");
            this.LoginKey = config.GetStringOrDefault("LoginKey") ?? config.GetStringOrDefault("MD5Key");
            this.RechargeKey = config.GetStringOrDefault("RechargeKey");
            this.GMKey = config.GetStringOrEmpty("GMKey");
            this.ReportSIP = config.GetStringOrDefault("ReportSIP");

            this.WebAddress = config.GetStringOrDefault("WebAddress");

            this.FreeCoin = config.GetBooleanOrDefault("FreeCoin", false);
        }
コード例 #25
0
ファイル: SceneBusiness.cs プロジェクト: abel/sinan
 /// <summary>
 /// 获取目的地
 /// </summary>
 /// <param name="point"></param>
 static Destination InitDestination(Variant point)
 {
     if (point != null)
     {
         string sceneB = point.GetStringOrDefault("SceneB");
         if (!string.IsNullOrEmpty(sceneB))
         {
             return new Destination(
                 sceneB,
                 point.GetIntOrDefault("X"),
                 point.GetIntOrDefault("Y"));
         }
     }
     return null;
 }
コード例 #26
0
ファイル: PetMediator.cs プロジェクト: abel/sinan
        /// <summary>
        /// 交换信息
        /// </summary>
        /// <param name="v0"></param>
        /// <param name="v1"></param>
        private bool Swap(Variant v0, Variant v1)
        {
            bool isin = false;
            Variant v = new Variant();
            if (v0.GetIntOrDefault("P") > 3 || v1.GetIntOrDefault("P") > 3)
                isin = true;
            foreach (string k in v0.Keys)
            {
                v.Add(k, v0[k]);
            }

            v0["E"] = v1["E"];
            v0["G"] = v1["G"];
            v0["S"] = v1["S"];
            v0["H"] = v1["H"];
            v0["A"] = v1["A"];
            v0["D"] = v1["D"];
            v0["R"] = v1["R"];
            v0["T"] = v1["T"];

            v1["E"] = v["E"];
            v1["G"] = v["G"];
            v1["S"] = v["S"];
            v1["H"] = v["H"];
            v1["A"] = v["A"];
            v1["D"] = v["D"];
            v1["R"] = v["R"];
            v1["T"] = v["T"];
            return isin;
        }
コード例 #27
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;
 }
コード例 #28
0
ファイル: BurdenManager.cs プロジェクト: abel/sinan
        /// <summary>
        /// 得到一种道具,判断需要多少格子
        /// </summary>
        /// <param name="Content">包袱列表</param>
        /// <param name="goodsid">道具id</param>
        /// <param name="number0">非绑定道具数量</param>
        /// <param name="number1">绑定道具数量</param>
        /// <returns>需要空格子数量</returns>
        public static int NeedSpace(IList Content, string goodsid, Variant v, int sc)
        {
            int space = 0;
            for (int isbinding = 0; isbinding <= 1; isbinding++)
            {
                //0为非绑定,1为绑定
                int number = v.GetIntOrDefault("Number" + isbinding);
                if (number <= 0)
                    continue;

                int cur = 0;//当前该物品所占的格子数
                foreach (Variant k in Content)
                {
                    if (k.GetStringOrDefault("G") != goodsid)
                        continue;
                    if (k.GetIntOrDefault("H") != isbinding)
                        continue;
                    if (v.ContainsKey("EndTime"))
                    {
                        Variant t = k.GetVariantOrDefault("T");
                        if (t == null)
                            continue;
                        if (t.GetStringOrDefault("EndTime") != v.GetStringOrDefault("EndTime"))
                            continue;
                    }
                    number += k.GetIntOrDefault("A");
                    cur++;
                }
                int m = 0;//余数
                int n = Math.DivRem(number, sc, out m);
                n = m > 0 ? n + 1 : n;
                space += (n > cur) ? (n - cur) : 0;
            }
            return space;
        }
コード例 #29
0
ファイル: FightApc_AI.cs プロジェクト: abel/sinan
        private void CreateAction(FightObject[] targetTeam, Variant v, int fightCount)
        {
            int actionType = v.GetIntOrDefault("ActionType");
            FightAction action = new FightAction((ActionType)actionType, this.ID, 0);
            action.Parameter = v.GetStringOrDefault("Parameter");
            action.SkillLev = v.GetIntOrDefault("Level", 1);

            //Target  1	自己
            //Target  2	队友n
            //Target  3	敌人n
            //Target  4	随机友方(n)
            //Target  5	随机敌人(n)
            //Target  6	血量最少的敌人(n)
            int actionTarget = v.GetIntOrDefault("ActionTarget");
            if (actionTarget <= 1)
            {
                action.Target = this.ID;
            }
            else if (actionTarget == 4 || actionTarget == 2)
            {
                int index = Sinan.Extensions.NumberRandom.Next(Team.Length);
                action.Target = Team[index].ID;
            }
            else if (actionTarget == 5 || actionTarget == 3)
            {
                int index = Sinan.Extensions.NumberRandom.Next(targetTeam.Length);
                action.Target = targetTeam[index].ID;
            }
            else if (actionTarget == 6)
            {
                int min = Int32.MaxValue;
                foreach (var target in targetTeam)
                {
                    if (target.HP > 0 && target.HP < min)
                    {
                        action.Target = target.ID;
                    }
                }
            }
            else
            {
                action.Target = string.Empty;
            }
            action.Say = NewTalk(v.GetVariantOrDefault("Talk"));
            action.FightCount = fightCount;
            this.m_action = action;
        }
コード例 #30
0
ファイル: Player_Variant.cs プロジェクト: abel/sinan
 /// <summary>
 /// 设置降生信息
 /// </summary>
 public void SetBirthInfo(Variant d)
 {
     this.Coin = d.GetInt64OrDefault("Coin");
     this.Score = d.GetInt64OrDefault("Score");
     this.Bond = d.GetInt64OrDefault("Bond");
     this.SceneID = d.GetStringOrDefault("SceneID");
     this.X = d.GetIntOrDefault("X");
     this.Y = d.GetIntOrDefault("Y");
     this.Body = d.GetStringOrDefault("Body");
     this.Weapon = d.GetStringOrDefault("Weapon");
     this.Mount = d.GetStringOrDefault("Mount");
     this.Coat = d.GetStringOrDefault("Coat");
     this.IsCoat = d.GetBooleanOrDefault("IsCoat");
 }