Esempio n. 1
0
        public static void DumpFactionTemplate(FactionTemplateEntry entry, IndentTextWriter writer)
        {
            writer.WriteLine("Id: " + entry.Id);
            writer.WriteLine("FactionId: " + entry.FactionId);
            writer.WriteLine("Flags: " + entry.Flags);
            /// <summary>
            /// The Faction-Group mask of this faction.
            /// </summary>
            writer.WriteLine("FactionGroup: " + entry.FactionGroup);
            /// <summary>
            /// Mask of Faction-Groups this faction is friendly towards
            /// </summary>
            writer.WriteLine("FriendGroup: " + entry.FriendGroup);
            /// <summary>
            /// Mask of Faction-Groups this faction is hostile towards
            /// </summary>
            writer.WriteLine("EnemyGroup: " + entry.EnemyGroup);

            writer.WriteLine("Explicit Enemies:");
            writer.IndentLevel++;
            for (var i = 0; i < entry.EnemyFactions.Length; i++)
            {
                writer.WriteLine(i + ": " + entry.EnemyFactions[i]);
            }
            writer.IndentLevel--;
            writer.WriteLine("Explicit Friends:");
            writer.IndentLevel++;
            for (var i = 0; i < entry.FriendlyFactions.Length; i++)
            {
                writer.WriteLine(i + ": " + entry.FriendlyFactions[i]);
            }
            writer.IndentLevel--;
            writer.WriteLine();
        }
Esempio n. 2
0
        public static void WriteVehicles()
        {
            Tools.StartRealm();
            NPCMgr.Initialize();
            NPCMgr.LoadNPCDefs();

            using (var writer = new IndentTextWriter(ToolConfig.OutputDir + "Vehicles.txt"))
            {
                foreach (var entry in NPCMgr.GetAllEntries())
                {
                    if (entry.IsVehicle)
                    {
                        writer.WriteLine(entry);
                    }
                }

                foreach (var entry in NPCMgr.GetAllEntries())
                {
                    if (entry.IsVehicle)
                    {
                        entry.Dump(writer);
                        writer.WriteLine();
                        writer.WriteLine(" ################################### ");
                        writer.WriteLine();
                    }
                }
            }
        }
Esempio n. 3
0
        public void Dump(IndentTextWriter writer)
        {
            var prefix = (Definition == null ? "UNDEFINED " : "");
            var length = Packet.Length - Packet.HeaderSize;

            writer.WriteLine(TimeStampcreator(Timestamp) + string.Format(prefix + Sender + " Packet #{0} ({1}), Length: {2} bytes",
                                                                         Packet.PacketId.RawId, Packet.PacketId, length));
            writer.IndentLevel++;
            if (Definition != null)
            {
                //Definition.Structure.Render(this, writer);
                m_parsedPacket.RenderTo(writer);
            }

            // display the remainder as hexadecimal byte-string
            var remainderLength = Packet.Length - Packet.Position;

            if (remainderLength > 0)
            {
                var byteStr = new List <string>();
                while (Packet.Position < Packet.Length)
                {
                    byteStr.Add(string.Format("{0:X2}", Packet.ReadByte()));
                }
                writer.WriteLine("Remainder (" + remainderLength + " bytes): " + byteStr.ToString(" "));
            }
            writer.IndentLevel--;
        }
Esempio n. 4
0
        public void Dump(string indent, IndentTextWriter writer)
        {
            writer.WriteLine(indent + "UpdateBlock: " + EntityId + " (FieldCount: " + UpdateCount + ")");

            writer.IndentLevel++;

            writer.WriteLine(indent + "Type: " + Type);
            if (m_movement != null)
            {
                writer.WriteLine();
                writer.WriteLine(indent + "Movement:");
                m_movement.Dump(indent + "\t", writer);
            }
            writer.WriteLine();

            if (EntityIds != null)
            {
                writer.WriteLine();
                writer.WriteLine(indent + "EntityIds:");
                foreach (var id in EntityIds)
                {
                    writer.WriteLine(indent + "\t" + id);
                }
            }

            if (Values != null)
            {
                writer.WriteLine(indent + "Fields:");
                var renderer = FieldRenderUtil.GetRenderer(EntityId.ObjectType);
                // use the exact if its available
                if (m_movement != null)
                {
                    renderer = FieldRenderUtil.GetRenderer(m_movement.ObjectTypeId);                     //
                }

                writer.IndentLevel++;
                uint size = 0;
                for (uint i = 0; i < SetIndices.Length; i++)
                {
                    var index = SetIndices[i];
                    size = renderer.Render(index, Values, writer);
                    while (size > 1 && SetIndices.Length > i + 1)
                    {
                        // check if we can skip the next indices
                        var next = SetIndices[i + 1];
                        if (next != index + 4)
                        {
                            break;
                        }

                        size--;
                        i++;
                    }
                }
                writer.IndentLevel--;
            }
            writer.WriteLine();

            writer.IndentLevel--;
        }
Esempio n. 5
0
        public static void WriteFactionTemplatesByFlag()
        {
            var templatesByFlag = new Dictionary<FactionTemplateFlags, List<FactionTemplateEntry>>();
            foreach (var faction in FactionMgr.ByTemplateId.Where(faction => faction != null))
            {
                foreach (FactionTemplateFlags member in Enum.GetValues(typeof(FactionTemplateFlags)))
                {
                    if (faction.Template.Flags.HasAnyFlag(member))
                    {
                        if (!templatesByFlag.ContainsKey(member))
                        {
                            templatesByFlag.Add(member, new List<FactionTemplateEntry>());
                            templatesByFlag[member].Add(faction.Template);
                        }
                        else
                            templatesByFlag[member].Add(faction.Template);
                    }
                }
            }

            using (var writer = new IndentTextWriter(DumpFile))
            {
                foreach (var flag in templatesByFlag.Keys)
                {
                    writer.WriteLine();
                    writer.WriteLine("##############################################");
                    writer.WriteLine(flag);
                    writer.WriteLine("##############################################");
                    writer.WriteLine();

                    foreach (var value in templatesByFlag[flag])
                        DumpFactionTemplate(value, writer);
                }
            }
        }
