GithubHelp home page GithubHelp logo

trinitycore / wowpacketparser Goto Github PK

View Code? Open in Web Editor NEW
399.0 98.0 348.0 66.07 MB

World of Warcraft Packet Parser

License: GNU General Public License v3.0

C# 100.00% Batchfile 0.01% Shell 0.01% Dockerfile 0.01%
sniff wow parser dotnet c-sharp wpp hacktoberfest

wowpacketparser's People

Contributors

aokromes avatar bandysc avatar bootz avatar carbenium avatar chaodhib avatar dduarte avatar domgries avatar drehsan avatar epicurus4 avatar funjoker avatar horn avatar joschiwald avatar kaelima avatar killerwife avatar kinzcool avatar mdx7 avatar meji46 avatar ovahlord avatar qaston avatar shauren avatar skyfire avatar star-lion avatar streetrat avatar subv avatar therzok avatar traesh avatar vincent-michael avatar warpten avatar xurxogr avatar zorix avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wowpacketparser's Issues

some "witherrors" client 4.3.4

ServerToClient: 26423 (0x6737)
ServerToClient: SMSG_ADDON_INFO (0x2C14)

new ones:

ServerToClient: SMSG_PET_ADDED (0x3CA5) Length: 24 Time: 08/05/2012 19:19:27.406 Number: 100
ClientToServer: CMSG_ARENA_TEAM_DISBAND (0x6504) Length: 4 Time: 08/04/2012 15:42:10.356 Number: 114382
ServerToClient: SMSG_ARENA_TEAM_INVITE (0x0F36) Length: 22 Time: 08/04/2012 15:44:28.214 Number: 141513
ClientToServer: CMSG_ARENA_TEAM_ACCEPT (0x2A25) Length: 0 Time: 08/04/2012 15:44:31.708 Number: 142309
ClientToServer: CMSG_ARENA_TEAM_LEAVE (0x0E16) Length: 4 Time: 08/04/2012 15:49:43.055 Number: 179492

Missing Output For Creature_Template

Hi There,

if you take a 4.3.4 sniff and apply config sql filter to output only Creature_Template it does not produce this query data:

INSERT INTO creature_template (entry, gossip_menu_id, minlevel, maxlevel, faction_A, faction_H, npcflag, speed_walk, speed_run, baseattacktime, rangeattacktime, unit_class, unit_flags, unit_flags2, dynamicflags, VehicleId, HoverHeight) VALUES

but if you select all data then you do get this output. It is possible the data is mis-placed under a different output filter type but I have not tested each output type to see if the data is produced.

System.OverflowException

6576527

[Neck] Unk UInt32: 580888968
System.OverflowException
Value was either too large or too small for an Int32.
   at System.Convert.ToInt32(Int64 value)
   at WowPacketParser.Misc.Packet.ReadEntry[T](StoreNameType type, String name, Object[] indexes) in 
WowPacketParser\WowPacketParser\Misc\PacketReads.cs:line 165
   at WowPacketParser.Misc.Packet.ReadUInt32[T](String name, Object[] idx) in WowPacketParser\WowPacketParser\Misc\PacketReads.cs:line 236
   at WowPacketParser.Parsing.Parsers.TalentHandler.ReadInspectPart(Packet packet) in WowPacketParser\WowPacketParser\Parsing\Parsers\TalentHandler.cs:line 39
   at WowPacketParser.Parsing.Parsers.TalentHandler.HandleInspectTalent(Packet packet) in WowPacketParser\WowPacketParser\Parsing\Parsers\TalentHandler.cs:line 80
   at WowPacketParser.Parsing.Handler.Parse(Packet packet, Boolean isMultiple) in WowPacketParser\WowPacketParser\Parsing\Handler.cs:line 146
## 

dbc's not found error.

following Error displays on the console when parsing long pkt files.

Loading DBCs...
DBC loading failed at exception System.IO.FileNotFoundException. DBC will be dis
abled.
Could not find file 'C:\Program Files (x86)\World of Warcraft\Spell.dbc'.
Finished loading DBCs - 0 Minutes, 0 Seconds and 23 Milliseconds.

15050_2011-12-29_01-26-37_00079F98.pkt: Opening file
15050_2011-12-29_01-26-37_00079F98.pkt: Reading packets...

roadmaster

A lot of 3.3.5a opcodes gives error on WowPacketParser\Misc\WowGuid.cs:line 249

ServerToClient: SMSG_SPELL_START (0x0131) Length: 32 ConnIdx: 0 Time: 09/03/2010 21:41:00.000 Number: 129495
System.ArgumentOutOfRangeException
Specified argument was out of the range of valid values.
at WowPacketParser.Misc.WowGuid64.GetHighType() in c:\Users\Aokromes\Desktop\src\WowPacketParser\WowPacketParser\Misc\WowGuid.cs:line 249
at WowPacketParser.Misc.WowGuid.HasEntry() in c:\Users\Aokromes\Desktop\src\WowPacketParser\WowPacketParser\Misc\WowGuid.cs:line 15
at WowPacketParser.Misc.Filters.CheckFilter(WowGuid guid) in c:\Users\Aokromes\Desktop\src\WowPacketParser\WowPacketParser\Misc\Filters.cs:line 68
at WowPacketParser.Misc.Packet.ReadPackedGuid() in c:\Users\Aokromes\Desktop\src\WowPacketParser\WowPacketParser\Misc\PacketReads.cs:line 27
at WowPacketParser.Misc.Packet.ReadPackedGuid(String name, Object[] indexes) in c:\Users\Aokromes\Desktop\src\WowPacketParser\WowPacketParser\Misc\PacketReads.cs:line 349
at WowPacketParser.Parsing.Parsers.SpellHandler.HandleSpellStart(Packet packet) in c:\Users\Aokromes\Desktop\src\WowPacketParser\WowPacketParser\Parsing\Parsers\SpellHandler.cs:line 730
at WowPacketParser.Parsing.Handler.Parse(Packet packet, Boolean isMultiple) in c:\Users\Aokromes\Desktop\src\WowPacketParser\WowPacketParser\Parsing\Handler.cs:line 146

Some "tried to overwrite delegate for opcode" on wpp f4cf053

Error: (Build: V4_2_2_14545) tried to overwrite delegate for opcode 2807 (CMSG_TRAINER_BUY_SPELL); new handler: Void HandleTrainerBuySpell(WowPacketParser.Misc.Packet); old handler: Void HandleServerTrainerBuy(WowPacketParser.Misc.Packet)
Error: (Build: V4_2_2_14545) tried to overwrite delegate for opcode 51338 (CMSG_GROUP_INVITE); new handler: Void HandleGroupInvite422(WowPacketParser.Misc.Packet); old handler: Void HandleGroupInvite(WowPacketParser.Misc.Packet)
Error: (Build: V4_2_2_14545) tried to overwrite delegate for opcode 24830 (SMSG_MOVE_KNOCK_BACK); new handler: Void HandleMoveKnockBack422(WowPacketParser.Misc.Packet); old handler: Void HandleMoveKnockBack(WowPacketParser.Misc.Packet)
Error: (Build: V4_2_2_14545) tried to overwrite delegate for opcode 24796 (SMSG_ITEM_REFUND_RESULT); new handler: Void HandleItemRefundResult422(WowPacketParser.Misc.Packet); old handler: Void HandleItemRefundResult(WowPacketParser.Misc.Packet)
Error: (Build: V4_2_2_14545) tried to overwrite delegate for opcode 4481 (SMSG_AUTH_CHALLENGE); new handler: Void HandleServerAuthChallenge422(WowPacketParser.Misc.Packet); old handler: Void HandleServerAuthChallenge(WowPacketParser.Misc.Packet)
Error: (Build: V4_2_2_14545) tried to overwrite delegate for opcode 4121 (CMSG_AUTH_SESSION); new handler: Void HandleAuthSession422(WowPacketParser.Misc.Packet); old handler: Void HandleAuthSession(WowPacketParser.Misc.Packet)
Error: (Build: V4_2_2_14545) tried to overwrite delegate for opcode 384 (SMSG_REDIRECT_CLIENT); new handler: Void HandleRedirectClient422(WowPacketParser.Misc.Packet); old handler: Void HandleRedirectClient(WowPacketParser.Misc.Packet)
Error: (Build: V4_2_2_14545) tried to overwrite delegate for opcode 4153 (CMSG_REDIRECTION_AUTH_PROOF); new handler: Void HandleRedirectionAuthProof422(WowPacketParser.Misc.Packet); old handler: Void HandleRedirectionAuthProof(WowPacketParser.Misc.Packet)
Error: (Build: V4_2_2_14545) tried to overwrite delegate for opcode 13038 (SMSG_BATTLEFIELD_MGR_STATE_CHANGE); new handler: Void HandleBattlefieldMgrStateChanged(WowPacketParser.Misc.Packet); old handler: Void HandleBattlefieldMgrStateChanged406(WowPacketParser.Misc.Packet)
Error: (Build: V4_2_2_14545) tried to overwrite delegate for opcode 26332 (SMSG_BATTLEFIELD_MGR_ENTERED); new handler: Void HandleBattlefieldMgrEntered(WowPacketParser.Misc.Packet); old handler: Void HandleBattlefieldMgrEntered406(WowPacketParser.Misc.Packet)
Error: (Build: V4_2_2_14545) tried to overwrite delegate for opcode 24668 (SMSG_ARENA_TEAM_COMMAND_RESULT); new handler: Void HandleArenaTeamCommandResult406(WowPacketParser.Misc.Packet); old handler: Void HandleArenaTeamCommandResult(WowPacketParser.Misc.Packet)
Error: (Build: V4_2_2_14545) tried to overwrite delegate for opcode 59116 (SMSG_ALL_ACHIEVEMENT_DATA); new handler: Void HandleAllAchievementData406(WowPacketParser.Misc.Packet); old handler: Void HandleAllAchievementData(WowPacketParser.Misc.Packet)
Error: (Build: V4_2_2_14545) tried to overwrite delegate for opcode 59116 (SMSG_ALL_ACHIEVEMENT_DATA); new handler: Void HandleAllAchievementData422(WowPacketParser.Misc.Packet); old handler: Void HandleAllAchievementData(WowPacketParser.Misc.Packet)
Error: (Build: V4_2_2_14545) tried to overwrite delegate for opcode 40150 (SMSG_QUESTUPDATE_COMPLETE); new handler: Void HandleQuestUpdateComplete422(WowPacketParser.Misc.Packet); old handler: Void HandleQuestForceRemoved(WowPacketParser.Misc.Packet)
Error: (Build: V4_2_2_14545) tried to overwrite delegate for opcode 52451 (CMSG_QUESTGIVER_COMPLETE_QUEST); new handler: Void HandleQuestcompleteQuest422(WowPacketParser.Misc.Packet); old handler: Void HandleQuestcompleteQuest(WowPacketParser.Misc.Packet)

OfferRewardText and RequestItemsText issue

I not know because you have deployed outside from QuestTemplate.cs, OfferRewardText and RequestItemsText fields, and have gotten into QuestMisc.cs. Removing them from the main script quest_template.

This creates a problem when inserted in the table, because the information will be deleted of the relating ID.

If these columns are part of the table structure quest_template from the client 3.3.5a? Should be implemented in the main script and not how miscellaneous.

Best regards

sniffer / parser

i'm looking for a 5.x sniffer, working with the parser available on TrinityCore / WowPacketParser. is there any ?
because sniffer of arctium don't work :/

CompletedText missing

CompleteText isn't only for the client 4.x you must enable in the script QuestTemplate.cs line 138, check this in the TDB quest_templete structure.

Fields names from WPP not in sync with DB

Table item_template : has field ItemNameDescriptionID = DB has flagsCustom as second to last field.
Table Npc_text : all probability fields are :ProbX in DB
Table quest_request_items : Fields CompEmoteType and CompEmoteDelay are named EmoteOnComplete and EmoteOnCompleteDelay in DB
Table broadcast_text Field UnkMoP2 : DB has Unk2

Outdated :D

It's not able to parse the sniff packet from 5.4.0 (17371).

