This is the code I have for converting the MagicType.dat to MagicType.txt:
Code:
private void button2_Click(object sender, EventArgs e)
{
IniFile Ini = new IniFile("./Config.ini");
ConquerPath = Ini.ReadString("Config", "ConquerPath", "");
OutputPath = Ini.ReadString("Config", "OutputPath", "");
StreamWriter Writer = new StreamWriter(new FileStream(OutputPath + @"MagicType.txt", FileMode.Create));
using (BinaryReader Reader = new BinaryReader(new FileStream(ConquerPath + @"MagicType.dat", FileMode.Open)))
{
int TotalSpells = Reader.ReadInt32();
for (int i = 0; i < TotalSpells; i++)
{
Writer.WriteLine(Reader.ReadInt32() + " " +
Reader.ReadInt32() + " " +
Encoding.ASCII.GetString(Reader.ReadBytes(16)) + " " +
Reader.ReadInt32() + " " +
Reader.ReadInt32() + " " +
Reader.ReadInt32() + " " +
Reader.ReadInt32() + " " +
Reader.ReadInt32() + " " +
Reader.ReadInt32() + " " +
Reader.ReadInt32() + " " +
Reader.ReadInt32() + " " +
Reader.ReadInt32() + " " +
Reader.ReadInt32() + " " +
Reader.ReadInt32() + " " +
Reader.ReadInt32() + " " +
Reader.ReadInt32() + " " +
Reader.ReadInt32() + " " +
Reader.ReadInt32() + " " +
Reader.ReadInt32() + " " +
Reader.ReadInt32() + " " +
Reader.ReadInt32() + " " +
Reader.ReadInt32() + " " +
Reader.ReadInt32() + " " +
Reader.ReadInt32() + " " +
Reader.ReadInt32() + " " +
Reader.ReadInt32() + " " +
Reader.ReadInt32() + " " +
Reader.ReadInt32() + " " +
Reader.ReadInt32() + " " +
Reader.ReadInt32() + " " +
Reader.ReadInt32() + " " +
Reader.ReadInt32() + " " +
Reader.ReadInt32() + " " +
Reader.ReadInt32() + " " +
Encoding.ASCII.GetString(Reader.ReadBytes(64)) + " " +
Encoding.ASCII.GetString(Reader.ReadBytes(256)) + " " +
Encoding.ASCII.GetString(Reader.ReadBytes(64)) + " " +
Encoding.ASCII.GetString(Reader.ReadBytes(260)) + " " +
Encoding.ASCII.GetString(Reader.ReadBytes(64)) + " " +
Encoding.ASCII.GetString(Reader.ReadBytes(260)) + " " +
Reader.ReadInt32() + " " +
Encoding.ASCII.GetString(Reader.ReadBytes(64)) + " " +
Encoding.ASCII.GetString(Reader.ReadBytes(260)) + " " +
Encoding.ASCII.GetString(Reader.ReadBytes(64)) + " " +
Encoding.ASCII.GetString(Reader.ReadBytes(64)) + " " +
Reader.ReadInt32() + " " +
Reader.ReadInt32() + " " +
Reader.ReadInt32());
}
MessageBox.Show("Finished");
}
Writer.Flush();
Writer.Close();
}
But I probably applied it in the wrong way since the result is quite odd, I attached it to this post.Quote:
Magictype.dat structure:
datatype name int amount uint[amount] id MagicType[amount] magictypes
MagicType structure:
I believe this should be all you need to parse the file. The id mentioned in the beginning of the file is type*10+level. With that information, you can build a dictionary.
Any help?