Esempio n. 6
0
        public override void Print(IndentTextWriter writer)
        {
            writer.WriteIndent();
            writer.WriteLine("Conditional");

            writer.WriteIndent();
            writer.WriteLine("-Expression");

            writer.Indent += 2;
            Condition.Print(writer);
            writer.Indent -= 2;

            writer.WriteIndent();
            writer.WriteLine("-True");

            writer.Indent += 2;
            IfTrue.Print(writer);
            writer.Indent -= 2;

            writer.WriteIndent();
            writer.WriteLine("-False");

            writer.Indent += 2;
            IfFalse.Print(writer);
            writer.Indent -= 2;
        }
Esempio n. 7
0
        public static void ParsePacket(ParsablePacketInfo info, IndentTextWriter writer)
        {
            PacketAnalyzer.Dump(info, writer);
            writer.WriteLine();

            ((IDisposable)info.Packet).Dispose();
        }
Esempio n. 8
0
 public override void Print(IndentTextWriter writer)
 {
     foreach (var statement in Statements)
     {
         statement.Print(writer);
     }
 }
Esempio n. 9
0
        public static void DumpFactionTemplate(FactionTemplateEntry entry, IndentTextWriter writer)
        {
            writer.WriteLine("Id: " + entry.Id);
            writer.WriteLine("FactionId: " + entry.FactionId);
            writer.WriteLine("Flags: " + entry.Flags);
            /// <summary>
            /// The Faction-Group mask of this faction.
            /// </summary>
            writer.WriteLine("FactionGroup: " + entry.FactionGroup);
            /// <summary>
            /// Mask of Faction-Groups this faction is friendly towards
            /// </summary>
            writer.WriteLine("FriendGroup: " + entry.FriendGroup);
            /// <summary>
            /// Mask of Faction-Groups this faction is hostile towards
            /// </summary>
            writer.WriteLine("EnemyGroup: " + entry.EnemyGroup);

            writer.WriteLine("Explicit Enemies:");
            writer.IndentLevel++;
            for (var i = 0; i < entry.EnemyFactions.Length; i++)
            {
                writer.WriteLine(i + ": " + entry.EnemyFactions[i]);
            }
            writer.IndentLevel--;
            writer.WriteLine("Explicit Friends:");
            writer.IndentLevel++;
            for (var i = 0; i < entry.FriendlyFactions.Length; i++)
            {
                writer.WriteLine(i + ": " + entry.FriendlyFactions[i]);
            }
            writer.IndentLevel--;
            writer.WriteLine();
        }
Esempio n. 10
0
		/// <summary>
		/// Renders the given log file to the given output.
		/// </summary>
		/// <param name="logFile">The log file.</param>
		/// <param name="output">A StreamWriter or Console.Out etc</param>
		public static void ConvertLog(string logFile, TextWriter output)
		{
			var writer = new IndentTextWriter(output);
			Extract(logFile, LogConverter.DefaultValidator, info => {
				LogConverter.ParsePacket(info, writer);
			});
		}
Esempio n. 11
0
		public static void ParsePacket(ParsablePacketInfo info, IndentTextWriter writer)
		{
			PacketAnalyzer.Dump(info, writer);
			writer.WriteLine();

			((IDisposable)info.Packet).Dispose();
		}
Esempio n. 12
0
        /// <summary>
        /// Renders the given log file to the given output.
        /// </summary>
        /// <param name="logFile">The log file.</param>
        /// <param name="output">A StreamWriter or Console.Out etc</param>
        public static void ConvertLog(string logFile, TextWriter output)
        {
            var writer = new IndentTextWriter(output);

            Extract(logFile, LogConverter.DefaultValidator, info => {
                LogConverter.ParsePacket(info, writer);
            });
        }
Esempio n. 13
0
		/// <summary>
		/// Opens a new StreamWriter to the given Path if not already opened.
		/// </summary>
		public void Open()
		{
			if (m_Writer != null)
			{
				Close();
			}
			m_Writer = new IndentTextWriter(m_path);
		}
Esempio n. 14
0
        public override void Print(IndentTextWriter writer)
        {
            writer.WriteIndent();
            writer.WriteLine("Prefix {0}", Operation);

            writer.Indent++;
            Right.Print(writer);
            writer.Indent--;
        }
Esempio n. 15
0
        public override void Print(IndentTextWriter writer)
        {
            writer.WriteIndent();
            writer.WriteLine("Yield");

            writer.Indent++;
            Value.Print(writer);
            writer.Indent--;
        }
Esempio n. 16
0
        public override void Print(IndentTextWriter writer)
        {
            writer.WriteIndent();
            writer.WriteLine("Field {0}", Name);

            writer.Indent++;
            Left.Print(writer);
            writer.Indent--;
        }
Esempio n. 17
0
 public static void Extract(string dir, string outFile)
 {
     using (writer = new IndentTextWriter(outFile))
     {
         GenericLogParser.ParseDir(SniffitztLogConverter.Extract,
                                   dir,
                                   ExtractVehicleIds);
     }
 }
Esempio n. 18
0
		public static void Extract(string dir, string outFile)
		{
			using (writer = new IndentTextWriter(outFile))
			{
				GenericLogParser.ParseDir(SniffitztLogConverter.Extract,
					dir,
					ExtractVehicleIds);
			}
		}
Esempio n. 19
0
        public override void Print(IndentTextWriter writer)
        {
            writer.WriteIndent();
            writer.WriteLine("Pipeline");

            writer.Indent++;
            Left.Print(writer);
            Right.Print(writer);
            writer.Indent--;
        }
Esempio n. 20
0
		public GOSerializer(LogParser parser, IndentTextWriter writer)
			: base(parser, new LogHandler(ValidateOpCode, HandlePacket))
		{
			// just make sure to have the XML-definition of the packet before using this Class
			if (!PacketAnalyzer.IsDefined(RealmServerOpCode.SMSG_GAMEOBJECT_QUERY_RESPONSE, PacketSender.Server))
			{
				throw new InvalidOperationException("SMSG_GAMEOBJECT_QUERY_RESPONSE is not defined.");
			}
			s_Writer = writer;
		}
Esempio n. 21
0
 public GOSerializer(LogParser parser, IndentTextWriter writer)
     : base(parser, new LogHandler(ValidateOpCode, HandlePacket))
 {
     // just make sure to have the XML-definition of the packet before using this Class
     if (!PacketAnalyzer.IsDefined(RealmServerOpCode.SMSG_GAMEOBJECT_QUERY_RESPONSE, PacketSender.Server))
     {
         throw new InvalidOperationException("SMSG_GAMEOBJECT_QUERY_RESPONSE is not defined.");
     }
     s_Writer = writer;
 }
