diff --git a/FFXIVClassic Map Server/utils/SQLGeneration.cs b/FFXIVClassic Map Server/utils/SQLGeneration.cs new file mode 100644 index 00000000..e24a9b7d --- /dev/null +++ b/FFXIVClassic Map Server/utils/SQLGeneration.cs @@ -0,0 +1,362 @@ +using FFXIVClassic_Lobby_Server; +using FFXIVClassic_Map_Server.packets.send.player; +using MySql.Data.MySqlClient; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; + +namespace FFXIVClassic_Map_Server.utils +{ + class SQLGeneration + { + public static void generateItems() + { + + using (MySqlConnection conn = new MySqlConnection(String.Format("Server={0}; Port={1}; Database={2}; UID={3}; Password={4}", ConfigConstants.DATABASE_HOST, ConfigConstants.DATABASE_PORT, ConfigConstants.DATABASE_NAME, ConfigConstants.DATABASE_USERNAME, ConfigConstants.DATABASE_PASSWORD))) + { + try + { + conn.Open(); + + //Load Last 5 Completed + string query = @" + INSERT INTO gamedata_items VALUES (@id, @displayNameId, NULL)"; + + + MySqlCommand cmd = new MySqlCommand(query, conn); + cmd.Parameters.AddWithValue("@id", 100); + cmd.Parameters.AddWithValue("@displayNameId", 100); + + cmd.Prepare(); + + string line, line2; + Regex csvSplit = new Regex("(?:^|,)(\"(?:[^\"]+|\"\")*\"|[^,]*)", RegexOptions.Compiled); + System.IO.StreamReader file = new System.IO.StreamReader("D:\\Coding\\FFXIV Related\\FFXIV Tool\\2012.09.19.0001.decode.csv\\actorclass.csv"); + while ((line = file.ReadLine()) != null) + { + MatchCollection matches = csvSplit.Matches(line); + + uint id; + uint nameId; + + try + { + id = UInt32.Parse(matches[0].Value.Trim(',')); + nameId = UInt32.Parse(matches[6].Value.Trim(',')); + + } + catch (FormatException e) + { continue; } + + cmd.Parameters["@id"].Value = id; + cmd.Parameters["@displayNameId"].Value = nameId; + + Console.WriteLine("Wrote: {0} : {1}", id, nameId); + cmd.ExecuteNonQuery(); + + } + } + catch (MySqlException e) + { Console.WriteLine(e); } + finally + { + conn.Dispose(); + } + } + } + + public static void generateZones() + { + + using (MySqlConnection conn = new MySqlConnection(String.Format("Server={0}; Port={1}; Database={2}; UID={3}; Password={4}", ConfigConstants.DATABASE_HOST, ConfigConstants.DATABASE_PORT, ConfigConstants.DATABASE_NAME, ConfigConstants.DATABASE_USERNAME, ConfigConstants.DATABASE_PASSWORD))) + { + try + { + conn.Open(); + + //Load Last 5 Completed + string query = @" + INSERT INTO server_zones VALUES (@id, NULL, @placename, false, false, false, false)"; + + + MySqlCommand cmd = new MySqlCommand(query, conn); + cmd.Parameters.AddWithValue("@id", 100); + cmd.Parameters.AddWithValue("@placename", ""); + + cmd.Prepare(); + + Dictionary placenames = new Dictionary(); + + string line2; + Regex csvSplit2 = new Regex("(?:^|,)(\"(?:[^\"]+|\"\")*\"|[^,]*)", RegexOptions.Compiled); + System.IO.StreamReader file2 = new System.IO.StreamReader("D:\\Coding\\FFXIV Related\\FFXIV Tool\\2012.09.19.0001.decode.csv\\xtx_placeName.csv"); + while ((line2 = file2.ReadLine()) != null) + { + MatchCollection matches = csvSplit2.Matches(line2); + + uint id; + string name; + + try + { + id = UInt32.Parse(matches[0].Value.Trim(',')); + name = matches[2].Value.Trim(','); + + } + catch (FormatException e) + { continue; } + + placenames.Add(id, name); + + } + + string line; + Regex csvSplit = new Regex("(?:^|,)(\"(?:[^\"]+|\"\")*\"|[^,]*)", RegexOptions.Compiled); + System.IO.StreamReader file = new System.IO.StreamReader("D:\\Coding\\FFXIV Related\\FFXIV Tool\\2012.09.19.0001.decode.csv\\_zoneParam.csv"); + while ((line = file.ReadLine()) != null) + { + MatchCollection matches = csvSplit.Matches(line); + + uint id; + uint pId; + + try + { + id = UInt32.Parse(matches[0].Value.Trim(',')); + pId = UInt32.Parse(matches[1].Value.Trim(',')); + } + catch (FormatException e) + { continue; } + + cmd.Parameters["@id"].Value = id; + + cmd.Parameters["@placename"].Value = placenames[pId]; + + Console.WriteLine("Wrote: {0}", id); + cmd.ExecuteNonQuery(); + + } + } + catch (MySqlException e) + { Console.WriteLine(e); } + finally + { + conn.Dispose(); + } + } + } + + public static void generateActors() + { + + using (MySqlConnection conn = new MySqlConnection(String.Format("Server={0}; Port={1}; Database={2}; UID={3}; Password={4}", ConfigConstants.DATABASE_HOST, ConfigConstants.DATABASE_PORT, ConfigConstants.DATABASE_NAME, ConfigConstants.DATABASE_USERNAME, ConfigConstants.DATABASE_PASSWORD))) + { + try + { + conn.Open(); + + //Load Last 5 Completed + string query = @" + INSERT INTO gamedata_actor_templates VALUES (@id, @displayNameId, NULL)"; + + + MySqlCommand cmd = new MySqlCommand(query, conn); + cmd.Parameters.AddWithValue("@id", 100); + cmd.Parameters.AddWithValue("@displayNameId", 100); + + cmd.Prepare(); + + string line, line2; + Regex csvSplit = new Regex("(?:^|,)(\"(?:[^\"]+|\"\")*\"|[^,]*)", RegexOptions.Compiled); + System.IO.StreamReader file = new System.IO.StreamReader("D:\\Coding\\FFXIV Related\\FFXIV Tool\\2012.09.19.0001.decode.csv\\actorclass.csv"); + while ((line = file.ReadLine()) != null) + { + MatchCollection matches = csvSplit.Matches(line); + + uint id; + uint nameId; + + try + { + id = UInt32.Parse(matches[0].Value.Trim(',')); + nameId = UInt32.Parse(matches[6].Value.Trim(',')); + + } + catch (FormatException e) + { continue; } + + cmd.Parameters["@id"].Value = id; + cmd.Parameters["@displayNameId"].Value = nameId; + + Console.WriteLine("Wrote: {0} : {1}", id, nameId); + cmd.ExecuteNonQuery(); + + } + } + catch (MySqlException e) + { Console.WriteLine(e); } + finally + { + conn.Dispose(); + } + } + } + + public static void generateActorAppearance() + { + uint NUMFIELDS = 39; + using (MySqlConnection conn = new MySqlConnection(String.Format("Server={0}; Port={1}; Database={2}; UID={3}; Password={4}", ConfigConstants.DATABASE_HOST, ConfigConstants.DATABASE_PORT, ConfigConstants.DATABASE_NAME, ConfigConstants.DATABASE_USERNAME, ConfigConstants.DATABASE_PASSWORD))) + { + try + { + conn.Open(); + + //Load Last 5 Completed + string query = @" + INSERT INTO gamedata_actor_appearance VALUES (@id, "; + + for (int i = 0; i < NUMFIELDS-1; i++) + query += "@v"+i+", "; + + query += "@v" + (NUMFIELDS-1) + ")"; + + MySqlCommand cmd = new MySqlCommand(query, conn); + cmd.Parameters.AddWithValue("@id", 0); + + for (int i = 0; i < NUMFIELDS; i++) + cmd.Parameters.AddWithValue("@v" + i, 100); + + cmd.Prepare(); + + string line; + Regex csvSplit = new Regex("(?:^|,)(\"(?:[^\"]+|\"\")*\"|[^,]*)", RegexOptions.Compiled); + //System.IO.StreamReader file = new System.IO.StreamReader("D:\\Coding\\FFXIV Related\\FFXIV Tool\\2012.09.19.0001.decode.csv\\actorclass.csv"); + System.IO.StreamReader file = new System.IO.StreamReader("D:\\Coding\\FFXIV Related\\FFXIV Tool\\2012.09.19.0001.decode.csv\\actorclass_graphic.csv"); + while ((line = file.ReadLine()) != null) + { + MatchCollection matches = csvSplit.Matches(line); + + uint id; + + try + { + id = UInt32.Parse(matches[0].Value.Trim(',')); + + for (int i = 0; i < NUMFIELDS; i++) + cmd.Parameters["@v" + i].Value = matches[i + 7].Value.Trim(','); + + + } + catch (FormatException e) + { continue; } + + cmd.Parameters["@id"].Value = id; + + Console.WriteLine("Wrote: {0}", id); + cmd.ExecuteNonQuery(); + + } + } + catch (MySqlException e) + { Console.WriteLine(e); } + finally + { + conn.Dispose(); + } + } + + + } + + public static void generateAchievementIds() + { + + using (MySqlConnection conn = new MySqlConnection(String.Format("Server={0}; Port={1}; Database={2}; UID={3}; Password={4}", ConfigConstants.DATABASE_HOST, ConfigConstants.DATABASE_PORT, ConfigConstants.DATABASE_NAME, ConfigConstants.DATABASE_USERNAME, ConfigConstants.DATABASE_PASSWORD))) + { + try + { + conn.Open(); + + //Load Last 5 Completed + string query = @" + INSERT INTO gamedata_achievements VALUES (@id, @name, @otherId, @rewardPoints)"; + + MySqlCommand cmd = new MySqlCommand(query, conn); + cmd.Parameters.AddWithValue("@id", 100); + cmd.Parameters.AddWithValue("@name", "Battle"); + cmd.Parameters.AddWithValue("@otherId", 0); + cmd.Parameters.AddWithValue("@rewardPoints", 0); + cmd.Prepare(); + + int otherId = 1; + string line, line2; + Regex csvSplit = new Regex("(?:^|,)(\"(?:[^\"]+|\"\")*\"|[^,]*)", RegexOptions.Compiled); + System.IO.StreamReader file = new System.IO.StreamReader("D:\\Coding\\FFXIV Related\\FFXIV Tool\\2012.09.19.0001.decode.csv\\achievement.csv"); + System.IO.StreamReader file2 = new System.IO.StreamReader("D:\\Coding\\FFXIV Related\\FFXIV Tool\\2012.09.19.0001.decode.csv\\xtx_achievement.csv"); + while ((line = file.ReadLine()) != null) + { + line2 = file2.ReadLine(); + MatchCollection matches = csvSplit.Matches(line); + MatchCollection matches2 = csvSplit.Matches(line2); + uint id; + string name; + uint points; + try + { + id = UInt32.Parse(matches2[0].Value.Trim(',')); + name = matches2[9].Value.Trim(','); + points = UInt32.Parse(matches[3].Value.Trim(',')); + } + catch (FormatException e) + { continue; } + + if (id == 100) + otherId = SetCompletedAchievementsPacket.CATEGORY_BATTLE; + else if (id == 200) + otherId = SetCompletedAchievementsPacket.CATEGORY_CHARACTER; + else if (id == 400) + otherId = SetCompletedAchievementsPacket.CATEGORY_CURRENCY; + else if (id == 500) + otherId = SetCompletedAchievementsPacket.CATEGORY_ITEMS; + else if (id == 600) + otherId = SetCompletedAchievementsPacket.CATEGORY_SYNTHESIS; + else if (id == 700) + otherId = SetCompletedAchievementsPacket.CATEGORY_GATHERING; + else if (id == 900) + otherId = SetCompletedAchievementsPacket.CATEGORY_MATERIA; + else if (id == 1000) + otherId = SetCompletedAchievementsPacket.CATEGORY_QUESTS; + else if (id == 1200) + otherId = SetCompletedAchievementsPacket.CATEGORY_SEASONAL_EVENTS; + else if (id == 1300) + otherId = SetCompletedAchievementsPacket.CATEGORY_DUNGEONS; + else if (id == 1400) + otherId = SetCompletedAchievementsPacket.CATEGORY_EXPLORATION; + else if (id == 1500) + otherId = SetCompletedAchievementsPacket.CATEGORY_GRAND_COMPANY; + + Console.WriteLine("Wrote: {0} : {1} : {2} : {3}", id, name, otherId, points); + cmd.Parameters["@id"].Value = id; + cmd.Parameters["@name"].Value = name; + cmd.Parameters["@otherId"].Value = otherId; + cmd.Parameters["@rewardPoints"].Value = points; + cmd.ExecuteNonQuery(); + + otherId++; + } + } + catch (MySqlException e) + { Console.WriteLine(e); } + finally + { + conn.Dispose(); + } + } + + + } + } +}