private void SplitButton_Click(object sender, EventArgs e) { // Define file OpenFileDialog.FileName = ""; OpenFileDialog.Filter = "Lineage II config (skilldata.txt)|skilldata.txt|All files (*.*)|*.*"; if (OpenFileDialog.ShowDialog() == DialogResult.Cancel) { return; } else { SourceFile.Text = OpenFileDialog.FileName; } // Select folder to work if (FolderBrowserDialog.ShowDialog() == DialogResult.Cancel) { return; } string[] str; str = System.IO.Directory.GetFiles(FolderBrowserDialog.SelectedPath, "*.*", System.IO.SearchOption.AllDirectories); if (str.Length != 0 & OverwriteBox.Checked == false) { if ((int)MessageBox.Show("Source directory no empty! Continue?", "No empty directory", MessageBoxButtons.YesNo, MessageBoxIcon.Error) == (int)DialogResult.No) { return; } } TargetFile.Text = FolderBrowserDialog.SelectedPath; // Initialization ProgressBar.Value = 0; var inFile = new System.IO.StreamReader(SourceFile.Text, System.Text.Encoding.Default, true, 1); string ReadStr; var Digit = new[] { Conversions.ToChar("1"), Conversions.ToChar("2"), Conversions.ToChar("3"), Conversions.ToChar("4"), Conversions.ToChar("5"), Conversions.ToChar("6"), Conversions.ToChar("6"), Conversions.ToChar("7"), Conversions.ToChar("8"), Conversions.ToChar("9"), Conversions.ToChar("0") }; // Dim DigitPos As Integer string FileName, FileDirName; string SkillName, SkillLvl, SkillID; while (inFile.BaseStream.Position != inFile.BaseStream.Length) { ReadStr = SymbolCorrection(Strings.Replace(inFile.ReadLine(), Conversions.ToString((char)9), " ")); // SkillData or not if ((Strings.Mid(ReadStr, 1, 11) ?? "") != "skill_begin") { MessageBox.Show("File format is not npcdata. Invalid record is: " + Conversions.ToString((char)13) + Conversions.ToString((char)13) + ReadStr, "Invalid format", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } SkillName = GetNeedParamFromStr(ReadStr, "skill_name"); SkillName = Strings.Mid(SkillName, 2, Strings.Len(SkillName) - 2); SkillID = GetNeedParamFromStr(ReadStr, "skill_id"); SkillLvl = GetNeedParamFromStr(ReadStr, "level"); SkillID = SkillID.PadLeft(4, Conversions.ToChar("0")); if (SkillName.IndexOfAny(Digit, Strings.Len(SkillName) - 3) > 0) { SkillName = Strings.Mid(SkillName, 1, SkillName.IndexOfAny(Digit, Strings.Len(SkillName) - 3)); } FileName = SkillID + "-" + SkillName + ".txt"; FileDirName = FolderBrowserDialog.SelectedPath + @"\skill_begin\" + SkillID + "-" + SkillName; StatusBox.Text = "Please wait... Split skill: " + SkillName; this.Refresh(); // == ART Correction == ReadStr = SymbolCorrection(ReadStr); ReadStr = Strings.Replace(ReadStr, " = ", "="); ReadStr = Strings.Replace(ReadStr, Conversions.ToString((char)32), Conversions.ToString((char)9)); int TempRemPos = Strings.InStr(ReadStr, "/*"); string Temp1; while (TempRemPos != 0) { Temp1 = Strings.Mid(ReadStr, TempRemPos, Strings.InStr(TempRemPos, ReadStr, "*/") - TempRemPos + 2); ReadStr = Strings.Replace(ReadStr, Temp1, Strings.Replace(Temp1, Conversions.ToString((char)9), Conversions.ToString((char)32))); TempRemPos = Strings.InStr(TempRemPos + 1, ReadStr, "/*"); } // If last Skill or not? if (System.IO.Directory.Exists(FileDirName) == false) { System.IO.Directory.CreateDirectory(FileDirName); System.IO.Stream oAiFile = new System.IO.FileStream(FileDirName + @"\" + FileName, System.IO.FileMode.Create); var outAiData = new System.IO.StreamWriter(oAiFile, System.Text.Encoding.Unicode, 1); outAiData.WriteLine(ReadStr); outAiData.Close(); } else { System.IO.Stream oAiFile = new System.IO.FileStream(FileDirName + @"\" + FileName, System.IO.FileMode.Append, System.IO.FileAccess.Write); var outAiData = new System.IO.StreamWriter(oAiFile, System.Text.Encoding.Unicode, 1); outAiData.WriteLine(ReadStr); outAiData.Close(); } ProgressBar.Value = Conversions.ToInteger(inFile.BaseStream.Position * 100 / (double)inFile.BaseStream.Length); } StatusBox.Text = "Splitting done."; ProgressBar.Value = 0; inFile.Close(); }