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);
}
}
}






