public static void Load() { BaseInformations = new SafeDictionary<uint, ConquerItemBaseInformation>(10000); PlusInformations = new SafeDictionary<uint, SafeDictionary<byte, ConquerItemPlusInformation>>(10000); GradeInformations = new SafeDictionary<string, SafeDictionary<int, ConquerItemBaseInformation>>(10000); GradeInformations2 = new SafeDictionary<string, SafeDictionary<uint, int>>(10000); string[] baseText = File.ReadAllLines(ServerBase.Constants.ItemBaseInfosPath); int count = 0; int gkey = 0; int lastlevel = 0; string lastgr = ""; foreach (string line in baseText) { count++; string _item_ = line.Trim(); if (_item_.Length > 11) { if (_item_.IndexOf("//", 0, 2) != 0) { ConquerItemBaseInformation CIBI = new ConquerItemBaseInformation(); CIBI.Parse(_item_); var Grades = GradeInformations[CIBI.Description]; BaseInformations.Add(CIBI.ID, CIBI); if (GradeInformations.ContainsKey(CIBI.Description) == false) { GradeInformations2.Add(CIBI.Description, new SafeDictionary<uint, int>(1000)); GradeInformations2[CIBI.Description].Add((uint)(CIBI.ID / 10), 0); lastlevel = CIBI.Level; GradeInformations.Add(CIBI.Description, new SafeDictionary<int, ConquerItemBaseInformation>(1000)); gkey = 0; } else { if (lastgr != CIBI.Description) gkey = GradeInformations2[CIBI.Description].Count - 1; if (GradeInformations2[CIBI.Description].ContainsKey(CIBI.ID / 10) && CIBI.Level == lastlevel) { CIBI.GradeKey = gkey; continue; } else { GradeInformations2[CIBI.Description].Add((uint)(CIBI.ID / 10), 0); lastlevel = CIBI.Level; gkey = gkey + 1; } } lastgr = CIBI.Description; CIBI.GradeKey = gkey; GradeInformations[CIBI.Description].Add(gkey, CIBI); } } } GradeInformations2.Base.Clear(); baseText = File.ReadAllLines(ServerBase.Constants.ItemPlusInfosPath); foreach (string line in baseText) { try { string _item_ = line.Trim(); ConquerItemPlusInformation CIPI = new ConquerItemPlusInformation(); CIPI.Parse(_item_); SafeDictionary<byte, ConquerItemPlusInformation> info = null; if (PlusInformations.TryGetValue(CIPI.ID, out info)) { info.Add(CIPI.Plus, CIPI); } else { PlusInformations.Add(CIPI.ID, new SafeDictionary<byte, ConquerItemPlusInformation>(1000)); if (PlusInformations.TryGetValue(CIPI.ID, out info)) { info.Add(CIPI.Plus, CIPI); } } } catch { Console.WriteLine(line); } } Console.WriteLine("Item Base and Plus information loaded."); }