Esempio n. 22
0
        public override void Print(IndentTextWriter writer)
        {
            var discardResult = Parent == null || Parent is BlockExpression;

            writer.WriteIndent();
            writer.WriteLine("Postfix {0}" + (discardResult ? " - Result not used" : ""), Operation);

            writer.Indent++;
            Left.Print(writer);
            writer.Indent--;
        }
Esempio n. 23
0
        public static void DumpQuest(IndentTextWriter writer, QuestTemplate quest)
        {
            writer.WriteLine("Quest: " + quest);
            writer.IndentLevel++;
            quest.Dump(writer);
            writer.IndentLevel--;

            writer.WriteLine();
            writer.WriteLine("##################################################################");
            writer.WriteLine();
        }
Esempio n. 24
0
        public static void DumpQuest(IndentTextWriter writer, QuestTemplate quest)
        {
            writer.WriteLine("Quest: " + quest);
            writer.IndentLevel++;
            quest.Dump(writer);
            writer.IndentLevel--;

            writer.WriteLine();
            writer.WriteLine("##################################################################");
            writer.WriteLine();
        }
Esempio n. 25
0
 public void Write(IndentTextWriter writer)
 {
     writer.WriteLine("Type: " + Type);
     writer.WriteLineNotDefault(RequiredItemId, "RequiredItemId: " + RequiredItemId);
     writer.WriteLineNotDefault(RequiredItem2Id, "RequiredItem2Id: " + RequiredItem2Id);
     writer.WriteLineNotDefault(RequiredHeroicKeyId, "RequiredHeroicKeyId: " + RequiredHeroicKeyId);
     writer.WriteLineNotDefault(RequiredHeroicKey2Id, "RequiredHeroicKey2Id: " + RequiredHeroicKey2Id);
     writer.WriteLineNotDefault(RequiredQuestId, "RequiredQuestId: " + RequiredQuestId);
     writer.WriteLineNotDefault(RequiredLevel, "RequiredLevel: " + RequiredLevel);
     writer.WriteLineNotDefault(RequiredHeroicKeyId, "RequiredHeroicKeyId: " + RequiredHeroicKeyId);
     writer.WriteLineNotDefault(RequiredHeroicKeyId, "RequiredHeroicKeyId: " + RequiredHeroicKeyId);
 }
Esempio n. 26
0
        public override void Print(IndentTextWriter writer)
        {
            writer.WriteIndent();
            writer.WriteLine("Array");

            writer.Indent++;
            foreach (var value in Values)
            {
                value.Print(writer);
            }
            writer.Indent--;
        }
Esempio n. 27
0
		public static void Extract(string dir, string outFile)
		{
			using (writer = new IndentTextWriter(outFile))
			{
				GenericLogParser.ParseDir(SniffitztLogConverter.Extract, dir,
										  new LogHandler(opcode => opcode == RealmServerOpCode.SMSG_INITIALIZE_FACTIONS, HandleInitFactions),
										  new LogHandler(opcode => opcode == RealmServerOpCode.SMSG_SET_FACTION_STANDING, UpdateReputations),
										  new LogHandler(opcode => opcode == RealmServerOpCode.SMSG_TRAINER_LIST, HandleTrainerList),
										  new LogHandler(HandleUpdates)
										  );
			}
		}
Esempio n. 28
0
        public override void Print(IndentTextWriter writer)
        {
            writer.WriteIndent();
            writer.WriteLine("Return");

            if (Value != null)
            {
                writer.Indent++;
                Value.Print(writer);
                writer.Indent--;
            }
        }
Esempio n. 29
0
        public override void Print(IndentTextWriter writer)
        {
            writer.WriteIndent();
            writer.WriteLine("List Comprehension");

            writer.WriteIndent();
            writer.WriteLine("-Body");

            writer.Indent += 2;
            Body.Print(writer);
            writer.Indent -= 2;
        }
Esempio n. 30
0
 public static void Extract(string dir, string outFile)
 {
     using (writer = new IndentTextWriter(outFile))
     {
         GenericLogParser.ParseDir(SniffitztLogConverter.Extract, dir,
                                   new LogHandler(opcode => opcode == RealmServerOpCode.SMSG_INITIALIZE_FACTIONS, HandleInitFactions),
                                   new LogHandler(opcode => opcode == RealmServerOpCode.SMSG_SET_FACTION_STANDING, UpdateReputations),
                                   new LogHandler(opcode => opcode == RealmServerOpCode.SMSG_TRAINER_LIST, HandleTrainerList),
                                   new LogHandler(HandleUpdates)
                                   );
     }
 }
Esempio n. 31
0
 public void Dump(string indent, IndentTextWriter writer)
 {
     writer.WriteLine(indent + PacketParser.TimeStampcreator(TimeStamp) + " Update Packet:");
     writer.IndentLevel++;
     foreach (var block in m_blocks)
     {
         block.Dump(indent, writer);
         block.Dispose();
         //writer.WriteLine(indent + "#########################################");
         //writer.WriteLine();
     }
     writer.IndentLevel--;
 }
Esempio n. 32
0
 /// <summary>
 /// Renders the given log file to the given output.
 /// </summary>
 /// <param name="file">The file from where to read the ksniffer-style logs</param>
 /// <param name="output">A StreamWriter or Console.Out etc</param>
 public static void ConvertLog(string logFile, TextWriter output)
 {
     // @"F:\coding\C#\WCell\Dumps\Dump_Spells.txt"
     var writer = new IndentTextWriter(output);
     FieldRenderUtil.IsOldEntity = false;
     var log = File.ReadAllLines(logFile);
     var packets = Extract(log);
     foreach (var packet in packets)
     {
         PacketAnalyzer.Render(packet, writer);
         writer.WriteLine();
         packet.Dispose();
     }
 }
Esempio n. 33
0
 /// <summary>
 /// Renders the given log file to the given output.
 /// </summary>
 /// <param name="output">A StreamWriter or Console.Out etc</param>
 public static void ConvertLog(string logFile, TextWriter output, bool singleLine)
 {
     var writer = new IndentTextWriter(output);
     try
     {
         var lines = File.ReadAllLines(logFile);
         Extract(lines, singleLine, info => LogConverter.ParsePacket(info, writer),
                 LogConverter.DefaultValidator);
     }
     catch (Exception e)
     {
         throw new Exception(string.Format("Failed to parse log-file \"{0}\"", logFile), e);
     }
 }
