Beispiel #1
0
        /// <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);
        }
Beispiel #2
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);
        }
Beispiel #3
0
 public static void initialize()
 {
     try
     {
         int[] nParams = GameManager.systemParamsList.GetParamValueIntArrayByName("LuoLanFaZhen", ',');
         if (nParams.Length != 5)
         {
             throw new Exception("systemParamsList.LuoLanFaZhen参数数量应该是5");
         }
         LuoLanFaZhenCopySceneManager.SpecialBossID       = nParams[0];
         LuoLanFaZhenCopySceneManager.SpecialMapCode      = nParams[1];
         LuoLanFaZhenCopySceneManager.SpecialAwardRate    = nParams[2];
         LuoLanFaZhenCopySceneManager.LuoLanFaZhenFubenID = nParams[3];
         LuoLanFaZhenCopySceneManager.SpecialTeleRate     = nParams[4];
         SystemXmlItem systemFuBenItem = null;
         if (GameManager.systemFuBenMgr.SystemXmlItemDict.TryGetValue(LuoLanFaZhenCopySceneManager.LuoLanFaZhenFubenID, out systemFuBenItem) && systemFuBenItem != null)
         {
             LuoLanFaZhenCopySceneManager.FinalBossID = systemFuBenItem.GetIntValue("BossID", -1);
         }
         LuoLanFaZhenCopySceneManager.systemLuoLanFaZhen.LoadFromXMlFile("Config/LuoLanFaZhen.xml", "", "MapID", 0);
         List <int> listMapCode = LuoLanFaZhenCopySceneManager.systemLuoLanFaZhen.SystemXmlItemDict.Keys.ToList <int>();
         foreach (int mapcode in listMapCode)
         {
             SystemXmlItem systemFazhenMap = null;
             if (LuoLanFaZhenCopySceneManager.systemLuoLanFaZhen.SystemXmlItemDict.TryGetValue(mapcode, out systemFazhenMap) && systemFazhenMap != null)
             {
                 SystemFazhenMapData sysMapData = new SystemFazhenMapData();
                 sysMapData.MapCode = mapcode;
                 int[] specailParams = systemFazhenMap.GetIntArrayValue("TeShuMapID", '|');
                 if (specailParams != null && specailParams.Length >= 3)
                 {
                     sysMapData.SpecialDestMapCode = specailParams[0];
                     sysMapData.SpecialDestX       = specailParams[1];
                     sysMapData.SpecialDestY       = specailParams[2];
                 }
                 else
                 {
                     sysMapData.SpecialDestMapCode = -1;
                     sysMapData.SpecialDestX       = -1;
                     sysMapData.SpecialDestY       = -1;
                 }
                 int[]    gateIds         = systemFazhenMap.GetIntArrayValue("ChuanSongMenID", '|');
                 string   strDestMapTemp  = systemFazhenMap.GetStringValue("MuDidiID");
                 string[] strDestMapTemp2 = strDestMapTemp.Split(new char[]
                 {
                     '|'
                 });
                 if (gateIds.Length != strDestMapTemp2.Length)
                 {
                     throw new Exception("LuoLanFaZhen.xml传送门数量和目标地图数量不一致");
                 }
                 for (int i = 0; i < gateIds.Length; i++)
                 {
                     sysMapData.listGateID.Add(gateIds[i]);
                 }
                 for (int i = 0; i < strDestMapTemp2.Length; i++)
                 {
                     string[] strDestMapTemp3 = strDestMapTemp2[i].Split(new char[]
                     {
                         ','
                     });
                     sysMapData.listDestMapCode.Add(Convert.ToInt32(strDestMapTemp3[0]));
                 }
                 LuoLanFaZhenCopySceneManager.m_AllMapGatesStaticData[mapcode] = sysMapData;
             }
         }
     }
     catch (Exception)
     {
         throw new Exception("罗兰法阵配置项出错");
     }
 }
Beispiel #4
0
        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);
        }