少年修仙传客户端代码仓库
client_Wu Xijin
2019-06-12 147a17dc568ddf6d08024708c4755b0ed8b7ca6b
3335 添加物品表物品报错日志
1个文件已修改
437 ■■■■ 已修改文件
Core/GameEngine/Model/Config/ItemConfig.cs 437 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/ItemConfig.cs
@@ -14,78 +14,78 @@
{
    public readonly int ID;
    public readonly int LV;
    public readonly string ItemName;
    public readonly int Type;
    public readonly int EquipPlace;
    public readonly int CanRepair;
    public readonly int PackCount;
    public readonly int UseLV;
    public readonly int CanSell;
    public readonly int CanTrade;
    public readonly int[] JumpComposeCondi;
    public readonly int CanDrop;
    public readonly int CanBind;
    public readonly int CDType;
    public readonly int CDTime;
    public readonly int GoldPrice;
    public readonly int GoldPaperPrice;
    public readonly int SilverPrice;
    public readonly int UseTag;
    public readonly int Effect1;
    public readonly int EffectValueA1;
    public readonly int EffectValueB1;
    public readonly int EffectValueC1;
    public readonly int Effect2;
    public readonly int EffectValueA2;
    public readonly int EffectValueB2;
    public readonly int EffectValueC2;
    public readonly int Effect3;
    public readonly int EffectValueA3;
    public readonly int EffectValueB3;
    public readonly int EffectValueC3;
    public readonly int Effect4;
    public readonly int EffectValueA4;
    public readonly int EffectValueB4;
    public readonly int EffectValueC4;
    public readonly int Effect5;
    public readonly int EffectValueA5;
    public readonly int EffectValueB5;
    public readonly int EffectValueC5;
    public readonly int AddSkill1;
    public readonly int AddSkill2;
    public readonly int JobLimit;
    public readonly int RealmLimit;
    public readonly int ItemColor;
    public readonly int StarLevel;
    public readonly int MaxHoleCount;
    public readonly int CanBreak;
    public readonly int MaxEndure;
    public readonly int EndureReduceType;
    public readonly int BindType;
    public readonly int MaxSkillCnt;
    public readonly int ExpireTime;
    public readonly int MaxFitLV;
    public readonly int SuiteiD;
    public readonly string DropinstantEffName;
    public readonly string IconKey;
    public readonly int ChangeOrd;
    public readonly string Description;
    public readonly string QualityName;
    public readonly int QualityEchoType;
    public readonly int LimitSTR;
    public readonly int LimitPHY;
    public readonly int LimitPNE;
    public readonly string Template;
    public readonly int DropItemPattern;
    public readonly int SellTip;
    public readonly int BatchUse;
    public readonly int Jump;
    public readonly int[] GetWay;
    public readonly string ItemTypeName;
    public readonly int[] UseCondiType;
    public readonly int LV;
    public readonly string ItemName;
    public readonly int Type;
    public readonly int EquipPlace;
    public readonly int CanRepair;
    public readonly int PackCount;
    public readonly int UseLV;
    public readonly int CanSell;
    public readonly int CanTrade;
    public readonly int[] JumpComposeCondi;
    public readonly int CanDrop;
    public readonly int CanBind;
    public readonly int CDType;
    public readonly int CDTime;
    public readonly int GoldPrice;
    public readonly int GoldPaperPrice;
    public readonly int SilverPrice;
    public readonly int UseTag;
    public readonly int Effect1;
    public readonly int EffectValueA1;
    public readonly int EffectValueB1;
    public readonly int EffectValueC1;
    public readonly int Effect2;
    public readonly int EffectValueA2;
    public readonly int EffectValueB2;
    public readonly int EffectValueC2;
    public readonly int Effect3;
    public readonly int EffectValueA3;
    public readonly int EffectValueB3;
    public readonly int EffectValueC3;
    public readonly int Effect4;
    public readonly int EffectValueA4;
    public readonly int EffectValueB4;
    public readonly int EffectValueC4;
    public readonly int Effect5;
    public readonly int EffectValueA5;
    public readonly int EffectValueB5;
    public readonly int EffectValueC5;
    public readonly int AddSkill1;
    public readonly int AddSkill2;
    public readonly int JobLimit;
    public readonly int RealmLimit;
    public readonly int ItemColor;
    public readonly int StarLevel;
    public readonly int MaxHoleCount;
    public readonly int CanBreak;
    public readonly int MaxEndure;
    public readonly int EndureReduceType;
    public readonly int BindType;
    public readonly int MaxSkillCnt;
    public readonly int ExpireTime;
    public readonly int MaxFitLV;
    public readonly int SuiteiD;
    public readonly string DropinstantEffName;
    public readonly string IconKey;
    public readonly int ChangeOrd;
    public readonly string Description;
    public readonly string QualityName;
    public readonly int QualityEchoType;
    public readonly int LimitSTR;
    public readonly int LimitPHY;
    public readonly int LimitPNE;
    public readonly string Template;
    public readonly int DropItemPattern;
    public readonly int SellTip;
    public readonly int BatchUse;
    public readonly int Jump;
    public readonly int[] GetWay;
    public readonly string ItemTypeName;
    public readonly int[] UseCondiType;
    public ItemConfig()
    public ItemConfig()
    {
    }
@@ -95,162 +95,162 @@
        {
            var tables = input.Split('\t');
            int.TryParse(tables[0],out ID);
            int.TryParse(tables[0], out ID);
            int.TryParse(tables[1],out LV);
            int.TryParse(tables[1], out LV);
            ItemName = tables[2];
            ItemName = tables[2];
            int.TryParse(tables[3],out Type);
            int.TryParse(tables[3], out Type);
            int.TryParse(tables[4],out EquipPlace);
            int.TryParse(tables[4], out EquipPlace);
            int.TryParse(tables[5],out CanRepair);
            int.TryParse(tables[5], out CanRepair);
            int.TryParse(tables[6],out PackCount);
            int.TryParse(tables[6], out PackCount);
            int.TryParse(tables[7],out UseLV);
            int.TryParse(tables[7], out UseLV);
            int.TryParse(tables[8],out CanSell);
            int.TryParse(tables[8], out CanSell);
            int.TryParse(tables[9],out CanTrade);
            int.TryParse(tables[9], out CanTrade);
            string[] JumpComposeCondiStringArray = tables[10].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            JumpComposeCondi = new int[JumpComposeCondiStringArray.Length];
            for (int i=0;i<JumpComposeCondiStringArray.Length;i++)
            {
                 int.TryParse(JumpComposeCondiStringArray[i],out JumpComposeCondi[i]);
            }
            string[] JumpComposeCondiStringArray = tables[10].Trim().Split(StringUtility.splitSeparator, StringSplitOptions.RemoveEmptyEntries);
            JumpComposeCondi = new int[JumpComposeCondiStringArray.Length];
            for (int i = 0; i < JumpComposeCondiStringArray.Length; i++)
            {
                int.TryParse(JumpComposeCondiStringArray[i], out JumpComposeCondi[i]);
            }
            int.TryParse(tables[11],out CanDrop);
            int.TryParse(tables[11], out CanDrop);
            int.TryParse(tables[12],out CanBind);
            int.TryParse(tables[12], out CanBind);
            int.TryParse(tables[13],out CDType);
            int.TryParse(tables[13], out CDType);
            int.TryParse(tables[14],out CDTime);
            int.TryParse(tables[14], out CDTime);
            int.TryParse(tables[15],out GoldPrice);
            int.TryParse(tables[15], out GoldPrice);
            int.TryParse(tables[16],out GoldPaperPrice);
            int.TryParse(tables[16], out GoldPaperPrice);
            int.TryParse(tables[17],out SilverPrice);
            int.TryParse(tables[17], out SilverPrice);
            int.TryParse(tables[18],out UseTag);
            int.TryParse(tables[18], out UseTag);
            int.TryParse(tables[19],out Effect1);
            int.TryParse(tables[19], out Effect1);
            int.TryParse(tables[20],out EffectValueA1);
            int.TryParse(tables[20], out EffectValueA1);
            int.TryParse(tables[21],out EffectValueB1);
            int.TryParse(tables[21], out EffectValueB1);
            int.TryParse(tables[22],out EffectValueC1);
            int.TryParse(tables[22], out EffectValueC1);
            int.TryParse(tables[23],out Effect2);
            int.TryParse(tables[23], out Effect2);
            int.TryParse(tables[24],out EffectValueA2);
            int.TryParse(tables[24], out EffectValueA2);
            int.TryParse(tables[25],out EffectValueB2);
            int.TryParse(tables[25], out EffectValueB2);
            int.TryParse(tables[26],out EffectValueC2);
            int.TryParse(tables[26], out EffectValueC2);
            int.TryParse(tables[27],out Effect3);
            int.TryParse(tables[27], out Effect3);
            int.TryParse(tables[28],out EffectValueA3);
            int.TryParse(tables[28], out EffectValueA3);
            int.TryParse(tables[29],out EffectValueB3);
            int.TryParse(tables[29], out EffectValueB3);
            int.TryParse(tables[30],out EffectValueC3);
            int.TryParse(tables[30], out EffectValueC3);
            int.TryParse(tables[31],out Effect4);
            int.TryParse(tables[31], out Effect4);
            int.TryParse(tables[32],out EffectValueA4);
            int.TryParse(tables[32], out EffectValueA4);
            int.TryParse(tables[33],out EffectValueB4);
            int.TryParse(tables[33], out EffectValueB4);
            int.TryParse(tables[34],out EffectValueC4);
            int.TryParse(tables[34], out EffectValueC4);
            int.TryParse(tables[35],out Effect5);
            int.TryParse(tables[35], out Effect5);
            int.TryParse(tables[36],out EffectValueA5);
            int.TryParse(tables[36], out EffectValueA5);
            int.TryParse(tables[37],out EffectValueB5);
            int.TryParse(tables[37], out EffectValueB5);
            int.TryParse(tables[38],out EffectValueC5);
            int.TryParse(tables[38], out EffectValueC5);
            int.TryParse(tables[39],out AddSkill1);
            int.TryParse(tables[39], out AddSkill1);
            int.TryParse(tables[40],out AddSkill2);
            int.TryParse(tables[40], out AddSkill2);
            int.TryParse(tables[41],out JobLimit);
            int.TryParse(tables[41], out JobLimit);
            int.TryParse(tables[42],out RealmLimit);
            int.TryParse(tables[42], out RealmLimit);
            int.TryParse(tables[43],out ItemColor);
            int.TryParse(tables[43], out ItemColor);
            int.TryParse(tables[44],out StarLevel);
            int.TryParse(tables[44], out StarLevel);
            int.TryParse(tables[45],out MaxHoleCount);
            int.TryParse(tables[45], out MaxHoleCount);
            int.TryParse(tables[46],out CanBreak);
            int.TryParse(tables[46], out CanBreak);
            int.TryParse(tables[47],out MaxEndure);
            int.TryParse(tables[47], out MaxEndure);
            int.TryParse(tables[48],out EndureReduceType);
            int.TryParse(tables[48], out EndureReduceType);
            int.TryParse(tables[49],out BindType);
            int.TryParse(tables[49], out BindType);
            int.TryParse(tables[50],out MaxSkillCnt);
            int.TryParse(tables[50], out MaxSkillCnt);
            int.TryParse(tables[51],out ExpireTime);
            int.TryParse(tables[51], out ExpireTime);
            int.TryParse(tables[52],out MaxFitLV);
            int.TryParse(tables[52], out MaxFitLV);
            int.TryParse(tables[53],out SuiteiD);
            int.TryParse(tables[53], out SuiteiD);
            DropinstantEffName = tables[54];
            DropinstantEffName = tables[54];
            IconKey = tables[55];
            IconKey = tables[55];
            int.TryParse(tables[56],out ChangeOrd);
            int.TryParse(tables[56], out ChangeOrd);
            Description = tables[57];
            Description = tables[57];
            QualityName = tables[58];
            QualityName = tables[58];
            int.TryParse(tables[59],out QualityEchoType);
            int.TryParse(tables[59], out QualityEchoType);
            int.TryParse(tables[60],out LimitSTR);
            int.TryParse(tables[60], out LimitSTR);
            int.TryParse(tables[61],out LimitPHY);
            int.TryParse(tables[61], out LimitPHY);
            int.TryParse(tables[62],out LimitPNE);
            int.TryParse(tables[62], out LimitPNE);
            Template = tables[63];
            Template = tables[63];
            int.TryParse(tables[64],out DropItemPattern);
            int.TryParse(tables[64], out DropItemPattern);
            int.TryParse(tables[65],out SellTip);
            int.TryParse(tables[65], out SellTip);
            int.TryParse(tables[66],out BatchUse);
            int.TryParse(tables[66], out BatchUse);
            int.TryParse(tables[67],out Jump);
            int.TryParse(tables[67], out Jump);
            string[] GetWayStringArray = tables[68].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            GetWay = new int[GetWayStringArray.Length];
            for (int i=0;i<GetWayStringArray.Length;i++)
            {
                 int.TryParse(GetWayStringArray[i],out GetWay[i]);
            }
            string[] GetWayStringArray = tables[68].Trim().Split(StringUtility.splitSeparator, StringSplitOptions.RemoveEmptyEntries);
            GetWay = new int[GetWayStringArray.Length];
            for (int i = 0; i < GetWayStringArray.Length; i++)
            {
                int.TryParse(GetWayStringArray[i], out GetWay[i]);
            }
            ItemTypeName = tables[69];
            ItemTypeName = tables[69];
            string[] UseCondiTypeStringArray = tables[70].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            UseCondiType = new int[UseCondiTypeStringArray.Length];
            for (int i=0;i<UseCondiTypeStringArray.Length;i++)
            {
                 int.TryParse(UseCondiTypeStringArray[i],out UseCondiType[i]);
            }
            string[] UseCondiTypeStringArray = tables[70].Trim().Split(StringUtility.splitSeparator, StringSplitOptions.RemoveEmptyEntries);
            UseCondiType = new int[UseCondiTypeStringArray.Length];
            for (int i = 0; i < UseCondiTypeStringArray.Length; i++)
            {
                int.TryParse(UseCondiTypeStringArray[i], out UseCondiType[i]);
            }
        }
        catch (Exception ex)
        {
@@ -260,13 +260,13 @@
    static Dictionary<string, ItemConfig> configs = new Dictionary<string, ItemConfig>();
    public static ItemConfig Get(string id)
    {
        if (!inited)
    {
        if (!inited)
        {
            Debug.Log("ItemConfig 还未完成初始化。");
            return null;
        }
        if (configs.ContainsKey(id))
        {
            return configs[id];
@@ -279,10 +279,15 @@
            rawDatas.Remove(id);
        }
        if (id != "0" && config == null)
        {
            Debug.LogErrorFormat("尝试去获得不存在的物品:id->{0},请联系<color==yellow>贞亮和陈有</color>。", id);
        }
        return config;
    }
    public static ItemConfig Get(int id)
    public static ItemConfig Get(int id)
    {
        return Get(id.ToString());
    }
@@ -309,25 +314,25 @@
        return values;
    }
    public static bool Has(string id)
    public static bool Has(string id)
    {
        return configs.ContainsKey(id) || rawDatas.ContainsKey(id);
    }
    public static bool Has(int id)
    public static bool Has(int id)
    {
        return Has(id.ToString());
    }
    public static bool inited { get; private set; }
    public static bool inited { get; private set; }
    protected static Dictionary<string, string> rawDatas = new Dictionary<string, string>();
    public static void Init(bool sync=false)
    public static void Init(bool sync = false)
    {
        inited = false;
        var path = string.Empty;
        inited = false;
        var path = string.Empty;
        if (AssetSource.refdataFromEditor)
        {
            path = ResourcesPath.CONFIG_FODLER +"/Item.txt";
            path = ResourcesPath.CONFIG_FODLER + "/Item.txt";
        }
        else
        {
@@ -335,7 +340,7 @@
        }
        configs.Clear();
        var tempConfig = new ItemConfig();
        var tempConfig = new ItemConfig();
        var preParse = tempConfig is IConfigPostProcess;
        if (sync)
@@ -347,67 +352,67 @@
            }
            for (int i = 3; i < lines.Length; i++)
            {
                try
                {
                    var line = lines[i];
                    var index = line.IndexOf("\t");
                    if (index == -1)
                    {
                        continue;
                    }
                    var id = line.Substring(0, index);
                try
                {
                    var line = lines[i];
                    var index = line.IndexOf("\t");
                    if (index == -1)
                    {
                        continue;
                    }
                    var id = line.Substring(0, index);
                    if (preParse)
                    {
                        var config = new ItemConfig(line);
                        configs[id] = config;
                        (config as IConfigPostProcess).OnConfigParseCompleted();
                    }
                    else
                    {
                        rawDatas[id] = line;
                    }
                }
                catch (System.Exception ex)
                    if (preParse)
                    {
                        var config = new ItemConfig(line);
                        configs[id] = config;
                        (config as IConfigPostProcess).OnConfigParseCompleted();
                    }
                    else
                    {
                        rawDatas[id] = line;
                    }
                }
                catch (System.Exception ex)
                {
                    Debug.LogError(ex);
                }
            }
            inited = true;
            inited = true;
        }
        else
        {
            ThreadPool.QueueUserWorkItem((object _object) =>
            {
                var lines = File.ReadAllLines(path);
                if (!preParse)
                {
                    rawDatas = new Dictionary<string, string>(lines.Length - 3);
                }
                if (!preParse)
                {
                    rawDatas = new Dictionary<string, string>(lines.Length - 3);
                }
                for (int i = 3; i < lines.Length; i++)
                {
                    try
                    {
                       var line = lines[i];
                        var index = line.IndexOf("\t");
                        if (index == -1)
                        {
                            continue;
                        }
                        var id = line.Substring(0, index);
                    try
                    {
                        var line = lines[i];
                        var index = line.IndexOf("\t");
                        if (index == -1)
                        {
                            continue;
                        }
                        var id = line.Substring(0, index);
                        if (preParse)
                        {
                            var config = new ItemConfig(line);
                            configs[id] = config;
                            (config as IConfigPostProcess).OnConfigParseCompleted();
                        }
                        else
                        {
                            rawDatas[id] = line;
                        }
                    }
                    catch (System.Exception ex)
                        if (preParse)
                        {
                            var config = new ItemConfig(line);
                            configs[id] = config;
                            (config as IConfigPostProcess).OnConfigParseCompleted();
                        }
                        else
                        {
                            rawDatas[id] = line;
                        }
                    }
                    catch (System.Exception ex)
                    {
                        Debug.LogError(ex);
                    }