WPP - TC DB NPC_Trainer field name mismatch

Names from TCDB :
INSERT INTO npc_trainer (ID, SpellID, MoneyCost, ReqSkillLine, ReqSkillRank, ReqLevel) VALUES

Names from WPP :
INSERT INTO npc_trainer (entry, spell, spellcost, reqskill, reqskillvalue, reqlevel) VALUES

[Suggestion] sanitize personal info from packet parses

By @lfrost on http://www.trinitycore.org/f/topic/11075-suggestion-sanitize-personal-info-from-packet-parses/

Honestly, I don't even like the idea of submitting them on a write only forum. I don't like the idea of putting that information out there beyond my control and into the hands of people I don't know at all. I get that the forum is write only in order to prevent unsavory characters from having access to it. But what guarantee is there that the people who DO have access to it are not going to misuse it? What guarantee is there that some talented programmer from Blizzard hasn't wormed his way into the developing process of this open-source project?

My suggestion is that the code for the PacketParser be altered in such a way that it verifies that the data is genuine and then replaces personal (and completely irrelevant) information with garbled text, x's, or something else that cannot be traced back to a source. There is no reason that anyone developing this project could possibly have to need to know my server name, account name, or the names and levels of all my toons.

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/8803576-suggestion-sanitize-personal-info-from-packet-parses?utm_campaign=plugin&utm_content=tracker%2F457228&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F457228&utm_medium=issues&utm_source=github).

Gameobject not found on sniffs

I not sure if this is an issue.
The object 175124(Rookery Egg) type Trap is spawned on Blackrock Spire, it has the spell http://wotlk.openwow.com/spell=16474 on data3, this spell will summon another object: 175622 which also a trap and have the spell 15745 on data3 which summon the npc:10161

The problem is the object 175622 and the spell 15745 are not shown on sniffs (Even the template can not be found). On the 6.x DB the template is there, but I'm not sure if it's correct as the trap remain spawned after it cast the spell. Also need to know what happen when this gob spawn to finish the script.

Fix Bad SQL output for modelid

diff --git a/WowPacketParser/SQL/Builders/UnitMisc.cs b/WowPacketParser/SQL/Builders/UnitMisc.cs
index 6643b72..d09bbf0 100644
--- a/WowPacketParser/SQL/Builders/UnitMisc.cs
+++ b/WowPacketParser/SQL/Builders/UnitMisc.cs
@@ -120,7 +120,7 @@ namespace WowPacketParser.SQL.Builders
                         if (!Utilities.EqualValues(modelsDb[model.Key].Item3, model.Value.Item3))
                             row.AddValue("gender", model.Value.Item3);

-                        row.AddWhere("entry", model.Key);
+                        row.AddWhere("modelid", model.Key);
                         row.Table = tableName;

                         if (row.ValueCount != 0)
