コード例 #1
0
ファイル: GlobalNew.cs プロジェクト: neyma2379294/MuOrigin
        /// <summary>
        /// 配置的功能是否开启
        /// </summary>
        /// <param name="client"></param>
        /// <param name="id"></param>
        /// <returns></returns>
        public static bool IsGongNengOpened(GameClient client, GongNengIDs id)
        {
            SystemXmlItem xmlItem = null;

            if (GameManager.SystemSystemOpen.SystemXmlItemDict.TryGetValue((int)id, out xmlItem))
            {
                int trigger = xmlItem.GetIntValue("TriggerCondition");
                if (trigger == 7)
                {
                    if (client.ClientData.MainTaskID < xmlItem.GetIntValue("TimeParameters"))
                    {
                        return(false);
                    }
                    return(true);
                }
                else if (trigger == 1)
                {
                    int[] paramArray = xmlItem.GetIntArrayValue("TimeParameters");
                    if (paramArray.Length == 2)
                    {
                        if (Global.GetUnionLevel(paramArray[0], paramArray[1]) > Global.GetUnionLevel(client))
                        {
                            return(false);
                        }
                    }

                    return(true);
                }
            }
            return(true);
        }
コード例 #2
0
        public bool Judge(GameClient client, string arg, out string failedMsg)
        {
            failedMsg = "";
            bool        bOK        = true;
            GongNengIDs gongnengId = (GongNengIDs)Convert.ToInt32(arg);

            if (!GlobalNew.IsGongNengOpened(client, gongnengId, false))
            {
                bOK = false;
            }
            if (!bOK)
            {
                failedMsg = string.Format("物品对应的功能没有开启", new object[0]);
            }
            return(bOK);
        }
コード例 #3
0
        /// <summary>
        /// 配置的功能是否开启
        /// </summary>
        /// <param name="client"></param>
        /// <param name="id"></param>
        /// <returns></returns>
        public static bool IsGongNengOpened(GameClient client, GongNengIDs id, bool hint = false)
        {
            SystemXmlItem xmlItem = null;

            if (GameManager.SystemSystemOpen.SystemXmlItemDict.TryGetValue((int)id, out xmlItem))
            {
                int trigger = xmlItem.GetIntValue("TriggerCondition");
                // 等级
                if (trigger == 1)
                {
                    int[] paramArray = xmlItem.GetIntArrayValue("TimeParameters");
                    if (paramArray.Length == 2)
                    {
                        if (Global.GetUnionLevel(paramArray[0], paramArray[1]) > Global.GetUnionLevel(client))
                        {
                            if (hint)
                            {
                                string msg = string.Format(Global.GetLang("开启此功能需要达到【{0}】转【{1}】级"), paramArray[0], paramArray[1]);
                                GameManager.ClientMgr.NotifyHintMsg(client, msg);
                            }

                            return(false);
                        }
                    }
                    return(true);
                }
                // 完成指定任务
                else if (trigger == 7)
                {
                    int taskId = xmlItem.GetIntValue("TimeParameters");
                    if (client.ClientData.MainTaskID < taskId)
                    {
                        if (hint)
                        {
                            string msg = string.Format(Global.GetLang("开启此功能需要完成主线任务【{0}】"), GlobalNew.GetTaskName(taskId));
                            GameManager.ClientMgr.NotifyHintMsg(client, msg);
                        }

                        return(false);
                    }
                    return(true);
                }
                // 羽毛阶数
                else if (trigger == 14)
                {
                    string str = xmlItem.GetStringValue("TimeParameters");
                    if (string.IsNullOrEmpty(str))
                    {
                        return(true);
                    }
                    string[] fields = str.Split(',');
                    if (fields.Length != 2)
                    {
                        return(true);
                    }

                    int suit = Convert.ToInt32(fields[0]);
                    int star = Convert.ToInt32(fields[1]);

                    return((client.ClientData.MyWingData.WingID > suit) ||
                           (client.ClientData.MyWingData.WingID == suit && client.ClientData.MyWingData.ForgeLevel >= star));
                }
                // 成就阶数
                else if (trigger == 15)
                {
                    if (client.ClientData.ChengJiuLevel < xmlItem.GetIntValue("TimeParameters"))
                    {
                        return(false);
                    }
                }
                // 军衔阶数
                else if (trigger == 16)
                {
                    int junxian = GameManager.ClientMgr.GetShengWangLevelValue(client);
                    if (junxian < xmlItem.GetIntValue("TimeParameters"))
                    {
                        return(false);
                    }
                }
                else if (trigger == 20)
                {
                    int bangHuiLevel = Global.GetBangHuiLevel(client);
                    if (bangHuiLevel < xmlItem.GetIntValue("TimeParameters"))
                    {
                        return(false);
                    }
                }
            }
            return(true);
        }