Esempio n. 34
0
        public void RenderTo(IndentTextWriter writer)
        {
            if (IsSimple)
            {
                var str = m_structure.Name + ": " + Value;
                if (m_structure.SegmentType != null)
                {
                    str += " (" + Utility.ChangeType(Value, m_structure.SegmentType, false) + ")";
                }
                writer.WriteLine(str);
            }
            else
            {
                var indented = m_structure != null && m_structure.Name != null && m_subSegments.Count > 0;
                if (indented)
                {
                    writer.IndentLevel++;
                    writer.WriteLine(m_structure.Name + ": ");
                }

                if (IsList)
                {
                    var i = 0;
                    foreach (var element in m_list)
                    {
                        // ReSharper disable PossibleNullReferenceException
                        writer.WriteLine(m_structure.Name + " #" + i++ + ": ");
                        // ReSharper restore PossibleNullReferenceException
                        writer.IndentLevel++;
                        foreach (var elementSegment in element.SubSegments.Values)
                        {
                            elementSegment.RenderTo(writer);
                        }
                        writer.IndentLevel--;
                    }
                }
                else
                {
                    foreach (var segment in m_subSegments.Values)
                    {
                        segment.RenderTo(writer);
                    }
                }

                if (indented)
                {
                    writer.IndentLevel--;
                }
            }
        }
Esempio n. 35
0
        /// <summary>
        /// Renders the given log file to the given output.
        /// </summary>
        /// <param name="output">A StreamWriter or Console.Out etc</param>
        public static void ConvertLog(string logFile, TextWriter output, bool singleLine)
        {
            var writer = new IndentTextWriter(output);

            try
            {
                var lines = File.ReadAllLines(logFile);
                Extract(lines, singleLine, info => LogConverter.ParsePacket(info, writer),
                        LogConverter.DefaultValidator);
            }
            catch (Exception e)
            {
                throw new Exception(string.Format("Failed to parse log-file \"{0}\"", logFile), e);
            }
        }
Esempio n. 36
0
        public override void Print(IndentTextWriter writer)
        {
            writer.WriteIndent();
            writer.WriteLine("Object");

            foreach (var value in Values)
            {
                writer.WriteIndent();
                writer.WriteLine("-" + value.Key);

                writer.Indent += 2;
                value.Value.Print(writer);
                writer.Indent -= 2;
            }
        }
Esempio n. 37
0
        /// <summary>
        /// Renders the given log file to the given output.
        /// </summary>
        /// <param name="file">The file from where to read the ksniffer-style logs</param>
        /// <param name="output">A StreamWriter or Console.Out etc</param>
        public static void ConvertLog(string logFile, TextWriter output)
        {
            // @"F:\coding\C#\WCell\Dumps\Dump_Spells.txt"
            var writer = new IndentTextWriter(output);

            FieldRenderUtil.IsOldEntity = false;
            var log     = File.ReadAllLines(logFile);
            var packets = Extract(log);

            foreach (var packet in packets)
            {
                PacketAnalyzer.Render(packet, writer);
                writer.WriteLine();
                packet.Dispose();
            }
        }
Esempio n. 38
0
        /// <summary>
        /// Renders a single WoW - Packet
        /// </summary>
        public static void Dump(ParsablePacketInfo info, IndentTextWriter writer)
        {
            var packet = info.Packet;
            if (packet.PacketId.IsUpdatePacket)
            {
                ParsedUpdatePacket.Dump(info.Timestamp, packet.ReadBytes(packet.Length - packet.HeaderSize), false, writer,
                    packet.PacketId.RawId == (uint)RealmServerOpCode.SMSG_COMPRESSED_UPDATE_OBJECT);
            }
            else
            {
                var parser = new PacketParser(info);
                parser.Parse();
                parser.Dump(writer);
            }

            writer.WriteLine();
        }
Esempio n. 39
0
        public static IndentTextWriter GetTextWriter(Account account)
        {
            IndentTextWriter writer;

            if (account == null)
            {
                writer = DefaultWriter;
            }
            else if (!m_packetWriters.TryGetValue(account.Name, out writer))
            {
                var file = Path.Combine(DumpDir.FullName, account.Name + ".txt");
                writer           = new IndentTextWriter(new StreamWriter(file));
                writer.AutoFlush = true;
                m_packetWriters.Add(account.Name, writer);
            }
            return(writer);
        }
Esempio n. 40
0
        public static void WriteQuests(string fileName,
                                       //Func<QuestTemplate, Dictionary<string, QuestTemplate>, bool> filter,
                                       Func <TextWriter, QuestTemplate, bool> extraOuput)
        {
            using (var writer = new IndentTextWriter(new StreamWriter(ToolConfig.OutputDir + fileName + ".txt", false)))
            {
                var quests = new List <QuestTemplate>(10000);
                foreach (var quest in QuestMgr.Templates)
                {
                    if (quest == null)
                    {
                        continue;
                    }

                    //if (filter == null || filter(quest, quests))
                    //{
                    //    quests[quest.Title] = quest;
                    //}
                    quests.Add(quest);
                }


                writer.WriteLine("Found {0} Quests:", quests.Count);
                writer.WriteLine();

                if (extraOuput != null)
                {
                    foreach (var quest in quests)
                    {
                        writer.WriteLine("{0} (Id: {1})", quest.DefaultTitle, quest.Id);

                        extraOuput(writer, quest);
                    }
                }

                writer.WriteLine();
                writer.WriteLine("##########################################");
                writer.WriteLine();

                foreach (var spell in quests)
                {
                    DumpQuest(writer, spell);
                }
            }
        }
Esempio n. 41
0
        public uint Render(uint index, byte[] values, IndentTextWriter writer)
        {
            var fieldNum = index / 4;
            var field = Fields.Get(fieldNum);
            if (field != null)
            {
                string strVal;
                var len = field.Renderer(field, values, out strVal);
                writer.WriteLine(field.Name + ": " + strVal);
                return len;
            }

            if (values[index] != 0)
            {
                writer.WriteLine("{0}: {1}", fieldNum, values[index]);
            }
            return 1;
        }