@@ -129,7 +129,7 @@ namespace WowPacketParser.SQL.Builders
                     else // insert new
                     {
                         var row = new QueryBuilder.SQLInsertRow();
-                        row.AddValue("entry", model.Key);
+                        row.AddValue("modelid", model.Key);
                         row.AddValue("bounding_radius", model.Value.Item1);
                         row.AddValue("combat_reach", model.Value.Item2);
                         row.AddValue("gender", model.Value.Item3);
@@ -139,7 +139,7 @@ namespace WowPacketParser.SQL.Builders
                 else // no db values, simply do inserts
                 {
                     var row = new QueryBuilder.SQLInsertRow();
-                    row.AddValue("entry", model.Key);
+                    row.AddValue("modelid", model.Key);
                     row.AddValue("bounding_radius", model.Value.Item1);
                     row.AddValue("combat_reach", model.Value.Item2);
                     row.AddValue("gender", model.Value.Item3);

Wrong structures WPP & TC - 4.2.2

  • CMSG_LEARN_PREVIEW_TALENTS - 57059,
  • CMSG_USE_ITEM - 55530,
  • CMSG_WARDEN_DATA - 22599,
  • MSG_MOVE_JUMP - 37413,
  • MSG_MOVE_SET_RUN_MODE - 8612,
  • MSG_MOVE_SET_WALK_MODE - 9380,
  • MSG_MOVE_START_ASCEND - 1572,
  • MSG_MOVE_START_BACKWARD - 4261,
  • MSG_MOVE_START_DESCEND - 9764,
  • MSG_MOVE_START_FORWARD - 41124,
  • MSG_MOVE_START_PITCH_DOWN - 8229,
  • MSG_MOVE_START_PITCH_UP - 38180,
  • MSG_MOVE_START_STRAFE_LEFT - 40996,
  • MSG_MOVE_START_STRAFE_RIGHT - 37157,
  • MSG_MOVE_START_SWIM - 34212,
  • MSG_MOVE_START_TURN_LEFT - 421,
  • MSG_MOVE_START_TURN_RIGHT - 46756,
  • MSG_MOVE_STOP - 41892,
  • MSG_MOVE_STOP_ASCEND - 4389,
  • MSG_MOVE_STOP_PITCH - 33829,
  • MSG_MOVE_STOP_STRAFE - 293,
  • MSG_MOVE_STOP_SWIM - 46116,
  • MSG_MOVE_STOP_TURN - 37028,
  • SMSG_ADDON_INFO - 39011,
  • SMSG_BATTLEFIELD_LIST - 46670,
  • SMSG_COMPRESSED_CHAR_ENUM - 14346,
  • SMSG_COMPRESSED_UPDATE_OBJECT - 7363,
  • SMSG_INSPECT_TALENT - 18671,
  • SMSG_MONSTER_MOVE - 19539,
  • SMSG_MONSTER_MOVE_TRANSPORT - 35067,
  • SMSG_PARTY_MEMBER_STATS - 56410,
  • SMSG_PARTY_MEMBER_STATS_FULL - 3807,
  • SMSG_QUESTGIVER_QUEST_DETAILS - 52831,
  • SMSG_REDIRECT_CLIENT - 384,
  • SMSG_SET_FLAT_SPELL_MODIFIER - 20210,
  • SMSG_SET_PCT_SPELL_MODIFIER - 18523,
  • SMSG_SET_PHASE_SHIFT - 8268,
  • SMSG_WARDEN_DATA - 18511,
  • SMSG_SHOW_BANK

SPELL_GO

In 5.2.0.16769:

SPELL_GO: 0x0C10
Endianness: Little Endian

4.3.4 DB/Quest: 'Phasing'+ 'Spawns' + 'Script' for Assault on the Rotbrain Encampment

TrinityCore rev. ad71d227d3e6+ 2014-12-19 23:32:40 +0000 (4.3.4 branch) (Win64, RelWithDebInfo)
Some NPC action is missing here.

Rotbrain Magus and Rotbrain Berserker should attack the Deathguard Protector.
Moreover the spawns for the Deathguard Protector are missing.
This is a phasing issue.

Some informations:
The 'Rotbrain Berserker' should have faction 7(?)(even something neutral) if you are not on the Quest. Assault on the Rotbrain Encampment and if you join the area 'Rotbrain Encampment'.

If you are on the Quest and if you join the area:Rotbrain Encampment, the npcs: 49422 + 49423 getfaction 14 and the Deathguard Protector will spawn.

Videos:
https://www.youtube.com/watch?v=RUDLcCHNB2k&feature=youtu.be
https://www.youtube.com/watch?v=1QMrIss3rDM&feature=youtu.be

As a workaround i made this:
(spawns from sniff)

DELETE FROM `creature_template_addon` WHERE `entry` IN (49422, 49423, 49428);
INSERT INTO `creature_template_addon` (`entry`, `mount`, `bytes1`, `bytes2`, `auras`) VALUES
(49428, 0, 0x0, 0x1, ''), -- 49428
(49422, 0, 0x0, 0x1, ''), -- 49422
(49423, 0, 0x0, 0x1, ''); -- 49423

UPDATE `creature_template` SET `faction`=14 WHERE  `entry` IN (49423, 49422);
UPDATE `creature` SET `spawndist`=5, `MovementType`=1 WHERE  `id` IN (49423, 49422);

SET @CGUID := 125784;
DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+14;
INSERT INTO `creature` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `MovementType`) VALUES
(@CGUID+0, 49428, 0, 1, 1, 1823.923, 1372.103, 76.60736, 1.402793, 120, 5, 1), -- 49428 (Area: 4915)
(@CGUID+1, 49428, 0, 1, 1, 1794.97, 1382.877, 84.6305, 4.60171, 120, 5, 1), -- 49428 (Area: 4915)
(@CGUID+2, 49428, 0, 1, 1, 1820.018, 1367.521, 78.9035, 0.2997093, 120, 5, 1), -- 49428 (Area: 4915) (Auras: )
(@CGUID+3, 49428, 0, 1, 1, 1822.106, 1310.889, 91.91973, 5.365077, 120, 5, 1), -- 49428 (Area: 4915)
(@CGUID+4, 49428, 0, 1, 1, 1824.259, 1311.05, 91.12542, 4.735599, 120, 5, 1), -- 49428 (Area: 4915)
(@CGUID+5, 49428, 0, 1, 1, 1808.177, 1296.237, 98.6228, 5.371338, 120, 5, 1), -- 49428 (Area: 4915)
(@CGUID+6, 49428, 0, 1, 1, 1774.688, 1315.333, 97.45138, 4.739421, 120, 5, 1), -- 49428 (Area: 4915) (Auras: )
(@CGUID+7, 49428, 0, 1, 1, 1746.114, 1379.567, 97.68356, 3.777788, 120, 5, 1), -- 49428 (Area: 4915)
(@CGUID+8, 49428, 0, 1, 1, 1807.528, 1295.454, 98.98714, 5.653165, 120, 5, 1), -- 49428 (Area: 4915)
(@CGUID+9, 49428, 0, 1, 1, 1772.201, 1314.28, 98.37026, 5.540217, 120, 5, 1), -- 49428 (Area: 4915)
(@CGUID+10, 49428, 0, 1, 1, 1743.845, 1337.829, 102.818, 5.147284, 120, 5, 1), -- 49428 (Area: 4915) (Auras: )
(@CGUID+11, 49428, 0, 1, 1, 1746.006, 1336.654, 102.1257, 3.900826, 120, 5, 1), -- 49428 (Area: 4915) (Auras: )
(@CGUID+12, 49428, 0, 1, 1, 1745.031, 1310.813, 105.6309, 4.683763, 120, 5, 1), -- 49428 (Area: 4915) (Auras: )
(@CGUID+13, 49428, 0, 1, 1, 1742.564, 1310.681, 106.8313, 5.435596, 120, 5, 1), -- 49428 (Area: 4915)
(@CGUID+14, 49428, 0, 1, 1, 1710.078, 1338.659, 116.3551, 4.658968, 120, 5, 1); -- 49428 (Area: 4915) (Auras: )

-- Rotbrain Berserker SAI
SET @ENTRY := 49422;
UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
(@ENTRY,0,0,0,4,0,10,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Rotbrain Berserker - On Aggro - Say Line 0"),
(@ENTRY,0,1,0,0,0,100,0,10000,10000,10000,10000,11,79881,0,0,0,0,0,2,0,0,0,0,0,0,0,"Rotbrain Berserker - In Combat - Cast 'Slam'"),
(@ENTRY,0,2,0,0,0,100,0,20000,20000,20000,20000,75,63227,0,0,0,0,0,1,0,0,0,0,0,0,0,"Rotbrain Berserker - In Combat - Add Aura 'Enrage'");

-- Rotbrain Magus SAI
SET @ENTRY := 49423;
UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
(@ENTRY,0,0,0,4,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Rotbrain Magus - On Aggro - Say Line 0"),
(@ENTRY,0,1,0,0,0,100,0,20000,20000,20000,20000,11,11962,64,0,0,0,0,2,0,0,0,0,0,0,0,"Rotbrain Magus - In Combat - Cast 'Immolate'"),
(@ENTRY,0,2,0,0,0,100,0,4000,4000,4000,4000,11,9053,64,0,0,0,0,2,0,0,0,0,0,0,0,"Rotbrain Magus - In Combat - Cast 'Fireball'");

-- Marshal Redpath SAI
SET @ENTRY := 49424;
UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
(@ENTRY,0,0,0,4,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Marshal Redpath - On Aggro - Say Line 0"),
(@ENTRY,0,1,0,61,0,100,0,0,0,0,0,11,83015,2,0,0,0,0,2,0,0,0,0,0,0,0,"Marshal Redpath - MISSING LINK - Cast 'Heroic Leap'"),
(@ENTRY,0,2,0,0,0,100,0,20000,20000,20000,20000,11,83016,0,0,0,0,0,1,0,0,0,0,0,0,0,"Marshal Redpath - In Combat - Cast 'Whirlwind'");

DELETE FROM `creature_text` WHERE `entry` IN (49424, 49422, 49423);
INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES 
(49422, 0, 0, 'I\'ll kill you!', 12, 0, 100, 0, 0, 0, 0, 0, 'Rotbrain Berserker'),
(49422, 0, 1, 'Look what they\'ve done to me!', 12, 0, 100, 0, 0, 0, 0, 0, 'Rotbrain Berserker'),
(49422, 0, 2, 'Who am I?', 12, 0, 100, 0, 0, 0, 0, 0, 'Rotbrain Berserker'),
(49423, 0, 0, 'I\'ll kill you!', 12, 0, 100, 0, 0, 0, 0, 0, 'Rotbrain Magus'),
(49423, 0, 1, 'Look what they\'ve done to me!', 12, 0, 100, 0, 0, 0, 0, 0, 'Rotbrain Magus'),
(49423, 0, 2, 'Who am I?', 12, 0, 100, 0, 0, 0, 0, 0, 'Rotbrain Magus'),
(49424, 0, 0, 'BLEEAAAGGHHH! I\'m a monster, don\'t look at me!?', 14, 0, 100, 0, 0, 0, 0, 0, 'Rotbrain Magus');

UPDATE `creature_template` SET `AIName`='SmartAI', `ScriptName`='npc_attack_generic' WHERE  `entry` IN (49424, 49423, 49422, 49428); /* npc_attack_generic*/

with coresupport:

class npc_attack_generic : public CreatureScript
{
public:
    npc_attack_generic() : CreatureScript("npc_attack_generic") { }

    struct npc_attack_genericAI : public SmartAI
    {
        npc_attack_genericAI(Creature* creature) : SmartAI(creature) { }

        void Reset()
        {
            ResetThread = false;
            me->setActive(true);
            me->SetReactState(REACT_AGGRESSIVE);
            me->Respawn();
            AttackStart(me->GetVictim());
        }

        void DamageTaken(Unit* attacker, uint32 &damage)
        {
            if (attacker->GetTypeId() != TYPEID_PLAYER)
            {
                damage = 0;
                // just for safety
                if (me->GetHealthPct() < 30.0f)
                    if (!ResetThread)
                        me->SetHealth(me->GetMaxHealth());                
            }

            if (attacker->GetTypeId() == TYPEID_PLAYER)
            {
                if (!ResetThread)
                {
                    AttackStart(attacker);
                    ResetThread = true;
                }
            }
        }
    private:
        bool ResetThread;
    };

    CreatureAI* GetAI(Creature* creature) const
    {
        return new npc_attack_genericAI(creature);
    }
};

SniffData explanation

Move to wiki

SniffData:

Structure

  • Build
  • SniffName
  • Timestamp
    • SELECT FROM_UNIXTIME(Timestamp) FROM...
  • ObjectType
    • None, Spell, Map, LFGDungeon, Battleground, Unit, GameObject, Item, Quest, Opcode, PageText, NpcText, Gossip
  • Id
  • Data

Id & Data

If ObjectType is Spell, Unit, GameObject, Item, Quest, PageText, NpcText, Map:

  • Id is the id of that object
  • Data is a string representing the origin of the id (i.e "spawn" or "query_response")

If ObjectType is Gossip:

  • Id is the gossip's menu id
  • Data is the npc id

If ObjectType is Opcode:

  • Idis the opcode's id for Build version
  • Data is status: WithErrors or NotParsed

Other ObjectTypes are not used

4 Opcodes for 4.1.0a

{Opcode.SMSG_MONSTER_MOVE, 0xAA6D},
{Opcode.SMSG_SPELL_GO, 0xEC2D},
{Opcode.SMSG_SPELL_START, 0xDB2F},
{Opcode.SMSG_AURA_UPDATE, 0xE86C},

Problem with spawns

Hi!

I've been tracking the progress of this parser for some months but I'm starting to think that maybe I'm doing something wrong. Anything I parse, detected spawns are always in coords 0, 0, 0 and I'm not seeing any comment about it in commit logs or in the issues. I assume this is "normal" (not implemented or know hard bug) but I'm not sure. One example:

INSERT INTO `creature` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `MovementType`) VALUES
(@GUID+0, 1365, 0, 1, 1, 0, 0, 0, 0, 120, 0, 0), -- 1365 (Area: 5719)
(@GUID+1, 2248, 0, 1, 1, 0, 0, 0, 0, 120, 0, 0); -- 2248 (Area: 5719)

Is that known to you? The pkt files are from version 4.3.0 15050 and sniffed with xyla (from Skyfire project).

Thanks in advance!

Official support por 4.3.0.15050

Hi!

I'm trying to use your wonderful parser with latest version, and I saw it doesn't support latest build, and as I assume anything important has changed, I added the necessary lines to make the 15050 works as 15005. Now I obtain useful output hehe.

The thing is, I saw that spawns creation is commented out because it's outdated (as comments says) (UpdateHandler.cs in "Parsing/Parsers" path).

Do you plan to update it soon? If you don't and if you tell me roughly the problem with UpdateFields, I may be helpful :)

I've noticed another problem, if you extract DBC from latests build, the parser says that DBC structure doesn't match. The error is:

Size of row in DBC file (192) != size of DBC struct (936) in DBC: Spell.dbc

I have tried to fix it but I don't know why there is so much difference in sizes, it should be just a few numbers, I think :D

Thanks and very very very good work with this parser, it makes everything for you! :)

QuestGiverPortrait and QuestTurnInPortrait?

Hey where are the QuestGiverPortrait and QuestTurnInPortrait?
In the script QuestTemplate.cs and QuestHandler.cs these fields are implemented, but in the structure of the resulting sql quest_template not appear.
look this:

INSERT INTO quest_template (Id, Method, Level, MinLevel, ZoneOrSort, Type, SuggestedPlayers, RequiredFactionId1, RequiredFactionId2, RequiredFactionValue1, RequiredFactionValue2, NextQuestIdChain, RewardXPId, RewardOrRequiredMoney, RewardMoneyMaxLevel, RewardSpell, RewardSpellCast, RewardHonor, RewardHonorMultiplier, SourceItemId, Flags, RewardTitleId, RequiredPlayerKills, RewardTalents, RewardArenaPoints, RewardItemId1, RewardItemId2, RewardItemId3, RewardItemId4, RewardItemCount1, RewardItemCount2, RewardItemCount3, RewardItemCount4, RewardChoiceItemId1, RewardChoiceItemId2, RewardChoiceItemId3, RewardChoiceItemId4, RewardChoiceItemId5, RewardChoiceItemId6, RewardChoiceItemCount1, RewardChoiceItemCount2, RewardChoiceItemCount3, RewardChoiceItemCount4, RewardChoiceItemCount5, RewardChoiceItemCount6, RewardFactionId1, RewardFactionId2, RewardFactionId3, RewardFactionId4, RewardFactionId5, RewardFactionValueId1, RewardFactionValueId2, RewardFactionValueId3, RewardFactionValueId4, RewardFactionValueId5, RewardFactionValueIdOverride1, RewardFactionValueIdOverride2, RewardFactionValueIdOverride3, RewardFactionValueIdOverride4, RewardFactionValueIdOverride5, PointMapId, PointX, PointY, PointOption, Title, Objectives, Details, EndText, RequiredNpcOrGo1, RequiredNpcOrGo2, RequiredNpcOrGo3, RequiredNpcOrGo4, RequiredNpcOrGoCount1, RequiredNpcOrGoCount2, RequiredNpcOrGoCount3, RequiredNpcOrGoCount4, RequiredSourceItemId1, RequiredSourceItemId2, RequiredSourceItemId3, RequiredSourceItemId4, RequiredSourceItemCount1, RequiredSourceItemCount2, RequiredSourceItemCount3, RequiredSourceItemCount4, RequiredItemId1, RequiredItemId2, RequiredItemId3, RequiredItemId4, RequiredItemId5, RequiredItemId6, RequiredItemCount1, RequiredItemCount2, RequiredItemCount3, RequiredItemCount4, RequiredItemCount5, RequiredItemCount6, ObjectiveText1, ObjectiveText2, ObjectiveText3, ObjectiveText4)

Thk

tried to overwrite delegate for opcode

Error: (Build: V4_3_0_15050) tried to overwrite delegate for opcode 17958 (SMSG_CONTACT_LIST); new handler: Void HandleContactList(WowPacketParser.Misc.Packet); old handler: Void Handle18997(WowPacketParser.Misc.Packet)

Porblem

i can not compile

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Csc.exe /noconfig /unsafe+ /nowarn:1701,1702 /nostdlib+ /errorreport:prompt /warn:4 /define:DEBUG;TRACE /main:WowPacketParser.Program /reference:D:\WoWServerek\Trinity\WowPacketParser_org\WowPacketParser\Dependencies\ICSharpCode.SharpZipLib.dll /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\mscorlib.dll" /reference:D:\WoWServerek\Trinity\WowPacketParser_org\WowPacketParser\Dependencies\MySql.Data.dll /reference:D:\WoWServerek\Trinity\WowPacketParser_org\WowPacketParser\Dependencies\SharpSSH.dll /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\System.Configuration.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\System.Core.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\System.Data.dll" /reference:D:\WoWServerek\Trinity\WowPacketParser_org\WowPacketParser\Dependencies\System.Data.SQLite.dll /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\System.dll" /debug+ /debug:full /filealign:512 /optimize- /out:obj\Debug\WowPacketParser.exe /target:exe Enums\AccountDataType.cs Enums\ActionButtonType.cs Enums\AuctionHouseAction.cs Enums\AuctionHouseError.cs Enums\AIReaction.cs Enums\AmmoType.cs Enums\AttackerStateFlags.cs Enums\AuraFlag.cs Enums\AuraType.cs Enums\BagFamilyMask.cs Enums\BarberShopResult.cs Enums\BattlegroundError.cs Enums\BillingFlag.cs Enums\CalendarError.cs Enums\CalendarEventStatus.cs Enums\CalendarEventType.cs Enums\CalendarFlag.cs Enums\CalendarSendEventType.cs Enums\CalendarModerationRank.cs Enums\CastFlag.cs Enums\ChannelFlag.cs Enums\ChannelMemberFlag.cs Enums\CharacterFlag.cs Enums\ChatMessageType.cs Enums\ChatNotificationType.cs Enums\ChatRestrictionType.cs Enums\ChatTag.cs Enums\Class.cs Enums\ClassMask.cs Enums\ClientType.cs Enums\ClientVersionBuild.cs Enums\ContactEntryFlag.cs Enums\ContactListFlag.cs Enums\ContactResult.cs Enums\ContactStatus.cs Enums\BattlegroundStatus.cs Enums\InhabitType.cs Enums\SQLOutputFlags.cs Enums\GuildFinder.cs Enums\PetModeFlags.cs Enums\SpellEffect.cs Enums\SpellModOp.cs Enums\RaidInstanceResetWarning.cs Enums\SniffType.cs Enums\SpellHitType.cs Enums\PetFeedback.cs Enums\PetitionResultType.cs Enums\StoreNameType.cs Enums\UnknownFlags.cs Enums\Version\V3_3_0_10958\UpdateField.cs Enums\Version\V4_3_0_15005\Opcodes.cs Enums\Version\V4_3_0_15005\UpdateField.cs Enums\Version\V4_3_2_15211\Opcodes.cs Enums\Version\V4_3_2_15211\UpdateField.cs Enums\Version\V4_3_3_15354\Opcodes.cs Enums\Version\UpdateFields.cs Enums\Version\V4_2_2_14545\Opcodes.cs Enums\Version\V4_2_0_14480\Opcodes.cs Enums\Version\V4_1_0_13914\Opcodes.cs Enums\Version\Opcodes.cs Enums\Version\V3_3_5a_12340\Opcodes.cs Enums\Version\V3_3_5a_12340\UpdateField.cs Enums\Version\V4_0_3_13329\Opcodes.cs Enums\Version\V4_0_6_13596\Opcodes.cs Enums\Version\V4_0_6_13596\UpdateField.cs Enums\Version\V4_2_2_14545\UpdateField.cs Enums\VictimStates.cs Enums\SpellHitInfo.cs Enums\SpellMechanics.cs Enums\VehicleFlags.cs Enums\UnitDynamicFlags.cs Enums\PlayerFlags.cs Enums\PlayerFieldBytesMiscFlags.cs Enums\GameObjectDynamicFlag.cs Enums\UnitFlags2.cs Enums\CreatureFamily.cs Enums\CreatureRank.cs Enums\CreatureType.cs Enums\CreatureTypeFlag.cs Enums\CustomizationFlag.cs Enums\DamageType.cs Enums\DifficultyChangeType.cs Enums\Direction.cs Enums\DumpFormatType.cs Enums\EquipmentSlotType.cs Enums\EquipmentSetState.cs Enums\EnvironmentDamageFlags.cs Enums\FactionFlag.cs Enums\GameObjectFlag.cs Enums\GameObjectType.cs Enums\Gender.cs Enums\GossipPoiIcon.cs Enums\GroupMemberStatusFlag.cs Enums\GroupTypeFlag.cs Enums\GroupUpdateFlag.cs Enums\GuildCommandType.cs Enums\GuildCommandError.cs Enums\GuildBankEventLogType.cs Enums\GuildBankRightsFlag.cs Enums\GuildEventLogType.cs Enums\GuildEmblemError.cs Enums\GuildRankRightsFlag.cs Enums\GuildEventType.cs Enums\HighGuidMask.cs Enums\HighGuidType.cs Enums\Holiday.cs Enums\InstanceResetWarningType.cs Enums\InstanceStatus.cs Enums\InventoryResult.cs Enums\InventoryType.cs Enums\ItemBonding.cs Enums\ItemClass.cs Enums\ItemFlag.cs Enums\ItemFlagExtra.cs Enums\ItemModType.cs Enums\ItemQuality.cs Enums\ItemSocketColor.cs Enums\ItemSpellTriggerType.cs Enums\KickReason.cs Enums\Language.cs Enums\LfgEntryCheckResult.cs Enums\LfgError.cs Enums\LfgJoinResult.cs Enums\LfgProposalState.cs Enums\LfgRoleCheckStatus.cs Enums\LfgRoleFlag.cs Enums\LfgType.cs Enums\LfgUpdateFlag.cs Enums\LfgUpdateType.cs Enums\LootMethod.cs Enums\LootRoolType.cs Enums\LootSlotType.cs Enums\LootType.cs Enums\LootVoteFlags.cs Enums\MailType.cs Enums\MailActionType.cs Enums\MailErrorType.cs Enums\MapDifficulty.cs Enums\Material.cs Enums\MirrorTimerType.cs Enums\MiscConstants.cs Enums\MovementAnimationState.cs Enums\NPCFlags.cs Enums\SheathState.cs Enums\SpellMissType.cs Enums\SplineMode.cs Enums\SplineType.cs Enums\MovementFlag.cs Enums\MovementFlagExtra.cs Enums\ObjectType.cs Enums\Opcode.cs Enums\PageMaterial.cs Enums\PetTameFailureReason.cs Enums\PowerType.cs Enums\PartyCommand.cs Enums\PartyResult.cs Enums\QuestFlags.cs Enums\QuestPartyResult.cs Enums\QuestGiverStatus.cs Enums\QuestMethod.cs Enums\QuestReasonType.cs Enums\QuestSort.cs Enums\QuestType.cs Enums\Race.cs Enums\RaceMask.cs Enums\RealmSplitState.cs Enums\ReputationRank.cs Enums\ResponseCode.cs Enums\SellResult.cs Enums\SheathType.cs Enums\SpeedType.cs Enums\SpellCastFailureReason.cs Enums\SplineFlag.cs Enums\SplineFlag422.cs Enums\StatType.cs Enums\TaxiError.cs Enums\TargetFlag.cs Enums\TeamType.cs Enums\TotemCategory.cs Enums\TrainerSpellState.cs Enums\TradeStatus.cs Enums\TrainerType.cs Enums\TransferAbortReason.cs Enums\TypeMask.cs Enums\UnitFlags.cs Enums\UpdateField.cs Enums\UpdateFlag.cs Enums\UpdateType.cs Enums\WardenCheckType.cs Enums\WardenOpcode.cs Enums\WeatherState.cs Loading\BinaryPacketReader.cs Loading\IPacketReader.cs Loading\Reader.cs Loading\SQLitePacketReader.cs Misc\Filters.cs Parsing\Parsers\CombatLogHandler.cs Parsing\Parsers\TestHandler.cs Store\Objects\Aura.cs Store\Objects\ObjectName.cs Store\Objects\QuestPOI.cs Store\Objects\LootItem.cs Store\Objects\NpcVendor.cs Store\Objects\GossipOption.cs Store\Objects\NpcTrainer.cs Store\Objects\QuestPOIPoint.cs Store\Objects\SniffData.cs Store\Objects\SniffFileInfo.cs Store\Objects\StartAction.cs Store\Objects\GameObjectTemplate.cs Store\Objects\Gossip.cs Store\Objects\Item.cs Store\Objects\ItemTemplate.cs Store\Objects\Loot.cs Store\Objects\NpcText.cs Store\Objects\PageText.cs Store\Objects\Player.cs Misc\ClientVersion.cs Misc\PacketReads.cs Misc\Extensions.cs Misc\Guid.cs Misc\LfgEntry.cs Misc\MovementInfo.cs Store\Objects\GameObject.cs Store\Objects\QuestTemplate.cs Store\Objects\StartItem.cs Store\Objects\StartPosition.cs Store\Objects\StartSpell.cs Store\Objects\TrainerSpell.cs Store\Objects\Unit.cs Misc\Quaternion.cs Misc\Settings.cs Misc\StoreGetters.cs Misc\UpdateField.cs Store\Objects\UnitTemplate.cs Store\Objects\VendorItem.cs Store\Objects\WoWObject.cs Misc\Packet.cs Misc\Utilities.cs Misc\Vector2.cs Misc\Vector3.cs Misc\Vector4.cs Parsing\Handler.cs Parsing\ParserAttribute.cs Parsing\Parsers\AccountDataHandler.cs Parsing\Parsers\AuctionHouseHandler.cs Parsing\Parsers\AchievementHandler.cs Parsing\Parsers\ActionBarHandler.cs Parsing\Parsers\AddonHandler.cs Parsing\Parsers\BattlegroundHandler.cs Parsing\Parsers\CalendarHandler.cs Parsing\Parsers\ChannelHandler.cs Parsing\Parsers\CharacterHandler.cs Parsing\Parsers\ChatHandler.cs Parsing\Parsers\CombatHandler.cs Parsing\Parsers\ContactHandler.cs Parsing\Parsers\TicketHandler.cs Parsing\Parsers\CorpseHandler.cs Parsing\Parsers\EquipmentSetHandler.cs Parsing\Parsers\GameObjectHandler.cs Parsing\Parsers\LfgHandler.cs Parsing\Parsers\LootHandler.cs Parsing\Parsers\MailHandler.cs Parsing\Parsers\NpcHandler.cs Parsing\Parsers\GroupHandler.cs Parsing\Parsers\GuildHandler.cs Parsing\Parsers\InstanceHandler.cs Parsing\Parsers\ItemHandler.cs Parsing\Parsers\MiscellaneousHandler.cs Parsing\Parsers\MovementHandler.cs Parsing\Parsers\PetHandler.cs Parsing\Parsers\QueryHandler.cs Parsing\Parsers\QuestHandler.cs Parsing\Parsers\ReputationHandler.cs Parsing\Parsers\SessionHandler.cs Parsing\Parsers\SpellHandler.cs Parsing\Parsers\TalentHandler.cs Parsing\Parsers\TaxiHandler.cs Parsing\Parsers\TradeHandler.cs Parsing\Parsers\UpdateHandler.cs Parsing\Parsers\VoiceChatHandler.cs Parsing\Parsers\WardenHandler.cs Parsing\Parsers\WorldStateHandler.cs Program.cs Properties\AssemblyInfo.cs Saving\BinaryPacketWriter.cs SQL\SQLDatabase.cs SQL\SQLUtil.cs SQL\SQLConnector.cs SQL\SQLStore.cs Store\SQL\Builder.cs Store\SQL\QueryBuilder.cs Store\Storage.cs Enums\BankSlotResult.cs Enums\EmoteType.cs Enums\EncounterFrame.cs Enums\DrunkenState.cs Enums\ParsedStatus.cs SQL\SSHTunnel.cs Misc\Logger.cs Enums\StatsOutputFlags.cs Saving\SplitBinaryPacketWriter.cs "C:\Users\Tibor\AppData\Local\Temp.NETFramework,Version=v4.0.AssemblyAttributes.cs"
_CopyFilesMarkedCopyLocal:
Copying file from "D:\WoWServerek\Trinity\WowPacketParser_org\WowPacketParser\Dependencies\ICSharpCode.SharpZipLib.dll" to "bin\Debug\ICSharpCode.SharpZipLib.dll".
Copying file from "D:\WoWServerek\Trinity\WowPacketParser_org\WowPacketParser\Dependencies\MySql.Data.dll" to "bin\Debug\MySql.Data.dll".
Copying file from "D:\WoWServerek\Trinity\WowPacketParser_org\WowPacketParser\Dependencies\SharpSSH.dll" to "bin\Debug\SharpSSH.dll".
Copying file from "D:\WoWServerek\Trinity\WowPacketParser_org\WowPacketParser\Dependencies\System.Data.SQLite.dll" to "bin\Debug\System.Data.SQLite.dll".
_CopyAppConfigFile:
Copying file from "App.config" to "bin\Debug\WowPacketParser.exe.config".
CopyFilesToOutputDirectory:
Copying file from "obj\Debug\WowPacketParser.exe" to "bin\Debug\WowPacketParser.exe".
WowPacketParser -> D:\WoWServerek\Trinity\WowPacketParser_org\WowPacketParser\bin\Debug\WowPacketParser.exe
Copying file from "obj\Debug\WowPacketParser.pdb" to "bin\Debug\WowPacketParser.pdb".

Build succeeded.

Time Elapsed 00:00:00.85
------ Skipped Rebuild All: Project: SettingsUI, Configuration: Debug Any CPU ------
Project not selected to build for this solution configuration
========== Rebuild All: 1 succeeded, 0 failed, 1 skipped ==========

[5.4.8] Rename opcode

Hey guys. Could you please get the rename opcodes C/S - MSG and the structures for 18291/18414? Thanks!

Duplicated opcode definition in dictionary -> exception

private static Dictionary<Opcode, int> _V4_2_2_opcodes = new Dictionary<Opcode, int>
{
            ....
            {Opcode.CMSG_SET_ALLOW_LOW_LEVEL_RAID1, 0xC863},
            {Opcode.CMSG_SET_ALLOW_LOW_LEVEL_RAID1, 51299},
            ....
}

throws an exception

System.TypeInitializationException
The type initializer for 'WowPacketParser.Parsing.Handler' threw an exception.
at WowPacketParser.Parsing.Handler.InitializeLogFile(String file, Boolean noDump)
at WowPacketParser.Program.Main(String[] args) in >D:\wow\Parser\355\WowPacketParser\WowPacketParser\Program.cs:line 146

commit: b8257e5

[Dev] 6.0.3 missing

  • 1289 (0x0509)
  • 1294 (0x050E)
  • 1335 (0x0537)
  • 1346 (0x0542)
  • 137 (0x0089)
  • 1381 (0x0565)
  • 1571 (0x0623)
  • 1612 (0x064C)
  • 1755 (0x06DB)
  • 1821 (0x071D)
  • 1844 (0x0734)
  • 1950 (0x079E)
  • 1962 (0x07AA)
  • 2090 (0x082A)
  • 2294 (0x08F6)
  • 2325 (0x0915)
  • 2334 (0x091E)
  • 2341 (0x0925)
  • 2354 (0x0932)
  • 2358 (0x0936)
  • 2409 (0x0969)
  • 2433 (0x0981)
  • 2441 (0x0989)
  • 2465 (0x09A1)
  • 2497 (0x09C1)
  • 2501 (0x09C5)
  • 2510 (0x09CE)
  • 2526 (0x09DE)
  • 2599 (0x0A27)
  • 260 (0x0104)
  • 278 (0x0116)
  • 279 (0x0117)
  • 2790 (0x0AE6)
  • 2839 (0x0B17)
  • 2853 (0x0B25)
  • 2856 (0x0B28)
  • 2873 (0x0B39)
  • 2906 (0x0B5A)
  • 2998 (0x0BB6)
  • 3018 (0x0BCA)
  • 313 (0x0139)
  • 322 (0x0142)
  • 3686 (0x0E66)
  • 3850 (0x0F0A)
  • 39 (0x0027)
  • 418 (0x01A2)
  • 4353 (0x1101)
  • 4386 (0x1122)
  • 4418 (0x1142)
  • 4425 (0x1149)
  • 449 (0x01C1)
  • 4490 (0x118A)
  • 4652 (0x122C)
  • 4746 (0x128A)
  • 485 (0x01E5)
  • 4899 (0x1323)
  • 4938 (0x134A)
  • 5017 (0x1399)
  • 5050 (0x13BA)
  • 5076 (0x13D4)
  • 516 (0x0204)
  • 5176 (0x1438)
  • 522 (0x020A)
  • 5257 (0x1489)
  • 5282 (0x14A2)
  • 5641 (0x1609)
  • 5696 (0x1640)
  • 5742 (0x166E)
  • 5858 (0x16E2)
  • 6179 (0x1823)
  • 6482 (0x1952)
  • 6508 (0x196C)
  • 651 (0x028B)
  • 6515 (0x1973)
  • 653 (0x028D)
  • 6530 (0x1982)
  • 6545 (0x1991)
  • 6587 (0x19BB)
  • 6627 (0x19E3)
  • 6970 (0x1B3A)
  • 7027 (0x1B73)
  • 7042 (0x1B82)
  • 7065 (0x1B99)
  • 707 (0x02C3)
  • 7075 (0x1BA3)
  • 7215 (0x1C2F)
  • 7306 (0x1C8A)
  • 7388 (0x1CDC)
  • 757 (0x02F5)
  • 769 (0x0301)
  • 790 (0x0316)
  • 797 (0x031D)
  • 806 (0x0326)
  • 822 (0x0336)
  • 830 (0x033E)
  • 923 (0x039B)
  • 966 (0x03C6)
  • CMSG_CHALLENGE_MODE_REQUEST_MAP_STATS (0x0E78)
  • CMSG_CONFIRM_RESPEC_WIPE (0x14B4)
  • CMSG_DUEL_RESPONSE (0x1BD2)
  • CMSG_GUILD_QUERY_NEWS (0x0676)
  • CMSG_QUEST_PUSH_RESULT (0x03D2)
  • CMSG_SET_PRIMARY_TALENT_TREE (0x0AC5)
  • CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT (0x089D)
  • 1001 (0x03E9)
  • 115 (0x0073)
  • 13 (0x000D)
  • 1305 (0x0519)
  • 1306 (0x051A)
  • 1327 (0x052F)
  • 1341 (0x053D)
  • 1422 (0x058E)
  • 1454 (0x05AE)
  • 1456 (0x05B0)
  • 1625 (0x0659)
  • 1739 (0x06CB)
  • 1822 (0x071E)
  • 1846 (0x0736)
  • 1876 (0x0754)
  • 1934 (0x078E)
  • 1937 (0x0791)
  • 1941 (0x0795)
  • 1943 (0x0797)
  • 1950 (0x079E)
  • 2063 (0x080F)
  • 2087 (0x0827)
  • 210 (0x00D2)
  • 2187 (0x088B)
  • 2317 (0x090D)
  • 2318 (0x090E)
  • 2319 (0x090F)
  • 2325 (0x0915)
  • 2327 (0x0917)
  • 2350 (0x092E)
  • 2442 (0x098A)
  • 2467 (0x09A3)
  • 2475 (0x09AB)
  • 2501 (0x09C5)
  • 2525 (0x09DD)
  • 2529 (0x09E1)
  • 2532 (0x09E4)
  • 2574 (0x0A0E)
  • 259 (0x0103)
  • 2606 (0x0A2E)
  • 261 (0x0105)
  • 262 (0x0106)
  • 2694 (0x0A86)
  • 272 (0x0110)
  • 2749 (0x0ABD)
  • 2842 (0x0B1A)
  • 2875 (0x0B3B)
  • 2882 (0x0B42)
  • 2884 (0x0B44)
  • 2955 (0x0B8B)
  • 2969 (0x0B99)
  • 3027 (0x0BD3)
  • 304 (0x0130)
  • 3065 (0x0BF9)
  • 311 (0x0137)
  • 3275 (0x0CCB)
  • 3358 (0x0D1E)
  • 3359 (0x0D1F)
  • 3360 (0x0D20)
  • 3374 (0x0D2E)
  • 3375 (0x0D2F)
  • 3385 (0x0D39)
  • 3389 (0x0D3D)
  • 3390 (0x0D3E)
  • 3472 (0x0D90)
  • 3520 (0x0DC0)
  • 3857 (0x0F11)
  • 388 (0x0184)
  • 394 (0x018A)
  • 3986 (0x0F92)
  • 403 (0x0193)
  • 4107 (0x100B)
  • 4120 (0x1018)
  • 4129 (0x1021)
  • 4165 (0x1045)
  • 4168 (0x1048)
  • 4200 (0x1068)
  • 4371 (0x1113)
  • 443 (0x01BB)
  • 444 (0x01BC)
  • 4452 (0x1164)
  • 4482 (0x1182)
  • 4491 (0x118B)
  • 4514 (0x11A2)
  • 4529 (0x11B1)
  • 4614 (0x1206)
  • 4695 (0x1257)
  • 477 (0x01DD)
  • 4883 (0x1313)
  • 489 (0x01E9)
  • 492 (0x01EC)
  • 5009 (0x1391)
  • 5028 (0x13A4)
  • 5033 (0x13A9)
  • 5060 (0x13C4)
  • 5321 (0x14C9)
  • 5396 (0x1514)
  • 5421 (0x152D)
  • 5439 (0x153F)
  • 5517 (0x158D)
  • 5535 (0x159F)
  • 5549 (0x15AD)
  • 5554 (0x15B2)
  • 5587 (0x15D3)
  • 5897 (0x1709)
  • 6039 (0x1797)
  • 6062 (0x17AE)
  • 6077 (0x17BD)
  • 6198 (0x1836)
  • 6282 (0x188A)
  • 6315 (0x18AB)
  • 6401 (0x1901)
  • 6420 (0x1914)
  • 6530 (0x1982)
  • 6540 (0x198C)
  • 6634 (0x19EA)
  • 6915 (0x1B03)
  • 693 (0x02B5)
  • 6980 (0x1B44)
  • 6986 (0x1B4A)
  • 6993 (0x1B51)
  • 7004 (0x1B5C)
  • 701 (0x02BD)
  • 7044 (0x1B84)
  • 7073 (0x1BA1)
  • 7076 (0x1BA4)
  • 7122 (0x1BD2)
  • 7137 (0x1BE1)
  • 7138 (0x1BE2)
  • 741 (0x02E5)
  • 7441 (0x1D11)
  • 7443 (0x1D13)
  • 756 (0x02F4)
  • 773 (0x0305)
  • 787 (0x0313)
  • 7949 (0x1F0D)
  • 797 (0x031D)
  • 804 (0x0324)
  • 818 (0x0332)
  • 831 (0x033F)
  • 833 (0x0341)
  • 835 (0x0343)
  • 918 (0x0396)
  • 932 (0x03A4)
  • 948 (0x03B4)
  • SMSG_BATTLEFIELD_LIST (0x11A1)
  • SMSG_BATTLEFIELD_STATUS_ACTIVE (0x1284)
  • SMSG_BATTLEFIELD_STATUS_FAILED (0x0308)
  • SMSG_BATTLEFIELD_STATUS_NEEDCONFIRMATION (0x1719)
  • SMSG_BATTLEFIELD_STATUS_NONE (0x1E89)
  • SMSG_BATTLEFIELD_STATUS_QUEUED (0x002D)
  • SMSG_BATTLEGROUND_PLAYER_JOINED (0x13EA)
  • SMSG_BATTLEGROUND_PLAYER_LEFT (0x1BD1)
  • SMSG_BATTLEGROUND_PLAYER_POSITIONS (0x1BE9)
  • SMSG_BATTLEGROUND_POINTS (0x122A)
  • SMSG_BATTLE_PET_FINALIZE_LOCATION (0x0F09)
  • SMSG_BATTLE_PET_FINAL_ROUND (0x05BA)
  • SMSG_BATTLE_PET_FIRST_ROUND (0x1981)
  • SMSG_BATTLE_PET_INITIAL_UPDATE (0x0D19)
  • SMSG_BATTLE_PET_REPLACEMENTS_MADE (0x1B83)
  • SMSG_BATTLE_PET_REQUEST_FAILED (0x1353)
  • SMSG_BATTLE_PET_SLOT_UPDATES (0x1D8F)
  • SMSG_BATTLE_PET_UPDATES (0x0354)
  • SMSG_CHALLENGE_MODE_ALL_MAP_STATS (0x1CC9)
  • SMSG_CHALLENGE_MODE_REQUEST_LEADERS_RESULT (0x07AA)
  • SMSG_CHALLENGE_MODE_REWARDS (0x0904)
  • SMSG_LFG_BOOT_PLAYER (0x07B3)
  • SMSG_LF_GUILD_POST (0x1817)
  • SMSG_LF_GUILD_RECRUITS (0x1008)
  • SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT (0x0D0D)
  • SMSG_PVP_OPTIONS_ENABLED (0x0320)
  • SMSG_RANDOM_ROLL (0x1B04)
  • SMSG_REQUEST_PVP_REWARDS_RESPONSE (0x1DAE)
  • SMSG_RESPEC_WIPE_CONFIRM (0x1341)
  • SMSG_ROLE_CHOSEN (0x07D3)

Rev 0272cd2

Getting SubName in UnitTemplateNonWDB using GetName() doesn't seem right.

var name = StoreGetters.GetName(StoreNameType.Unit, (int) unit.Key.GetEntry(), false);
var firstIndex = name.LastIndexOf('<');
var lastIndex = name.LastIndexOf('>');
if (firstIndex != -1 && lastIndex != -1)
{
    var subname = name.Substring(firstIndex + 1, lastIndex - firstIndex - 1);

    if (_professionTrainers.Contains(subname))
        template.NpcFlag |= (uint) NPCFlags.ProfessionTrainer;
    else if (_classTrainers.Contains(subname))
        template.NpcFlag |= (uint) NPCFlags.ClassTrainer;
}

It's the subname that's bracketed in <> and not the name. I don't think this will give you the result you're looking for.

[Dev] 6.0.3 errors

Wrongly parsed packets (with errors):

  • SMSG_0x0089
  • SMSG_0x0503
  • SMSG_0x0713
  • SMSG_0x0732
  • SMSG_0x0733
  • SMSG_0x0758
  • SMSG_0x0791
  • SMSG_0x0794
  • SMSG_0x0807
  • SMSG_0x0D3D
  • SMSG_0x0D52
  • SMSG_0x0F11
  • SMSG_0x1142
  • SMSG_0x11C1
  • SMSG_0x15C4
  • SMSG_0x17C9
  • SMSG_0x19D2
  • SMSG_0x1DBD
  • SMSG_BATTLEFIELD_MGR_DROP_TIMER_STARTED
  • SMSG_CALENDAR_EVENT_INVITE_STATUS
  • SMSG_TITLE_LOST
  • CMSG_0x010F
  • CMSG_0x0301
  • CMSG_0x0632
  • CMSG_0x0734
  • CMSG_0x0753
  • CMSG_0x0932
  • CMSG_0x11D9
  • CMSG_0x14DB
  • CMSG_0x160B
  • CMSG_BATTLE_PET_UPDATE_NOTIFY
  • CMSG_CALENDAR_EVENT_RSVP
  • CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS
  • CMSG_CHANGE_SUB_GROUP
  • CMSG_COMPLAIN
  • CMSG_DECLINE_PETITION
  • CMSG_DELETE_EQUIPMENT_SET
  • CMSG_EJECT_PASSENGER
  • CMSG_GUILD_BANK_SET_TAB_TEXT
  • CMSG_GUILD_BANK_SWAP_ITEMS
  • CMSG_GUILD_UPDATE_MOTD_TEXT
  • CMSG_ITEM_PURCHASE_REFUND
  • CMSG_JOIN_ARENA_SKIRMISH
  • CMSG_LFG_LIST_CANCEL_APPLICATION
  • CMSG_LFG_LIST_DECLINE_APPLICANT
  • CMSG_LFG_LIST_INVITE_APPLICANT
  • CMSG_LF_GUILD_REMOVE_RECRUIT
  • CMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES_ACK
  • CMSG_OFFER_PETITION
  • CMSG_PETITION_BUY
  • CMSG_PETITION_RENAME_GUILD
  • CMSG_PETITION_SHOW_SIGNATURES
  • CMSG_QUERY_INSPECT_ACHIEVEMENTS
  • CMSG_REAGENT_BANK_BUY_TAB
  • CMSG_REQUEST_STABLED_PETS
  • CMSG_RIDE_VEHICLE_INTERACT
  • CMSG_SET_ASSISTANT_LEADER
  • CMSG_SET_CONTACT_NOTES
  • CMSG_SET_EVERYONE_IS_ASSISTANT
  • CMSG_SOCKET_GEMS
  • CMSG_SUMMON_RESPONSE
  • CMSG_SUPPORT_TICKET_SUBMIT_COMPLAINT
  • CMSG_SWAP_SUB_GROUPS
  • CMSG_TURN_IN_PETITION
  • CMSG_UPGRADE_ITEM

Rev 09c76d4

Waypoint data to sql

This program doesnt save to sql the waypoint data of any creature, if im wrong tell me how i can do it, please?

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/4349226-waypoint-data-to-sql?utm_campaign=plugin&utm_content=tracker%2F457228&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F457228&utm_medium=issues&utm_source=github).

6.x SQL output

a6d4556

I tried to sniff some creature_template for 6.x, but it outputs 3.3.5 format instead of 6.x:

 INSERT INTO `creature_template` (`entry`, `name`, `femaleName`, `subname`, `IconName`, `type_flags`, `type_flags2`, `type`, `family`, `rank`, `KillCredit1`, `KillCredit2`, `PetSpellDataId`, `modelid1`, `modelid2`, `modelid3`, `modelid4`, `HealthModifier`, `ManaModifier`, `RacialLeader`, `questItem1`, `questItem2`, `questItem3`, `questItem4`, `questItem5`, `questItem6`, `movementId`, `exp_unk`
<ShinDarth> , `VerifiedBuild`) VALUES

questItem* fields no longer exist in 6.x database

I even set the database configuration in my WowPacketParser.exe.config

Parse problem version 16733 of sniff files.

I'm not using wow-64.exe for sniffing packet.

The problem is if i parse my 16733.sniff.pkt files i have some werid things and cant completely parsed my sniff.

Only appear when i tried to extract to have an sql resuslt.

http://hpics.li/89b6cf6

All i want to know is when i will sniff does i need to make it only on windows 32 bits for having a good sniff files ?

But i think personally it's a parser problem someone can confirm ?

Missing handlers 3.3.5a

Note: list of missing opcodes we have data: (+another 500 we don't have data)
CMSG_ACCEPT_LEVEL_GRANT
CMSG_ADD_FRIEND
CMSG_ADD_IGNORE
CMSG_BUY_BANK_SLOT
CMSG_CANCEL_AURA
CMSG_CANCEL_AUTO_REPEAT_SPELL
CMSG_CANCEL_CAST
CMSG_CANCEL_GROWTH_AURA
CMSG_CANCEL_MOUNT_AURA
CMSG_CANCEL_TEMP_ENCHANTMENT
CMSG_CHANGE_SEATS_ON_CONTROLLED_VEHICLE
CMSG_CHANNEL_DISPLAY_LIST
CMSG_CHAT_IGNORED
CMSG_COMPLETE_CINEMATIC
CMSG_DEL_FRIEND
CMSG_DEL_IGNORE
CMSG_DISMISS_CRITTER
CMSG_DUEL_ACCEPTED
CMSG_DUEL_CANCELLED
CMSG_EMOTE
CMSG_FORCE_MOVE_ROOT_ACK
CMSG_FORCE_MOVE_UNROOT_ACK
CMSG_GET_MIRRORIMAGE_DATA
CMSG_GMTICKET_CREATE
CMSG_GROUP_CHANGE_SUB_GROUP
CMSG_GROUP_DECLINE
CMSG_GROUP_SET_LEADER
CMSG_GROUP_UNINVITE_GUID
CMSG_INSTANCE_LOCK_RESPONSE
CMSG_ITEM_NAME_QUERY
CMSG_ITEM_TEXT_QUERY
CMSG_MOVE_FEATHER_FALL_ACK
CMSG_MOVE_SET_CAN_FLY_ACK
CMSG_MOVE_SET_CAN_TRANSITION_BETWEEN_SWIM_AND_FLY_ACK
CMSG_MOVE_SPLINE_DONE
CMSG_NEXT_CINEMATIC_CAMERA
CMSG_PET_ACTION
CMSG_PET_CANCEL_AURA
CMSG_PET_CAST_SPELL
CMSG_PET_SET_ACTION
CMSG_PET_STOP_ATTACK
CMSG_PLAYER_VEHICLE_ENTER
CMSG_REQUEST_PET_INFO
CMSG_REQUEST_VEHICLE_EXIT
CMSG_REQUEST_VEHICLE_SWITCH_SEAT
CMSG_RESET_INSTANCES
CMSG_SELF_RES
CMSG_SET_CHANNEL_WATCH
CMSG_SET_WATCHED_FACTION
CMSG_SOCKET_GEMS
CMSG_SPELLCLICK
CMSG_TOGGLE_PVP
CMSG_TOTEM_DESTROYED
CMSG_TRAINER_BUY_SPELL
CMSG_UPDATE_MISSILE_TRAJECTORY
MSG_INSPECT_HONOR_STATS
MSG_MINIMAP_PING
MSG_RAID_READY_CHECK
MSG_RAID_READY_CHECK_CONFIRM
MSG_RAID_READY_CHECK_FINISHED
SMSG_AREA_SPIRIT_HEALER_TIME
SMSG_ATTACKSWING_CANT_ATTACK
SMSG_BINDER_CONFIRM
SMSG_CHAT_NOT_IN_PARTY
SMSG_CLEAR_COOLDOWN
SMSG_COMBAT_EVENT_FAILED
SMSG_CORPSE_NOT_IN_INSTANCE
SMSG_CROSSED_INEBRIATION_THRESHOLD
SMSG_DISPEL_FAILED
SMSG_DUEL_COUNTDOWN
SMSG_ENABLE_BARBER_SHOP
SMSG_FISH_NOT_HOOKED
SMSG_FORCE_DISPLAY_UPDATE
SMSG_FORCE_FLIGHT_SPEED_CHANGE
SMSG_FORCE_RUN_BACK_SPEED_CHANGE
SMSG_FORCE_RUN_SPEED_CHANGE
SMSG_FORCE_SWIM_SPEED_CHANGE
SMSG_FORCE_WALK_SPEED_CHANGE
SMSG_GAMEOBJECT_PAGETEXT
SMSG_GAMEOBJECT_RESET_STATE
SMSG_GM_MESSAGECHAT
SMSG_GMTICKET_CREATE
SMSG_GM_TICKET_STATUS_UPDATE
SMSG_GMTICKET_UPDATETEXT
SMSG_GROUP_DECLINE
SMSG_GROUP_DESTROYED
SMSG_GROUP_UNINVITE
SMSG_INSPECT_RESULTS_UPDATE
SMSG_INSTANCE_LOCK_WARNING_QUERY
SMSG_INSTANCE_RESET
SMSG_ITEM_NAME_QUERY_RESPONSE
SMSG_ITEM_REFUND_INFO_RESPONSE
SMSG_ITEM_REFUND_RESULT
SMSG_ITEM_TEXT_QUERY_RESPONSE
SMSG_ITEM_TIME_UPDATE
SMSG_LIST_INVENTORY
SMSG_MIRRORIMAGE_DATA
SMSG_MOUNTRESULT
SMSG_MOVE_FEATHER_FALL
SMSG_MOVE_NORMAL_FALL
SMSG_MOVE_SET_CAN_FLY
SMSG_MOVE_SET_CAN_TRANSITION_BETWEEN_SWIM_AND_FLY
SMSG_MOVE_UNSET_CAN_FLY
SMSG_MOVE_UNSET_CAN_TRANSITION_BETWEEN_SWIM_AND_FLY
SMSG_MULTIPLE_PACKETS
SMSG_NOTIFY_DEST_LOC_SPELL_CAST
SMSG_ON_CANCEL_EXPECTED_RIDE_VEHICLE_AURA
SMSG_OPEN_CONTAINER
SMSG_OVERRIDE_LIGHT
SMSG_PET_ACTION_SOUND
SMSG_PET_CAST_FAILED
SMSG_PET_DISMISS_SOUND
SMSG_PET_TAME_FAILURE
SMSG_PLAYERBOUND
SMSG_PLAYER_SKINNED
SMSG_PROPOSE_LEVEL_GRANT
SMSG_RAID_GROUP_ONLY
SMSG_REAL_GROUP_UPDATE
SMSG_REFER_A_FRIEND_EXPIRED
SMSG_RESET_RANGED_COMBAT_TIMER
SMSG_RESYNC_RUNES
SMSG_SEND_ALL_COMBAT_LOG
SMSG_SERVER_MESSAGE
SMSG_SET_FACTION_VISIBLE
SMSG_SPELLBREAKLOG
SMSG_SPELL_COOLDOWN
SMSG_SPELLDAMAGESHIELD
SMSG_SPELL_DELAYED
SMSG_SPELLDISPELLOG
SMSG_SPELL_FAILED_OTHER
SMSG_SPELL_FAILURE
SMSG_SPELLINSTAKILLLOG
SMSG_SPELLSTEALLOG
SMSG_SPELL_UPDATE_CHAIN_TARGETS
SMSG_SPIRIT_HEALER_CONFIRM
SMSG_SUMMON_CANCEL
SMSG_SUPERCEDED_SPELL
SMSG_TITLE_EARNED
SMSG_TOTEM_CREATED
SMSG_TRAINER_BUY_FAILED
SMSG_UPDATE_INSTANCE_ENCOUNTER_UNIT

Opcode 4.3.3

{Opcode.MSG_MOVE_HEARTBEAT,0x1FF4},
{Opcode.MSG_MOVE_SET_PITCH, 0x1251},
{Opcode.MSG_MOVE_START_FORWARD, 0x1E74},
{Opcode.MSG_MOVE_START_BACKWARD, 0x1A91},
{Opcode.MSG_MOVE_STOP, 0x1350},
{Opcode.MSG_MOVE_START_STRAFE_LEFT, 0x1E51},
{Opcode.MSG_MOVE_START_STRAFE_RIGHT, 0x1691},
{Opcode.MSG_MOVE_STOP_STRAFE, 0x1631},
{Opcode.MSG_MOVE_START_ASCEND, 0x17F4},
{Opcode.MSG_MOVE_START_DESCEND, 0x1355},
{Opcode.MSG_MOVE_STOP_ASCEND, 0x1690},
{Opcode.MSG_MOVE_JUMP, 0x1A10},
{Opcode.MSG_MOVE_START_TURN_LEFT, 0x1B11},
{Opcode.MSG_MOVE_START_TURN_RIGHT, 0x1AD4},
{Opcode.MSG_MOVE_STOP_TURN, 0x1331},
{Opcode.MSG_MOVE_SET_RUN_MODE, 0x13F4},
{Opcode.MSG_MOVE_SET_RUN_SPEED, 0x7004},
{Opcode.MSG_MOVE_SET_WALK_SPEED, 0x704C},
{Opcode.MSG_MOVE_SET_SWIM_SPEED, 0x70CC},
{Opcode.MSG_MOVE_SET_FLIGHT_SPEED, 0x71C6},
{Opcode.MSG_MOVE_SET_WALK_MODE, 0x1B71},
{Opcode.MSG_MOVE_SET_FACING, 0x16B4},
{Opcode.MSG_MOVE_START_SWIM, 0x1A90},
{Opcode.MSG_MOVE_STOP_SWIM, 0x1E11},
{Opcode.MSG_MOVE_SET_SWIM_BACK_SPEED, 0x3404},
{Opcode.MSG_MOVE_START_PITCH_UP, 0x1370},
{Opcode.MSG_MOVE_START_PITCH_DOWN, 0x1E70},
{Opcode.MSG_MOVE_STOP_PITCH, 0x1E15},
{Opcode.MSG_MOVE_TOGGLE_COLLISION_CHEAT, 0x1AF0},
{Opcode.CMSG_MOVE_SET_FLY, 0x1BB4},
{Opcode.CMSG_MOVE_NOT_ACTIVE_MOVER, 0x1775},
{Opcode.CMSG_MOVE_FALL_RESET, 0x12D0},

[Dev] Quest SQL output needs to be updated

SQL quest output for the 6.x module should be modified to support the new TrinityCore quest data structure.

quest_details
quest_greeting
quest_offer_reward
quest_request_items
quest_template_addon

OutOfMemoryException

Hello, sorry for my English and for the incorrect bug reports.
The error lies in the package OutOfMemoryException.
Quote: "An unhandled exception OutOfMemoryException"

Version : ce31f25

Some 4.3.3 Opcodes

CMSG_SET_SELECTION 0x2325 (8997)
CMSG_GOSSIP_HELLO 0x65AC (26028)
SMSG_GOSSIP_COMPLETE 0x21AC (8620)
SMSG_GOSSIP_MESSAGE 0x7664 (30308)
CMSG_NPC_TEXT_QUERY 0x7CA5 (31909)
SMSG_NPC_TEXT_UPDATE 0x646C (25708)
CMSG_CREATURE_QUERY 0x23ED (9197)
SMSG_CREATURE_QUERY_RESPONSE 0x6424 (25636)
CMSG_GAMEOBJECT_QUERY 0x6B65 (27493)
SMSG_GAMEOBJECT_QUERY_RESPONSE 0x64AC (25772)

[SQL-Output] `creature_text` - Unneeded '' for `BroadcastTextID`

If the creature_text output is created you always get '' around the BroadcastTextID.

Example:

INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `BroadcastTextID`, `comment`) VALUES
(14872, x, x, 'Help! I''m being chased by a swarm of bees!', 12, 1, 100, 0, 0, 0, '10259', 'Trok to 0'),

but it should be:

(14872, x, x, 'Help! I''m being chased by a swarm of bees!', 12, 1, 100, 0, 0, 0, 10259, 'Trok to 0'),

instead. The '' is not needed for the broadcasttextid :)

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/25213670-sql-output-creature_text-unneeded-for-broadcasttextid?utm_campaign=plugin&utm_content=tracker%2F457228&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F457228&utm_medium=issues&utm_source=github).