コード例 #4
0
ファイル: GlobalNew.cs プロジェクト: songxiaopeng/mu_server
        public static bool IsGongNengOpened(GameClient client, GongNengIDs id, bool hint = false)
        {
            int versionGongNengId = (int)id;

            if (versionGongNengId >= 100000 && versionGongNengId < 120000)
            {
                versionGongNengId -= 100000;
            }
            bool result;

            if (!GameManager.VersionSystemOpenMgr.IsVersionSystemOpen(versionGongNengId))
            {
                result = false;
            }
            else if (null == client)
            {
                result = true;
            }
            else if (client.ClientData.HideGM > 0)
            {
                result = true;
            }
            else
            {
                SystemXmlItem xmlItem = null;
                if (GameManager.SystemSystemOpen.SystemXmlItemDict.TryGetValue((int)id, out xmlItem))
                {
                    int trigger = xmlItem.GetIntValue("TriggerCondition", -1);
                    if (trigger == 1)
                    {
                        int[] paramArray = xmlItem.GetIntArrayValue("TimeParameters", ',');
                        if (paramArray.Length == 2)
                        {
                            if (Global.GetUnionLevel(paramArray[0], paramArray[1], false) > Global.GetUnionLevel(client, false))
                            {
                                if (hint)
                                {
                                    string msg = string.Format(GLang.GetLang(374, new object[0]), paramArray[0], paramArray[1]);
                                    GameManager.ClientMgr.NotifyHintMsg(client, msg);
                                }
                                return(false);
                            }
                        }
                        return(true);
                    }
                    if (trigger == 7)
                    {
                        int taskId = xmlItem.GetIntValue("TimeParameters", -1);
                        if (client.ClientData.MainTaskID < taskId)
                        {
                            if (hint)
                            {
                                string msg = string.Format(GLang.GetLang(375, new object[0]), GlobalNew.GetTaskName(taskId));
                                GameManager.ClientMgr.NotifyHintMsg(client, msg);
                            }
                            return(false);
                        }
                        return(true);
                    }
                    else if (trigger == 14)
                    {
                        string str = xmlItem.GetStringValue("TimeParameters");
                        if (string.IsNullOrEmpty(str))
                        {
                            return(true);
                        }
                        string[] fields = str.Split(new char[]
                        {
                            ','
                        });
                        if (fields.Length != 2)
                        {
                            return(true);
                        }
                        int suit = Convert.ToInt32(fields[0]);
                        int star = Convert.ToInt32(fields[1]);
                        return(client.ClientData.MyWingData.WingID > suit || (client.ClientData.MyWingData.WingID == suit && client.ClientData.MyWingData.ForgeLevel >= star));
                    }
                    else if (trigger == 15)
                    {
                        if (client.ClientData.ChengJiuLevel < xmlItem.GetIntValue("TimeParameters", -1))
                        {
                            return(false);
                        }
                    }
                    else if (trigger == 16)
                    {
                        int junxian = GameManager.ClientMgr.GetShengWangLevelValue(client);
                        if (junxian < xmlItem.GetIntValue("TimeParameters", -1))
                        {
                            return(false);
                        }
                    }
                    else if (trigger == 17)
                    {
                        if (TimeUtil.GetOffsetDays(Global.GetKaiFuTime()) < xmlItem.GetIntValue("TimeParameters", -1))
                        {
                            return(false);
                        }
                    }
                    else if (trigger == 18)
                    {
                        if ((ulong)client.ClientData.TotalDayLoginNum < (ulong)((long)xmlItem.GetIntValue("TimeParameters", -1)))
                        {
                            return(false);
                        }
                    }
                    else if (trigger == 20)
                    {
                        int bangHuiLevel = Global.GetBangHuiLevel(client);
                        if (bangHuiLevel < xmlItem.GetIntValue("TimeParameters", -1))
                        {
                            return(false);
                        }
                    }
                    else if (trigger == 21)
                    {
                        if (client.ClientData.RebornLevel < xmlItem.GetIntValue("TimeParameters", -1))
                        {
                            return(false);
                        }
                    }
                }
                result = true;
            }
            return(result);
        }