Code:
10-19 Storekeeper
You MIGHT need to change the value of the 1122 in "for (int x = 1; x < 1122; x++)" depending on what patch the npc.ini is.
Code:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; using System.Runtime.InteropServices; namespace NPC.ini_Parser { class Program { static void Main(string[] args) { Console.Title = "Npc.ini Parser"; IniFile NPC = new IniFile(Application.StartupPath + "/npc.ini"); StreamWriter sw = new StreamWriter(Application.StartupPath + "/Npc Info.txt"); for (int x = 1; x < 1122; x++) { string name = NPC.ReadString("NpcType" + x.ToString(), "Name", "Error"); switch (name) { case "Error": continue; default: sw.WriteLine(x.ToString() + "0-" + x.ToString() + "9\t" + name); break; } } sw.Close(); Console.WriteLine("Npc.ini has been parsed."); Console.ReadLine(); } } class IniFile { public string FileName; public IniFile() { } public IniFile(string _FileName) { this.FileName = _FileName; } [DllImport("kernel32.dll", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] private static extern int GetPrivateProfileStringA(string Section, string Key, string _Default, StringBuilder Buffer, int BufferSize, string FileName); [DllImport("kernel32.dll", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] private static extern int WritePrivateProfileStringA(string Section, string Key, string Arg, string FileName); public byte ReadByte(string Section, string Key, byte _Default) { byte buf = _Default; byte.TryParse(this.ReadString(Section, Key, _Default.ToString(), 6), out buf); return buf; } public short ReadInt16(string Section, string Key, short _Default) { short buf = _Default; short.TryParse(this.ReadString(Section, Key, _Default.ToString(), 9), out buf); return buf; } public int ReadInt32(string Section, string Key, int _Default) { int buf = _Default; int.TryParse(this.ReadString(Section, Key, _Default.ToString(), 15), out buf); return buf; } public sbyte ReadSByte(string Section, string Key, byte _Default) { sbyte buf = (sbyte)_Default; sbyte.TryParse(this.ReadString(Section, Key, _Default.ToString(), 6), out buf); return buf; } public string ReadString(string Section, string Key, string _Default) { return this.ReadString(Section, Key, _Default, 255); } public string ReadString(string Section, string Key, string _Default, int BufSize) { StringBuilder Buffer = new StringBuilder(BufSize); GetPrivateProfileStringA(Section, Key, _Default, Buffer, BufSize, this.FileName); return Buffer.ToString(); } public ushort ReadUInt16(string Section, string Key, ushort _Default) { ushort buf = _Default; ushort.TryParse(this.ReadString(Section, Key, _Default.ToString(), 9), out buf); return buf; } public uint ReadUInt32(string Section, string Key, uint _Default) { uint buf = _Default; uint.TryParse(this.ReadString(Section, Key, _Default.ToString(), 15), out buf); return buf; } public void Write(string Section, string Key, object Value) { WritePrivateProfileStringA(Section, Key, Value.ToString(), this.FileName); } public void Write(string Section, string Key, string Value) { WritePrivateProfileStringA(Section, Key, Value, this.FileName); } } }