Skip to content
Browse files

Merge with master tc branch.

  • Loading branch information...
1 parent e1fda93 commit 7edd3c62f0acd7f90423afd825cc6213fa9f201c @QAston QAston committed Jun 27, 2012
Showing with 1,986 additions and 1,070 deletions.
  1. +11 −89 SettingsUI/MainForm.Designer.cs
  2. +15 −9 SettingsUI/MainForm.cs
  3. +0 −64 WowPacketParser.Tests/Misc/ConcurrentMultiDictionaryTest.cs
  4. +10 −0 WowPacketParser.Tests/Misc/ExtensionsTest.cs
  5. +1 −1 WowPacketParser.Tests/Misc/LfgEntryTest.cs
  6. +0 −1 WowPacketParser.Tests/WowPacketParser.Tests.csproj
  7. +7 −0 WowPacketParser/App.config
  8. +3 −3 WowPacketParser/Enums/ContactResult.cs
  9. +23 −3 WowPacketParser/Enums/Opcode.cs
  10. +27 −4 WowPacketParser/Enums/PetModeFlags.cs
  11. +14 −4 WowPacketParser/Enums/RealmSplitState.cs
  12. +3 −3 WowPacketParser/Enums/SplineFlag.cs
  13. +15 −0 WowPacketParser/Enums/TargetIcon.cs
  14. +2 −0 WowPacketParser/Enums/UnitFlags.cs
  15. +4 −4 WowPacketParser/Enums/VehicleFlags.cs
  16. +1 −2 WowPacketParser/Enums/Version/V3_3_5a_12340/Opcodes.cs
  17. +22 −30 WowPacketParser/Enums/Version/V4_0_6_13596/Opcodes.cs
  18. +0 −1 WowPacketParser/Enums/Version/V4_2_0_14480/Opcodes.cs
  19. +13 −0 WowPacketParser/Enums/Version/V4_2_2_14545/Opcodes.cs
  20. +4 −2 WowPacketParser/Enums/Version/V4_3_2_15211/Opcodes.cs
  21. +351 −1 WowPacketParser/Enums/Version/V4_3_4_15595/Opcodes.cs
  22. +61 −50 WowPacketParser/Loading/BinaryPacketReader.cs
  23. +19 −9 WowPacketParser/Loading/SniffFile.cs
  24. +2 −2 WowPacketParser/Misc/ClientVersion.cs
  25. +0 −34 WowPacketParser/Misc/ConcurrentMultiDictionary.cs
  26. +2 −0 WowPacketParser/Misc/MovementInfo.cs
  27. +12 −2 WowPacketParser/Misc/Settings.cs
  28. +124 −0 WowPacketParser/Parsing/Handler.cs.orig
  29. +2 −0 WowPacketParser/Parsing/ParserAttribute.cs
  30. +1 −2 WowPacketParser/Parsing/Parsers/AccountDataHandler.cs
  31. +89 −7 WowPacketParser/Parsing/Parsers/AchievementHandler.cs
  32. +2 −2 WowPacketParser/Parsing/Parsers/AuctionHouseHandler.cs
  33. +42 −34 WowPacketParser/Parsing/Parsers/BattlegroundHandler.cs
  34. +18 −19 WowPacketParser/Parsing/Parsers/CalendarHandler.cs
  35. +2 −0 WowPacketParser/Parsing/Parsers/ChannelHandler.cs
  36. +122 −153 WowPacketParser/Parsing/Parsers/CharacterHandler.cs
  37. +50 −8 WowPacketParser/Parsing/Parsers/ChatHandler.cs
  38. +3 −4 WowPacketParser/Parsing/Parsers/ContactHandler.cs
  39. +2 −2 WowPacketParser/Parsing/Parsers/GameObjectHandler.cs
  40. +66 −48 WowPacketParser/Parsing/Parsers/GroupHandler.cs
  41. +86 −20 WowPacketParser/Parsing/Parsers/GuildHandler.cs
  42. +16 −9 WowPacketParser/Parsing/Parsers/InstanceHandler.cs
  43. +2 −2 WowPacketParser/Parsing/Parsers/ItemHandler.cs
  44. +3 −2 WowPacketParser/Parsing/Parsers/LootHandler.cs
  45. +1 −1 WowPacketParser/Parsing/Parsers/MailHandler.cs
  46. +30 −11 WowPacketParser/Parsing/Parsers/MiscellaneousHandler.cs
  47. +242 −23 WowPacketParser/Parsing/Parsers/MovementHandler.cs
  48. +1 −1 WowPacketParser/Parsing/Parsers/NpcHandler.cs
  49. +18 −13 WowPacketParser/Parsing/Parsers/PetHandler.cs
  50. +51 −41 WowPacketParser/Parsing/Parsers/QuestHandler.cs
  51. +2 −3 WowPacketParser/Parsing/Parsers/ReputationHandler.cs
  52. +11 −12 WowPacketParser/Parsing/Parsers/SessionHandler.cs
  53. +39 −5 WowPacketParser/Parsing/Parsers/SpellHandler.cs
  54. +9 −1 WowPacketParser/Parsing/Parsers/TalentHandler.cs
  55. +1 −0 WowPacketParser/Parsing/Parsers/TaxiHandler.cs
  56. +37 −7 WowPacketParser/Parsing/Parsers/TicketHandler.cs
  57. +32 −14 WowPacketParser/Parsing/Parsers/UpdateHandler.cs
  58. +5 −1 WowPacketParser/Processing/RawFileOutput.cs
  59. +0 −90 WowPacketParser/Processing/RawFileWriters/SplitRawOutput.cs
  60. +3 −1 WowPacketParser/Processing/SQLFileOutput.cs
  61. +27 −17 WowPacketParser/Processing/SplitRawFileOutput.cs
  62. +21 −2 WowPacketParser/Processing/TextFileOutput.cs
  63. +0 −1 WowPacketParser/Program.cs
  64. +31 −29 WowPacketParser/SQL/Builder.cs
  65. +23 −0 WowPacketParser/SQL/Builders/QuestMisc.cs
  66. +3 −0 WowPacketParser/SQL/Builders/Spawns.cs
  67. +3 −119 WowPacketParser/SQL/Builders/WDBTemplates.cs
  68. +4 −5 WowPacketParser/SQL/QueryBuilder.cs
  69. +23 −22 WowPacketParser/SQL/SQLDatabase.cs
  70. +9 −2 WowPacketParser/SQL/SQLFile.cs
  71. +2 −3 WowPacketParser/SQL/SQLUtil.cs
  72. +18 −0 WowPacketParser/Store/Objects/QuestMisc.cs
  73. +68 −4 WowPacketParser/Store/Objects/QuestTemplate.cs
  74. +4 −0 WowPacketParser/Store/Storage.cs
  75. +13 −10 WowPacketParser/Store/StoreDictionaries.cs
  76. +2 −2 WowPacketParser/WowPacketParser.csproj
  77. +1 −0 compile_win.bat
