Ah, well I know this is REALLY simple, but as I was rummaging through my hard drive, I found something that might be useful to some people. It pretty much goes through the npc.ini and parses the data and writes it to a new text file, and writes it like this,
Yeah its pretty simple, but it should help most people.
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:
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);
}
}
}