Esempio n. 42
0
        /// <summary>
        /// Renders a single WoW - Packet
        /// </summary>
        public static void Dump(ParsablePacketInfo info, IndentTextWriter writer)
        {
            var packet = info.Packet;

            if (packet.PacketId.IsUpdatePacket)
            {
                ParsedUpdatePacket.Dump(info.Timestamp, packet.ReadBytes(packet.Length - packet.HeaderSize), false, writer,
                                        packet.PacketId.RawId == (uint)RealmServerOpCode.SMSG_COMPRESSED_UPDATE_OBJECT);
            }
            else
            {
                var parser = new PacketParser(info);
                parser.Parse();
                parser.Dump(writer);
            }

            writer.WriteLine();
        }
Esempio n. 43
0
        public static void DumpToFile()
        {
            Init();
            using (var writer = new IndentTextWriter(DumpFile))
            {
                foreach (var at in AreaTriggerMgr.AreaTriggers)
                {
                    if (at != null)
                    {
                        at.Write(writer);

                        writer.WriteLine();
                        writer.WriteLine("##############################################");
                        writer.WriteLine();
                    }
                }
            }
        }
Esempio n. 44
0
		public static void DumpToFile()
		{
			Init();
			using (var writer = new IndentTextWriter(DumpFile))
			{
				foreach (var at in AreaTriggerMgr.AreaTriggers)
				{
					if (at != null)
					{
						at.Write(writer);

						writer.WriteLine();
						writer.WriteLine("##############################################");
						writer.WriteLine();
					}
				}
			}
		}
Esempio n. 45
0
		public static void WriteQuests(string fileName,
									   //Func<QuestTemplate, Dictionary<string, QuestTemplate>, bool> filter,
									   Func<TextWriter, QuestTemplate, bool> extraOuput)
		{
			using (var writer = new IndentTextWriter(new StreamWriter(ToolConfig.OutputDir + fileName + ".txt", false)))
			{
				var quests = new List<QuestTemplate>(10000);
				foreach (var quest in QuestMgr.Templates)
				{
					if (quest == null)
						continue;

					//if (filter == null || filter(quest, quests))
					//{
					//    quests[quest.Title] = quest;
					//}
					quests.Add(quest);
				}


				writer.WriteLine("Found {0} Quests:", quests.Count);
				writer.WriteLine();

				if (extraOuput != null)
				{
					foreach (var quest in quests)
					{
						writer.WriteLine("{0} (Id: {1})", quest.DefaultTitle, quest.Id);

						extraOuput(writer, quest);
					}
				}

				writer.WriteLine();
				writer.WriteLine("##########################################");
				writer.WriteLine();

				foreach (var spell in quests)
				{
					DumpQuest(writer, spell);
				}
			}
		}
Esempio n. 46
0
		public static void DumpPacket(RealmPacketIn packet, bool copy, IndentTextWriter writer)
		{
			try
			{
				if (copy)
				{
					using (PinnedRealmPacketIn pkt = packet.Copy())
					{
						PacketAnalyzer.Render(pkt, writer);
					}
				}
				else
				{
					PacketAnalyzer.Render(packet, writer);
				}
			}
			catch (Exception e)
			{
				log.ErrorException("Unable to parse/render packet " + packet, e);

				writer.IndentLevel = 0;
				writer.Write(packet.ToHexDump());
			}
		}
Esempio n. 47
0
		public void RenderTo(IndentTextWriter writer)
		{
			if (IsSimple)
			{
				var str = m_structure.Name + ": " + Value;
				if (m_structure.SegmentType != null)
				{
					str += " (" + Utility.ChangeType(Value, m_structure.SegmentType, false) + ")";
				}
				writer.WriteLine(str);
			}
			else
			{
				var indented = m_structure != null && m_structure.Name != null && m_subSegments.Count > 0;
				if (indented)
				{
					writer.IndentLevel++;
					writer.WriteLine(m_structure.Name + ": ");
				}

				if (IsList)
				{
					var i = 0;
					foreach (var element in m_list)
					{
						// ReSharper disable PossibleNullReferenceException
						writer.WriteLine(m_structure.Name + " #" + i++ + ": ");
						// ReSharper restore PossibleNullReferenceException
						writer.IndentLevel++;
						foreach (var elementSegment in element.SubSegments.Values)
						{
							elementSegment.RenderTo(writer);
						}
						writer.IndentLevel--;
					}
				}
				else
				{
					foreach (var segment in m_subSegments.Values)
					{
						segment.RenderTo(writer);
					}
				}

				if (indented)
				{
					writer.IndentLevel--;
				}
			}
		}
Esempio n. 48
0
		public void Write(IndentTextWriter writer)
		{
			writer.WriteLine("Type: " + Type);
			writer.WriteLineNotDefault(RequiredItemId, "RequiredItemId: " + RequiredItemId);
			writer.WriteLineNotDefault(RequiredItem2Id, "RequiredItem2Id: " + RequiredItem2Id);
			writer.WriteLineNotDefault(RequiredHeroicKeyId, "RequiredHeroicKeyId: " + RequiredHeroicKeyId);
			writer.WriteLineNotDefault(RequiredHeroicKey2Id, "RequiredHeroicKey2Id: " + RequiredHeroicKey2Id);
			writer.WriteLineNotDefault(RequiredQuestId, "RequiredQuestId: " + RequiredQuestId);
			writer.WriteLineNotDefault(RequiredLevel, "RequiredLevel: " + RequiredLevel);
			writer.WriteLineNotDefault(RequiredHeroicKeyId, "RequiredHeroicKeyId: " + RequiredHeroicKeyId);
			writer.WriteLineNotDefault(RequiredHeroicKeyId, "RequiredHeroicKeyId: " + RequiredHeroicKeyId);
		}
Esempio n. 49
0
		public static IndentTextWriter GetTextWriter(Account account)
		{
			IndentTextWriter writer;
			if (account == null)
			{
				writer = DefaultWriter;
			}
			else if (!m_packetWriters.TryGetValue(account.Name, out writer))
			{
				var file = Path.Combine(DumpDir.FullName, account.Name + ".txt");
				writer = new IndentTextWriter(new StreamWriter(file));
				writer.AutoFlush = true;
				m_packetWriters.Add(account.Name, writer);
			}
			return writer;
		}