View
100 SettingsUI/MainForm.Designer.cs
@@ -49,11 +49,12 @@ private void InitializeComponent()
this.CloseButton = new System.Windows.Forms.Button();
this.connectionControl = new System.Windows.Forms.TabControl();
this.dbTabPage = new System.Windows.Forms.TabPage();
+ this.databaseWTextBox = new System.Windows.Forms.TextBox();
this.charSetComboBox = new System.Windows.Forms.ComboBox();
this.databaseTextBox = new System.Windows.Forms.TextBox();
this.passwordTextBox = new System.Windows.Forms.TextBox();
this.usernameTextBox = new System.Windows.Forms.TextBox();
- this.portNumericUpDown = new System.Windows.Forms.NumericUpDown();
+ this.portNumericUpDown = new System.Windows.Forms.TextBox();
this.serverTextBox = new System.Windows.Forms.TextBox();
this.characterSetLabel = new System.Windows.Forms.Label();
this.databaseLabel = new System.Windows.Forms.Label();
@@ -72,11 +73,6 @@ private void InitializeComponent()
this.label4 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.sshServerLabel = new System.Windows.Forms.Label();
- this.threadsReadLabel = new System.Windows.Forms.Label();
- this.threadsReadNumericUpDown = new System.Windows.Forms.NumericUpDown();
- this.threadsPanel = new System.Windows.Forms.Panel();
- this.threadsParseNumericUpDown = new System.Windows.Forms.NumericUpDown();
- this.threadsParseLabel = new System.Windows.Forms.Label();
this.dumpFormatComboBox = new System.Windows.Forms.ComboBox();
this.dumpFormatLabel = new System.Windows.Forms.Label();
this.panel1 = new System.Windows.Forms.Panel();
@@ -115,21 +111,16 @@ private void InitializeComponent()
this.parsingLogCheckBox = new System.Windows.Forms.CheckBox();
this.statsComboBox = new System.Windows.Forms.ComboBox();
this.statsLabel = new System.Windows.Forms.Label();
- this.databaseWTextBox = new System.Windows.Forms.TextBox();
filtersGroupBox = new System.Windows.Forms.GroupBox();
filtersGroupBox.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.packetNumUpDown)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.maxPacketNumUpDown)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.minPacketNumUpDown)).BeginInit();
this.connectionControl.SuspendLayout();
this.dbTabPage.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.portNumericUpDown)).BeginInit();
this.sshTabPage.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.sshLocalPortNumericUpDown)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.sshPortNumericUpDown)).BeginInit();
- ((System.ComponentModel.ISupportInitialize)(this.threadsReadNumericUpDown)).BeginInit();
- this.threadsPanel.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.threadsParseNumericUpDown)).BeginInit();
this.panel1.SuspendLayout();
this.clientBuildPanel.SuspendLayout();
this.sqlOutputGroupBox.SuspendLayout();
@@ -346,6 +337,13 @@ private void InitializeComponent()
this.dbTabPage.Text = "MySQL";
this.dbTabPage.UseVisualStyleBackColor = true;
//
+ // databaseWTextBox
+ //
+ this.databaseWTextBox.Location = new System.Drawing.Point(130, 112);
+ this.databaseWTextBox.Name = "databaseWTextBox";
+ this.databaseWTextBox.Size = new System.Drawing.Size(58, 20);
+ this.databaseWTextBox.TabIndex = 6;
+ //
// charSetComboBox
//
this.charSetComboBox.Items.AddRange(new object[] {
@@ -382,13 +380,8 @@ private void InitializeComponent()
// portNumericUpDown
//
this.portNumericUpDown.Location = new System.Drawing.Point(67, 33);
- this.portNumericUpDown.Maximum = new decimal(new int[] {
- 65535,
- 0,
- 0,
- 0});
this.portNumericUpDown.Name = "portNumericUpDown";
- this.portNumericUpDown.Size = new System.Drawing.Size(120, 20);
+ this.portNumericUpDown.Size = new System.Drawing.Size(100, 20);
this.portNumericUpDown.TabIndex = 1;
//
// serverTextBox
@@ -564,59 +557,6 @@ private void InitializeComponent()
this.sshServerLabel.TabIndex = 0;
this.sshServerLabel.Text = "Server:";
//
- // threadsReadLabel
- //
- this.threadsReadLabel.AutoSize = true;
- this.threadsReadLabel.Location = new System.Drawing.Point(3, 5);
- this.threadsReadLabel.Name = "threadsReadLabel";
- this.threadsReadLabel.Size = new System.Drawing.Size(78, 13);
- this.threadsReadLabel.TabIndex = 4;
- this.threadsReadLabel.Text = "Threads.Read:";
- //
- // threadsReadNumericUpDown
- //
- this.threadsReadNumericUpDown.Location = new System.Drawing.Point(85, 3);
- this.threadsReadNumericUpDown.Maximum = new decimal(new int[] {
- 10,
- 0,
- 0,
- 0});
- this.threadsReadNumericUpDown.Name = "threadsReadNumericUpDown";
- this.threadsReadNumericUpDown.Size = new System.Drawing.Size(48, 20);
- this.threadsReadNumericUpDown.TabIndex = 5;
- //
- // threadsPanel
- //
- this.threadsPanel.Controls.Add(this.threadsParseNumericUpDown);
- this.threadsPanel.Controls.Add(this.threadsParseLabel);
- this.threadsPanel.Controls.Add(this.threadsReadLabel);
- this.threadsPanel.Controls.Add(this.threadsReadNumericUpDown);
- this.threadsPanel.Location = new System.Drawing.Point(12, 12);
- this.threadsPanel.Name = "threadsPanel";
- this.threadsPanel.Size = new System.Drawing.Size(227, 28);
- this.threadsPanel.TabIndex = 6;
- //
- // threadsParseNumericUpDown
- //
- this.threadsParseNumericUpDown.Location = new System.Drawing.Point(175, 3);
- this.threadsParseNumericUpDown.Maximum = new decimal(new int[] {
- 10,
- 0,
- 0,
- 0});
- this.threadsParseNumericUpDown.Name = "threadsParseNumericUpDown";
- this.threadsParseNumericUpDown.Size = new System.Drawing.Size(48, 20);
- this.threadsParseNumericUpDown.TabIndex = 7;
- //
- // threadsParseLabel
- //
- this.threadsParseLabel.AutoSize = true;
- this.threadsParseLabel.Location = new System.Drawing.Point(138, 5);
- this.threadsParseLabel.Name = "threadsParseLabel";
- this.threadsParseLabel.Size = new System.Drawing.Size(37, 13);
- this.threadsParseLabel.TabIndex = 6;
- this.threadsParseLabel.Text = "Parse:";
- //
// dumpFormatComboBox
//
this.dumpFormatComboBox.FormattingEnabled = true;
@@ -1103,13 +1043,6 @@ private void InitializeComponent()
this.statsLabel.TabIndex = 22;
this.statsLabel.Text = "Stats:";
//
- // databaseWTextBox
- //
- this.databaseWTextBox.Location = new System.Drawing.Point(130, 112);
- this.databaseWTextBox.Name = "databaseWTextBox";
- this.databaseWTextBox.Size = new System.Drawing.Size(58, 20);
- this.databaseWTextBox.TabIndex = 6;
- //
// MainForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@@ -1128,7 +1061,6 @@ private void InitializeComponent()
this.Controls.Add(this.showPromptCheckBox);
this.Controls.Add(this.clientBuildPanel);
this.Controls.Add(this.panel1);
- this.Controls.Add(this.threadsPanel);
this.Controls.Add(this.connectionControl);
this.Controls.Add(this.CloseButton);
this.Controls.Add(this.SaveButton);
@@ -1145,15 +1077,10 @@ private void InitializeComponent()
this.connectionControl.ResumeLayout(false);
this.dbTabPage.ResumeLayout(false);
this.dbTabPage.PerformLayout();
- ((System.ComponentModel.ISupportInitialize)(this.portNumericUpDown)).EndInit();
this.sshTabPage.ResumeLayout(false);
this.sshTabPage.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.sshLocalPortNumericUpDown)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.sshPortNumericUpDown)).EndInit();
- ((System.ComponentModel.ISupportInitialize)(this.threadsReadNumericUpDown)).EndInit();
- this.threadsPanel.ResumeLayout(false);
- this.threadsPanel.PerformLayout();
- ((System.ComponentModel.ISupportInitialize)(this.threadsParseNumericUpDown)).EndInit();
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.clientBuildPanel.ResumeLayout(false);
@@ -1180,7 +1107,7 @@ private void InitializeComponent()
private System.Windows.Forms.Label usernameLabel;
private System.Windows.Forms.Label portLabel;
private System.Windows.Forms.Label serverLabel;
- private System.Windows.Forms.NumericUpDown portNumericUpDown;
+ private System.Windows.Forms.TextBox portNumericUpDown;
private System.Windows.Forms.TextBox serverTextBox;
private System.Windows.Forms.TextBox passwordTextBox;
private System.Windows.Forms.TextBox usernameTextBox;
@@ -1196,9 +1123,6 @@ private void InitializeComponent()
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.Label sshServerLabel;
- private System.Windows.Forms.Label threadsReadLabel;
- private System.Windows.Forms.NumericUpDown threadsReadNumericUpDown;
- private System.Windows.Forms.Panel threadsPanel;
private System.Windows.Forms.ComboBox dumpFormatComboBox;
private System.Windows.Forms.Label dumpFormatLabel;
private System.Windows.Forms.Panel panel1;
@@ -1236,8 +1160,6 @@ private void InitializeComponent()
private System.Windows.Forms.Label minPacketNumLabel;
private System.Windows.Forms.Label numPacketLabel;
private System.Windows.Forms.Label areasLabel;
- private System.Windows.Forms.NumericUpDown threadsParseNumericUpDown;
- private System.Windows.Forms.Label threadsParseLabel;
private System.Windows.Forms.CheckBox ceCheckBox;
private System.Windows.Forms.CheckBox onCheckBox;
private System.Windows.Forms.CheckBox logErrorCheckBox;
View
24 SettingsUI/MainForm.cs
@@ -87,9 +87,7 @@ private void Form1Load(object sender, EventArgs e)
{packetNumUpDown, new Tuple<string, dynamic>("FilterPacketsNum", 0)},
{minPacketNumUpDown, new Tuple<string, dynamic>("FilterPacketNumLow", 0)},
{maxPacketNumUpDown, new Tuple<string, dynamic>("FilterPacketNumHigh", 0)},
- {clientBuildComboBox, new Tuple<string, dynamic>("ClientBuild", 0)},
- {threadsReadNumericUpDown, new Tuple<string, dynamic>("Threads.Read", 0)},
- {threadsParseNumericUpDown, new Tuple<string, dynamic>("Threads.Parse", 0)},
+ {clientBuildComboBox, new Tuple<string, dynamic>("ClientBuild", string.Empty)},
{sqlOutputMaskLabel, new Tuple<string, dynamic>("SQLOutput", 0)},
{showPromptCheckBox, new Tuple<string, dynamic>("ShowEndPrompt", true)},
{logErrorCheckBox, new Tuple<string, dynamic>("LogErrors", false)},
@@ -106,7 +104,7 @@ private void Form1Load(object sender, EventArgs e)
{sshLocalPortNumericUpDown, new Tuple<string, dynamic>("SSHLocalPort", 3307)},
{dbEnabledCheckBox, new Tuple<string, dynamic>("DBEnabled", false)},
{serverTextBox, new Tuple<string, dynamic>("Server", "localhost")},
- {portNumericUpDown, new Tuple<string, dynamic>("Port", 3306)},
+ {portNumericUpDown, new Tuple<string, dynamic>("Port", "3306")},
{usernameTextBox, new Tuple<string, dynamic>("Username", "root")},
{passwordTextBox, new Tuple<string, dynamic>("Password", string.Empty)},
{databaseTextBox, new Tuple<string, dynamic>("WPPDatabase", "WPP")},
@@ -134,12 +132,20 @@ private void LoadSettings()
{
foreach (var element in _defaultSettings)
{
- var val = _configuration.GetSetting(element.Value.Item1, element.Value.Item2);
+ try
+ {
- if (element.Key is CheckBox) // special case for checkboxes, changing "Text" is not correct
- ((CheckBox) element.Key).Checked = Convert.ToBoolean(val);
- else
- element.Key.Text = val.ToString();
+ var val = _configuration.GetSetting(element.Value.Item1, element.Value.Item2);
+
+ if (element.Key is CheckBox) // special case for checkboxes, changing "Text" is not correct
+ ((CheckBox)element.Key).Checked = Convert.ToBoolean(val);
+ else
+ element.Key.Text = val.ToString();
+ }
+ catch
+ {
+ MessageBox.Show(string.Format("Setting: {0}, default: {1}", element.Value.Item1, element.Value.Item2), "Failed to get setting", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
}
}
View
64 WowPacketParser.Tests/Misc/ConcurrentMultiDictionaryTest.cs
@@ -1,64 +0,0 @@
-using NUnit.Framework;
-using WowPacketParser.Misc;
-using System.Collections.Generic;
-
-namespace WowPacketParser.Tests.Misc
-{
- [TestFixture]
- public class ConcurrentMultiDictionaryTest
- {
- private ConcurrentMultiDictionary<string, int> _dictionary;
-
- [SetUp]
- public void Initialize()
- {
- _dictionary = new ConcurrentMultiDictionary<string, int>();
- _dictionary.TryAdd("Foo", 42);
- _dictionary.TryAdd("Foo", 100);
- _dictionary.TryAdd("Bar", 1);
- }
-
- [TearDown]
- public void Cleanup()
- {
- _dictionary = null;
- }
-
- [Test]
- public void TestContainsValue()
- {
- Assert.IsTrue(_dictionary.ContainsValue("Foo", 42));
- Assert.IsTrue(_dictionary.ContainsValue("Bar", 1));
- Assert.IsTrue(_dictionary.ContainsValue("Foo", 100));
-
- Assert.IsFalse(_dictionary.ContainsValue("Baz", -1));
- Assert.IsFalse(_dictionary.ContainsValue("Bar", 0));
- }
-
- [Test]
- public void TestGetValues()
- {
- var listExFoo = new List<int> { 42, 100 };
- var listExBar = new List<int> { 1 };
- var listExBaz = new List<int>();
-
- var listFoo = _dictionary.GetValues("Foo");
- var listBar = _dictionary.GetValues("Bar");
- var listBaz = _dictionary.GetValues("Baz");
-
- CollectionAssert.AreEqual(listExFoo, listFoo);
- CollectionAssert.AreEqual(listExBar, listBar);
- CollectionAssert.AreEqual(listExBaz, listBaz);
-
- CollectionAssert.AreNotEqual(listExBar, listFoo);
- }
-
- [Test]
- public void TestTryAdd()
- {
- Assert.IsTrue(_dictionary.TryAdd("Baz", 84));
- Assert.IsTrue(_dictionary.ContainsValue("Baz", 84));
- Assert.IsTrue(_dictionary.ContainsKey("Baz"));
- }
- }
-}
View
10 WowPacketParser.Tests/Misc/ExtensionsTest.cs
@@ -46,6 +46,16 @@ public void TestMatchesFilters()
Assert.IsTrue("bar".MatchesFilters(list));
Assert.IsFalse("baz".MatchesFilters(list));
+
+ var list2 = new List<string> { " Foo", " Bar ", "FooBar " };
+ for (var i = 0; i < list2.Count; i++)
+ list2[i] = list2[i].Trim();
+
+
+ Assert.IsTrue("bar".MatchesFilters(list2));
+ Assert.IsTrue("Foo".MatchesFilters(list2));
+ Assert.IsTrue("FooBaz".MatchesFilters(list2)); // matches Foo
+ Assert.IsFalse("baz".MatchesFilters(list2));
}
[Test]
View
2 WowPacketParser.Tests/Misc/LfgEntryTest.cs
@@ -15,7 +15,7 @@ public void TestConstructor()
Assert.IsNotNull(lfg);
Assert.AreEqual(1, lfg.Full);
}
-
+
[Test]
public void TestLfgType()
{
View
1 WowPacketParser.Tests/WowPacketParser.Tests.csproj
@@ -41,7 +41,6 @@
<ItemGroup>
<Compile Include="Misc\BiDictionaryTest.cs" />
<Compile Include="Misc\ClientVersionTest.cs" />
- <Compile Include="Misc\ConcurrentMultiDictionaryTest.cs" />
<Compile Include="Misc\StatisticsTest.cs" />
<Compile Include="Misc\UtilitiesTest.cs" />
<Compile Include="Misc\Vector2Test.cs" />
View
7 WowPacketParser/App.config
@@ -146,6 +146,13 @@
Default: "false" (No enum errors log)
-->
<add key="LogErrors" value="false"/>
+
+ <!--
+ Option: LogPacketErrors
+ Description: Log packet headers that were skipped or have packet errors to <snifffile>_errors.txt
+ Default: "false" (No file created)
+ -->
+ <add key="LogPacketErrors" value="false"/>
<!--
Option: DebugReads
View
6 WowPacketParser/Enums/ContactResult.cs
@@ -27,8 +27,8 @@ public enum ContactResult
MuteAdded = 22,
MuteRemoved = 23,
MuteNameAmbiguous = 24,
- Unknown1 = 25,
- Unknown2 = 26,
- Unknown3 = 27
+ Unknown1 = 25, // BNet friend related
+ Unknown2 = 26, // BNet friend related
+ Unknown3 = 27 // BNet friend related
}
}
View
26 WowPacketParser/Enums/Opcode.cs
@@ -180,7 +180,6 @@ public enum Opcode
CMSG_COMPLETE_CINEMATIC,
CMSG_COMPLETE_MOVIE,
CMSG_CONTACT_LIST,
- CMSG_CONTROLLER_EJECT_PASSENGER,
CMSG_COOLDOWN_CHEAT,
CMSG_CORPSE_MAP_POSITION_QUERY,
CMSG_CREATEGAMEOBJECT,
@@ -215,6 +214,7 @@ public enum Opcode
CMSG_DUEL_ACCEPTED,
CMSG_DUEL_CANCELLED,
CMSG_DUMP_OBJECTS,
+ CMSG_DUNGEON_FINDER_GET_SYSTEM_INFO,
CMSG_EJECT_PASSENGER,
CMSG_EMOTE,
CMSG_ENABLE_DAMAGE_LOG,
@@ -316,11 +316,11 @@ public enum Opcode
CMSG_GUILD_BANK_BUY_TAB,
CMSG_GUILD_BANK_DEPOSIT_MONEY,
CMSG_GUILD_BANKER_ACTIVATE,
- CMSG_GUILD_BANK_NOTE,
CMSG_GUILD_BANK_QUERY_TAB,
CMSG_GUILD_BANK_SWAP_ITEMS,
CMSG_GUILD_BANK_UPDATE_TAB,
CMSG_GUILD_BANK_WITHDRAW_MONEY,
+ CMSG_GUILD_BANK_REM_MONEY_WITHDRAW_QUERY,
CMSG_GUILD_CHANGE_NAME_REQUEST,
CMSG_GUILD_CREATE,
CMSG_GUILD_DECLINE,
@@ -340,9 +340,11 @@ public enum Opcode
CMSG_GUILD_QUERY,
CMSG_GUILD_QUERY_XP,
CMSG_GUILD_RANK,
+ CMSG_GUILD_RANKS,
CMSG_GUILD_REMOVE,
CMSG_GUILD_REPLACE_GUILD_MASTER,
CMSG_GUILD_ROSTER,
+ CMSG_GUILD_SET_ACHIEVEMENT_TRACKING, // Cata only
CMSG_GUILD_SET_NOTE,
CMSG_GUILD_SET_OFFICER_NOTE,
CMSG_GUILD_SET_PUBLIC_NOTE,
@@ -543,6 +545,8 @@ public enum Opcode
CMSG_REPOP_REQUEST,
CMSG_REPORT_PVP_AFK,
CMSG_REQUEST_ACCOUNT_DATA,
+ CMSG_REQUEST_CATEGORY_COOLDOWNS, // Cata only
+ CMSG_REQUEST_CEMETERY_LIST, // Cata only
CMSG_REQUEST_HOTFIX,
CMSG_REQUEST_PARTY_MEMBER_STATS,
CMSG_REQUEST_PET_INFO,
@@ -689,6 +693,7 @@ public enum Opcode
CMSG_UNLEARN_SPELL,
CMSG_UNLEARN_TALENTS,
CMSG_UNLOCK_VOID_STORAGE,
+ CMSG_UNREGISTER_ALL_ADDON_PREFIXES,
CMSG_UNSTABLE_PET,
CMSG_UNUSED2,
CMSG_UNUSED5,
@@ -698,6 +703,7 @@ public enum Opcode
CMSG_UPDATE_PROJECTILE_POSITION,
CMSG_USE_ITEM,
CMSG_USE_SKILL_CHEAT,
+ CMSG_VIOLENCE_LEVEL,
CMSG_VOICE_SESSION_ENABLE,
CMSG_VOICE_SET_TALKER_MUTED_REQUEST,
CMSG_VOID_STORAGE_TRANSFER,
@@ -738,15 +744,21 @@ public enum Opcode
MSG_INSPECT_HONOR_STATS,
MSG_LIST_STABLED_PETS,
MSG_MINIMAP_PING,
+ MSG_MOVE_ENABLE_TRANSITION_BETWEEN_SWIM_AND_FLY,
MSG_MOVE_FALL_LAND,
MSG_MOVE_FEATHER_FALL,
+ MSG_MOVE_FORCE_FLIGHT_SPEED_CHANGE_ACK,
+ MSG_MOVE_FORCE_RUN_SPEED_CHANGE_ACK,
MSG_MOVE_GRAVITY_CHNG,
MSG_MOVE_HEARTBEAT,
MSG_MOVE_HOVER,
MSG_MOVE_JUMP,
MSG_MOVE_KNOCK_BACK,
+ MSG_MOVE_REQUEST_STATUS,
MSG_MOVE_ROOT,
MSG_MOVE_SET_ALL_SPEED_CHEAT,
+ MSG_MOVE_SET_CAN_FLY_ACK,
+ MSG_MOVE_SET_COLLISION_HEIGHT_ACK,
MSG_MOVE_SET_COLLISION_HGT,
MSG_MOVE_SET_FACING,
MSG_MOVE_SET_FLIGHT_BACK_SPEED,
@@ -771,6 +783,9 @@ public enum Opcode
MSG_MOVE_SET_WALK_MODE,
MSG_MOVE_SET_WALK_SPEED,
MSG_MOVE_SET_WALK_SPEED_CHEAT,
+ MSG_MOVE_SKIP_TIME,
+ MSG_MOVE_SPLINE_DONE,
+ MSG_MOVE_SPLINE_SET_RUN_SPEED,
MSG_MOVE_START_ASCEND,
MSG_MOVE_START_BACKWARD,
MSG_MOVE_START_DESCEND,
@@ -802,6 +817,7 @@ public enum Opcode
MSG_MOVE_UNROOT,
MSG_MOVE_UPDATE_CAN_FLY,
MSG_MOVE_UPDATE_CAN_TRANSITION_BETWEEN_SWIM_AND_FLY,
+ MSG_MOVE_UPDATE_MOUSE,
MSG_MOVE_WATER_WALK,
MSG_MOVE_WORLDPORT_ACK,
MSG_NOTIFY_PARTY_SQUELCH,
@@ -824,7 +840,6 @@ public enum Opcode
MSG_TALENT_WIPE_CONFIRM,
MSG_VERIFY_CONNECTIVITY,
MSG_VIEW_PHASE_SHIFT,
- NUM_MSG_TYPES,
OBSOLETE_DROP_ITEM,
SMSG_ACCOUNT_DATA_TIMES,
SMSG_ACCOUNT_INFO_RESPONSE,
@@ -837,6 +852,7 @@ public enum Opcode
SMSG_AFK_MONITOR_INFO_RESPONSE,
SMSG_AI_REACTION,
SMSG_ALL_ACHIEVEMENT_DATA,
+ SMSG_ALL_GUILD_ACHIEVEMENTS,
SMSG_AREA_SPIRIT_HEALER_TIME,
SMSG_AREA_TRIGGER_MESSAGE,
SMSG_AREA_TRIGGER_MOVEMENT_UPDATE,
@@ -1092,6 +1108,7 @@ public enum Opcode
SMSG_GROUP_JOINED_BATTLEGROUND,
SMSG_GROUP_LIST,
SMSG_GROUP_SET_LEADER,
+ SMSG_GROUP_SET_ROLE,
SMSG_GROUP_UNINVITE,
SMSG_GUILDFINDER_SEARCH_RESULT,
SMSG_GUILD_ACHIEVEMENT_DATA,
@@ -1182,6 +1199,7 @@ public enum Opcode
SMSG_LFG_UPDATE_STATUS,
SMSG_LFG_UPDATE_STATUS_NONE,
SMSG_LIST_INVENTORY,
+ SMSG_LOAD_CUF_PROFILES, // Cata only
SMSG_LOGIN_SETTIMESPEED,
SMSG_LOGIN_VERIFY_WORLD,
SMSG_LOGOUT_CANCEL_ACK,
@@ -1204,6 +1222,7 @@ public enum Opcode
SMSG_LOOT_START_ROLL,
SMSG_LOTTERY_QUERY_RESULT_OBSOLETE,
SMSG_LOTTERY_RESULT_OBSOLETE,
+ SMSG_MAIL_COMMAND_RESULT,
SMSG_MAIL_LIST_RESULT,
SMSG_MAP_OBJ_EVENTS,
SMSG_MEETINGSTONE_COMPLETE,
@@ -1301,6 +1320,7 @@ public enum Opcode
SMSG_PLAY_TIME_WARNING,
SMSG_PONG,
SMSG_POWER_UPDATE,
+ SMSG_PVP_LOG_DATA,
SMSG_PRE_RESURRECT,
SMSG_PRINT_NOTIFICATION,
SMSG_PROCRESIST,
View
31 WowPacketParser/Enums/PetModeFlags.cs
@@ -5,9 +5,32 @@ namespace WowPacketParser.Enums
[Flags]
public enum PetModeFlags
{
- Unknown1 = 0x0000001,
- Unknown2 = 0x0000002,
- Unknown100 = 0x0000100,
- DisableActions = 0x8000000
+ Unknown1 = 0x0010000,
+ Unknown2 = 0x0020000,
+ Unknown3 = 0x0040000,
+ Unknown4 = 0x0080000,
+ Unknown5 = 0x0100000,
+ Unknown6 = 0x0200000,
+ Unknown7 = 0x0400000,
+ Unknown8 = 0x0800000,
+ Unknown9 = 0x1000000,
+ Unknown10 = 0x2000000,
+ Unknown11 = 0x4000000,
+ DisableActions = 0x8000000,
+ }
+
+ public enum ReactState
+ {
+ Passive = 0,
+ Defensive = 1,
+ Aggressive = 2,
+ }
+
+ public enum CommandState
+ {
+ Stay = 0,
+ Follow = 1,
+ Attack = 2,
+ Abandon = 3,
}
}
View
18 WowPacketParser/Enums/RealmSplitState.cs
@@ -1,9 +1,19 @@
namespace WowPacketParser.Enums
{
- public enum RealmSplitState
+ // From GlueParent.lua
+ public enum ClientSplitState
{
- Normal = 0,
- Split = 1,
- Pending = 2
+ Uninitialized = -1,
+ NoChoice = 0,
+ Realm1 = 1,
+ Realm2 = 2
+ }
+
+ public enum PendingSplitState
+ {
+ Uninitialized = -1,
+ NoServerSplit = 0,
+ ServerSplitChoice = 1,
+ ServerSplitNoChoice = 2
}
}
View
6 WowPacketParser/Enums/SplineFlag.cs
@@ -29,11 +29,11 @@ public enum SplineFlag : uint
EnterCicle = 0x00100000,
AnimationTier = 0x00200000,
Frozen = 0x00400000,
- Unknown5 = 0x00800000,
- Unknown6 = 0x01000000,
+ Transport = 0x00800000,
+ TransportExit = 0x01000000,
Unknown7 = 0x02000000,
Unknown8 = 0x04000000,
- Unknown9 = 0x08000000,
+ OrientationInverted = 0x08000000,
UsePathSmoothing = 0x10000000,
Animation = 0x20000000,
UncompressedPath = 0x40000000,
View
15 WowPacketParser/Enums/TargetIcon.cs
@@ -0,0 +1,15 @@
+namespace WowPacketParser.Enums
+{
+ enum TargetIcon
+ {
+ None = -1,
+ Yellow4PointStar = 0,
+ OrangeCircle = 1,
+ PurpleDiamond = 2,
+ GreenTriangle = 3,
+ WhiteCrescentMoon = 4,
+ BlueSquare = 5,
+ RedCross = 6,
+ WhiteSkull = 7
+ }
+}
View
2 WowPacketParser/Enums/UnitFlags.cs
@@ -38,5 +38,7 @@ public enum UnitFlags : uint
PreventEmotes = 0x20000000,
Sheath = 0x40000000,
Unk31 = 0x80000000,
+
+ IsInCombat = PetIsAttackingTarget | AffectingCombat
}
}
View
8 WowPacketParser/Enums/VehicleFlags.cs
@@ -17,7 +17,7 @@ enum VehicleFlags // 4.x
}
[Flags]
- enum VehicleSeatFlags // 4.x
+ enum VehicleSeatFlags : uint
{
HasLowerAnimForEnter = 0x00000001,
HasLowerAnimForRide = 0x00000002,
@@ -60,11 +60,11 @@ enum VehicleSeatFlags // 4.x
HasStartWaitingForVehicleTransitionAnimEnter = 0x08000000,
HasStartWaitingForVehicleTransitionAnimExit = 0x10000000,
HasVehicleUI = 0x20000000,
- // AllowsInteraction = 0x80000000
+ AllowsInteraction = 0x80000000
}
[Flags]
- enum VehicleSeatFlagsB // 4.x
+ enum VehicleSeatFlagsB : uint
{
None = 0x00000000,
Unknown1 = 0x00000001,
@@ -78,6 +78,6 @@ enum VehicleSeatFlagsB // 4.x
UsableForced3 = 0x00000100,
CanSwitch = 0x04000000,
- // VehiclePlayerFrameUI = 0x80000000,
+ VehiclePlayerFrameUI = 0x80000000,
}
}
View
3 WowPacketParser/Enums/Version/V3_3_5a_12340/Opcodes.cs
@@ -1203,7 +1203,7 @@ public static class Opcodes_3_3_5
{Opcode.SMSG_BATTLEGROUND_INFO_THROTTLED, 0x4A6},
{Opcode.SMSG_PLAYER_VEHICLE_DATA, 0x4A7},
{Opcode.CMSG_PLAYER_VEHICLE_ENTER, 0x4A8},
- {Opcode.CMSG_CONTROLLER_EJECT_PASSENGER, 0x4A9},
+ {Opcode.CMSG_EJECT_PASSENGER, 0x4A9},
{Opcode.SMSG_PET_GUIDS, 0x4AA},
{Opcode.SMSG_CLIENTCACHE_VERSION, 0x4AB},
{Opcode.CMSG_CHANGE_GDF_ARENA_RATING, 0x4AC},
@@ -1321,7 +1321,6 @@ public static class Opcodes_3_3_5
{Opcode.SMSG_COMMENTATOR_SKIRMISH_QUEUE_RESULT1, 0x51C},
{Opcode.SMSG_COMMENTATOR_SKIRMISH_QUEUE_RESULT2, 0x51D},
{Opcode.SMSG_COMPRESSED_UNKNOWN_1310, 0x51E},
- {Opcode.NUM_MSG_TYPES, 0x51F}
// ReSharper restore InconsistentNaming
};
}
View
52 WowPacketParser/Enums/Version/V4_0_6_13596/Opcodes.cs
@@ -19,7 +19,7 @@ public static class Opcodes_4_0_6
{Opcode.CMSG_ADD_FRIEND, 0x03980}, // 4.0.6a 13623
{Opcode.CMSG_ADD_IGNORE, 0x06780}, // 4.0.6a 13623
{Opcode.CMSG_ADD_PVP_MEDAL_CHEAT, 0x100D0}, // Unknown opcode ID
- {Opcode.CMSG_ADD_VOICE_IGNORE, 0x0EF75}, // 4.0.3a 13329
+ {Opcode.CMSG_ADD_VOICE_IGNORE, 0x0B888}, // 4.0.6a 13623
{Opcode.CMSG_ALTER_APPEARANCE, 0x034A4}, // 4.0.6a 13623
{Opcode.CMSG_AREATRIGGER, 0x0ADA8}, // 4.0.6a 13623
{Opcode.CMSG_AREA_SPIRIT_HEALER_QUERY, 0x0A6C0}, // 4.0.6a 13623
@@ -64,10 +64,10 @@ public static class Opcodes_4_0_6
{Opcode.CMSG_BATTLEFIELD_STATUS, 0x08188}, // 4.0.6a 13623
{Opcode.CMSG_BATTLEGROUND_PLAYER_POSITIONS, 0x00293}, // 4.0.6a 13623
{Opcode.CMSG_BATTLEGROUND_PORT_AND_LEAVE, 0x00E11}, // 4.0.6a 13623
- {Opcode.CMSG_BATTLEMASTER_HELLO, 0x06D57}, // 4.0.3a 13329
+ {Opcode.CMSG_BATTLEMASTER_HELLO, 0x06EC8}, // 4.0.6a 13623
{Opcode.CMSG_BATTLEMASTER_JOIN, 0x0137}, // 4.0.6a 13623
{Opcode.CMSG_BATTLEMASTER_JOIN_ARENA, 0x00311}, // 4.0.6a 13623
- {Opcode.CMSG_BATTLEMASTER_JOIN_RATED, 0x10104}, // Unknown opcode ID
+ {Opcode.CMSG_BATTLEMASTER_JOIN_RATED, 0x00591}, // 4.0.6a 13623
{Opcode.CMSG_BEGIN_TRADE, 0x00F93}, // 4.0.6a 13623
{Opcode.CMSG_BINDER_ACTIVATE, 0x0A48C}, // 4.0.6a 13623
{Opcode.CMSG_BOT_DETECTED, 0x0E757}, // 4.0.3a 13329
@@ -172,9 +172,8 @@ public static class Opcodes_4_0_6
{Opcode.CMSG_DEL_FRIEND, 0x02980}, // 4.0.6a 13623
{Opcode.CMSG_DEL_IGNORE, 0x0F384}, // 4.0.6a 13623
{Opcode.CMSG_DEL_PVP_MEDAL_CHEAT, 0x100D1}, // Unknown opcode ID
- {Opcode.CMSG_DEL_VOICE_IGNORE, 0x0BD7E}, // 4.0.3a 13329
+ {Opcode.CMSG_DEL_VOICE_IGNORE, 0x07AC0}, // 4.0.6a 13623
{Opcode.CMSG_DESTROY_ITEM, 0x0B8A8}, // 4.0.6a 13623
- //{Opcode.CMSG_DESTROY_ITEMS, 0x0B8A8}, // 4.0.6a 13623
{Opcode.CMSG_DISMISS_CONTROLLED_VEHICLE, 0x0E3C0}, // 4.0.6a 13623
{Opcode.CMSG_DISMISS_CRITTER, 0x0B7CC}, // 4.0.6a 13623
{Opcode.CMSG_DUEL_ACCEPTED, 0x0A688}, // 4.0.6a 13623
@@ -206,7 +205,6 @@ public static class Opcodes_4_0_6
{Opcode.CMSG_GAMEOBJ_REPORT_USE, 0x023A0}, // 4.0.6a 13623
{Opcode.CMSG_GAMEOBJ_USE, 0x029E4}, // 4.0.6a 13623
{Opcode.CMSG_GAMESPEED_SET, 0x02084}, // 4.0.6a 13623 FIXME SMSG_MOVE_LAND_WALK
- {Opcode.CMSG_GAMETIME_SET, 0x020C4}, // 4.0.6a 13623 FIXME CMSG_QUESTGIVER_ACCEPT_QUEST
{Opcode.CMSG_GETDEATHBINDZONE, 0x1005E}, // Unknown opcode ID
{Opcode.CMSG_GET_CHANNEL_MEMBER_COUNT, 0x00009}, // 4.0.6a 13623
{Opcode.CMSG_GET_MAIL_LIST, 0x0B284}, // 4.0.6a 13623
@@ -256,12 +254,10 @@ public static class Opcodes_4_0_6
{Opcode.CMSG_GUILD_BANKER_ACTIVATE, 0x0FFC4}, // 4.0.6a 13623
{Opcode.CMSG_GUILD_BANK_BUY_TAB, 0x078AC}, // 4.0.6a 13623
{Opcode.CMSG_GUILD_BANK_DEPOSIT_MONEY, 0x06FE8}, // 4.0.6a 13623
- {Opcode.CMSG_GUILD_BANK_NOTE, 0x07680}, // 4.0.6a 13623
{Opcode.CMSG_GUILD_BANK_QUERY_TAB, 0x0A788}, // 4.0.6a 13623
{Opcode.CMSG_GUILD_BANK_SWAP_ITEMS, 0x0A8C4}, // 4.0.6a 13623
{Opcode.CMSG_GUILD_BANK_UPDATE_TAB, 0x0E3CC}, // 4.0.6a 13623
{Opcode.CMSG_GUILD_BANK_WITHDRAW_MONEY, 0x073A8}, // 4.0.6a 13623
- //{Opcode.CMSG_GUILD_CREATE, 0x02219}, // 4.0.6a 13623
{Opcode.CMSG_GUILD_DECLINE, 0x0352D}, // 4.0.6a 13623
{Opcode.CMSG_GUILD_DEL_RANK, 0x02129}, // 4.0.6a 13623
{Opcode.CMSG_GUILD_DEMOTE, 0x0330D}, // 4.0.6a 13623 (might be 0x01902)
@@ -277,11 +273,11 @@ public static class Opcodes_4_0_6
{Opcode.CMSG_GUILD_QUERY_XP, 0x0350D}, // 4.0.6a 13623
{Opcode.CMSG_GUILD_RANK, 0x02709}, // 4.0.6a 13623
{Opcode.CMSG_GUILD_REMOVE, 0x0312D}, // 4.0.6a 13623
- {Opcode.CMSG_GUILD_ROSTER, 0x0250D}, // 4.0.6a 13623 (might be 0x0B2A4)
+ {Opcode.CMSG_GUILD_ROSTER, 0x0250D}, // 4.0.6a 13623
{Opcode.CMSG_GUILD_SET_NOTE, 0x0232D}, // 4.0.6a 13623
{Opcode.CMSG_GUILD_SWITCH_RANK, 0x100A6}, // Unknown opcode ID
{Opcode.CMSG_GUILD_UPDATE_PARTY_STATE, 0x02219}, // 4.0.6a 13623
- {Opcode.CMSG_HEARTH_AND_RESURRECT, 0x0D67E}, // 4.0.3a 13329
+ {Opcode.CMSG_HEARTH_AND_RESURRECT, 0x0B6C4}, // 4.0.6a 13623
{Opcode.CMSG_IGNORE_DIMINISHING_RETURNS_CHEAT, 0x1019D}, // Unknown opcode ID
{Opcode.CMSG_IGNORE_KNOCKBACK_CHEAT, 0x10126}, // Unknown opcode ID
{Opcode.CMSG_IGNORE_REQUIREMENTS_CHEAT, 0x1016D}, // Unknown opcode ID
@@ -359,7 +355,7 @@ public static class Opcodes_4_0_6
{Opcode.CMSG_MINIGAME_MOVE, 0x0B2E4}, // 4.0.6a 13623
{Opcode.CMSG_MOUNTSPECIAL_ANIM, 0x02EE4}, // 4.0.6a 13623
{Opcode.CMSG_MOVE_CHNG_TRANSPORT, 0x10158}, // Unknown opcode ID
- {Opcode.CMSG_MOVE_FALL_RESET, 0x100E6}, // Unknown opcode ID
+ {Opcode.CMSG_MOVE_FALL_RESET, 0x0E680}, // 4.0.6a 13623
{Opcode.CMSG_MOVE_FEATHER_FALL_ACK, 0x06EA8}, // 4.0.6a 13623
{Opcode.CMSG_MOVE_FLIGHT_ACK, 0x0A3C8}, // 4.0.6a 13623
{Opcode.CMSG_MOVE_GRAVITY_DISABLE_ACK, 0x0F0C0}, // 4.0.6a 13623
@@ -408,7 +404,7 @@ public static class Opcodes_4_0_6
{Opcode.CMSG_PING, 0x0064E}, // 4.0.6a 13623
{Opcode.CMSG_PLAYED_TIME, 0x0F480}, // 4.0.6a 13623
{Opcode.CMSG_PLAYER_AI_CHEAT, 0x100C2}, // Unknown opcode ID
- {Opcode.CMSG_PLAYER_DIFFICULTY_CHANGE, 0x07E5D}, // 4.0.3a 13329
+ {Opcode.CMSG_PLAYER_DIFFICULTY_CHANGE, 0x03F88}, // 4.0.6a 13623
{Opcode.CMSG_PLAYER_LOGIN, 0x08180}, // 4.0.6a 13623
{Opcode.CMSG_PLAYER_LOGOUT, 0x0F78C}, // 4.0.6a 13623
{Opcode.CMSG_PLAYER_VEHICLE_ENTER, 0x0AEC8}, // 4.0.6a 13623
@@ -421,8 +417,7 @@ public static class Opcodes_4_0_6
{Opcode.CMSG_QUERY_SERVER_BUCK_DATA, 0x101AC}, // Unknown opcode ID
{Opcode.CMSG_QUERY_TIME, 0x0B1C0}, // 4.0.6a 13623
{Opcode.CMSG_QUERY_VEHICLE_STATUS, 0x101F0}, // 4.0.6a 1623 (might be 0x069A0)
- {Opcode.CMSG_QUESTGIVER_ACCEPT_QUEST, 0x020C4}, // 4.0.6a 13623 FIXME CMSG_GAMETIME_SET
- //{Opcode.CMSG_QUESTGIVER_CANCEL, 0x00000}, // 4.0.6a 13623
+ {Opcode.CMSG_QUESTGIVER_ACCEPT_QUEST, 0x020C4}, // 4.0.6a 13623
{Opcode.CMSG_QUESTGIVER_CHOOSE_REWARD, 0x06AC0}, // 4.0.6a 13623
{Opcode.CMSG_QUESTGIVER_COMPLETE_QUEST, 0x0B5AC}, // 4.0.6a 13623
{Opcode.CMSG_QUESTGIVER_HELLO, 0x036AC}, // 4.0.6a 13623
@@ -577,7 +572,7 @@ public static class Opcodes_4_0_6
{Opcode.CMSG_WHOIS, 0x02180}, // 4.0.6a 13623
{Opcode.CMSG_WORLD_STATE_UI_TIMER_UPDATE, 0x03FA8}, // 4.0.6a 13623
{Opcode.CMSG_WORLD_TELEPORT, 0x08581}, // 4.0.6a 13623
- {Opcode.CMSG_WRAP_ITEM, 0x06E54}, // 4.0.3a 13329
+ {Opcode.CMSG_WRAP_ITEM, 0x07CC4}, // 4.0.6a 13623
{Opcode.CMSG_ZONEUPDATE, 0x033E4}, // 4.0.6a 13623
{Opcode.MSG_AUCTION_HELLO, 0x0B3A0}, // 4.0.6a 13623
{Opcode.MSG_CHANNEL_START, 0x02BAC}, // 4.0.6a 13623
@@ -613,7 +608,7 @@ public static class Opcodes_4_0_6
{Opcode.MSG_MOVE_SET_FLIGHT_SPEED, 0x0B088}, // 4.0.6a 13623
{Opcode.MSG_MOVE_SET_FLIGHT_SPEED_CHEAT, 0x1014F}, // Unknown opcode ID
{Opcode.MSG_MOVE_SET_PITCH, 0x0EBA0}, // 4.0.6a 13623
- {Opcode.MSG_MOVE_SET_PITCH_RATE, 0x0ABA4}, // 4.0.6a 13623 FIXME (SMSG_FORCE_PITCH_RATE_CHANGE)
+ {Opcode.MSG_MOVE_SET_PITCH_RATE, 0x0ABA4}, // 4.0.6a 13623
{Opcode.MSG_MOVE_SET_PITCH_RATE_CHEAT, 0x101CD}, // Unknown opcode ID
{Opcode.MSG_MOVE_SET_RAW_POSITION_ACK, 0x0F4A0}, // 4.0.6a 13623
{Opcode.MSG_MOVE_SET_RUN_BACK_SPEED, 0x0B5EC}, // 4.0.6a 13623
@@ -743,7 +738,7 @@ public static class Opcodes_4_0_6
{Opcode.SMSG_BINDPOINTUPDATE, 0x0A9A0}, // 4.0.6a 13623
{Opcode.SMSG_BINDZONEREPLY, 0x0ACAC}, // 4.0.6a 13623
{Opcode.SMSG_BREAK_TARGET, 0x02488}, // 4.0.6a 13623
- {Opcode.SMSG_BUY_BANK_SLOT_RESULT, 0x00000}, // 4.0.6a 13623
+ //{Opcode.SMSG_BUY_BANK_SLOT_RESULT, 0x00000}, // 4.0.6a 13623
{Opcode.SMSG_BUY_FAILED, 0x06CE8}, // 4.0.6a 13623
{Opcode.SMSG_BUY_ITEM, 0x069CC}, // 4.0.6a 13623
{Opcode.SMSG_CALENDAR_ACTION_PENDING, 0x07E8C}, // 4.0.6a 13623 (might be 0x0265E)
@@ -767,7 +762,7 @@ public static class Opcodes_4_0_6
{Opcode.SMSG_CALENDAR_UPDATE_INVITE_LIST, 0x071A0}, // 4.0.6a 13623
{Opcode.SMSG_CALENDAR_UPDATE_INVITE_LIST2, 0x0EDC4}, // 4.0.6a 13623
{Opcode.SMSG_CALENDAR_UPDATE_INVITE_LIST3, 0x0A2A0}, // 4.0.6a 13623
- {Opcode.SMSG_CAMERA_SHAKE, 0x1009E}, // Unknown opcode ID
+ {Opcode.SMSG_CAMERA_SHAKE, 0x0A2E4}, // 4.0.6a 13623
{Opcode.SMSG_CANCEL_AUTO_REPEAT, 0x03DE0}, // 4.0.6a 13623
{Opcode.SMSG_CANCEL_COMBAT, 0x0BAE4}, // 4.0.6a 13623
{Opcode.SMSG_CAST_FAILED, 0x02A8C}, // 4.0.6a 13623
@@ -808,9 +803,9 @@ public static class Opcodes_4_0_6
{Opcode.SMSG_COMPRESSED_MOVES, 0x06FE4}, // 4.0.6a 13623
{Opcode.SMSG_COMPRESSED_RESPOND_INSPECT_ACHIEVEMENTS, 0x09130}, // 4.0.6a 13623
{Opcode.SMSG_COMPRESSED_UPDATE_OBJECT, 0x0EAC0}, // 4.0.6a 13623
- {Opcode.SMSG_COMSAT_CONNECT_FAIL, 0x0647E}, // 4.0.3a 13329
- {Opcode.SMSG_COMSAT_DISCONNECT, 0x02E57}, // 4.0.3a 13329
- {Opcode.SMSG_COMSAT_RECONNECT_TRY, 0x07E7E}, // 4.0.3a 13329
+ {Opcode.SMSG_COMSAT_CONNECT_FAIL, 0x029A0}, // 4.0.6a 13623
+ {Opcode.SMSG_COMSAT_DISCONNECT, 0x0AAC8}, // 4.0.6a 13623
+ {Opcode.SMSG_COMSAT_RECONNECT_TRY, 0x0E880}, // 4.0.6a 13623
{Opcode.SMSG_CONTACT_LIST, 0x0748C}, // 4.0.6a 13623
{Opcode.SMSG_CONVERT_RUNE, 0x0B4AC}, // 4.0.6a 13623
{Opcode.SMSG_COOLDOWN_CHEAT, 0x0AAA4}, // 4.0.6a 13623
@@ -891,7 +886,7 @@ public static class Opcodes_4_0_6
{Opcode.SMSG_GMTICKET_CREATE, 0x0A8A0}, // 4.0.6a 13623
{Opcode.SMSG_GMTICKET_DELETETICKET, 0x0F48C}, // 4.0.6a 13623
{Opcode.SMSG_GMTICKET_GETTICKET, 0x02284}, // 4.0.6a 13623
- {Opcode.SMSG_GMTICKET_SYSTEMSTATUS, 0x0B9C0}, // 4.0.6a 13623 FIXME SMSG_SPIRIT_HEALER_CONFIRM
+ {Opcode.SMSG_GMTICKET_SYSTEMSTATUS, 0x0B9C0}, // 4.0.6a 13623
{Opcode.SMSG_GMTICKET_UPDATETEXT, 0x0A5E8}, // 4.0.6a 13623
{Opcode.SMSG_GM_MESSAGECHAT, 0x03AEC}, // 4.0.6a 13623
{Opcode.SMSG_GM_TICKET_STATUS_UPDATE, 0x072C4}, // 4.0.6a 13623
@@ -900,7 +895,7 @@ public static class Opcodes_4_0_6
{Opcode.SMSG_GOSSIP_COMPLETE, 0x0F0AC}, // 4.0.6a 13623
{Opcode.SMSG_GOSSIP_MESSAGE, 0x0BBC8}, // 4.0.6a 13623
{Opcode.SMSG_GOSSIP_POI, 0x0B9AC}, // 4.0.6a 13623
- {Opcode.SMSG_GROUPACTION_THROTTLED, 0x101A5}, // Unknown opcode ID
+ {Opcode.SMSG_GROUPACTION_THROTTLED, 0x0F4E4}, // 4.0.6a 13623
{Opcode.SMSG_GROUP_CANCEL, 0x06AAC}, // 4.0.6a 13623
{Opcode.SMSG_GROUP_DECLINE, 0x0ABAC}, // 4.0.6a 13623
{Opcode.SMSG_GROUP_DESTROYED, 0x022CC}, // 4.0.6a 13623
@@ -927,9 +922,8 @@ public static class Opcodes_4_0_6
{Opcode.SMSG_GUILD_TRADESKILL_UPDATE, 0x0454E}, // 4.0.6a 13623
{Opcode.SMSG_GUILD_UPDATE_PARTY_STATE, 0x0450C}, // 4.0.6a 13623
{Opcode.SMSG_GUILD_UPDATE_ROSTER, 0x0085E}, // 4.0.6a 13623
- {Opcode.SMSG_GUILD_XP, 0x0440E}, // 4.0.6a 13623 FIXME SMSG_GUILD_XP_UPDATE
+ {Opcode.SMSG_GUILD_XP, 0x0440E}, // 4.0.6a 13623
{Opcode.SMSG_GUILD_XP_LIMIT, 0x0441C}, // 4.0.6a 13623
- {Opcode.SMSG_GUILD_XP_UPDATE, 0x0440E}, // 4.0.6a 13623 FIXME SMSG_GUILD_XP
{Opcode.SMSG_HEALTH_UPDATE, 0x02AA8}, // 4.0.6a 13623
{Opcode.SMSG_HIGHEST_THREAT_UPDATE, 0x03F7E}, // 4.0.3a 13329
{Opcode.SMSG_HOTFIX_INFO, 0x04C1E}, // 4.0.6a 13623 (sent after SMSG_AUTH_RESPONSE)
@@ -945,7 +939,7 @@ public static class Opcodes_4_0_6
{Opcode.SMSG_INSPECT_RESULTS_UPDATE, 0x07AC8}, // 4.0.6a 13623
{Opcode.SMSG_INSPECT_TALENT, 0x0F8C0}, // 4.0.6a 13623
{Opcode.SMSG_INSTANCE_DIFFICULTY, 0x0FFE4}, // 4.0.6a 13623 (might be 0x0A55E)
- {Opcode.SMSG_INSTANCE_LOCK_WARNING_QUERY, 0x0B574}, // 4.0.3a 13329
+ {Opcode.SMSG_INSTANCE_LOCK_WARNING_QUERY, 0x07488}, // 4.0.6a 13623
{Opcode.SMSG_INSTANCE_RESET, 0x030E8}, // 4.0.6a 13623
{Opcode.SMSG_INSTANCE_RESET_FAILED, 0x03BA0}, // 4.0.6a 13623
{Opcode.SMSG_INSTANCE_SAVE_CREATED, 0x0BBC4}, // 4.0.6a 13623
@@ -955,7 +949,6 @@ public static class Opcodes_4_0_6
{Opcode.SMSG_INVENTORY_CHANGE_FAILURE, 0x0AFCC}, // 4.0.6a 13623
{Opcode.SMSG_ITEM_COOLDOWN, 0x06CC8}, // 4.0.6a 13623
{Opcode.SMSG_ITEM_ENCHANT_TIME_UPDATE, 0x066A0}, // 4.0.6a 13623
- //{Opcode.SMSG_ITEM_NAME_QUERY_RESPONSE, 0x00000}, // 4.0.6a 13623
{Opcode.SMSG_ITEM_PUSH_RESULT, 0x0FBE8}, // 4.0.6a 13623
{Opcode.SMSG_ITEM_REFUND_INFO_RESPONSE, 0x0095E}, // 4.0.6a 13623
{Opcode.SMSG_ITEM_REFUND_RESULT, 0x0441E}, // 4.0.6a 13623
@@ -1026,7 +1019,7 @@ public static class Opcodes_4_0_6
{Opcode.SMSG_MOVE_GRAVITY_DISABLE, 0x10219}, // Unknown opcode ID
{Opcode.SMSG_MOVE_GRAVITY_ENABLE, 0x1021B}, // Unknown opcode ID
{Opcode.SMSG_MOVE_KNOCK_BACK, 0x0B180}, // 4.0.6a 13623
- {Opcode.SMSG_MOVE_LAND_WALK, 0x02084}, // 4.0.6a 13623 FIXME CMSG_GAMESPEED_SET
+ {Opcode.SMSG_MOVE_LAND_WALK, 0x02084}, // 4.0.6a 13623
{Opcode.SMSG_MOVE_LEVITATING, 0x0B8AC}, // 4.0.6a 13623
{Opcode.SMSG_MOVE_NORMAL_FALL, 0x06CE0}, // 4.0.6a 13623
{Opcode.SMSG_MOVE_SET_CAN_FLY, 0x0BDA0}, // 4.0.6a 13623
@@ -1250,7 +1243,7 @@ public static class Opcodes_4_0_6
{Opcode.SMSG_UNKNOWN_1276, 0x0508}, // 4.0.6a 13623
{Opcode.SMSG_UNKNOWN_1295, 0x10008}, // Unknown opcode ID
{Opcode.SMSG_UNKNOWN_1302, 0x10010}, // Unknown opcode ID
- {Opcode.SMSG_UNKNOWN_1304, 0x072E0}, // 4.0.6a 13623
+ {Opcode.SMSG_UNKNOWN_1304, 0x072E0}, // 4.0.6a 13623 - Its movement related MSG_MOVE_SET_XXX
{Opcode.SMSG_UNKNOWN_1308, 0x10011}, // Unknown opcode ID
{Opcode.SMSG_UNKNOWN_1310, 0x02E88}, // 4.0.6a 13623
{Opcode.SMSG_UNKNOWN_1311, 0x01E76}, // Unknown opcode ID/Name
@@ -1292,7 +1285,6 @@ public static class Opcodes_4_0_6
{Opcode.SMSG_WHOIS, 0x0B1A4}, // 4.0.6a 13623
{Opcode.SMSG_WORLD_STATE_UI_TIMER_UPDATE, 0x05557}, // 4.0.6a 13623
{Opcode.SMSG_ZONE_UNDER_ATTACK, 0x0BD80}, // 4.0.6a 13623
- {Opcode.NUM_MSG_TYPES, 0x102B8} // last unknown opcode + 1.
};
}
}
View
1 WowPacketParser/Enums/Version/V4_2_0_14480/Opcodes.cs
@@ -178,7 +178,6 @@ public static class Opcodes_4_2_0
{Opcode.CMSG_GUILD_BANK_BUY_TAB, 0x36B3},
{Opcode.CMSG_GUILD_BANK_DEPOSIT_MONEY, 0x2A2F},
{Opcode.CMSG_GUILD_BANKER_ACTIVATE, 0x26B2},
- {Opcode.CMSG_GUILD_BANK_NOTE, 0x6E26},
{Opcode.CMSG_GUILD_BANK_QUERY_TAB, 0xA623},
{Opcode.CMSG_GUILD_BANK_SWAP_ITEMS, 0xFAF2},
{Opcode.CMSG_GUILD_BANK_UPDATE_TAB, 0x727B},
View
13 WowPacketParser/Enums/Version/V4_2_2_14545/Opcodes.cs
@@ -112,6 +112,7 @@ public static class Opcodes_4_2_2
{Opcode.CMSG_DESTROY_ITEM, 0x4E7A},
{Opcode.CMSG_DUEL_ACCEPTED, 0x9CCB},
{Opcode.CMSG_DUEL_CANCELLED, 0x1E4F},
+ {Opcode.CMSG_EJECT_PASSENGER, 0xDE5A},
{Opcode.CMSG_EMOTE, 0x9843},
{Opcode.CMSG_EQUIPMENT_SET_DELETE, 0x9CF2},
{Opcode.CMSG_EQUIPMENT_SET_SAVE, 0x5E5F},
@@ -165,17 +166,23 @@ public static class Opcodes_4_2_2
{Opcode.CMSG_LEARN_TALENT, 0x98F3},
{Opcode.CMSG_LEAVE_BATTLEFIELD, 0x1AE7},
{Opcode.CMSG_LEAVE_CHANNEL, 0x60C9},
+ {Opcode.CMSG_LFG_JOIN, 0x58E2},
+ {Opcode.CMSG_LFG_LEAVE, 0x0EF7},
{Opcode.CMSG_LFG_LFR_JOIN, 0x8CFA},
+ {Opcode.CMSG_LFG_LFR_LEAVE, 0x18CA},
{Opcode.CMSG_LFG_PARTY_LOCK_INFO_REQUEST, 0xC867},
+ {Opcode.CMSG_LFG_PROPOSAL_RESULT, 0x985A},
{Opcode.CMSG_LFG_SET_ROLES, 0x4843},
{Opcode.CMSG_LFG_TELEPORT, 0x8C7A},
{Opcode.CMSG_LIST_INVENTORY, 0xDCFE},
{Opcode.CMSG_LOAD_SCREEN, 0x0888},
{Opcode.CMSG_LOGOUT_CANCEL, 0xA76},
{Opcode.CMSG_LOGOUT_REQUEST, 0x4C7A},
{Opcode.CMSG_LOOT, 0x1E62},
+ {Opcode.CMSG_LOOT_METHOD, 0xCCC6},
{Opcode.CMSG_LOOT_MONEY, 0x4A42},
{Opcode.CMSG_LOOT_RELEASE, 0x4A6A},
+ {Opcode.CMSG_LOOT_ROLL, 0x4AFF},
{Opcode.CMSG_MAIL_CREATE_TEXT_ITEM, 0x886E},
{Opcode.CMSG_MAIL_DELETE, 0x4CCF},
{Opcode.CMSG_MAIL_RETURN_TO_SENDER, 0x587E},
@@ -299,6 +306,7 @@ public static class Opcodes_4_2_2
{Opcode.CMSG_TUTORIAL_RESET, 0x8AF7},
{Opcode.CMSG_UNLEARN_SKILL, 0xAC3},
{Opcode.CMSG_UPDATE_ACCOUNT_DATA, 0x4AFE},
+ //{Opcode.CMSG_UPDATE_MISSILE_TRAJECTORY, 0x0}, sub_677360
{Opcode.CMSG_UPDATE_PROJECTILE_POSITION, 0xEDB},
{Opcode.CMSG_USE_ITEM, 0xD8EA},
{Opcode.CMSG_WARDEN_DATA, 0x5847},
@@ -412,7 +420,12 @@ public static class Opcodes_4_2_2
{Opcode.SMSG_BUY_FAILED, 0x4A7F},
{Opcode.SMSG_BUY_ITEM, 0xCA67},
{Opcode.SMSG_CALENDAR_COMMAND_RESULT, 0x9A4E},
+ {Opcode.SMSG_CALENDAR_EVENT_REMOVED_ALERT, 0x5C72},
+ {Opcode.SMSG_CALENDAR_EVENT_UPDATED_ALERT, 0x5CFA},
{Opcode.SMSG_CALENDAR_SEND_CALENDAR, 0x08FB},
+ {Opcode.SMSG_CALENDAR_RAID_LOCKOUT_ADDED, 0x9AC2},
+ {Opcode.SMSG_CALENDAR_RAID_LOCKOUT_REMOVED, 0x985B},
+ {Opcode.SMSG_CALENDAR_RAID_LOCKOUT_UPDATED, 0xDCDF},
{Opcode.SMSG_CAMERA_SHAKE, 0x5CFB},
{Opcode.SMSG_CANCEL_AUTO_REPEAT, 0x5ACB},
{Opcode.SMSG_CANCEL_COMBAT, 0x4AC7},
View
6 WowPacketParser/Enums/Version/V4_3_2_15211/Opcodes.cs
@@ -14,9 +14,9 @@ public static class Opcodes_4_3_2
{Opcode.CMSG_ACCEPT_LEVEL_GRANT, 0x0D33},
{Opcode.CMSG_ACTIVATETAXI, 0x4DF9},
{Opcode.CMSG_ACTIVATETAXIEXPRESS, 0x4D0F},
+ {Opcode.CMSG_ADDON_REGISTERED_PREFIXES, 0x2860},
{Opcode.CMSG_ADD_FRIEND, 0x2DBD},
{Opcode.CMSG_ADD_IGNORE, 0x2541},
- {Opcode.CMSG_ADDON_REGISTERED_PREFIXES, 0x2860},
{Opcode.CMSG_AUTH_SESSION, 0x4042},
{Opcode.CMSG_BANKER_ACTIVATE, 0x0569},
{Opcode.CMSG_BINDER_ACTIVATE, 0x6DC7},
@@ -81,11 +81,12 @@ public static class Opcodes_4_3_2
{Opcode.SMSG_GUILD_ROSTER, 0x1E94}, // Not confirmed
{Opcode.SMSG_HIGHEST_THREAT_UPDATE, 0x6527},
{Opcode.SMSG_INIT_WORLD_STATES, 0x0D25},
+ {Opcode.SMSG_LEARNED_SPELL, 0x1611},
{Opcode.SMSG_MESSAGECHAT, 0x0529},
{Opcode.SMSG_MIRRORIMAGE_DATA, 0x457D},
- {Opcode.SMSG_MOTD, 0x6D11},
{Opcode.SMSG_MONSTER_MOVE, 0x2561},
{Opcode.SMSG_MONSTER_MOVE_TRANSPORT, 0x65D5},
+ {Opcode.SMSG_MOTD, 0x6D11},
{Opcode.SMSG_NAME_QUERY_RESPONSE, 0x455D},
{Opcode.SMSG_NPC_TEXT_UPDATE, 0x0D09},
{Opcode.SMSG_PLAYER_VEHICLE_DATA, 0x2503},
@@ -98,6 +99,7 @@ public static class Opcodes_4_3_2
{Opcode.SMSG_QUEST_QUERY_RESPONSE, 0x25CB},
{Opcode.SMSG_REALM_SPLIT, 0x0581},
{Opcode.SMSG_REDIRECT_CLIENT, 0x1329},
+ {Opcode.SMSG_REMOVED_SPELL, 0x0501},
{Opcode.SMSG_SPELLENERGIZELOG, 0x05EF},
{Opcode.SMSG_SPELLNONMELEEDAMAGELOG, 0x250F},
{Opcode.SMSG_SPELL_GO, 0x6DEF},
View
352 WowPacketParser/Enums/Version/V4_3_4_15595/Opcodes.cs
@@ -11,71 +11,421 @@ public static class Opcodes_4_3_4
private static readonly BiDictionary<Opcode, int> Opcs = new BiDictionary<Opcode, int>
{
+ {Opcode.CMSG_ACCEPT_LEVEL_GRANT, 0x0205},
+ {Opcode.CMSG_ACCEPT_TRADE, 0x07110},
+ {Opcode.CMSG_ADD_FRIEND, 0x6C29},
+ {Opcode.CMSG_ADD_VOICE_IGNORE, 0x0F06},
+ {Opcode.CMSG_ADDON_REGISTERED_PREFIXES, 0x0954},
+ {Opcode.CMSG_ALTER_APPEARANCE, 0x0914},
+ {Opcode.CMSG_AREA_SPIRIT_HEALER_QUERY, 0x4907},
+ {Opcode.CMSG_AREATRIGGER, 0x0937},
+ {Opcode.CMSG_ARENA_TEAM_DISBAND, 0x6504},
+ {Opcode.CMSG_ARENA_TEAM_INVITE, 0x2F27},
+ {Opcode.CMSG_ARENA_TEAM_LEADER, 0x4204},
+ {Opcode.CMSG_ARENA_TEAM_LEAVE, 0x0E16},
+ {Opcode.CMSG_ARENA_TEAM_REMOVE, 0x2F05},
+ {Opcode.CMSG_ATTACKSWING, 0x0926},
+ {Opcode.CMSG_AUCTION_LIST_ITEMS, 0x0324},
+ {Opcode.CMSG_AUCTION_PLACE_BID, 0x2306},
+ {Opcode.CMSG_AUCTION_REMOVE_ITEM, 0x6426},
+ {Opcode.CMSG_AUCTION_SELL_ITEM, 0x4A06},
{Opcode.CMSG_AUTH_SESSION, 0x0449},
+ {Opcode.CMSG_AUTO_DECLINE_GUILD_INVITES, 0x2034},
+ {Opcode.CMSG_AUTOEQUIP_ITEM, 0x4304},
+ {Opcode.CMSG_AUTOSTORE_LOOT_ITEM, 0x0E34},
+ {Opcode.CMSG_BINDER_ACTIVATE, 0x4006},
+ {Opcode.CMSG_BATTLEFIELD_LIST, 0x3814},
+ {Opcode.CMSG_BATTLEFIELD_STATUS, 0x2500},
+ {Opcode.CMSG_BUG, 0x4035},
+ {Opcode.CMSG_BUY_BANK_SLOT, 0x0425},
+ {Opcode.CMSG_BUY_ITEM, 0x0736},
+ {Opcode.CMSG_BUYBACK_ITEM, 0x6C17},
+ {Opcode.CMSG_CALENDAR_EVENT_INVITE, 0x0227},
+ {Opcode.CMSG_CANCEL_AUTO_REPEAT_SPELL, 0x6C35},
+ {Opcode.CMSG_CANCEL_CAST, 0x0115},
+ {Opcode.CMSG_CANCEL_CHANNELLING, 0x6C25},
+ {Opcode.CMSG_CANCEL_MOUNT_AURA, 0x0635},
+ {Opcode.CMSG_CANCEL_TRADE, 0x731E},
{Opcode.CMSG_CAST_SPELL, 0x4C07},
+ {Opcode.CMSG_CHANNEL_ANNOUNCEMENTS, 0x1146},
+ {Opcode.CMSG_CHANNEL_BAN, 0x3D56},
+ {Opcode.CMSG_CHANNEL_DISPLAY_LIST, 0x2144},
+ {Opcode.CMSG_CHANNEL_INVITE, 0x0144},
+ {Opcode.CMSG_CHANNEL_KICK, 0x3156},
+ {Opcode.CMSG_CHANNEL_LIST, 0x1556},
+ {Opcode.CMSG_CHANNEL_MODERATOR, 0x2944},
+ {Opcode.CMSG_CHANNEL_MUTE, 0x2554},
+ {Opcode.CMSG_CHANNEL_OWNER, 0x3D44},
+ {Opcode.CMSG_CHANNEL_PASSWORD, 0x9558},
+ {Opcode.CMSG_CHANNEL_ROSTER_INFO, 0x3546},
+ {Opcode.CMSG_CHANNEL_SET_OWNER, 0x3556},
+ {Opcode.CMSG_CHANNEL_UNBAN, 0x2D46},
+ {Opcode.CMSG_CHANNEL_UNMODERATOR, 0x1954},
+ {Opcode.CMSG_CHANNEL_UNMUTE, 0x3554},
+ {Opcode.CMSG_CHAR_CREATE, 0x4A36},
+ {Opcode.CMSG_CHAR_DELETE, 0x6425},
+ {Opcode.CMSG_CHAR_ENUM, 0x0502},
+ {Opcode.CMSG_CHAR_FACTION_CHANGE, 0x2735},
+ {Opcode.CMSG_CHAR_RACE_CHANGE, 0x0D24},
+ {Opcode.CMSG_CHAR_RENAME, 0x2327},
+ {Opcode.CMSG_CLEAR_CHANNEL_WATCH, 0x2604},
+ {Opcode.CMSG_COMMENTATOR_ENABLE, 0x0B07},
+ {Opcode.CMSG_COMMENTATOR_ENTER_INSTANCE, 0x4105},
+ {Opcode.CMSG_COMMENTATOR_EXIT_INSTANCE, 0x6136},
+ {Opcode.CMSG_COMMENTATOR_GET_MAP_INFO, 0x0026},
+ {Opcode.CMSG_COMMENTATOR_GET_PLAYER_INFO, 0x0D14},
+ {Opcode.CMSG_COMMENTATOR_INSTANCE_COMMAND, 0x0917},
+ {Opcode.CMSG_COMMENTATOR_SKIRMISH_QUEUE_COMMAND, 0x0025},
+ {Opcode.CMSG_COMPLETE_CINEMATIC, 0x0A16},
+ {Opcode.CMSG_CONTACT_LIST, 0x4534},
{Opcode.CMSG_CREATURE_QUERY, 0x2706},
+ {Opcode.CMSG_DEL_FRIEND, 0x6A15},
+ {Opcode.CMSG_DEL_IGNORE, 0x4727},
+ {Opcode.CMSG_DEL_VOICE_IGNORE, 0x0024},
+ {Opcode.CMSG_DUNGEON_FINDER_GET_SYSTEM_INFO, 0x0412},
+ {Opcode.CMSG_DESTROY_ITEMS, 0x4A27},
+ {Opcode.CMSG_EMOTE, 0x4C26},
+ {Opcode.CMSG_FORCE_MOVE_UNROOT_ACK, 0x7DB4},
+ {Opcode.CMSG_GAMEOBJECT_QUERY, 0x4017},
+ {Opcode.CMSG_GET_MAIL_LIST, 0x4D37},
+ {Opcode.CMSG_GET_MIRRORIMAGE_DATA, 0x0C25},
+ {Opcode.CMSG_GMTICKET_UPDATETEXT, 0x0636},
{Opcode.CMSG_GOSSIP_HELLO, 0x4525},
+ {Opcode.CMSG_GOSSIP_SELECT_OPTION, 0x0216},
+ {Opcode.CMSG_GROUP_SET_LEADER, 0x4C17},
+ {Opcode.CMSG_GROUP_ASSISTANT_LEADER, 0x6025},
+ {Opcode.CMSG_GROUP_CHANGE_SUB_GROUP, 0x4124},
+ {Opcode.CMSG_GROUP_RAID_CONVERT, 0x6E27},
+ {Opcode.CMSG_GROUP_SWAP_SUB_GROUP, 0x0034},
+ {Opcode.CMSG_GUILD_ACCEPT, 0x2531},
+ {Opcode.CMSG_GUILD_BANK_QUERY_TAB, 0x2E35},
+ {Opcode.CMSG_GUILD_BANK_SWAP_ITEMS, 0x2315},
+ {Opcode.CMSG_GUILD_BANK_UPDATE_TAB, 0x0106},
+ {Opcode.CMSG_GUILD_BANK_REM_MONEY_WITHDRAW_QUERY, 0x1225},
+ {Opcode.CMSG_GUILD_BANKER_ACTIVATE, 0x2E37},
+ {Opcode.CMSG_GUILD_INFO_TEXT, 0x3227},
+ {Opcode.CMSG_GUILD_MOTD, 0x1035},
+ {Opcode.CMSG_GUILD_QUERY, 0x4426},
+ {Opcode.CMSG_GUILD_ROSTER, 0x1026},
+ {Opcode.CMSG_GUILD_RANKS, 0x1226},
+ {Opcode.CMSG_GUILD_SET_ACHIEVEMENT_TRACKING, 0x1027},
+ {Opcode.CMSG_HEARTH_AND_RESURRECT, 0x4B34},
+ {Opcode.CMSG_INSPECT, 0x0927},
+ {Opcode.CMSG_INSTANCE_LOCK_WARNING_RESPONSE, 0x6234},
+ {Opcode.CMSG_ITEM_REFUND, 0x6134},
+ {Opcode.CMSG_ITEM_REFUND_INFO, 0x2206},
{Opcode.CMSG_JOIN_CHANNEL, 0x0156},
+ {Opcode.CMSG_LEARN_PREVIEW_TALENTS, 0x2415},
+ {Opcode.CMSG_LEARN_TALENT, 0x6E24},
+ {Opcode.CMSG_LFG_JOIN, 0x2581},
+ {Opcode.CMSG_LFG_SET_ROLES, 0x25B1},
+ {Opcode.CMSG_LIST_INVENTORY, 0x2806},
{Opcode.CMSG_LOAD_SCREEN, 0x2422},
+ {Opcode.CMSG_LOG_DISCONNECT, 0x446D},
+ {Opcode.CMSG_LOGOUT_CANCEL, 0x2324},
+ {Opcode.CMSG_LOGOUT_REQUEST, 0x0A25},
+ {Opcode.CMSG_LOOT, 0x0127},
+ {Opcode.CMSG_LOOT_METHOD, 0x2F24},
+ {Opcode.CMSG_LOOT_MONEY, 0x6227},
+ {Opcode.CMSG_LOOT_RELEASE, 0x2007},
+ {Opcode.CMSG_MAIL_CREATE_TEXT_ITEM, 0x0B14},
+ {Opcode.CMSG_MAIL_TAKE_ITEM, 0x2B06},
+ {Opcode.CMSG_MAIL_TAKE_MONEY, 0x4034},
+ {Opcode.CMSG_MESSAGECHAT_ADDON_GUILD, 0x0544},
+ {Opcode.CMSG_MESSAGECHAT_ADDON_PARTY, 0x0546},
+ {Opcode.CMSG_MESSAGECHAT_CHANNEL, 0x1D44},
+ {Opcode.CMSG_MESSAGECHAT_GUILD, 0x3956},
+ {Opcode.CMSG_MESSAGECHAT_OFFICER, 0x1946},
+ {Opcode.CMSG_MESSAGECHAT_SAY, 0x1154},
+ {Opcode.CMSG_MESSAGECHAT_WHISPER, 0x0D56},
+ {Opcode.CMSG_MESSAGECHAT_YELL, 0x3544},
+ {Opcode.CMSG_MOVE_KNOCK_BACK_ACK, 0x5CB4},
+ {Opcode.CMSG_MOVE_TIME_SKIPPED, 0x7A0A},
{Opcode.CMSG_NAME_QUERY, 0x2224},
+ {Opcode.CMSG_NPC_TEXT_QUERY, 0x4E24},
+ {Opcode.CMSG_OFFER_PETITION, 0x4817},
+ {Opcode.CMSG_PET_ACTION, 0x0226},
{Opcode.CMSG_PET_CAST_SPELL, 0x6337},
+ {Opcode.CMSG_PETITION_BUY, 0x4E05},
+ {Opcode.CMSG_PETITION_SIGN, 0x0E04},
{Opcode.CMSG_PING, 0x444D},
+ {Opcode.CMSG_PLAYED_TIME, 0x0804},
{Opcode.CMSG_PLAYER_LOGIN, 0x05B1},
+ {Opcode.CMSG_PUSHQUESTTOPARTY, 0x4B14},
+ {Opcode.CMSG_QUERY_QUESTS_COMPLETED, 0x2317},
+ {Opcode.CMSG_QUERY_TIME, 0x0A36},
+ {Opcode.CMSG_QUEST_POI_QUERY, 0x4037},
+ {Opcode.CMSG_QUEST_QUERY, 0x0D06},
+ {Opcode.CMSG_QUESTGIVER_COMPLETE_QUEST, 0x7302},
+ {Opcode.CMSG_QUESTGIVER_HELLO, 0x0D17},
+ {Opcode.CMSG_QUESTGIVER_STATUS_MULTIPLE_QUERY, 0x6305},
+ {Opcode.CMSG_QUESTGIVER_STATUS_QUERY, 0x4407},
+ {Opcode.CMSG_RANDOMIZE_CHAR_NAME, 0x2413},
{Opcode.CMSG_READY_FOR_ACCOUNT_DATA_TIMES, 0x2B16},
{Opcode.CMSG_REALM_SPLIT, 0x2906},
+ {Opcode.CMSG_RECLAIM_CORPSE, 0x4036},
{Opcode.CMSG_REDIRECTION_AUTH_PROOF, 0x044D},
+ {Opcode.CMSG_REPAIR_ITEM, 0x2917},
{Opcode.CMSG_REQUEST_ACCOUNT_DATA, 0x6505},
+ {Opcode.CMSG_REQUEST_CATEGORY_COOLDOWNS, 0x7102},
+ {Opcode.CMSG_REQUEST_HOTFIX, 0x2401},
+ {Opcode.CMSG_REQUEST_PET_INFO, 0x4924},
+ {Opcode.CMSG_REQUEST_RAID_INFO, 0x2F26},
+ {Opcode.CMSG_REQUEST_RATED_BG_INFO, 0x34A1},
+ {Opcode.CMSG_REQUEST_CEMETERY_LIST, 0x720A},
{Opcode.CMSG_RESET_FACTION_CHEAT, 0x4469},
+ {Opcode.CMSG_RESET_INSTANCES, 0x6E14},
+ {Opcode.CMSG_RESURRECT_RESPONSE, 0x6827},
+ {Opcode.CMSG_SELF_RES, 0x6115},
+ {Opcode.CMSG_SELL_ITEM, 0x4E15},
+ {Opcode.CMSG_SET_ACTION_BUTTON, 0x6F06},
+ {Opcode.CMSG_SET_ACTIONBAR_TOGGLES, 0x2506},
+ {Opcode.CMSG_SET_ACTIVE_MOVER, 0x3314},
+ {Opcode.CMSG_SET_ACTIVE_VOICE_CHANNEL, 0x4305},
+ {Opcode.CMSG_SET_ALLOW_LOW_LEVEL_RAID1, 0x4435},
+ {Opcode.CMSG_SET_ALLOW_LOW_LEVEL_RAID2, 0x0536},
+ {Opcode.CMSG_SET_PRIMARY_TALENT_TREE, 0x4524},
+ {Opcode.CMSG_SET_SAVED_INSTANCE_EXTEND, 0x6706},
+ {Opcode.CMSG_SET_SELECTION, 0x0506},
+ {Opcode.CMSG_SET_TAXI_BENCHMARK_MODE, 0x4314},
+ {Opcode.CMSG_SET_TITLE, 0x2117},
+ {Opcode.CMSG_SETSHEATHED, 0x4326},
+ {Opcode.CMSG_SHOWING_CLOAK, 0x4135},
+ {Opcode.CMSG_SHOWING_HELM, 0x0735},
+ {Opcode.CMSG_SOCKET_GEMS, 0x2F04},
+ {Opcode.CMSG_SPIRIT_HEALER_ACTIVATE, 0x2E26},
+ {Opcode.CMSG_STANDSTATECHANGE, 0x0535},
+ {Opcode.CMSG_SUSPEND_TOKEN, 0x046D},
+ {Opcode.CMSG_SWAP_INV_ITEM, 0x2614},
+ {Opcode.CMSG_SWAP_ITEM, 0x6326},
+ {Opcode.CMSG_TAXINODE_STATUS_QUERY, 0x2F25},
+ {Opcode.CMSG_TEXT_EMOTE, 0x2E24},
+ {Opcode.CMSG_TIME_SYNC_RESP, 0x3B0C},
+ {Opcode.CMSG_TOGGLE_PVP, 0x6815},
+ {Opcode.CMSG_TRAINER_BUY_SPELL, 0x4415},
+ {Opcode.CMSG_TRAINER_LIST, 0x2336},
+ {Opcode.CMSG_UNREGISTER_ALL_ADDON_PREFIXES, 0x3D54},
{Opcode.CMSG_UPDATE_ACCOUNT_DATA, 0x4736},
+ {Opcode.CMSG_VIOLENCE_LEVEL, 0x7816},
{Opcode.CMSG_WARDEN_DATA, 0x25A2},
+ {Opcode.CMSG_WHO, 0x6C15},
+ {Opcode.CMSG_WHOIS, 0x6B05},
+ {Opcode.CMSG_WORLD_STATE_UI_TIMER_UPDATE, 0x4605},
+ {Opcode.CMSG_WORLD_TELEPORT, 0x3330},
+ {Opcode.CMSG_ZONEUPDATE, 0x4F37},
+ {Opcode.MSG_AUCTION_HELLO, 0x2307},
+ {Opcode.MSG_MINIMAP_PING, 0x6635},
+ {Opcode.MSG_MOVE_ENABLE_TRANSITION_BETWEEN_SWIM_AND_FLY, 0x3014},
+ {Opcode.MSG_MOVE_FALL_LAND, 0x380A},
+ {Opcode.MSG_MOVE_FORCE_FLIGHT_SPEED_CHANGE_ACK, 0x7314},
+ {Opcode.MSG_MOVE_FORCE_RUN_SPEED_CHANGE_ACK, 0x7818},
+ {Opcode.MSG_MOVE_JUMP, 0x7A06},
+ {Opcode.MSG_MOVE_REQUEST_STATUS, 0x3914},
+ {Opcode.MSG_MOVE_SET_CAN_FLY_ACK, 0x790C},
+ {Opcode.MSG_MOVE_SET_COLLISION_HEIGHT_ACK, 0x7114},
+ {Opcode.MSG_MOVE_SKIP_TIME, 0x19B3},
+ {Opcode.MSG_MOVE_SET_RUN_MODE, 0x791A},
+ {Opcode.MSG_MOVE_SET_WALK_MODE, 0x7002},
+ {Opcode.MSG_MOVE_SPLINE_DONE, 0X790E},
+ {Opcode.MSG_MOVE_SPLINE_SET_RUN_SPEED, 0x51B7},
+ {Opcode.MSG_MOVE_START_ASCEND, 0x390A},
+ {Opcode.MSG_MOVE_START_BACKWARD, 0x330A},
+ {Opcode.MSG_MOVE_START_DESCEND, 0x3800},
+ {Opcode.MSG_MOVE_START_FORWARD, 0x7814},
+ {Opcode.MSG_MOVE_START_PITCH_DOWN, 0x3908},
+ {Opcode.MSG_MOVE_START_PITCH_UP, 0x3304},
+ {Opcode.MSG_MOVE_START_SWIM, 0x3206},
+ {Opcode.MSG_MOVE_START_TURN_LEFT, 0x700C},
+ {Opcode.MSG_MOVE_START_TURN_RIGHT, 0x7000},
+ {Opcode.MSG_MOVE_START_STRAFE_RIGHT, 0x3A02},
+ {Opcode.MSG_MOVE_START_STRAFE_LEFT, 0x3A16},
+ {Opcode.MSG_MOVE_START_PITCH_UP, 0x3304},
+ {Opcode.MSG_MOVE_START_PITCH_DOWN, 0x3908},
+ {Opcode.MSG_MOVE_STOP_STRAFE, 0x3002},
+ {Opcode.MSG_MOVE_STOP, 0x320A},
+ {Opcode.MSG_MOVE_STOP_ASCEND, 0x7B00},
+ {Opcode.MSG_MOVE_STOP_TURN, 0x331E},
+ {Opcode.MSG_MOVE_STOP_PITCH, 0x7312},
+ {Opcode.MSG_MOVE_STOP_SWIM, 0x3802},
+ {Opcode.MSG_MOVE_TOGGLE_COLLISION_CHEAT, 0x7B04},
+ {Opcode.MSG_MOVE_UPDATE_MOUSE, 0x7914},
+ {Opcode.MSG_PETITION_DECLINE, 0x31E0},
+ {Opcode.MSG_PETITION_RENAME, 0x4005},
+ {Opcode.MSG_PVP_LOG_DATA, 0x5CB2},
+ {Opcode.MSG_QUERY_NEXT_MAIL_TIME, 0x0F04},
+ {Opcode.MSG_RANDOM_ROLL, 0x0905},
+ {Opcode.MSG_RAID_TARGET_UPDATE, 0x2C36},
+ {Opcode.MSG_SAVE_GUILD_EMBLEM, 0x2404},
+ {Opcode.MSG_SET_RAID_DIFFICULTY, 0x0614},
+ {Opcode.MSG_MOVE_SET_RUN_SPEED, 0x3DB5},
{Opcode.MSG_SET_DUNGEON_DIFFICULTY, 0x4925},
+ {Opcode.MSG_TABARDVENDOR_ACTIVATE, 0x6926},
+ {Opcode.MSG_VERIFY_CONNECTIVITY, 0x4F57},
+ {Opcode.SMSG_ACHIEVEMENT_EARNED, 0x4405},
{Opcode.SMSG_ACCOUNT_DATA_TIMES, 0x4B05},
+ {Opcode.SMSG_ACTION_BUTTONS, 0x38B5},
{Opcode.SMSG_ADDON_INFO, 0x2C14},
+ {Opcode.SMSG_AI_REACTION, 0x0637},
{Opcode.SMSG_ALL_ACHIEVEMENT_DATA, 0x58B1},
- {Opcode.SMSG_AURA_UPDATE, 0x6916},
+ {Opcode.SMSG_ALL_GUILD_ACHIEVEMENTS, 0x54B7},
+ {Opcode.SMSG_ARENA_TEAM_ROSTER, 0x2717},
+ {Opcode.SMSG_ATTACKERSTATEUPDATE, 0x0B25},
+ {Opcode.SMSG_ATTACKSTART, 0x2D15},
+ {Opcode.SMSG_ATTACKSTOP, 0x0934},
+ {Opcode.SMSG_ATTACKSWING_BADFACING, 0x0B36},
+ {Opcode.SMSG_ATTACKSWING_CANT_ATTACK, 0x0016},
+ {Opcode.SMSG_AURA_UPDATE, 0x4707},
+ {Opcode.SMSG_AURA_UPDATE_ALL, 0x6916},
{Opcode.SMSG_AUTH_CHALLENGE, 0x4542},
{Opcode.SMSG_AUTH_RESPONSE, 0x5DB6},
+ {Opcode.SMSG_BARBER_SHOP_RESULT, 0x6125},
+ {Opcode.SMSG_BATTLEFIELD_LIST, 0x71B5},
+ //{Opcode.SMSG_BATTLEFIELD_STATUS, 0x7202}, <--- 0x7202 ClientToServer
+ {Opcode.SMSG_BINDPOINTUPDATE, 0x0527},
+ {Opcode.SMSG_BUY_ITEM, 0x0F26},
+ {Opcode.SMSG_CALENDAR_COMMAND_RESULT, 0x6F36},
+ {Opcode.SMSG_CANCEL_AUTO_REPEAT, 0x6436},
{Opcode.SMSG_CHANNEL_NOTIFY, 0x0825},
+ {Opcode.SMSG_CHAR_CREATE, 0x2D05},
+ {Opcode.SMSG_CHAR_DELETE, 0x0304},
{Opcode.SMSG_CHAR_ENUM, 0x10B0},
+ {Opcode.SMSG_CLEAR_TARGET, 0x4B26},
{Opcode.SMSG_CLIENTCACHE_VERSION, 0x2734},
{Opcode.SMSG_CONTACT_LIST, 0x6017},
+ {Opcode.SMSG_CORPSE_RECLAIM_DELAY, 0x0D34},
{Opcode.SMSG_CREATURE_QUERY_RESPONSE, 0x6024},
{Opcode.SMSG_CRITERIA_UPDATE, 0x6E37},
{Opcode.SMSG_DB_REPLY, 0x38A4},
{Opcode.SMSG_DEFENSE_MESSAGE, 0x0314},
{Opcode.SMSG_DESTROY_OBJECT, 0x4724},
+ {Opcode.SMSG_DUEL_REQUESTED, 0x4504},
+ {Opcode.SMSG_DUEL_WINNER, 0x2527},
+ {Opcode.SMSG_EMOTE, 0x0A34},
+ {Opcode.SMSG_ENCHANTMENTLOG, 0x6035},
{Opcode.SMSG_EQUIPMENT_SET_LIST, 0x2E04},
+ {Opcode.SMSG_FEATURE_SYSTEM_STATUS, 0x3DB7},
+ {Opcode.SMSG_FLIGHT_SPLINE_SYNC, 0x0924},
{Opcode.SMSG_FORCE_SEND_QUEUED_PACKETS, 0x0140},
{Opcode.SMSG_GAMEOBJECT_QUERY_RESPONSE, 0x0915},
+ {Opcode.SMSG_GM_MESSAGECHAT, 0x6434},
{Opcode.SMSG_GOSSIP_COMPLETE, 0x0806},
{Opcode.SMSG_GOSSIP_MESSAGE, 0x2035},
+ {Opcode.SMSG_GOSSIP_POI, 0x4316},
+ {Opcode.SMSG_GUILD_XP, 0x3DB0},
+ {Opcode.SMSG_GROUP_LIST, 0x4C24},
+ {Opcode.SMSG_GROUP_SET_LEADER, 0x0526},
+ {Opcode.SMSG_GROUP_SET_ROLE, 0x39A6},
+ {Opcode.SMSG_GUILD_BANK_LIST, 0x78A5},
+ {Opcode.SMSG_GUILD_EVENT, 0x0705},
+ {Opcode.SMSG_GUILD_INVITE, 0x14A2},
+ {Opcode.SMSG_GUILD_QUERY_RESPONSE, 0x0E06},
+ {Opcode.SMSG_GUILD_RANK, 0x30B4},
+ {Opcode.SMSG_GUILD_ROSTER, 0x3DA3},
+ {Opcode.SMSG_GUILD_UPDATE_ROSTER, 0x18B0},
+ {Opcode.SMSG_HOTFIX_INFO, 0x19B5},
{Opcode.SMSG_INITIALIZE_FACTIONS, 0x4634},
+ {Opcode.SMSG_INITIAL_SPELLS, 0x0104},
+ {Opcode.SMSG_INIT_CURRENCY, 0x15A5},
+ {Opcode.SMSG_INIT_WORLD_STATES, 0x4C15},
+ {Opcode.SMSG_INSPECT_RESULTS_UPDATE, 0x4014},
+ {Opcode.SMSG_INVALIDATE_PLAYER, 0x6325},
+ {Opcode.SMSG_ITEM_ENCHANT_TIME_UPDATE, 0x0F27},
{Opcode.SMSG_LEARNED_DANCE_MOVES, 0x0E05},
+ {Opcode.SMSG_LEARNED_SPELL, 0x58A2},
{Opcode.SMSG_LFG_PLAYER_INFO, 0x4B36},
+ {Opcode.SMSG_LIST_INVENTORY, 0x7CB0},
+ {Opcode.SMSG_LOAD_CUF_PROFILES, 0x50B1},
{Opcode.SMSG_LOGIN_SETTIMESPEED, 0x4D15},
{Opcode.SMSG_LOGIN_VERIFY_WORLD, 0x2005},
{Opcode.SMSG_LOG_XPGAIN, 0x4514},
+ {Opcode.SMSG_LOGOUT_COMPLETE, 0x2137},
+ {Opcode.SMSG_LOGOUT_RESPONSE, 0x0524},
+ {Opcode.SMSG_LOOT_ALL_PASSED, 0x6237},
+ {Opcode.SMSG_LOOT_ITEM_NOTIFY, 0x6D15},
+ {Opcode.SMSG_LOOT_RELEASE_RESPONSE, 0x6D25},
+ {Opcode.SMSG_LOOT_REMOVED, 0x6817},
+ {Opcode.SMSG_LOOT_RESPONSE, 0x4C16},
+ {Opcode.SMSG_LOOT_ROLL, 0x6507},
+ {Opcode.SMSG_LOOT_ROLL_WON, 0x6617},
+ {Opcode.SMSG_MAIL_COMMAND_RESULT, 0x4927},
+ {Opcode.SMSG_MAIL_LIST_RESULT, 0x4217},
{Opcode.SMSG_MESSAGECHAT, 0x2026},
{Opcode.SMSG_MONSTER_MOVE, 0x6E17},
{Opcode.SMSG_MOTD, 0x0A35},
{Opcode.SMSG_NAME_QUERY_RESPONSE, 0x6E04},
+ {Opcode.SMSG_NEW_WORLD, 0x031A2},
{Opcode.SMSG_NPC_TEXT_UPDATE, 0x4436},
+ {Opcode.SMSG_PERIODICAURALOG, 0x0416},
+ {Opcode.SMSG_PET_GUIDS, 0x2D26},
{Opcode.SMSG_PET_MODE, 0x2235},
+ {Opcode.SMSG_PET_NAME_QUERY_RESPONSE, 0x4C37},
{Opcode.SMSG_PET_SPELLS, 0x4114},
+ {Opcode.SMSG_PLAY_SOUND, 0x2134},
+ {Opcode.SMSG_PLAYED_TIME, 0x6037},
+ {Opcode.SMSG_PLAYER_MOVE, 0x79A2},
{Opcode.SMSG_PONG, 0x4D42},
+ {Opcode.SMSG_POWER_UPDATE, 0x4A07},
+ {Opcode.SMSG_PVP_LOG_DATA, 0x54A3},
+ {Opcode.SMSG_QUERY_TIME_RESPONSE, 0x2124},
+ {Opcode.SMSG_QUERY_QUESTS_COMPLETED_RESPONSE, 0x6314},
+ {Opcode.SMSG_QUESTGIVER_QUEST_COMPLETE, 0x55A4},
{Opcode.SMSG_QUESTGIVER_OFFER_REWARD, 0x2427},
{Opcode.SMSG_QUESTGIVER_QUEST_DETAILS, 0x2425},
+ {Opcode.SMSG_QUESTGIVER_STATUS, 0x2115},
+ {Opcode.SMSG_QUESTGIVER_STATUS_MULTIPLE, 0x4F25},
+ {Opcode.SMSG_QUEST_POI_QUERY_RESPONSE, 0x6304},
{Opcode.SMSG_QUEST_QUERY_RESPONSE, 0x6936},
+ {Opcode.SMSG_QUESTUPDATE_ADD_KILL, 0x0D27},
+ {Opcode.SMSG_RAID_INSTANCE_INFO, 0x6626},
+ {Opcode.SMSG_RANDOMIZE_CHAR_NAME, 0x38B1},
+ {Opcode.SMSG_REALM_SPLIT, 0x2714},
+ {Opcode.SMSG_RECEIVED_MAIL, 0x4927},
{Opcode.SMSG_REDIRECT_CLIENT, 0x0942},
+ {Opcode.SMSG_REMOVED_SPELL, 0x4804},
+ {Opcode.SMSG_SELL_ITEM, 0x6105},
+ {Opcode.SMSG_SEND_UNLEARN_SPELLS, 0x4E25},
+ {Opcode.SMSG_SERVER_MESSAGE, 0x6C04},
+ {Opcode.SMSG_SET_FACTION_STANDING, 0x0126},
+ {Opcode.SMSG_SET_FLAT_SPELL_MODIFIER, 0x0224},
+ {Opcode.SMSG_SET_PCT_SPELL_MODIFIER, 0x2834},
{Opcode.SMSG_SET_PHASE_SHIFT, 0x70A0},
+ {Opcode.SMSG_SET_PROFICIENCY, 0x6207},
{Opcode.SMSG_SPELL_COOLDOWN, 0x4B16},
{Opcode.SMSG_SPELL_GO, 0x6E16},
{Opcode.SMSG_SPELL_START, 0x6415},
+ {Opcode.SMSG_SPELLDAMAGESHIELD, 0x2927},
+ {Opcode.SMSG_SPELLENERGIZELOG, 0x0414},
+ {Opcode.SMSG_SPELLHEALLOG, 0x2816},
+ {Opcode.SMSG_SPELLLOGEXECUTE, 0x0626},
+ {Opcode.SMSG_SPELLLOGMISS, 0x0625},
+ {Opcode.SMSG_SPELLNONMELEEDAMAGELOG, 0x4315},
+ {Opcode.SMSG_SPELLORDAMAGE_IMMUNE, 0x4507},
+ {Opcode.SMSG_STANDSTATE_UPDATE, 0x6F04},
+ {Opcode.SMSG_SUSPEND_TOKEN_RESPONSE, 0x14B1},
+ {Opcode.SMSG_SUSPEND_COMMS, 0x4140},
+ {Opcode.SMSG_TALENTS_INFO, 0x6F26},
+ {Opcode.SMSG_TAXINODE_STATUS, 0x2936},
{Opcode.SMSG_TEXT_EMOTE, 0x0B05},
+ {Opcode.SMSG_TIME_SYNC_REQ, 0x3CA4},
+ {Opcode.SMSG_THREAT_UPDATE, 0x4104},
+ {Opcode.SMSG_TRADE_STATUS, 0x5CA3},
+ {Opcode.SMSG_TRAINER_BUY_SUCCEEDED, 0x6A05},
{Opcode.SMSG_TRAINER_LIST, 0x4414},
+ {Opcode.SMSG_TRIGGER_CINEMATIC, 0x6C27},
{Opcode.SMSG_TUTORIAL_FLAGS, 0x0B35},
+ {Opcode.SMSG_UPDATE_ACCOUNT_DATA, 0x6837},
+ {Opcode.SMSG_UPDATE_ACCOUNT_DATA_COMPLETE, 0x2015},
+ {Opcode.SMSG_UPDATE_CURRENCY_WEEK_LIMIT, 0x70A7},
{Opcode.SMSG_UPDATE_OBJECT, 0x4715},
{Opcode.SMSG_UPDATE_WORLD_STATE, 0x4816},
+ {Opcode.SMSG_USERLIST_REMOVE, 0x2006},
+ {Opcode.SMSG_USERLIST_UPDATE, 0x0135},
+ {Opcode.SMSG_WARDEN_DATA, 0x31A0},
+ {Opcode.SMSG_WHO, 0x6907},
+ {Opcode.SMSG_WORLD_STATE_UI_TIMER_UPDATE, 0x4A14}
+
+ // 0x2915 Contains Criteria achievement - Received after SMSG_ACHIEVEMENT_EARNED
+ // 0x6236 SMSG_QUESTUPDATE_COMPLETE?
};
}
}
View
111 WowPacketParser/Loading/BinaryPacketReader.cs
@@ -49,16 +49,20 @@ void ReadHeader()
switch (_pktVersion)
{
case PktVersion.V2_1:
- SetBuild(_reader.ReadUInt16()); // client build
- _reader.ReadBytes(40); // session key
+ {
+ SetBuild(_reader.ReadUInt16()); // client build
+ _reader.ReadBytes(40); // session key
break;
+ }
case PktVersion.V2_2:
+ {
_reader.ReadByte(); // sniffer id
SetBuild(_reader.ReadUInt16()); // client build
_reader.ReadBytes(4); // client locale
_reader.ReadBytes(20); // packet key
_reader.ReadBytes(64); // realm name
break;
+ }
case PktVersion.V3_0:
{
var snifferId = _reader.ReadByte(); // sniffer id
@@ -79,6 +83,7 @@ void ReadHeader()
break;
}
case PktVersion.V3_1:
+ {
_reader.ReadByte(); // sniffer id
SetBuild(_reader.ReadUInt32()); // client build
_reader.ReadBytes(4); // client locale
@@ -88,6 +93,7 @@ void ReadHeader()
additionalLength = _reader.ReadInt32();
_reader.ReadBytes(additionalLength);
break;
+ }
default:
throw new Exception("not a pkt file!");
}
@@ -116,68 +122,73 @@ public Packet Read(int number, string fileName)
Direction direction;
byte[] data;
+ switch (_pktVersion)
{
- switch (_pktVersion)
+ case PktVersion.V2_1:
+ case PktVersion.V2_2:
{
- case PktVersion.V2_1:
- case PktVersion.V2_2:
- direction = (_reader.ReadByte() == 0xff) ? Direction.ServerToClient : Direction.ClientToServer;
- time = Utilities.GetDateTimeFromUnixTime(_reader.ReadInt32());
- _reader.ReadInt32(); // tick count
- length = _reader.ReadInt32();
-
- if (direction == Direction.ServerToClient)
- {
- opcode = _reader.ReadInt16();
- data = _reader.ReadBytes(length - 2);
- }
- else
- {
- opcode = _reader.ReadInt32();
- data = _reader.ReadBytes(length - 4);
- }
-
- break;
- case PktVersion.V3_0:
- case PktVersion.V3_1:
- direction = (_reader.ReadUInt32() == 0x47534d53) ? Direction.ServerToClient : Direction.ClientToServer;
-
- if (_pktVersion == PktVersion.V3_0)
- {
- time = Utilities.GetDateTimeFromUnixTime(_reader.ReadInt32());
- var tickCount = _reader.ReadUInt32();
- if (_startTickCount != 0)
- time = _startTime.AddMilliseconds(tickCount - _startTickCount);
- }
- else
- {
- _reader.ReadUInt32(); // session id
- var tickCount = _reader.ReadUInt32();
- time = _startTime.AddMilliseconds(tickCount - _startTickCount);
- }
+ direction = (_reader.ReadByte() == 0xff) ? Direction.ServerToClient : Direction.ClientToServer;
+ time = Utilities.GetDateTimeFromUnixTime(_reader.ReadInt32());
+ _reader.ReadInt32(); // tick count
+ length = _reader.ReadInt32();
- int additionalSize = _reader.ReadInt32();
- length = _reader.ReadInt32();
- _reader.ReadBytes(additionalSize);
+ if (direction == Direction.ServerToClient)
+ {
+ opcode = _reader.ReadInt16();
+ data = _reader.ReadBytes(length - 2);
+ }
+ else
+ {
opcode = _reader.ReadInt32();
data = _reader.ReadBytes(length - 4);
- break;
- default:
- throw new Exception("Incorrect pkt version");
+ }
+
+ break;
+ }
+ case PktVersion.V3_0:
+ case PktVersion.V3_1:
+ {
+ direction = (_reader.ReadUInt32() == 0x47534d53) ? Direction.ServerToClient : Direction.ClientToServer;
+
+ if (_pktVersion == PktVersion.V3_0)
+ {
+ time = Utilities.GetDateTimeFromUnixTime(_reader.ReadInt32());
+ var tickCount = _reader.ReadUInt32();
+ if (_startTickCount != 0)
+ time = _startTime.AddMilliseconds(tickCount - _startTickCount);
+ }
+ else
+ {
+ _reader.ReadUInt32(); // session id
+ var tickCount = _reader.ReadUInt32();
+ time = _startTime.AddMilliseconds(tickCount - _startTickCount);
+ }
+
+ int additionalSize = _reader.ReadInt32();
+ length = _reader.ReadInt32();
+ _reader.ReadBytes(additionalSize);
+ opcode = _reader.ReadInt32();
+ data = _reader.ReadBytes(length - 4);
+ break;
}
+ default:
+ throw new Exception("Incorrect pkt version");
}
+ // ignore opcodes that were not "decrypted" (usually because of
+ // a missing session key) (only applicable to 335 or earlier)
+ if (opcode >= 1312 && ClientVersion.Build <= ClientVersionBuild.V3_3_5a_12340)
+ return null;
+
var packet = new Packet(data, opcode, time, direction, number, fileName);
return packet;
}
public void Dispose()
{
- if (_reader != null)
- {
- _reader.BaseStream.Dispose();
- _reader.Dispose();
- }
+ if (_reader == null) return;
+ _reader.BaseStream.Dispose();
+ _reader.Dispose();
}
}
}
View
28 WowPacketParser/Loading/SniffFile.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Diagnostics;
+using System.Globalization;
using System.IO;
using System.Text;
using WowPacketParser.Enums;
@@ -21,7 +22,7 @@ public class SniffFile
public readonly string FileName;
private readonly Statistics _stats;
public readonly string LogPrefix;
- public LinkedList<IPacketProcessor> processors = new LinkedList<IPacketProcessor>();
+ public LinkedList<IPacketProcessor> _processors = new LinkedList<IPacketProcessor>();
public SniffFile(string fileName, Tuple<int, int> number = null)
{
@@ -67,16 +68,16 @@ public void Process()
// initialize processors
IPacketProcessor proc = new TextFileOutput();
if (proc.Init(this))
- processors.AddLast(proc);
+ _processors.AddLast(proc);
proc = new SQLFileOutput();
if (proc.Init(this))
- processors.AddLast(proc);
+ _processors.AddLast(proc);
proc = new RawFileOutput();
if (proc.Init(this))
- processors.AddLast(proc);
+ _processors.AddLast(proc);
proc = new SplitRawFileOutput();
if (proc.Init(this))
- processors.AddLast(proc);
+ _processors.AddLast(proc);
Storage.ClearContainers();
@@ -103,15 +104,15 @@ public void Process()
continue;
ProcessPacket(packet);
-
+
++packetCount;
// finish if read packet count reached max
if (Settings.ReaderFilterPacketsNum > 0 && packetCount == Settings.ReaderFilterPacketsNum)
break;
}
// finalize processors
- foreach (var procs in processors)
+ foreach (var procs in _processors)
{
procs.Finish();
}
@@ -133,6 +134,15 @@ public void Process()
}
}
+ public string GetHeader()
+ {
+ return "# TrinityCore - WowPacketParser" + Environment.NewLine +
+ "# File name: " + Path.GetFileName(FileName) + Environment.NewLine +
+ "# Detected build: " + ClientVersion.Build + Environment.NewLine +
+ "# Parsing date: " + DateTime.Now.ToString(CultureInfo.InvariantCulture) +
+ Environment.NewLine;
+ }
+
private bool CheckReadFilters(int opc)
{
var opcodeName = Opcodes.GetOpcodeName(opc);
@@ -157,7 +167,7 @@ private void ProcessPacket(Packet packet)
ProcessElem(packet, "Packet");
- foreach (var proc in processors)
+ foreach (var proc in _processors)
{
proc.ProcessPacket(packet);
}
@@ -169,7 +179,7 @@ private void ProcessPacket(Packet packet)
public void ProcessElem(Object data, string name)
{
var t = data.GetType();
- foreach (var proc in processors)
+ foreach (var proc in _processors)
{
proc.ProcessData(name, data, t);
}
View
4 WowPacketParser/Misc/ClientVersion.cs
@@ -6,8 +6,6 @@ namespace WowPacketParser.Misc
{
public static class ClientVersion
{
- private static ClientType _expansion;
-
// Kept in sync with http://www.wowwiki.com/Public_client_builds
private static readonly KeyValuePair<ClientVersionBuild, DateTime>[] _clientBuilds = new []
{
@@ -69,6 +67,8 @@ public static class ClientVersion
new KeyValuePair<ClientVersionBuild, DateTime>(ClientVersionBuild.V4_3_4_15595, new DateTime(2012, 4, 17))
};
+ private static ClientType _expansion;
+
public static ClientVersionBuild Build { get; private set; }
public static int BuildInt
View
34 WowPacketParser/Misc/ConcurrentMultiDictionary.cs
@@ -1,34 +0,0 @@
-using System.Collections.Concurrent;
-using System.Collections.Generic;
-
-namespace WowPacketParser.Misc
-{
- public class ConcurrentMultiDictionary<TKey, TValue> : ConcurrentDictionary<TKey, List<TValue>>
- {
- public bool TryAdd(TKey key, TValue value)
- {
- List<TValue> container;
- if (!TryGetValue(key, out container))
- {
- container = new List<TValue>();
- if (!TryAdd(key, container))
- return false;
- }
-
- container.Add(value);
- return true;
- }
-
- public bool ContainsValue(TKey key, TValue value)
- {
- List<TValue> container;
- return TryGetValue(key, out container) && container.Contains(value);
- }
-
- public List<TValue> GetValues(TKey key)
- {
- List<TValue> container;
- return TryGetValue(key, out container) ? container : new List<TValue>();
- }
- }
-}
View
2 WowPacketParser/Misc/MovementInfo.cs
@@ -22,5 +22,7 @@ public sealed class MovementInfo
public float RunSpeed;
public UInt32 VehicleId; // Not exactly related to movement but it is read in ReadMovementUpdateBlock
+
+ public bool HasWpsOrRandMov; // waypoints or random movement
}
}
View
14 WowPacketParser/Misc/Settings.cs
@@ -28,6 +28,7 @@ public static class Settings
public static readonly string SQLFileName = GetString("SQLFileName", string.Empty);
public static readonly bool ShowEndPrompt = GetBoolean("ShowEndPrompt", false);
public static readonly bool LogErrors = GetBoolean("LogErrors", false);
+ public static readonly bool LogPacketErrors = GetBoolean("LogPacketErrors", false);
public static readonly bool DebugReads = GetBoolean("DebugReads", false);
public static readonly bool ParsingLog = GetBoolean("ParsingLog", false);
@@ -58,7 +59,7 @@ private static KeyValueConfigurationCollection GetConfiguration()
var opt = args[i];
if (opt[0] != '/')
break;
-
+
// analyze options
var optname = opt.Substring(1);
switch (optname)
@@ -113,7 +114,16 @@ private static string GetString(string key, string defValue)
private static string[] GetStringList(string key, string[] defValue)
{
var s = SettingsCollection[key];
- return (s == null || s.Value == null) ? defValue : s.Value.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
+
+ if (s == null || s.Value == null)
+ return defValue;
+
+ var arr = s.Value.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
+
+ for (var i = 0; i < arr.Length; i++)
+ arr[i] = arr[i].Trim();
+
+ return arr;
}
private static bool GetBoolean(string key, bool defValue)
View
124 WowPacketParser/Parsing/Handler.cs.orig
@@ -0,0 +1,124 @@
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Reflection;
+using WowPacketParser.Enums;
+using WowPacketParser.Enums.Version;
+using WowPacketParser.Misc;
+using System.Text;
+using System.Collections.Specialized;
+using System;
+using Guid = WowPacketParser.Misc.Guid;
+
+namespace WowPacketParser.Parsing
+{
+ public static class Handler
+ {
+ private static Dictionary<int, Action<Packet>> LoadHandlers()
+ {
+ var handlers = new Dictionary<int, Action<Packet>>(1000);
+
+ var asm = Assembly.GetExecutingAssembly();
+ var types = asm.GetTypes();
+ foreach (var type in types)
+ {
+ //if (type.Namespace != "WowPacketParser.Parsing.Parsers")
+ // continue;
+
+ if (!type.IsAbstract)
+ continue;
+
+ if (!type.IsPublic)
+ continue;
+
+ var methods = type.GetMethods();
+
+ foreach (var method in methods)
+ {
+ if (!method.IsPublic)
+ continue;
+
+ var attrs = (ParserAttribute[])method.GetCustomAttributes(typeof(ParserAttribute),
+ false);
+
+ if (attrs.Length <= 0)
+ continue;
+
+ var parms = method.GetParameters();
+
+ if (parms.Length <= 0)
+ continue;
+
+ if (parms[0].ParameterType != typeof(Packet))
+ continue;
+
+ foreach (var attr in attrs)
+ {
+ var opc = attr.Opcode;
+ if (opc == 0)
+ continue;
+
+ var del = (Action<Packet>)Delegate.CreateDelegate(typeof(Action<Packet>), method);
+
+ if (handlers.ContainsKey(opc))
+ {
+ Trace.WriteLine(string.Format("Error: (Build: {0}) tried to overwrite delegate for opcode {1} ({2}); new handler: {3}; old handler: {4}",
+ ClientVersion.Build, opc, Opcodes.GetOpcodeName(opc), del.Method, handlers[opc].Method));
+ continue;
+ }
+
+ handlers[opc] = del;
+ }
+ }
+ }
+
+ return handlers;
+ }
+
+ private static readonly Dictionary<int, Action<Packet>> Handlers = LoadHandlers();
+
+ public static void Parse(Packet packet, bool checkLength = true)
+ {
+ var opcode = packet.Opcode;
+
+<<<<<<< HEAD
+=======
+ packet.WriteLine(packet.GetHeader(isMultiple));
+
+>>>>>>> 9e7798032d3167787819160a10216ccd3996dfce
+ if (opcode == 0)
+ return;
+
+ Action<Packet> handler;
+ if (Handlers.TryGetValue(opcode, out handler))
+ {
+ try
+ {
+ handler(packet);
+