public SniffFile(string fileName, DumpFormatType dumpFormat = DumpFormatType.Text, bool splitOutput = false, Tuple <int, int> number = null, SQLOutputFlags sqlOutput = SQLOutputFlags.None) { if (string.IsNullOrWhiteSpace(fileName)) { throw new ArgumentException("fileName cannot be null, empty or whitespace.", "fileName"); } _stats = new Statistics(); _packets = null; _fileName = fileName; _splitOutput = splitOutput; _dumpFormat = dumpFormat; _sqlOutput = sqlOutput; _outFileName = Path.ChangeExtension(fileName, null) + "_parsed.txt"; if (number == null) { _logPrefix = string.Format("[{0}]", Path.GetFileName(fileName)); } else { _logPrefix = string.Format("[{0}/{1} {2}]", number.Item1, number.Item2, Path.GetFileName(fileName)); } }
private static void DumpSQLs(string prefix, string fileName, Builder builder, SQLOutputFlags sqlOutput) { if (builder == null) return; var store = new SQLStore(fileName); if (sqlOutput.HasAnyFlag(SQLOutputFlags.GameObjectTemplate)) store.WriteData(builder.GameObjectTemplate()); if (sqlOutput.HasAnyFlag(SQLOutputFlags.GameObjectSpawns)) store.WriteData(builder.GameObjectSpawns()); if (sqlOutput.HasAnyFlag(SQLOutputFlags.QuestTemplate)) store.WriteData(builder.QuestTemplate()); if (sqlOutput.HasAnyFlag(SQLOutputFlags.QuestPOI)) store.WriteData(builder.QuestPOI()); if (sqlOutput.HasAnyFlag(SQLOutputFlags.CreatureTemplate)) store.WriteData(builder.NpcTemplate()); if (sqlOutput.HasAnyFlag(SQLOutputFlags.CreatureSpawns)) store.WriteData(builder.CreatureSpawns()); if (sqlOutput.HasAnyFlag(SQLOutputFlags.NpcTrainer)) store.WriteData(builder.NpcTrainer()); if (sqlOutput.HasAnyFlag(SQLOutputFlags.NpcVendor)) store.WriteData(builder.NpcVendor()); if (sqlOutput.HasAnyFlag(SQLOutputFlags.NpcText)) store.WriteData(builder.PageText()); if (sqlOutput.HasAnyFlag(SQLOutputFlags.PageText)) store.WriteData(builder.NpcText()); if (sqlOutput.HasAnyFlag(SQLOutputFlags.Gossip)) store.WriteData(builder.Gossip()); if (sqlOutput.HasAnyFlag(SQLOutputFlags.Loot)) store.WriteData(builder.Loot()); if (sqlOutput.HasAnyFlag(SQLOutputFlags.SniffData | SQLOutputFlags.SniffDataOpcodes)) store.WriteData(builder.SniffData()); if (sqlOutput.HasAnyFlag(SQLOutputFlags.StartInformation)) store.WriteData(builder.StartInformation()); if (sqlOutput.HasAnyFlag(SQLOutputFlags.ObjectNames)) store.WriteData(builder.ObjectNames()); if (sqlOutput.HasAnyFlag(SQLOutputFlags.CreatureEquip)) store.WriteData(builder.CreatureEquip()); Trace.WriteLine(string.Format("{0}: Saved file to '{1}'", prefix, fileName)); store.WriteToFile(); }
public SniffFile(string fileName, DumpFormatType dumpFormat = DumpFormatType.Text, Tuple<int, int> number = null, SQLOutputFlags sqlOutput = SQLOutputFlags.None) { if (string.IsNullOrWhiteSpace(fileName)) throw new ArgumentException("fileName cannot be null, empty or whitespace.", "fileName"); _stats = new Statistics(); _packets = null; _fileName = fileName; _dumpFormat = dumpFormat; _sqlOutput = sqlOutput; _outFileName = Path.ChangeExtension(fileName, null) + "_parsed.txt"; if (number == null) _logPrefix = string.Format("[{0}]", Path.GetFileName(fileName)); else _logPrefix = string.Format("[{0}/{1} {2}]", number.Item1, number.Item2, Path.GetFileName(fileName)); }
protected static bool ProcessFlags(string type, SQLOutputFlags flags) { switch (type) { case "Objects": return(flags.HasAnyFlag(SQLOutputFlags.CreatureSpawns) || flags.HasAnyFlag(SQLOutputFlags.GameObjectSpawns) || flags.HasAnyFlag(SQLOutputFlags.CreatureMovement) || flags.HasAnyFlag(SQLOutputFlags.CreatureEquip)); case "GameObjectTemplates": return(flags.HasAnyFlag(SQLOutputFlags.GameObjectTemplate)); case "ItemTemplates": return(false); //return flags.HasAnyFlag(SQLOutputFlags.ItemTemplate; case "QuestTemplates": case "QuestOffers": case "QuestRewards": return(flags.HasAnyFlag(SQLOutputFlags.QuestTemplate)); case "Gossips": return(flags.HasAnyFlag(SQLOutputFlags.Gossip)); case "Loots": return(flags.HasAnyFlag(SQLOutputFlags.Loot)); case "UnitTemplates": case "SpellsX": case "CreatureTexts": case "Emotes": case "Sounds": return(flags.HasAnyFlag(SQLOutputFlags.CreatureTemplate)); case "NpcTrainers": return(flags.HasAnyFlag(SQLOutputFlags.NpcTrainer)); case "NpcVendors": return(flags.HasAnyFlag(SQLOutputFlags.NpcVendor)); case "PageTexts": return(flags.HasAnyFlag(SQLOutputFlags.PageText)); case "NpcTexts": return(flags.HasAnyFlag(SQLOutputFlags.NpcText)); case "StartActions": case "StartSpells": case "StartPositions": return(flags.HasAnyFlag(SQLOutputFlags.StartInformation)); case "QuestPOIs": return(flags.HasAnyFlag(SQLOutputFlags.QuestPOI)); case "ObjectNames": return(flags.HasAnyFlag(SQLOutputFlags.ObjectNames)); case "SniffData": return(flags.HasAnyFlag(SQLOutputFlags.SniffData) || flags.HasAnyFlag(SQLOutputFlags.SniffDataOpcodes)); default: throw new ArgumentException("type is not assigned to any SQLOutput flag", "type"); } }
public static void DumpSQL(string prefix, string fileName, SQLOutputFlags sqlOutput) { var units = Storage.Objects.Where(obj => obj.Value.Type == ObjectType.Unit && obj.Key.GetHighType() != HighGuidType.Pet).ToDictionary(obj => obj.Key, obj => obj.Value as Unit); var gameObjects = Storage.Objects.Where(obj => obj.Value.Type == ObjectType.GameObject).ToDictionary(obj => obj.Key, obj => obj.Value as GameObject); //var pets = Storage.Objects.Where(obj => obj.Value.Type == ObjectType.Unit && obj.Key.GetHighType() == HighGuidType.Pet).ToDictionary(obj => obj.Key, obj => obj.Value as Unit); //var players = Storage.Objects.Where(obj => obj.Value.Type == ObjectType.Player).ToDictionary(obj => obj.Key, obj => obj.Value as Player); //var items = Storage.Objects.Where(obj => obj.Value.Type == ObjectType.Item).ToDictionary(obj => obj.Key, obj => obj.Value as Item); foreach (var unit in units) unit.Value.LoadValuesFromUpdateFields(); using (var store = new SQLStore(fileName)) { if (sqlOutput.HasAnyFlag(SQLOutputFlags.GameObjectTemplate)) store.WriteData(WDBTemplates.GameObject()); if (sqlOutput.HasAnyFlag(SQLOutputFlags.GameObjectSpawns)) store.WriteData(Spawns.GameObject(gameObjects)); if (sqlOutput.HasAnyFlag(SQLOutputFlags.QuestTemplate)) store.WriteData(WDBTemplates.Quest()); if (sqlOutput.HasAnyFlag(SQLOutputFlags.QuestPOI)) store.WriteData(QuestMisc.QuestPOI()); if (sqlOutput.HasAnyFlag(SQLOutputFlags.CreatureTemplate)) { store.WriteData(WDBTemplates.Npc()); store.WriteData(UnitMisc.NpcTemplateNonWDB(units)); //store.WriteData(UnitMisc.Addon(units)); store.WriteData(UnitMisc.ModelData(units)); store.WriteData(UnitMisc.SpellsX()); } if (sqlOutput.HasAnyFlag(SQLOutputFlags.CreatureSpawns)) store.WriteData(Spawns.Creature(units)); if (sqlOutput.HasAnyFlag(SQLOutputFlags.NpcTrainer)) store.WriteData(UnitMisc.NpcTrainer()); if (sqlOutput.HasAnyFlag(SQLOutputFlags.NpcVendor)) store.WriteData(UnitMisc.NpcVendor()); if (sqlOutput.HasAnyFlag(SQLOutputFlags.PageText)) store.WriteData(WDBTemplates.PageText()); if (sqlOutput.HasAnyFlag(SQLOutputFlags.NpcText)) store.WriteData(WDBTemplates.NpcText()); if (sqlOutput.HasAnyFlag(SQLOutputFlags.Gossip)) store.WriteData(UnitMisc.Gossip()); if (sqlOutput.HasAnyFlag(SQLOutputFlags.Loot)) store.WriteData(UnitMisc.Loot()); if (sqlOutput.HasAnyFlag(SQLOutputFlags.StartInformation)) store.WriteData(Miscellaneous.StartInformation()); if (sqlOutput.HasAnyFlag(SQLOutputFlags.CreatureEquip)) store.WriteData(UnitMisc.CreatureEquip(units)); if (sqlOutput.HasAnyFlag(SQLOutputFlags.CreatureMovement)) store.WriteData(UnitMisc.CreatureMovement(units)); Trace.WriteLine(store.WriteToFile() ? String.Format("{0}: Saved file to '{1}'", prefix, fileName) : "No SQL files created -- empty."); } }
public static void DumpSQL(string prefix, string fileName, SQLOutputFlags sqlOutput) { var units = Storage.Objects.Where(obj => obj.Value.Type == ObjectType.Unit && obj.Key.GetHighType() != HighGuidType.Pet).ToDictionary(obj => obj.Key, obj => obj.Value as Unit); var gameObjects = Storage.Objects.Where(obj => obj.Value.Type == ObjectType.GameObject).ToDictionary(obj => obj.Key, obj => obj.Value as GameObject); //var pets = Storage.Objects.Where(obj => obj.Value.Type == ObjectType.Unit && obj.Key.GetHighType() == HighGuidType.Pet).ToDictionary(obj => obj.Key, obj => obj.Value as Unit); //var players = Storage.Objects.Where(obj => obj.Value.Type == ObjectType.Player).ToDictionary(obj => obj.Key, obj => obj.Value as Player); //var items = Storage.Objects.Where(obj => obj.Value.Type == ObjectType.Item).ToDictionary(obj => obj.Key, obj => obj.Value as Item); foreach (var unit in units) { unit.Value.LoadValuesFromUpdateFields(); } using (var store = new SQLStore(fileName)) { if (sqlOutput.HasAnyFlag(SQLOutputFlags.GameObjectTemplate)) { store.WriteData(WDBTemplates.GameObject()); } if (sqlOutput.HasAnyFlag(SQLOutputFlags.GameObjectSpawns)) { store.WriteData(Spawns.GameObject(gameObjects)); } if (sqlOutput.HasAnyFlag(SQLOutputFlags.QuestTemplate)) { store.WriteData(WDBTemplates.Quest()); } if (sqlOutput.HasAnyFlag(SQLOutputFlags.QuestPOI)) { store.WriteData(QuestMisc.QuestPOI()); } if (sqlOutput.HasAnyFlag(SQLOutputFlags.CreatureTemplate)) { store.WriteData(WDBTemplates.Npc()); store.WriteData(UnitMisc.NpcTemplateNonWDB(units)); //store.WriteData(UnitMisc.Addon(units)); store.WriteData(UnitMisc.ModelData(units)); store.WriteData(UnitMisc.SpellsX()); } if (sqlOutput.HasAnyFlag(SQLOutputFlags.CreatureSpawns)) { store.WriteData(Spawns.Creature(units)); } if (sqlOutput.HasAnyFlag(SQLOutputFlags.NpcTrainer)) { store.WriteData(UnitMisc.NpcTrainer()); } if (sqlOutput.HasAnyFlag(SQLOutputFlags.NpcVendor)) { store.WriteData(UnitMisc.NpcVendor()); } if (sqlOutput.HasAnyFlag(SQLOutputFlags.PageText)) { store.WriteData(WDBTemplates.PageText()); } if (sqlOutput.HasAnyFlag(SQLOutputFlags.NpcText)) { store.WriteData(WDBTemplates.NpcText()); } if (sqlOutput.HasAnyFlag(SQLOutputFlags.Gossip)) { store.WriteData(UnitMisc.Gossip()); } if (sqlOutput.HasAnyFlag(SQLOutputFlags.Loot)) { store.WriteData(UnitMisc.Loot()); } if (sqlOutput.HasAnyFlag(SQLOutputFlags.StartInformation)) { store.WriteData(Miscellaneous.StartInformation()); } if (sqlOutput.HasAnyFlag(SQLOutputFlags.CreatureEquip)) { store.WriteData(UnitMisc.CreatureEquip(units)); } if (sqlOutput.HasAnyFlag(SQLOutputFlags.CreatureMovement)) { store.WriteData(UnitMisc.CreatureMovement(units)); } Trace.WriteLine(store.WriteToFile() ? String.Format("{0}: Saved file to '{1}'", prefix, fileName) : "No SQL files created -- empty."); } }