Esempio n. 50
0
		public static void DumpPacket(RealmPacketIn packet, PacketSender sender, bool copy, IndentTextWriter writer)
		{
			lock (writer)
			{
				try
				{
					if (copy)
					{
						using (var pkt = packet.Copy())
						{
							PacketAnalyzer.Dump(new ParsablePacketInfo(pkt, sender, DateTime.Now), writer);
						}
					}
					else
					{
						PacketAnalyzer.Dump(new ParsablePacketInfo(packet, sender, DateTime.Now), writer);
					}
				}
				catch (Exception e)
				{
					LogUtil.ErrorException(e, "Unable to parse/render packet " + packet);

					writer.IndentLevel = 0;
					writer.Write(packet.ToHexDump());
				}
			}
		}
Esempio n. 51
0
		public static IndentTextWriter GetTextWriter(RealmAccount account)
		{
			IndentTextWriter writer;
			if (account == null)
			{
				writer = DefaultWriter;
			}
			else if (!m_packetWriters.TryGetValue(account.Name, out writer))
			{
				lock (m_packetWriters)
				{
					// check if the writer was added after the lock was released
					if (!m_packetWriters.TryGetValue(account.Name, out writer))
					{
						try
						{
							var file = Path.Combine(DumpDir.FullName, account.Name + ".txt");
							writer = new IndentTextWriter(new StreamWriter(file))
							         	{
							         		AutoFlush = true
							         	};
							m_packetWriters.Add(account.Name, writer);
						}
						catch (Exception e)
						{
							LogUtil.WarnException("Writing to Default writer - TextWriter for Account {0} could not be created: {1}", account, e);
							return DefaultWriter;
						}
					}
				}
			}
			return writer;
		}
Esempio n. 52
0
		private void WriteFaction(IndentTextWriter writer)
		{
			writer.WriteLineNotNull(HordeFaction, "HordeFaction: " + HordeFaction);
			writer.WriteLineNotNull(AllianceFaction, "AllianceFaction: " + AllianceFaction);
		}
Esempio n. 53
0
		public void Dump(IndentTextWriter writer)
		{
			writer.WriteLine("{3}{0} (Id: {1}, {2})", DefaultName, Id, NPCId, Rank != 0 ? Rank + " " : "");
			if (!string.IsNullOrEmpty(DefaultTitle))
			{
				writer.WriteLine("Title: " + DefaultTitle);
			}
			if (Type != 0)
			{
				writer.WriteLine("Type: " + Type);
			}
			if (EntryFlags != 0)
			{
				writer.WriteLine("EntryFlags: " + EntryFlags);
			}
			if (Family != null)
			{
				writer.WriteLine("Family: " + Family);
			}
			if (IsLeader)
			{
				writer.WriteLine("Leader");
			}

			writer.WriteLine("DisplayIds: " + DisplayIds.ToString(", "));
			if (TrainerEntry != null)
			{
				writer.WriteLine("Trainer "
					//+ "for {0} {1}",
					//             TrainerEntry.RequiredRace != 0 ? TrainerEntry.RequiredRace.ToString() : "",
					//             TrainerEntry.RequiredClass != 0 ? TrainerEntry.RequiredClass.ToString() : ""
								 );
			}

			WriteFaction(writer);
			writer.WriteLineNotDefault(IsBoss, "Boss");
			writer.WriteLine("Level: {0} - {1}", MinLevel, MaxLevel);
			writer.WriteLine("Health: {0} - {1}", MinHealth, MaxHealth);

			writer.WriteLineNotDefault(MinMana, "Mana: {0} - {1}", MinMana, MaxMana);
			writer.WriteLineNotDefault(NPCFlags, "Flags: " + NPCFlags);
			writer.WriteLineNotDefault(DynamicFlags, "DynamicFlags: " + DynamicFlags);
			writer.WriteLineNotDefault(UnitFlags, "UnitFlags: " + UnitFlags);
			writer.WriteLineNotDefault(ExtraFlags, "ExtraFlags: " + string.Format("0x{0:X}", ExtraFlags));
			writer.WriteLineNotDefault(AttackTime + OffhandAttackTime, "AttackTime: " + AttackTime, "Offhand: " + OffhandAttackTime);
			writer.WriteLineNotDefault(RangedAttackTime, "RangedAttackTime: " + RangedAttackTime);
			writer.WriteLineNotDefault(AttackPower, "AttackPower: " + AttackPower);
			writer.WriteLineNotDefault(RangedAttackPower, "RangedAttackPower: " + RangedAttackPower);
			//writer.WriteLineNotDefault(OffhandAttackPower, "OffhandAttackPower: " + OffhandAttackPower);
			writer.WriteLineNotDefault(MinDamage + MaxDamage, "Damage: {0} - {1}", MinDamage, MaxDamage);
			writer.WriteLineNotDefault(RangedMinDamage + RangedMaxDamage, "RangedDamage: {0} - {1}", RangedMinDamage,
									   RangedMaxDamage);
			writer.WriteLineNotDefault(OffhandMinDamage + OffhandMaxDamage, "OffhandDamage: {0} - {1}", OffhandMinDamage,
									   OffhandMaxDamage);
			var resistances = new List<string>(8);
			for (var i = 0; i < Resistances.Length; i++)
			{
				var res = Resistances[i];
				if (res > 0)
				{
					resistances.Add(string.Format("{0}: {1}", (DamageSchool)i, res));
				}
			}
			if (Scale != 1)
			{
				writer.WriteLine("Scale: " + Scale);
			}

			var cr = GetRandomModel().CombatReach;
			var br = GetRandomModel().BoundingRadius;
			writer.WriteLine("CombatReach: " + cr);
			writer.WriteLine("BoundingRadius: " + br);
			writer.WriteLineNotDefault(resistances.Count, "Resistances: " + resistances.ToString(", "));
			writer.WriteLineNotDefault(MoneyDrop, "MoneyDrop: " + MoneyDrop);
			writer.WriteLineNotDefault(InvisibilityType, "Invisibility: " + InvisibilityType);
			writer.WriteLineNotDefault(MovementType, "MovementType: " + MovementType);
			writer.WriteLineNotDefault(WalkSpeed + RunSpeed + FlySpeed, "Speeds - Walking: {0}, Running: {1}, Flying: {2} ",
									   WalkSpeed, RunSpeed, FlySpeed);
			writer.WriteLineNotDefault(LootId + SkinLootId + PickPocketLootId, "{0}{1}{2}",
									   LootId != 0 ? "Lootable " : "",
									   SkinLootId != 0 ? "Skinnable " : "",
									   PickPocketLootId != 0 ? "Pickpocketable" : "");
			if (AddonData != null)
			{
				writer.WriteLineNotDefault(AddonData.MountModelId, "Mount: " + AddonData.MountModelId);
				writer.WriteLineNotDefault(AddonData.Auras.Count, "Auras: " + AddonData.Auras.ToString(", "));
			}
			var spells = Spells;
			if (spells != null && spells.Count > 0)
			{
				writer.WriteLine("Spells: " + Spells.ToString(", "));
			}
			if (Equipment != null)
			{
				writer.WriteLine("Equipment: {0}", Equipment.ItemIds.Where(id => id != 0).ToString(", "));
			}

			if (DifficultyOverrideEntryIds != null && DifficultyOverrideEntryIds.Any(id => id != 0))
			{
				var parts = new List<string>(4);
				for (var i = 0u; i < 3; i++)
				{
					var id = DifficultyOverrideEntryIds[i];
					if (id != 0)
					{
						var entry = NPCMgr.GetEntry(id);
						MapTemplate map;
						MapDifficultyEntry diff;
						if (entry != null && (map = GetMapTemplate()) != null && (diff = map.GetDifficulty(i)) != null)
						{
							parts.Add(string.Format("{0} ({1}) = " + id + " (" + (uint)id + ")", diff.IsHeroic ? "Heroic" : "Normal", diff.MaxPlayerCount));
						}
						else
						{
							parts.Add("(unknown difficulty) = " + id + " (" + (uint)id + ")");
						}
					}
				}
				writer.WriteLine("DifficultyOverrides: {0}", parts.ToString("; "));
			}

			if (KillCreditIds != null && KillCreditIds.Any(id => id != 0))
			{
				var parts = new List<string>(2);
				for (var i = 0u; i < UnitConstants.MaxKillCredits; i++)
				{
					var id = KillCreditIds[i];
					if (id != 0)
					{
						var entry = NPCMgr.GetEntry(id);
						if (entry != null)
						{
							parts.Add(id + " (" + (uint)id + ")");
						}
					}
				}
				writer.WriteLine("KillCredits: {0}", parts.ToString("; "));
			}


			//if (inclFaction)	
			//{
			//    writer.WriteLineNotDefault(DefaultFactionId, "Faction: " + DefaultFactionId);
			//}
		}
