Ejemplo n.º 1
0
        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));
            }
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        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");
            }
        }
Ejemplo n.º 5
0
        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.");
            }
        }
Ejemplo n.º 6
0
        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.");
            }
        }