[WIP] 4.3.0 SMSG_UPDATE_OBJECT structure

I ported everything from here: https://gist.github.com/1460491
Everything works already quite well but apparently some renaming must be applied compared to Shauren's and Huri's work. I must admit that I have no knowledge about packet structure so I posted this here for somebody to have a look at it.

private static MovementInfo ReadMovementUpdateBlock430(ref Packet packet, Guid guid, int index)
        {
            var moveInfo = new MovementInfo();

            bool hasAttackingTarget = packet.ReadBit("Has Attacking Target", index);
            /*bool bit2*/ packet.ReadBit();
            bool hasVehicleData = packet.ReadBit("Has Vehicle Data", index);
            /*bool bit1*/ packet.ReadBit();
            /*bool bit4*/ packet.ReadBit();
            /*bool bit3*/ packet.ReadBit();
            bool hasTransportExtra = packet.ReadBit("Has Transport Extra", index);
            bool hasGameObjectPosition = packet.ReadBit("Has GameObject Position", index);
            bool unkFloats = packet.ReadBit();
            bool hasAnimKits = packet.ReadBit("Has Anim Kits", index);
            bool hasGameObjectRotation = packet.ReadBit("Has GameObject Rotation", index);
            bool living = packet.ReadBit("Living", index);
            bool hasStationaryPosition = packet.ReadBit("Has Stationary Position", index);
            uint unkLoopCounter = packet.ReadBits(24);
            /*bool bit0*/ packet.ReadBit();

            bool hasTransportData = false;
            var transportGuid = new byte[8];
            bool hasTransportTime2 = false;
            bool hasTransportTime3 = false;
            bool bit216 = false;
            bool bit256 = false;
            bool hasMovementFlags = false;
            bool hasExtraMovementFlags = false;
            bool unkFloat1 = false;
            uint splineMode;
            bool hasSplineDurationMult = false;
            SplineType splineType = SplineType.Normal;
            var facingTarget = new byte[8];
            SplineFlag422 splineFlags;
            uint splineCount = 0u;
            bool hasFallData = false;
            bool hasPitch = false;
            bool hasFallDirection = false;
            bool hasOrientation = false;
            bool hasSplineElevation = false;
            var goTransportGuid = new byte[8];
            bool hasGOTransportTime2 = false;
            bool hasGOTransportTime3 = false;
            bool hasAnimKit1 = false;
            bool hasAnimKit2 = false;
            bool hasAnimKit3 = false;
            var attackingTarget = new byte[8];
            var guid2 = new byte[8];

            if (living)
            {
                hasTransportData = packet.ReadBit("Has Transport Data", index);
                if (hasTransportData)
                {
                    transportGuid[2] = (byte)(packet.ReadBit() ? 1 : 0);
                    transportGuid[7] = (byte)(packet.ReadBit() ? 1 : 0);
                    transportGuid[5] = (byte)(packet.ReadBit() ? 1 : 0);
                    hasTransportTime3 = packet.ReadBit();
                    transportGuid[3] = (byte)(packet.ReadBit() ? 1 : 0);
                    transportGuid[0] = (byte)(packet.ReadBit() ? 1 : 0);
                    transportGuid[4] = (byte)(packet.ReadBit() ? 1 : 0);
                    transportGuid[1] = (byte)(packet.ReadBit() ? 1 : 0);
                    hasTransportTime2 = packet.ReadBit();
                    transportGuid[6] = (byte)(packet.ReadBit() ? 1 : 0);
                }

                moveInfo.HasSplineData = packet.ReadBit("Has Spline Data", index);
                guid2[7] = (byte)(packet.ReadBit() ? 1 : 0);
                guid2[6] = (byte)(packet.ReadBit() ? 1 : 0);
                guid2[5] = (byte)(packet.ReadBit() ? 1 : 0);
                guid2[2] = (byte)(packet.ReadBit() ? 1 : 0);
                guid2[4] = (byte)(packet.ReadBit() ? 1 : 0);
                hasMovementFlags = !packet.ReadBit();
                guid2[1] = (byte)(packet.ReadBit() ? 1 : 0);
                /*bool bit = */ packet.ReadBit();
                unkFloat1 = !packet.ReadBit();
                hasExtraMovementFlags = !packet.ReadBit();

                if (moveInfo.HasSplineData)
                {
                    bit216 = packet.ReadBit();
                    if (bit216)
                    {
                        bit256 = packet.ReadBit();
                        splineFlags = packet.ReadEnum<SplineFlag422>("Spline flags", 25, index);
                        splineMode = packet.ReadBits(2);
                        hasSplineDurationMult = packet.ReadBit();
                        splineCount = packet.ReadBits(22);
                        uint bits57 = packet.ReadBits(2);
                        switch (bits57)
                        {
                            case 0:
                                splineType = SplineType.FacingSpot;
                                break;
                            case 1:
                                splineType = SplineType.Normal;
                                break;
                            case 2:
                                splineType = SplineType.FacingTarget;
                                break;
                            case 3:
                                splineType = SplineType.FacingAngle;
                                break;
                        }

                        if (splineType == SplineType.FacingTarget)
                        {
                            facingTarget[0] = (byte)(packet.ReadBit() ? 1 : 0);
                            facingTarget[2] = (byte)(packet.ReadBit() ? 1 : 0);
                            facingTarget[7] = (byte)(packet.ReadBit() ? 1 : 0);
                            facingTarget[1] = (byte)(packet.ReadBit() ? 1 : 0);
                            facingTarget[6] = (byte)(packet.ReadBit() ? 1 : 0);
                            facingTarget[3] = (byte)(packet.ReadBit() ? 1 : 0);
                            facingTarget[4] = (byte)(packet.ReadBit() ? 1 : 0);
                            facingTarget[5] = (byte)(packet.ReadBit() ? 1 : 0);
                        }
                    }
                }

                guid2[3] = (byte)(packet.ReadBit() ? 1 : 0);

                if (hasMovementFlags)
                    moveInfo.Flags = packet.ReadEnum<MovementFlag>("Movement Flags", 30, index);

                hasPitch = !packet.ReadBit();
                hasFallData = packet.ReadBit("Has Fall Data", index);

                if (hasExtraMovementFlags)
                    moveInfo.FlagsExtra = packet.ReadEnum<MovementFlagExtra>("Extra Movement Flags", 12, index);

                guid2[0] = (byte)(packet.ReadBit() ? 1 : 0);
                hasOrientation = !packet.ReadBit();

                if (hasFallData)
                    hasFallDirection = packet.ReadBit("Has Fall Direction", index);

                hasSplineElevation = !packet.ReadBit();
            }

            if (hasGameObjectPosition)
            {
                goTransportGuid[1] = (byte)(packet.ReadBit() ? 1 : 0);
                hasGOTransportTime3 = packet.ReadBit();
                goTransportGuid[3] = (byte)(packet.ReadBit() ? 1 : 0);
                goTransportGuid[2] = (byte)(packet.ReadBit() ? 1 : 0);
                goTransportGuid[6] = (byte)(packet.ReadBit() ? 1 : 0);
                goTransportGuid[5] = (byte)(packet.ReadBit() ? 1 : 0);
                goTransportGuid[0] = (byte)(packet.ReadBit() ? 1 : 0);
                goTransportGuid[4] = (byte)(packet.ReadBit() ? 1 : 0);
                hasGOTransportTime2 = packet.ReadBit();
                goTransportGuid[7] = (byte)(packet.ReadBit() ? 1 : 0);
            }

            if (hasAnimKits)
            {
                hasAnimKit3 = !packet.ReadBit();
                hasAnimKit1 = !packet.ReadBit();
                hasAnimKit2 = !packet.ReadBit();
            }

            if (hasAttackingTarget)
            {
                attackingTarget[3] = (byte)(packet.ReadBit() ? 1 : 0);
                attackingTarget[4] = (byte)(packet.ReadBit() ? 1 : 0);
                attackingTarget[6] = (byte)(packet.ReadBit() ? 1 : 0);
                attackingTarget[0] = (byte)(packet.ReadBit() ? 1 : 0);
                attackingTarget[1] = (byte)(packet.ReadBit() ? 1 : 0);
                attackingTarget[7] = (byte)(packet.ReadBit() ? 1 : 0);
                attackingTarget[5] = (byte)(packet.ReadBit() ? 1 : 0);
                attackingTarget[2] = (byte)(packet.ReadBit() ? 1 : 0);
            }

            for (var i = 0u; i < unkLoopCounter; ++i)
                packet.ReadUInt32("Unk UInt32", index, (int)i);

            if (hasStationaryPosition)
            {
                moveInfo.Position = new Vector3();
                moveInfo.Position.Z = packet.ReadSingle();
                moveInfo.Orientation = packet.ReadSingle();
                moveInfo.Position.X = packet.ReadSingle();
                moveInfo.Position.Y = packet.ReadSingle();
                packet.WriteLine("[{0}] Stationary Position: {1}, O: {2}", index, moveInfo.Position, moveInfo.Orientation);
            }

            if (hasVehicleData)
            {
                moveInfo.VehicleId = packet.ReadUInt32("Vehicle Id", index);
                packet.ReadSingle("Vehicle Orientation", index);
            }

            if (hasGameObjectPosition)
            {
                Vector4 tPos = new Vector4();

                if (goTransportGuid[1] != 0) goTransportGuid[1] ^= packet.ReadByte();
                if (goTransportGuid[4] != 0) goTransportGuid[4] ^= packet.ReadByte();
                tPos.Z = packet.ReadSingle();      
                if (hasGOTransportTime3)
                    packet.ReadUInt32("GO Transport Time 3", index);

                packet.ReadSingle("GO Transport Time", index);
                if (goTransportGuid[5] != 0) goTransportGuid[5] ^= packet.ReadByte();
                if (goTransportGuid[6] != 0) goTransportGuid[6] ^= packet.ReadByte();
                tPos.X = packet.ReadSingle();
                if (goTransportGuid[2] != 0) goTransportGuid[2] ^= packet.ReadByte();

                if (hasGOTransportTime2)
                    packet.ReadUInt32("GO Transport Time 2", index);

                packet.ReadByte("GO Transport Seat", index);
                if (goTransportGuid[3] != 0) goTransportGuid[3] ^= packet.ReadByte();
                tPos.Y = packet.ReadSingle();
                tPos.O = packet.ReadSingle();
                if (goTransportGuid[7] != 0) goTransportGuid[7] ^= packet.ReadByte();
                if (goTransportGuid[0] != 0) goTransportGuid[0] ^= packet.ReadByte();

                packet.WriteLine("[{0}] GO Transport Position: {1}", index, tPos);
                packet.WriteLine("[{0}] GO Transport GUID {1}", index, new Guid(BitConverter.ToUInt64(goTransportGuid, 0)));
            }

            if (living)
            {                
                if (moveInfo.HasSplineData)
                {
                    if (bit216)
                    {
                        for (var i = 0u; i < splineCount; ++i)
                        {
                            Vector3 wp = new Vector3()
                            {
                                Y = packet.ReadSingle(),
                                X = packet.ReadSingle(),
                                Z = packet.ReadSingle(),
                            };

                            packet.WriteLine("[{0}][{1}] Spline Waypoint: {2}", index, i, wp);
                        }

                        if (hasSplineDurationMult)
                            packet.ReadSingle("Spline Duration Modifier", index);

                        packet.ReadSingle("Unknown Spline Float 2", index);
                        if (splineType == SplineType.FacingTarget)
                        {
                            if (facingTarget[3] != 0) facingTarget[3] ^= packet.ReadByte();
                            if (facingTarget[4] != 0) facingTarget[4] ^= packet.ReadByte();
                            if (facingTarget[5] != 0) facingTarget[5] ^= packet.ReadByte();
                            if (facingTarget[7] != 0) facingTarget[7] ^= packet.ReadByte();
                            if (facingTarget[2] != 0) facingTarget[2] ^= packet.ReadByte();
                            if (facingTarget[0] != 0) facingTarget[0] ^= packet.ReadByte();
                            if (facingTarget[6] != 0) facingTarget[6] ^= packet.ReadByte();
                            if (facingTarget[1] != 0) facingTarget[1] ^= packet.ReadByte();
                            packet.WriteLine("[{0}] Facing Target GUID {1}", index, new Guid(BitConverter.ToUInt64(facingTarget, 0)));
                        }

                        if (bit256)
                            packet.ReadUInt32("Unknown Spline Int32 3", index);

                        packet.ReadSingle("Unknown Spline Float 1", index);
                        packet.ReadUInt32("Unknown Spline Int32 1", index);
                        if (splineType == SplineType.FacingSpot)
                        {
                            Vector3 point = new Vector3()
                            {
                                Y = packet.ReadSingle(),
                                Z = packet.ReadSingle(),
                                X = packet.ReadSingle(),
                            };

                            packet.WriteLine("[{0}] Facing Spot: {1}", index, point);
                        }

                        packet.ReadUInt32("Unknown Spline Int32 2", index);
                        if (splineType == SplineType.FacingAngle)
                            packet.ReadSingle("Facing Angle", index);
                    }

                    Vector3 endPoint = new Vector3()
                    {
                        Z = packet.ReadSingle(),
                        Y = packet.ReadSingle(),
                    };

                    packet.ReadUInt32("Spline Full Time", index);
                    endPoint.X = packet.ReadSingle();
                    packet.WriteLine("[{0}] Spline Endpoint: {1}", index, endPoint);
                }

                packet.ReadSingle("Pitch Speed", index);
                if (hasTransportData)
                {
                    Vector4 tPos = new Vector4();
                    if (transportGuid[4] != 0) transportGuid[4] ^= packet.ReadByte();
                    tPos.Z = packet.ReadSingle();
                    if (transportGuid[7] != 0) transportGuid[7] ^= packet.ReadByte();
                    if (transportGuid[5] != 0) transportGuid[5] ^= packet.ReadByte();
                    if (transportGuid[1] != 0) transportGuid[1] ^= packet.ReadByte();
                    tPos.X = packet.ReadSingle();
                    if (transportGuid[3] != 0) transportGuid[3] ^= packet.ReadByte();
                    if (transportGuid[6] != 0) transportGuid[6] ^= packet.ReadByte();
                    if (hasTransportTime3)
                        packet.ReadInt32("Transport Time 3", index);

                    tPos.Y = packet.ReadSingle();
                    packet.ReadByte("Transport Seat", index);
                    tPos.O = packet.ReadSingle();
                    if (hasTransportTime2)
                        packet.ReadInt32("Transport Time 2", index);

                    if (transportGuid[2] != 0) transportGuid[2] ^= packet.ReadByte();
                    packet.ReadInt32("Transport Time", index);
                    if (transportGuid[0] != 0) transportGuid[0] ^= packet.ReadByte();

                    packet.WriteLine("[{0}] Transport Position: {1}", index, tPos);
                }

                packet.ReadSingle("FlyBack Speed", index);
                moveInfo.Position = new Vector3();
                moveInfo.Position.X = packet.ReadSingle();

                if (hasPitch)
                    packet.ReadSingle("Pitch", index);

                if (hasFallData)
                {
                    packet.ReadInt32("Time Fallen", index);
                    if (hasFallDirection)
                    {
                        packet.ReadSingle("Jump Sin", index);
                        packet.ReadSingle("Jump Velocity", index);
                        packet.ReadSingle("Jump Cos", index);
                    }
                    packet.ReadSingle("Fall Start Velocity", index);
                }

                if (guid2[7] != 0) guid2[7] ^= packet.ReadByte();
                packet.ReadSingle("SwimBack Speed", index);
                if (guid2[0] != 0) guid2[0] ^= packet.ReadByte();
                if (guid2[5] != 0) guid2[5] ^= packet.ReadByte();

                if (unkFloat1)
                    packet.ReadSingle("float +36", index);

                moveInfo.Position.Z = packet.ReadSingle();
                packet.ReadSingle("Fly Speed", index);
                if (guid2[1] != 0) guid2[1] ^= packet.ReadByte();
                packet.ReadSingle("RunBack Speed", index);
                packet.ReadSingle("Turn Speed", index);
                packet.ReadSingle("Swim Speed", index);
                moveInfo.WalkSpeed = packet.ReadSingle("Walk Speed", index) / 2.5f;
                if (guid2[3] != 0) guid2[3] ^= packet.ReadByte();
                if (guid2[4] != 0) guid2[4] ^= packet.ReadByte();
                if (guid2[2] != 0) guid2[2] ^= packet.ReadByte();
                if (guid2[6] != 0) guid2[6] ^= packet.ReadByte();

                packet.WriteLine("[{0}] GUID 2 {1}", index, new Guid(BitConverter.ToUInt64(guid2, 0)));

                if (hasSplineElevation)
                    packet.ReadUInt32();

                moveInfo.Position.Y = packet.ReadSingle();
                if (hasOrientation)
                    moveInfo.Orientation = packet.ReadSingle();

                moveInfo.RunSpeed = packet.ReadSingle("Run Speed", index) / 7.0f;

                packet.WriteLine("[{0}] Position: {1} Orientation: {2}", index, moveInfo.Position, moveInfo.Orientation);
            }

            if (unkFloats)
            {
                int i;
                for (i = 0; i < 13; ++i)
                    packet.ReadSingle("Unk float 456", index, i);

                packet.ReadByte("Unk byte 456", index);

                for (; i < 16; ++i)
                    packet.ReadSingle("Unk float 456", index, i);
            }

            if (hasTransportExtra)
                packet.ReadUInt32("Transport Time", index);

            if (hasAnimKits)
            {
                if (hasAnimKit2)
                    packet.ReadUInt16("Anim Kit 3", index);
                if (hasAnimKit3)
                    packet.ReadUInt16("Anim Kit 1", index);
                if (hasAnimKit1)
                    packet.ReadUInt16("Anim Kit 2", index);
            }

            if (hasGameObjectRotation)
                moveInfo.Rotation = packet.ReadPackedQuaternion("GO Rotation", index);

            if (hasAttackingTarget)
            {
                if (attackingTarget[3] != 0) attackingTarget[3] ^= packet.ReadByte();
                if (attackingTarget[5] != 0) attackingTarget[5] ^= packet.ReadByte();
                if (attackingTarget[0] != 0) attackingTarget[0] ^= packet.ReadByte();
                if (attackingTarget[7] != 0) attackingTarget[7] ^= packet.ReadByte();
                if (attackingTarget[2] != 0) attackingTarget[2] ^= packet.ReadByte();
                if (attackingTarget[4] != 0) attackingTarget[4] ^= packet.ReadByte();
                if (attackingTarget[6] != 0) attackingTarget[6] ^= packet.ReadByte();
                if (attackingTarget[1] != 0) attackingTarget[1] ^= packet.ReadByte();
                packet.WriteLine("[{0}] Attacking Target GUID {1}", index, new Guid(BitConverter.ToUInt64(attackingTarget, 0)));
            }

            packet.ResetBitReader();
            return moveInfo;
        }

Opcodes by Danlapps

Ref TrinityCore/TrinityCore#13891

New opcodes:

CMSG_AUCTION_LIST_BIDDER_ITEMS                    = 0x050E,
CMSG_AUTOEQUIP_ITEM_SLOT                          = 0x07B1,
CMSG_AUTO_DECLINE_GUILD_INVITES                   = 0x148A,
CMSG_BATTLEMASTER_JOIN_RATED                      = 0x06E4,
CMSG_CANCEL_AUTO_REPEAT_SPELL                     = 0x0939,
CMSG_CHANGE_SEATS_ON_CONTROLLED_VEHICLE           = 0x0581,
CMSG_AUCTION_SELL_ITEM                            = 0x0027,

Need verification:

0x1381 - CMSG_BATTLEFIELD_MGR_QUEUE_REQUEST vs CMSG_BATTLEFIELD_MGR_EXIT_REQUEST

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.