Esempio n. 54
0
        public void Dump(string indent, IndentTextWriter writer)
        {
            writer.WriteLine(indent + "UpdateBlock: " + EntityId + " (FieldCount: " + UpdateCount + ")");

            writer.IndentLevel++;

            writer.WriteLine(indent + "Type: " + Type);
            if (m_movement != null)
            {
                writer.WriteLine();
                writer.WriteLine(indent + "Movement:");
                m_movement.Dump(indent + "\t", writer);
            }
            writer.WriteLine();

            if (EntityIds != null)
            {
                writer.WriteLine();
                writer.WriteLine(indent + "EntityIds:");
                foreach (var id in EntityIds)
                {
                    writer.WriteLine(indent + "\t" + id);
                }
            }

            if (Values != null)
            {
                writer.WriteLine(indent + "Fields:");
                var renderer = FieldRenderUtil.GetRenderer(EntityId.ObjectType);
                // use the exact if its available
                if (m_movement != null)
                {
                    renderer = FieldRenderUtil.GetRenderer(m_movement.ObjectTypeId); //
                }

                writer.IndentLevel++;
                uint size = 0;
                for (uint i = 0; i < SetIndices.Length; i++)
                {
                    var index = SetIndices[i];
                    size = renderer.Render(index, Values, writer);
                    while (size > 1 && SetIndices.Length > i + 1)
                    {
                        // check if we can skip the next indices
                        var next = SetIndices[i + 1];
                        if (next != index + 4)
                        {
                            break;
                        }

                        size--;
                        i++;
                    }
                }
                writer.IndentLevel--;
            }
            writer.WriteLine();

            writer.IndentLevel--;
        }
Esempio n. 55
0
        /*public static void Dump(byte[] packetContent, bool isSingleBlock, IndentTextWriter writer)
        {
            Dump(packetContent, isSingleBlock, writer, false);
        }

        public static void Dump(PacketIn packet, IndentTextWriter writer)
        {
            Dump(GetBytes(packet), false, writer, false);
        }

        public static void Dump(byte[] packetContent, bool isSingleBlock, IndentTextWriter writer, bool isCompressed)
        {
            Dump(DateTime.Now, packetContent, isSingleBlock, writer, isCompressed);
        }*/
        public static void Dump(DateTime timeStamp, byte[] packetContent, bool isSingleBlock, IndentTextWriter writer, bool isCompressed)
        {
            if (isCompressed)
            {
                packetContent = UpdateFieldsUtil.Decompress(packetContent);
            }
            var packet = new ParsedUpdatePacket(packetContent, isSingleBlock);
            writer.WriteLine("");
            packet.Dump("", writer);
        }
Esempio n. 56
0
 public void Dump(IndentTextWriter writer)
 {
     Dump("", writer);
 }
Esempio n. 57
0
		public void Write(IndentTextWriter writer)
		{
			writer.WriteLine(this);
			writer.IndentLevel++;
			writer.WriteLine("MapId: " + MapId);
			writer.WriteLine("Position: " + Position);
			writer.WriteLineNotDefault(Radius, "Radius: " + Radius);
			writer.WriteLineNotDefault(BoxLength + BoxWidth + BoxHeight + BoxYaw, 
				"Box Length: " + BoxLength +
				", Width: " + BoxWidth +
				", Height: " + BoxHeight + 
				", Yaw: " + BoxYaw);
			if (Template != null)
			{
				Template.Write(writer);	
			}
			writer.IndentLevel--;
		}
Esempio n. 58
0
		public void Dump(IndentTextWriter writer)
		{
			var prefix = (Definition == null ? "UNDEFINED " : "");
			var length = Packet.Length - Packet.HeaderSize;

			writer.WriteLine(TimeStampcreator(Timestamp) + string.Format(prefix + Sender + " Packet #{0} ({1}), Length: {2} bytes",
				Packet.PacketId.RawId, Packet.PacketId, length));
			writer.IndentLevel++;
			if (Definition != null)
			{
				//Definition.Structure.Render(this, writer);
				m_parsedPacket.RenderTo(writer);
			}

			// display the remainder as hexadecimal byte-string
			var remainderLength = Packet.Length - Packet.Position;
			if (remainderLength > 0)
			{
				var byteStr = new List<string>();
				while (Packet.Position < Packet.Length)
				{
					byteStr.Add(string.Format("{0:X2}", Packet.ReadByte()));
				}
				writer.WriteLine("Remainder (" + remainderLength + " bytes): " + byteStr.ToString(" "));
			}
			writer.IndentLevel--;
		}
Esempio n. 59
0
		public void Dump(IndentTextWriter writer)
		{
			writer.WriteLine("{3}{0} (Id: {1}, {2})", DefaultName, Id, NPCId, Rank != 0 ? Rank + " " : "");
			if (!string.IsNullOrEmpty(DefaultTitle))
			{
				writer.WriteLine("Title: " + DefaultTitle);
			}
			if (Type != 0)
			{
				writer.WriteLine("Type: " + Type);
			}
			if (EntryFlags != 0)
			{
				writer.WriteLine("EntryFlags: " + EntryFlags);
			}
			if (Family != null)
			{
				writer.WriteLine("Family: " + Family);
			}
			if (IsLeader)
			{
				writer.WriteLine("Leader");
			}

			writer.WriteLine("DisplayIds: " + DisplayIds.ToString(", "));
			if (TrainerEntry != null)
			{
				writer.WriteLine("Trainer "
					//+ "for {0} {1}",
					//             TrainerEntry.RequiredRace != 0 ? TrainerEntry.RequiredRace.ToString() : "",
					//             TrainerEntry.RequiredClass != 0 ? TrainerEntry.RequiredClass.ToString() : ""
								 );
			}

			WriteFaction(writer);
			writer.WriteLineNotDefault(IsBoss, "Boss");
			writer.WriteLine("Level: {0} - {1}", MinLevel, MaxLevel);
			writer.WriteLine("Health: {0} - {1}", MinHealth, MaxHealth);

			writer.WriteLineNotDefault(MinMana, "Mana: {0} - {1}", MinMana, MaxMana);
			writer.WriteLineNotDefault(NPCFlags, "Flags: " + NPCFlags);
			writer.WriteLineNotDefault(DynamicFlags, "DynamicFlags: " + DynamicFlags);
			writer.WriteLineNotDefault(UnitFlags, "UnitFlags: " + UnitFlags);
			writer.WriteLineNotDefault(ExtraFlags, "ExtraFlags: " + ExtraFlags.ToString("0x:X"));
			writer.WriteLineNotDefault(AttackTime + OffhandAttackTime, "AttackTime: " + AttackTime, "Offhand: " + OffhandAttackTime);
			writer.WriteLineNotDefault(RangedAttackTime, "RangedAttackTime: " + RangedAttackTime);
			writer.WriteLineNotDefault(AttackPower, "AttackPower: " + AttackPower);
			writer.WriteLineNotDefault(RangedAttackPower, "RangedAttackPower: " + RangedAttackPower);
			writer.WriteLineNotDefault(OffhandAttackPower, "OffhandAttackPower: " + OffhandAttackPower);
			writer.WriteLineNotDefault(MinDamage + MaxDamage, "Damage: {0} - {1}", MinDamage, MaxDamage);
			writer.WriteLineNotDefault(RangedMinDamage + RangedMaxDamage, "RangedDamage: {0} - {1}", RangedMinDamage,
									   RangedMaxDamage);
			writer.WriteLineNotDefault(OffhandMinDamage + OffhandMaxDamage, "OffhandDamage: {0} - {1}", OffhandMinDamage,
									   OffhandMaxDamage);
			var resistances = new List<string>(8);
			for (var i = 0; i < Resistances.Length; i++)
			{
				var res = Resistances[i];
				if (res > 0)
				{
					resistances.Add(string.Format("{0}: {1}", (DamageSchool)i, res));
				}
			}
			if (Scale != 1)
			{
				writer.WriteLine("Scale: " + Scale);
			}

			var cr = GetRandomModel().CombatReach;
			var br = GetRandomModel().BoundingRadius;
			writer.WriteLine("CombatReach: " + cr);
			writer.WriteLine("BoundingRadius: " + br);
			writer.WriteLineNotDefault(resistances.Count, "Resistances: " + resistances.ToString(", "));
			writer.WriteLineNotDefault(MoneyDrop, "MoneyDrop: " + MoneyDrop);
			writer.WriteLineNotDefault(InvisibilityType, "Invisibility: " + InvisibilityType);
			writer.WriteLineNotDefault(MovementType, "MovementType: " + MovementType);
			writer.WriteLineNotDefault(WalkSpeed + RunSpeed + FlySpeed, "Speeds - Walking: {0}, Running: {1}, Flying: {2} ",
									   WalkSpeed, RunSpeed, FlySpeed);
			writer.WriteLineNotDefault(LootId + SkinLootId + PickPocketLootId, "{0}{1}{2}",
									   LootId != 0 ? "Lootable " : "",
									   SkinLootId != 0 ? "Skinnable " : "",
									   PickPocketLootId != 0 ? "Pickpocketable" : "");
			writer.WriteLineNotDefault(Auras.Count, "Auras: " + Auras.ToString(", "));
			var spells = Spells;
			if (spells != null && spells.Count > 0)
			{
				writer.WriteLine("Spells: " + Spells.ToString(", "));
			}
			writer.WriteLineNotDefault(ExtraA9Flags, "ExtraA9Flags: " + ExtraA9Flags);
			//if (inclFaction)	
			//{
			//    writer.WriteLineNotDefault(DefaultFactionId, "Faction: " + DefaultFactionId);
			//}
		}
Esempio n. 60
0
 public void Dump(string indent, IndentTextWriter writer)
 {
     writer.WriteLine(indent + PacketParser.TimeStampcreator(TimeStamp) + " Update Packet:");
     writer.IndentLevel++;
     foreach (var block in m_blocks)
     {
         block.Dump(indent, writer);
         block.Dispose();
         //writer.WriteLine(indent + "#########################################");
         //writer.WriteLine();
     }
     writer.IndentLevel--;
 }