PDA

View Full Version : Is Showeq working these days?



Sky_Genie
06-07-2012, 02:11 PM
Having been away for a few years, I was wondering if Showeq was still providing skittles. I just wan't to confirm that it was before setting up another Linux box for it.

Thanks

BlueAdept
06-07-2012, 04:18 PM
I am not sure. It was a little while ago, but I do not know about now. I know there was a major change not long ago (to free play) and I am not sure if it broke it or not since I do not play any more.

fransick
06-08-2012, 04:58 AM
I believe it is working without issue at the moment... and am hoping that's why it's been relatively quiet here of late.

Roads
06-24-2012, 07:16 PM
It's been working fine for months now:) Sorry bout the late reply.. but when things are working i tend to not look at the forums:)

BTW.. after 5 years off im glad im playing again.. the game is MUCH more fun now

BlueAdept
06-27-2012, 11:07 AM
Well after a 3 year absence, I got sucked back in. I just signed up for a year of EQ. I guess Ill have to get SEQ going again.

fransick
06-27-2012, 11:12 AM
Welcome back BA... just in time for a patch that seems to have borked skittles!

Roads
06-27-2012, 06:41 PM
yup.. Seq is dead as of today.. it shows maps and where you are on the map.. but zero skittles. i have no idea how to help on this:) myseq is working though

fransick
06-27-2012, 06:46 PM
Working on some opcode updates... have skittles atm. Problem is some of the non-critical opcodes will cause a CTD if they are not updated so have to go a little deeper to get skittles and stability.

Razzle
06-27-2012, 07:37 PM
Welcome back BA.

Razzle

fransick
06-27-2012, 10:11 PM
Nowhere near complete but working enough for skittles with the following opcode changes:


--- zoneopcodes.04-01-2012.xml 2012-06-27 16:58:37.521248001 -0400
+++ zoneopcodes.xml 2012-06-28 00:05:14.408753494 -0400
@@ -3,32 +3,32 @@
<seqopcodes>

<!-- Critical opcodes used directly by ShowEQ -->
- <opcode id="2339" name="OP_NpcMoveUpdate" updated="03/23/12">
+ <opcode id="4f35" name="OP_NpcMoveUpdate" updated="06/27/12">
<comment>Position updates</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="1910" name="OP_MovementHistory" updated="03/23/12">
+ <opcode id="666d" name="OP_MovementHistory" updated="06/27/12">
<comment>Movement data... rewind info?</comment>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="28c7" name="OP_DeleteSpawn" updated="03/23/12">
+ <opcode id="6c36" name="OP_DeleteSpawn" updated="06/27/12">
<comment>DeleteSpawnCode</comment>
<payload dir="both" typename="deleteSpawnStruct" sizechecktype="match"/>
</opcode>
- <opcode id="5821" name="OP_ZoneEntry" updated="03/23/12">
+ <opcode id="4892" name="OP_ZoneEntry" updated="06/27/12">
<comment>ZoneEntryCode</comment>
<payload dir="client" typename="ClientZoneEntryStruct" sizechecktype="match"/>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="1b7b" name="OP_GuildMOTD" updated="03/23/12">
+ <opcode id="4e19" name="OP_GuildMOTD" updated="06/27/12">
<comment>GuildMOTD</comment>
<payload dir="server" typename="guildMOTDStruct" sizechecktype="none"/>
</opcode>
- <opcode id="0c54" name="OP_InspectAnswer" updated="03/23/12">
+ <opcode id="13da" name="OP_InspectAnswer" updated="06/27/12">
<comment>InspectDataCode</comment>
<payload dir="both" typename="inspectDataStruct" sizechecktype="match"/>
</opcode>
- <opcode id="3edc" name="OP_TargetMouse" updated="03/23/12">
+ <opcode id="6dee" name="OP_TargetMouse" updated="06/27/12">
<comment>Targeting a person - old ClientTargetCode</comment>
<payload dir="both" typename="clientTargetStruct" sizechecktype="match"/>
</opcode>
@@ -36,35 +36,35 @@
<comment>Server putting players into shroud form</comment>
<payload dir="server" typename="spawnShroudSelf" sizechecktype="none"/>
</opcode>
- <opcode id="3288" name="OP_GroupInvite" updated="03/23/12">
+ <opcode id="5613" name="OP_GroupInvite" updated="06/27/12">
<payload dir="both" typename="groupInviteStruct" sizechecktype="none"/>
<comment>You invite someone while ungrouped or get invited by someone ungrouped </comment>
</opcode>
- <opcode id="5251" name="OP_GroupInvite2" updated="03/23/12">
+ <opcode id="2736" name="OP_GroupInvite2" updated="06/27/12">
<payload dir="client" typename="groupInviteStruct" sizechecktype="match"/>
<comment>You're inviting someone and you are grouped or get invited by a group</comment>
</opcode>
- <opcode id="74e9" name="OP_GroupFollow" updated="03/23/12">
+ <opcode id="7139" name="OP_GroupFollow" updated="06/27/12">
<payload dir="server" typename="groupFollowStruct" sizechecktype="match"/>
<comment>You join a group or player joins group</comment>
</opcode>
- <opcode id="44c2" name="OP_GroupFollow2" updated="03/23/12">
+ <opcode id="9999" name="OP_GroupFollow2" updated="06/27/12">
<payload dir="server" typename="groupFollowStruct" sizechecktype="match"/>
<comment>Player joins your group</comment>
</opcode>
- <opcode id="367b" name="OP_GroupDisband" updated="03/23/12">
+ <opcode id="367f" name="OP_GroupDisband" updated="06/27/12">
<comment>You disband from group</comment>
<payload dir="server" typename="groupDisbandStruct" sizechecktype="match"/>
</opcode>
- <opcode id="4b82" name="OP_GroupDisband2" updated="03/23/12">
+ <opcode id="3352" name="OP_GroupDisband2" updated="06/27/12">
<comment>Other disbands from group</comment>
<payload dir="server" typename="groupDisbandStruct" sizechecktype="match"/>
</opcode>
- <opcode id="5fe3" name="OP_GroupLeader" updated="03/23/12">
+ <opcode id="44c2" name="OP_GroupLeader" updated="06/27/12">
<comment>Group leader change</comment>
<payload dir="server" typename="groupLeaderChangeStruct" sizechecktype="match"/>
</opcode>
- <opcode id="2736" name="OP_GroupCancelInvite" updated="03/23/12">
+ <opcode id="6c16" name="OP_GroupCancelInvite" updated="06/27/12">
<payload dir="both" typename="groupDeclineStruct" sizechecktype="match"/>
<comment>Declining to join a group</comment>
</opcode>
@@ -76,23 +76,23 @@
<comment>Expedition Information</comment>
<payload dir="server" typename="dzInfo" sizechecktype="match"/>
</opcode>
- <opcode id="4675" name="OP_FormattedMessage" updated="03/23/12">
+ <opcode id="7092" name="OP_FormattedMessage" updated="06/27/12">
<comment>FormattedMessageCode</comment>
<payload dir="server" typename="formattedMessageStruct" sizechecktype="none"/>
</opcode>
- <opcode id="7113" name="OP_SpawnDoor" updated="03/23/12">
+ <opcode id="5a55" name="OP_SpawnDoor" updated="06/27/12">
<comment>DoorSpawnsCode</comment>
<payload dir="server" typename="doorStruct" sizechecktype="modulus"/>
</opcode>
- <opcode id="1318" name="OP_AAExpUpdate" updated="03/23/12">
+ <opcode id="783c" name="OP_AAExpUpdate" updated="06/27/12">
<comment>Receiving AA experience. Also when percent to AA changes.</comment>
<payload dir="server" typename="altExpUpdateStruct" sizechecktype="match"/>
</opcode>
- <opcode id="2369" name="OP_HPUpdate" updated="03/23/12">
+ <opcode id="2370" name="OP_HPUpdate" updated="06/27/12">
<comment>NpcHpUpdateCode Update HP % of a PC or NPC</comment>
<payload dir="both" typename="hpNpcUpdateStruct" sizechecktype="match"/>
</opcode>
- <opcode id="589f" name="OP_GuildMemberUpdate" updated="03/23/12">
+ <opcode id="79c9" name="OP_GuildMemberUpdate" updated="06/27/12">
<comment>Info regarding guild members</comment>
<payload dir="server" typename="GuildMemberUpdate" sizechecktype="match"/>
</opcode>
@@ -108,7 +108,7 @@
<comment>SimpleMessageCode</comment>
<payload dir="server" typename="simpleMessageStruct" sizechecktype="match"/>
</opcode>
- <opcode id="039d" name="OP_SpecialMesg" updated="03/23/12">
+ <opcode id="2e4f" name="OP_SpecialMesg" updated="06/27/12">
<comment>Communicate textual info to client</comment>
<payload dir="server" typename="specialMessageStruct" sizechecktype="none"/>
</opcode>
@@ -130,7 +130,7 @@
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
<comment>Bazaar search tool</comment>
</opcode>
- <opcode id="1a58" name="OP_WearChange" updated="03/23/12">
+ <opcode id="7b64" name="OP_WearChange" updated="06/27/12">
<comment>SpawnUpdateCode</comment>
<payload dir="both" typename="SpawnUpdateStruct" sizechecktype="match"/>
</opcode>
@@ -138,15 +138,15 @@
<comment>Server updating on hunger/thirst</comment>
<payload dir="server" typename="staminaStruct" sizechecktype="match"/>
</opcode>
- <opcode id="70c6" name="OP_Consider" updated="03/23/12">
+ <opcode id="30e2" name="OP_Consider" updated="06/27/12">
<comment>ConsiderCode</comment>
<payload dir="both" typename="considerStruct" sizechecktype="match"/>
</opcode>
- <opcode id="43ac" name="OP_NewZone" updated="03/23/12">
+ <opcode id="4118" name="OP_NewZone" updated="06/27/12">
<comment>NewZoneCode</comment>
<payload dir="server" typename="newZoneStruct" sizechecktype="match"/>
</opcode>
- <opcode id="33e5" name="OP_GroundSpawn" updated="03/23/12">
+ <opcode id="5c85" name="OP_GroundSpawn" updated="06/27/12">
<comment>MakeDropCode</comment>
<payload dir="server" typename="makeDropStruct" sizechecktype="none"/>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
@@ -163,7 +163,7 @@
<comment>Items dropped on the ground</comment>
<payload dir="both" typename="remDropStruct" sizechecktype="match"/>
</opcode>
- <opcode id="1b85" name="OP_Action" updated="03/23/12">
+ <opcode id="7f9e" name="OP_Action" updated="06/27/12">
<comment>Spells cast etc</comment>
<payload dir="both" typename="actionStruct" sizechecktype="match"/>
<payload dir="both" typename="actionAltStruct" sizechecktype="match"/>
@@ -176,7 +176,7 @@
<comment>Spawn being illusioned (changing forms)</comment>
<payload dir="both" typename="spawnIllusionStruct" sizechecktype="match"/>
</opcode>
- <opcode id="3887" name="OP_BuffFadeMsg" updated="03/23/12">
+ <opcode id="1b8a" name="OP_BuffFadeMsg" updated="06/27/12">
<comment>SpellFadeCode</comment>
<payload dir="both" typename="spellFadedStruct" sizechecktype="none"/>
</opcode>
@@ -196,7 +196,7 @@
<comment>RandomCode</comment>
<payload dir="server" typename="randomStruct" sizechecktype="match"/>
</opcode>
- <opcode id="8543" name="OP_ManaChange" updated="03/23/12">
+ <opcode id="3887" name="OP_ManaChange" updated="06/27/12">
<comment>Mana change. Bards send this up with no size. Casters receive this for mana updates.</comment>
<payload dir="server" typename="manaDecrementStruct" sizechecktype="match"/>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
@@ -205,15 +205,15 @@
<comment>MoneyOnCorpseCode</comment>
<payload dir="server" typename="moneyOnCorpseStruct" sizechecktype="match"/>
</opcode>
- <opcode id="6afd" name="OP_PlayerProfile" updated="03/23/12">
+ <opcode id="6afd" name="OP_PlayerProfile" updated="06/27/12">
<comment>CharProfileCode</comment>
<payload dir="server" typename="charProfileStruct" sizechecktype="match"/>
</opcode>
- <opcode id="6015" name="OP_TimeOfDay" updated="03/23/12">
+ <opcode id="6015" name="OP_TimeOfDay" updated="06/27/12">
<comment>TimeOfDayCode</comment>
<payload dir="server" typename="timeOfDayStruct" sizechecktype="match"/>
</opcode>
- <opcode id="7062" name="OP_ClientUpdate" updated="03/23/12">
+ <opcode id="7062" name="OP_ClientUpdate" updated="06/27/12">
<comment>Position updates</comment>
<payload dir="server" typename="playerSpawnPosStruct" sizechecktype="match"/>
<payload dir="both" typename="playerSelfPosStruct" sizechecktype="match"/>
@@ -230,7 +230,7 @@
<comment>Skill up code</comment>
<payload dir="server" typename="skillIncStruct" sizechecktype="match"/>
</opcode>
- <opcode id="3f55" name="OP_SpawnAppearance" updated="03/23/12">
+ <opcode id="5488" name="OP_SpawnAppearance" updated="06/27/12">
<comment>SpawnAppearanceCode</comment>
<payload dir="both" typename="spawnAppearanceStruct" sizechecktype="match"/>
</opcode>
@@ -246,7 +246,7 @@
<comment>Leadership AA Exp Update</comment>
<payload dir="server" typename="leadExpUpdateStruct" sizechecktype="match"/>
</opcode>
- <opcode id="4656" name="OP_MobUpdate" updated="03/23/12">
+ <opcode id="4656" name="OP_MobUpdate" updated="06/27/12">
<comment>MobUpdateCode</comment>
<payload dir="both" typename="spawnPositionUpdate" sizechecktype="match"/>
</opcode>
@@ -277,7 +277,7 @@
</opcode>

<!-- Not necessary for SEQ to run but here to name packets in logs. -->
- <opcode id="367f" name="OP_GroupUpdate" updated="03/23/12">
+ <opcode id="3671" name="OP_GroupUpdate" updated="03/23/12">
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
<comment>Variable length packet with group member names</comment>
</opcode>
@@ -285,10 +285,10 @@
<comment>List of guild members</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="7c94" name="OP_ManaUpdate" updated="03/23/121">
+ <opcode id="0c2b" name="OP_ManaUpdate" updated="06/27/12">
<comment>Mana Update opcode</comment>
</opcode>
- <opcode id="5851" name="OP_EndUpdate" updated="03/23/12">
+ <opcode id="5f51" name="OP_EndUpdate" updated="06/27/12">
<comment>Endurance Update opcode</comment>
</opcode>
<opcode id="7c11" name="OP_Marketplace" updated="03/23/12">
@@ -303,22 +303,22 @@
<opcode id="3637" name="OP_Claims" updated="03/23/12">
<comment>Contents of claims window</comment>
</opcode>
- <opcode id="0fd3" name="OP_VoiceChat" updated="03/23/12">
+ <opcode id="5433" name="OP_VoiceChat" updated="06/27/12">
<comment>Voice chat server info?</comment>
</opcode>
- <opcode id="47b3" name="OP_PollQuestions" updated="03/23/12">
+ <opcode id="7a52" name="OP_PollQuestions" updated="06/27/12">
<comment>SOE in-game player poll questions</comment>
</opcode>
- <opcode id="a1e6" name="OP_PollResponses" updated="03/23/12">
+ <opcode id="591f" name="OP_PollResponses" updated="06/27/12">
<comment>Poll response choices</comment>
</opcode>
- <opcode id="064d" name="OP_ShroudProgression" updated="03/23/12">
+ <opcode id="1d51" name="OP_ShroudProgression" updated="06/27/12">
<comment>Unlocked shrouds</comment>
</opcode>
- <opcode id="01e5" name="OP_Fellowship" updated="03/23/12">
+ <opcode id="2538" name="OP_Fellowship" updated="06/27/12">
<comment>Fellowship information</comment>
</opcode>
- <opcode id="03d1" name="OP_ExpandedGuildInfo" updated="03/23/12">
+ <opcode id="1a7b" name="OP_ExpandedGuildInfo" updated="06/27/12">
<comment>Variable length guild ranks and other misc guild data</comment>
</opcode>
<opcode id="7b22" name="OP_GuildBank" updated="03/23/12">
@@ -330,20 +330,20 @@
<opcode id="1ecf" name="OP_TradeskillRecipes" updated="03/23/12">
<comment>Learned recipes</comment>
</opcode>
- <opcode id="6cfe" name="OP_ItemPlayerPacket" updated="03/23/12">
+ <opcode id="7113" name="OP_ItemPlayerPacket" updated="06/27/12">
<comment>Inventory/bank items coming over during zone</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="2E4F" name="OP_TaskDescription" updated="03/23/12">
+ <opcode id="512b" name="OP_TaskDescription" updated="06/27/12">
<comment>Task descriptions coming down for task window</comment>
</opcode>
- <opcode id="512B" name="OP_TaskActivity" updated="03/23/12">
+ <opcode id="47ea" name="OP_TaskActivity" updated="06/27/12">
<comment>Task activity descriptions coming down for task window</comment>
</opcode>
- <opcode id="3141" name="OP_CompletedTasks" updated="03/23/12">
+ <opcode id="189b" name="OP_CompletedTasks" updated="06/27/12">
<comment>Task history for task window</comment>
</opcode>
- <opcode id="6ade" name="OP_CustomTitles" updated="03/23/12">
+ <opcode id="1b9c" name="OP_CustomTitles" updated="06/27/12">
<comment>List of available titles</comment>
</opcode>
<opcode id="0b93" name="OP_Animation" updated="03/23/12">
@@ -454,6 +454,9 @@
<opcode id="3d0c" name="OP_LFGGetMatchesResponse" updated="03/23/12">
<comment>FLG/LFP server response</comment>
</opcode>
+ <opcode id="27ac" name="OP_MercenaryList" updated="06/27/12">
+ <comment>Listing of hired mercenaries</comment>
+ </opcode>

<!-- Below are used to help make sense of the logs when searching for opcodes
Using these marks unknown opcodes in logs for easier reading -->
@@ -543,7 +546,7 @@
<opcode id="063b" name="OP_RespawnWindow" updated="03/14/07">
<comment>Server telling client enough to populate the respawn window when you die</comment>
</opcode>
- <opcode id="010D" name="OP_InitialMobHealth" updated="03/14/07">
+ <opcode id="314f" name="OP_InitialMobHealth" updated="06/27/12">
<comment>Initial health sent when a player clicks on the mob. Subsequent updated will be OP_MobHealth</comment>
</opcode>
<opcode id="311a" name="OP_MobHealth" updated="03/14/07">

rogues
06-28-2012, 03:51 AM
Yay skittles! Thanks for your hard work!!!

Roads
06-28-2012, 06:39 PM
ok.. could someone please help me with patching? everytime i do patch -p0 < patch (the name of the patch file) i get a ton failed hunks... so i grabbed the zoneopcode file from the latest tarball. same thing? Last time we had to patch like this i ended up doing it manually by hand.. any help please?

Roads
06-28-2012, 06:47 PM
or could some one post a working zoneopcodes file plase? and thanks fran...

Roads
06-28-2012, 06:51 PM
root@bigjohn:~/trunk/conf# patch -p0 < ~/patch
patching file zoneopcodes.xml
Hunk #1 FAILED at 3.
Hunk #2 FAILED at 36.
Hunk #3 FAILED at 76.
Hunk #4 FAILED at 108.
Hunk #5 FAILED at 130.
Hunk #6 FAILED at 138.
Hunk #7 FAILED at 163.
Hunk #8 FAILED at 176.
Hunk #9 FAILED at 196.
Hunk #10 FAILED at 205.
Hunk #11 FAILED at 230.
Hunk #12 FAILED at 246.
Hunk #13 FAILED at 277.
Hunk #14 FAILED at 285.
Hunk #15 FAILED at 303.
Hunk #16 FAILED at 330.
Hunk #17 succeeded at 351 with fuzz 2 (offset -103 lines).
Hunk #18 succeeded at 421 with fuzz 2 (offset -125 lines).
16 out of 18 hunks FAILED -- saving rejects to file zoneopcodes.xml.rej

This was on the latest SVN download

rogues
06-29-2012, 03:17 AM
Roads, fwiw I ended up manually making the changes.

fransick
06-29-2012, 05:07 AM
Yeah, we've run across patch weirdness before... I'll have to go back and read some old threads as I believe Razzle may have shed some light on why they bomb. In the meantime, here's the entire file. It's not completely fixed but good enough for skittles.


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE seqopcodes SYSTEM "seqopcodes.dtd">
<seqopcodes>

<!-- Critical opcodes used directly by ShowEQ -->
<opcode id="4f35" name="OP_NpcMoveUpdate" updated="06/27/12">
<comment>Position updates</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="666d" name="OP_MovementHistory" updated="06/27/12">
<comment>Movement data... rewind info?</comment>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="6c36" name="OP_DeleteSpawn" updated="06/27/12">
<comment>DeleteSpawnCode</comment>
<payload dir="both" typename="deleteSpawnStruct" sizechecktype="match"/>
</opcode>
<opcode id="4892" name="OP_ZoneEntry" updated="06/27/12">
<comment>ZoneEntryCode</comment>
<payload dir="client" typename="ClientZoneEntryStruct" sizechecktype="match"/>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="4e19" name="OP_GuildMOTD" updated="06/27/12">
<comment>GuildMOTD</comment>
<payload dir="server" typename="guildMOTDStruct" sizechecktype="none"/>
</opcode>
<opcode id="13da" name="OP_InspectAnswer" updated="06/27/12">
<comment>InspectDataCode</comment>
<payload dir="both" typename="inspectDataStruct" sizechecktype="match"/>
</opcode>
<opcode id="6dee" name="OP_TargetMouse" updated="06/27/12">
<comment>Targeting a person - old ClientTargetCode</comment>
<payload dir="both" typename="clientTargetStruct" sizechecktype="match"/>
</opcode>
<opcode id="1d51" name="OP_Shroud" updated="03/23/12">
<comment>Server putting players into shroud form</comment>
<payload dir="server" typename="spawnShroudSelf" sizechecktype="none"/>
</opcode>
<opcode id="5613" name="OP_GroupInvite" updated="06/27/12">
<payload dir="both" typename="groupInviteStruct" sizechecktype="none"/>
<comment>You invite someone while ungrouped or get invited by someone ungrouped </comment>
</opcode>
<opcode id="2736" name="OP_GroupInvite2" updated="06/27/12">
<payload dir="client" typename="groupInviteStruct" sizechecktype="match"/>
<comment>You're inviting someone and you are grouped or get invited by a group</comment>
</opcode>
<opcode id="7139" name="OP_GroupFollow" updated="06/27/12">
<payload dir="server" typename="groupFollowStruct" sizechecktype="match"/>
<comment>You join a group or player joins group</comment>
</opcode>
<opcode id="9999" name="OP_GroupFollow2" updated="06/27/12">
<payload dir="server" typename="groupFollowStruct" sizechecktype="match"/>
<comment>Player joins your group</comment>
</opcode>
<opcode id="367f" name="OP_GroupDisband" updated="06/27/12">
<comment>You disband from group</comment>
<payload dir="server" typename="groupDisbandStruct" sizechecktype="match"/>
</opcode>
<opcode id="3352" name="OP_GroupDisband2" updated="06/27/12">
<comment>Other disbands from group</comment>
<payload dir="server" typename="groupDisbandStruct" sizechecktype="match"/>
</opcode>
<opcode id="44c2" name="OP_GroupLeader" updated="06/27/12">
<comment>Group leader change</comment>
<payload dir="server" typename="groupLeaderChangeStruct" sizechecktype="match"/>
</opcode>
<opcode id="6c16" name="OP_GroupCancelInvite" updated="06/27/12">
<payload dir="both" typename="groupDeclineStruct" sizechecktype="match"/>
<comment>Declining to join a group</comment>
</opcode>
<opcode id="28ce" name="OP_DzSwitchInfo" updated="03/23/12">
<comment>Expedition compass etc</comment>
<payload dir="server" typename="dzSwitchInfo" sizechecktype="none"/>
</opcode>
<opcode id="6c75" name="OP_DzInfo" updated="03/23/12">
<comment>Expedition Information</comment>
<payload dir="server" typename="dzInfo" sizechecktype="match"/>
</opcode>
<opcode id="7092" name="OP_FormattedMessage" updated="06/27/12">
<comment>FormattedMessageCode</comment>
<payload dir="server" typename="formattedMessageStruct" sizechecktype="none"/>
</opcode>
<opcode id="5a55" name="OP_SpawnDoor" updated="06/27/12">
<comment>DoorSpawnsCode</comment>
<payload dir="server" typename="doorStruct" sizechecktype="modulus"/>
</opcode>
<opcode id="783c" name="OP_AAExpUpdate" updated="06/27/12">
<comment>Receiving AA experience. Also when percent to AA changes.</comment>
<payload dir="server" typename="altExpUpdateStruct" sizechecktype="match"/>
</opcode>
<opcode id="2370" name="OP_HPUpdate" updated="06/27/12">
<comment>NpcHpUpdateCode Update HP % of a PC or NPC</comment>
<payload dir="both" typename="hpNpcUpdateStruct" sizechecktype="match"/>
</opcode>
<opcode id="79c9" name="OP_GuildMemberUpdate" updated="06/27/12">
<comment>Info regarding guild members</comment>
<payload dir="server" typename="GuildMemberUpdate" sizechecktype="match"/>
</opcode>
<opcode id="0598" name="OP_SpawnRename" updated="06/27/12">
<comment>Spawns getting renamed after initial NewSpawn</comment>
<payload dir="server" typename="spawnRenameStruct" sizechecktype="match"/>
</opcode>
<opcode id="63c7" name="OP_SwapSpell" updated="06/27/12">
<comment>TradeSpellBookSlotsCode</comment>
<payload dir="both" typename="tradeSpellBookSlotsStruct" sizechecktype="match"/>
</opcode>
<opcode id="0698" name="OP_SimpleMessage" updated="03/23/12">
<comment>SimpleMessageCode</comment>
<payload dir="server" typename="simpleMessageStruct" sizechecktype="match"/>
</opcode>
<opcode id="2e4f" name="OP_SpecialMesg" updated="06/27/12">
<comment>Communicate textual info to client</comment>
<payload dir="server" typename="specialMessageStruct" sizechecktype="none"/>
</opcode>
<opcode id="30a4" name="OP_RandomReq" updated="06/27/12">
<comment>RandomReqCode</comment>
<payload dir="client" typename="randomReqStruct" sizechecktype="match"/>
</opcode>
<opcode id="35c6" name="OP_ConsentResponse" updated="03/23/12">
<comment>Server replying with consent information after /consent</comment>
<payload dir="server" typename="consentResponseStruct" sizechecktype="match"/>
</opcode>
<opcode id="0370" name="OP_DenyResponse" updated="03/23/12">
<comment>Server replying with deny information after /deny</comment>
<payload dir="server" typename="consentResponseStruct" sizechecktype="match"/>
</opcode>
<opcode id="2881" name="OP_BazaarSearch" updated="03/23/12">
<payload dir="client" typename="bazaarSearchQueryStruct" sizechecktype="none"/>
<payload dir="server" typename="bazaarSearchResponseStruct" sizechecktype="modulus"/>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
<comment>Bazaar search tool</comment>
</opcode>
<opcode id="7b64" name="OP_WearChange" updated="06/27/12">
<comment>SpawnUpdateCode</comment>
<payload dir="both" typename="SpawnUpdateStruct" sizechecktype="match"/>
</opcode>
<opcode id="7686" name="OP_Stamina" updated="03/23/12">
<comment>Server updating on hunger/thirst</comment>
<payload dir="server" typename="staminaStruct" sizechecktype="match"/>
</opcode>
<opcode id="30e2" name="OP_Consider" updated="06/27/12">
<comment>ConsiderCode</comment>
<payload dir="both" typename="considerStruct" sizechecktype="match"/>
</opcode>
<opcode id="4118" name="OP_NewZone" updated="06/27/12">
<comment>NewZoneCode</comment>
<payload dir="server" typename="newZoneStruct" sizechecktype="match"/>
</opcode>
<opcode id="5c85" name="OP_GroundSpawn" updated="06/27/12">
<comment>MakeDropCode</comment>
<payload dir="server" typename="makeDropStruct" sizechecktype="none"/>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="3164" name="OP_RemoveSpawn" updated="03/23/12">
<comment>Remove spawn from zone</comment>
<payload dir="both" typename="removeSpawnStruct" sizechecktype="none"/>
</opcode>
<opcode id="6685" name="OP_Death" updated="03/23/12">
<comment>old NewCorpseCode</comment>
<payload dir="server" typename="newCorpseStruct" sizechecktype="match"/>
</opcode>
<opcode id="5f0d" name="OP_ClickObject" updated="03/23/12">
<comment>Items dropped on the ground</comment>
<payload dir="both" typename="remDropStruct" sizechecktype="match"/>
</opcode>
<opcode id="7f9e" name="OP_Action" updated="06/27/12">
<comment>Spells cast etc</comment>
<payload dir="both" typename="actionStruct" sizechecktype="match"/>
<payload dir="both" typename="actionAltStruct" sizechecktype="match"/>
</opcode>
<opcode id="631a" name="OP_Action2" updated="03/23/12">
<comment>Combat actions i.e. bash, kick etc</comment>
<payload dir="both" typename="action2Struct" sizechecktype="match"/>
</opcode>
<opcode id="10b7" name="OP_Illusion" updated="03/23/12">
<comment>Spawn being illusioned (changing forms)</comment>
<payload dir="both" typename="spawnIllusionStruct" sizechecktype="match"/>
</opcode>
<opcode id="1b8a" name="OP_BuffFadeMsg" updated="06/27/12">
<comment>SpellFadeCode</comment>
<payload dir="both" typename="spellFadedStruct" sizechecktype="none"/>
</opcode>
<opcode id="71bf" name="OP_CastSpell" updated="03/23/12">
<comment>StartCastCode</comment>
<payload dir="both" typename="startCastStruct" sizechecktype="match"/>
</opcode>
<opcode id="2917" name="OP_MemorizeSpell" updated="03/23/12">
<comment>MemSpellCode</comment>
<payload dir="both" typename="memSpellStruct" sizechecktype="match"/>
</opcode>
<opcode id="7434" name="OP_Emote" updated="03/23/12">
<comment>EmoteTextCode</comment>
<payload dir="both" typename="emoteTextStruct" sizechecktype="none"/>
</opcode>
<opcode id="07fb" name="OP_RandomReply" updated="06/27/12">
<comment>RandomCode</comment>
<payload dir="server" typename="randomStruct" sizechecktype="match"/>
</opcode>
<opcode id="3887" name="OP_ManaChange" updated="06/27/12">
<comment>Mana change. Bards send this up with no size. Casters receive this for mana updates.</comment>
<payload dir="server" typename="manaDecrementStruct" sizechecktype="match"/>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="4074" name="OP_MoneyOnCorpse" updated="03/23/12">
<comment>MoneyOnCorpseCode</comment>
<payload dir="server" typename="moneyOnCorpseStruct" sizechecktype="match"/>
</opcode>
<opcode id="6afd" name="OP_PlayerProfile" updated="06/27/12">
<comment>CharProfileCode</comment>
<payload dir="server" typename="charProfileStruct" sizechecktype="match"/>
</opcode>
<opcode id="6015" name="OP_TimeOfDay" updated="06/27/12">
<comment>TimeOfDayCode</comment>
<payload dir="server" typename="timeOfDayStruct" sizechecktype="match"/>
</opcode>
<opcode id="7062" name="OP_ClientUpdate" updated="06/27/12">
<comment>Position updates</comment>
<payload dir="server" typename="playerSpawnPosStruct" sizechecktype="match"/>
<payload dir="both" typename="playerSelfPosStruct" sizechecktype="match"/>
</opcode>
<opcode id="0d5a" name="OP_BeginCast" updated="03/23/12">
<comment>BeginCastCode</comment>
<payload dir="both" typename="beginCastStruct" sizechecktype="match"/>
</opcode>
<opcode id="2e79" name="OP_CommonMessage" updated="03/23/12">
<comment>ChannelMessageCode</comment>
<payload dir="both" typename="channelMessageStruct" sizechecktype="none"/>
</opcode>
<opcode id="7f01" name="OP_SkillUpdate" updated="06/27/12">
<comment>Skill up code</comment>
<payload dir="server" typename="skillIncStruct" sizechecktype="match"/>
</opcode>
<opcode id="5488" name="OP_SpawnAppearance" updated="06/27/12">
<comment>SpawnAppearanceCode</comment>
<payload dir="both" typename="spawnAppearanceStruct" sizechecktype="match"/>
</opcode>
<opcode id="0000" name="OP_ExpUpdate" updated="03/23/12">
<comment>ExpUpdateCode - opcode looks to be 221a as of 03/23/12 but that value causes seg faults for some reason</comment>
<payload dir="server" typename="expUpdateStruct" sizechecktype="match"/>
</opcode>
<opcode id="6e1c" name="OP_LevelUpdate" updated="03/23/12">
<comment>LevelUpUpdateCode</comment>
<payload dir="server" typename="levelUpUpdateStruct" sizechecktype="match"/>
</opcode>
<opcode id="3703" name="OP_LeaderExpUpdate" updated="03/23/12">
<comment>Leadership AA Exp Update</comment>
<payload dir="server" typename="leadExpUpdateStruct" sizechecktype="match"/>
</opcode>
<opcode id="4656" name="OP_MobUpdate" updated="06/27/12">
<comment>MobUpdateCode</comment>
<payload dir="both" typename="spawnPositionUpdate" sizechecktype="match"/>
</opcode>
<opcode id="358a" name="OP_Trader" updated="03/23/12">
<comment>PC's turning trader on and off</comment>
<payload dir="server" typename="bazaarTraderRequest" sizechecktype="match"/>
</opcode>
<opcode id="6bb9" name="OP_Consent" updated="03/23/12">
<comment>/consent someone</comment>
<payload dir="client" typename="consentRequestStruct" sizechecktype="none"/>
</opcode>
<opcode id="6b7f" name="OP_ConsentDeny" updated="03/23/12">
<comment>/deny someone</comment>
<payload dir="client" typename="consentRequestStruct" sizechecktype="none"/>
</opcode>
<opcode id="2dd3" name="OP_ItemPacket" updated="03/23/12">
<comment>ItemCode</comment>
<payload dir="server" typename="itemPacketStruct" sizechecktype="none"/>
</opcode>
<opcode id="24c9" name="OP_ItemLinkResponse" updated="03/23/12">
<comment>ItemInfoCode</comment>
<payload dir="server" typename="itemInfoStruct" sizechecktype="none"/>
<payload dir="client" typename="itemInfoReqStruct" sizechecktype="none"/>
</opcode>
<opcode id="2730" name="OP_EnvDamage" updated="03/23/12">
<comment>Environmental Damage</comment>
<payload dir="client" typename="environmentDamageStruct" sizechecktype="match"/>
</opcode>

<!-- Not necessary for SEQ to run but here to name packets in logs. -->
<opcode id="3671" name="OP_GroupUpdate" updated="03/23/12">
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
<comment>Variable length packet with group member names</comment>
</opcode>
<opcode id="51bc" name="OP_GuildMemberList" updated="03/23/12">
<comment>List of guild members</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="0c2b" name="OP_ManaUpdate" updated="06/27/12">
<comment>Mana Update opcode</comment>
</opcode>
<opcode id="5f51" name="OP_EndUpdate" updated="06/27/12">
<comment>Endurance Update opcode</comment>
</opcode>
<opcode id="7c11" name="OP_Marketplace" updated="03/23/12">
<comment>Marketplace data</comment>
</opcode>
<opcode id="012f" name="OP_DzMembers" updated="03/23/12">
<comment>Expedition Members</comment>
</opcode>
<opcode id="4292" name="OP_Campfire" updated="03/23/12">
<comment>Fellowship campfire information</comment>
</opcode>
<opcode id="3637" name="OP_Claims" updated="03/23/12">
<comment>Contents of claims window</comment>
</opcode>
<opcode id="5433" name="OP_VoiceChat" updated="06/27/12">
<comment>Voice chat server info?</comment>
</opcode>
<opcode id="7a52" name="OP_PollQuestions" updated="06/27/12">
<comment>SOE in-game player poll questions</comment>
</opcode>
<opcode id="591f" name="OP_PollResponses" updated="06/27/12">
<comment>Poll response choices</comment>
</opcode>
<opcode id="1d51" name="OP_ShroudProgression" updated="06/27/12">
<comment>Unlocked shrouds</comment>
</opcode>
<opcode id="2538" name="OP_Fellowship" updated="06/27/12">
<comment>Fellowship information</comment>
</opcode>
<opcode id="1a7b" name="OP_ExpandedGuildInfo" updated="06/27/12">
<comment>Variable length guild ranks and other misc guild data</comment>
</opcode>
<opcode id="7b22" name="OP_GuildBank" updated="03/23/12">
<comment>Guild bank contents</comment>
</opcode>
<opcode id="29df" name="OP_OpenTradeskillContainer" updated="03/23/12">
<comment>Opens forge, kiln etc</comment>
</opcode>
<opcode id="1ecf" name="OP_TradeskillRecipes" updated="03/23/12">
<comment>Learned recipes</comment>
</opcode>
<opcode id="7113" name="OP_ItemPlayerPacket" updated="06/27/12">
<comment>Inventory/bank items coming over during zone</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="512b" name="OP_TaskDescription" updated="06/27/12">
<comment>Task descriptions coming down for task window</comment>
</opcode>
<opcode id="47ea" name="OP_TaskActivity" updated="06/27/12">
<comment>Task activity descriptions coming down for task window</comment>
</opcode>
<opcode id="189b" name="OP_CompletedTasks" updated="06/27/12">
<comment>Task history for task window</comment>
</opcode>
<opcode id="1b9c" name="OP_CustomTitles" updated="06/27/12">
<comment>List of available titles</comment>
</opcode>
<opcode id="0b93" name="OP_Animation" updated="03/23/12">
<comment>Combat animation, emote animations etc</comment>
</opcode>
<opcode id="177a" name="OP_WhoAllRequest" updated="03/23/12">
<comment>old WhoAllReqCode</comment>
</opcode>
<opcode id="15de" name="OP_WhoAllResponse" updated="03/23/12">
<comment>sWhoAllOutputCode</comment>
</opcode>
<opcode id="2683" name="OP_InspectRequest" updated="03/23/12">
<comment>InspectRequestCode</comment>
</opcode>
<opcode id="709d" name="OP_GetGuildMOTD" updated="03/23/12">
<comment>GuildMOTD</comment>
</opcode>
<opcode id="0c24" name="OP_TradeRequest" updated="03/23/12">
<comment>Client request trade session</comment>
</opcode>
<opcode id="2c03" name="OP_TradeDeny" updated="03/23/12">
<comment>Target not ready to trade</comment>
</opcode>
<opcode id="606a" name="OP_TradeRequestAck" updated="03/23/12">
<comment>Trade request recipient is acknowledging they are able to trade</comment>
</opcode>
<opcode id="527e" name="OP_CancelTrade" updated="03/23/12">
<comment>Cancel a trade window</comment>
</opcode>
<opcode id="1ebb" name="OP_FinishTrade" updated="03/23/12">
<comment>Trade is over</comment>
</opcode>
<opcode id="1418" name="OP_TradeCoins" updated="03/23/12">
<comment>Coins put in trade window</comment>
</opcode>
<opcode id="064a" name="OP_TradeAcceptClick" updated="03/23/12">
<comment>One side clicks Accept on the trade</comment>
</opcode>
<opcode id="6948" name="OP_ItemLinkClick" updated="03/23/12">
<comment>Click on itemlinks</comment>
</opcode>
<opcode id="00bc" name="OP_EndLootRequest" updated="03/23/12">
<comment>DoneLootingCode</comment>
</opcode>
<opcode id="5bd9" name="OP_LootItem" updated="03/23/12">
<comment>Loot item from corpse</comment>
</opcode>
<opcode id="79e0" name="OP_Track" updated="03/23/12">
<comment>Clicked Track</comment>
</opcode>
<opcode id="49f4" name="OP_TraderShop" updated="03/23/12">
<comment>OpenTraderCode right-click on a trader in bazaar</comment>
</opcode>
<opcode id="2257" name="OP_AutoAttack" updated="03/23/12">
<comment>Attack on/off</comment>
</opcode>
<opcode id="701f" name="OP_AutoAttack2" updated="03/23/12">
<comment>Attack on/off appears to be same as OP_AutoAttack</comment>
</opcode>
<opcode id="48f9" name="OP_ClickDoor" updated="03/23/12">
<comment>DoorOpenCode click request from client</comment>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="231f" name="OP_MoveDoor" updated="03/23/12">
<comment>DoorClickCode response from server</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="2963" name="OP_MoveItem" updated="03/23/12">
<comment>Client moving an item from one slot to another</comment>
</opcode>
<opcode id="783c" name="OP_TraderBuy" updated="03/23/12">
<comment>buy from a trader in bazaar</comment>
</opcode>
<opcode id="1d85" name="OP_LootRequest" updated="03/23/12">
<comment>LootCorpseCode</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="08b3" name="OP_Jump" updated="03/23/12">
<comment>JumpCode</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="3672" name="OP_TGB" updated="03/23/12">
<comment>Client telling server to set targetgroupbuff</comment>
</opcode>
<opcode id="488b" name="OP_Lockouts" updated="03/23/12">
<comment>Client requesting lockouts</comment>
</opcode>
<opcode id="3ef9" name="OP_WelcomeScreenURL" updated="03/23/12">
<comment>URLs for the welcome screen window</comment>
</opcode>
<opcode id="550f" name="OP_RaidJoin" updated="03/23/12">
<comment>Client side raid invite requests</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="0c08" name="OP_RaidInvite" updated="03/23/12">
<comment>Server side raid information</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="52b5" name="OP_Feedback" updated="03/23/12">
<comment>Client sending feedback to server</comment>
</opcode>
<opcode id="5b0b" name="OP_GuildsList" updated="03/23/12">
<comment>Listing of all guilds</comment>
</opcode>
<opcode id="20c6" name="OP_LFGGetMatchesRequest" updated="03/12/23">
<comment>LFG/LFP client request</comment>
</opcode>
<opcode id="3d0c" name="OP_LFGGetMatchesResponse" updated="03/23/12">
<comment>FLG/LFP server response</comment>
</opcode>
<opcode id="27ac" name="OP_MercenaryList" updated="06/27/12">
<comment>Listing of hired mercenaries</comment>
</opcode>

<!-- Below are used to help make sense of the logs when searching for opcodes
Using these marks unknown opcodes in logs for easier reading -->
<opcode id="5cb0" name="OP_Unknown1" updated="03/23/12">
<comment>3 byte opcode that spam logs. Marked here to make reading logs easier</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="4d27" name="OP_Unknown2" updated="03/23/12">
<comment>3 byte opcode that spam logs. Marked here to make reading logs easier</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="190c" name="OP_Unknown3" updated="03/23/12">
<comment>3 byte opcode that spam logs. Marked here to make reading logs easier</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>

<!-- Below are unverified -->
<opcode id="0000" name="OP_Buff" updated="11/15/11">
<comment>old BuffDropCode</comment>
<payload dir="both" typename="buffStruct" sizechecktype="match"/>
</opcode>
<opcode id="0000" name="OP_ZoneChange" updated="04/18/11">
<comment>old ZoneChangeCode</comment>
<payload dir="both" typename="zoneChangeStruct" sizechecktype="match"/>
</opcode>
<opcode id="0000" name="OP_CorpseLocResponse" updated="06/12/09">
<comment>old CorpseLocCode:</comment>
<payload dir="server" typename="corpseLocStruct" sizechecktype="match"/>
</opcode>
<opcode id="0000" name="OP_SendZonePoints" updated="10/15/10">
<comment>Coords in a zone that will port you to another zone</comment>
<payload dir="server" typename="zonePointsStruct" sizechecktype="none"/>
</opcode>
<opcode id="24D8" name="OP_RequestZoneChange" updated="10/20/07">
<comment>Send by server when a click causes zone. Also, origin</comment>
<payload dir="server" typename="requestZoneChangeStruct" sizechecktype="match"/>
</opcode>
<opcode id="44AE" name="OP_Logout" updated="10/21/09">
<comment></comment>
<payload dir="server" typename="none" sizechecktype="match"/>
</opcode>
<opcode id="097f" name="OP_WelcomeScreenTitle" updated="05/16/11">
<comment></comment>
</opcode>
<opcode id="5d0f" name="OP_VeteranRewards" update="04/18/11">
<comment></comment>
</opcode>
<opcode id="3B85" name="OP_SendAATable" updated="08/12/09">
<comment></comment>
</opcode>
<opcode id="5832" name="OP_SendAAStats" updated="08/12/09">
<comment></comment>
</opcode>
<opcode id="4d38" name="OP_AckPacket" updated="03/14/07">
<comment>Appears to be generic ack at the presentation level</comment>
</opcode>
<opcode id="71fb" name="OP_TributeUpdate" updated="03/14/07">
<comment>Tribute information</comment>
</opcode>
<opcode id="70a5" name="OP_Weather" updated="03/14/07">
<comment>old WeatherCode</comment>
</opcode>
<opcode id="5417" name="OP_ReqNewZone" updated="03/14/07">
<comment>Client requesting NewZone_Struct</comment>
</opcode>
<opcode id="45d2" name="OP_ReqClientSpawn" updated="03/14/07">
<comment>Client requesting spawn data</comment>
</opcode>
<opcode id="0000" name="OP_SendExpZonein" updated="03/14/07">
<comment>Both directions. Negotiating sending of exp info.</comment>
</opcode>
<opcode id="0a4f" name="OP_AAAction" updated="03/14/07">
<comment>Used for changing percent, buying? and activating skills</comment>
</opcode>
<opcode id="7038" name="OP_SetServerFilter" updated="03/14/07">
<comment>Client telling server /filter information</comment>
</opcode>
<opcode id="3854" name="OP_ClientReady" updated="03/14/07">
<comment></comment>
</opcode>
<opcode id="6774" name="OP_GuildTributeStatus" updated="03/14/07">
<comment>Guild tribute stats send on zone</comment>
</opcode>
<opcode id="28c1" name="OP_GuildTributeInfo" updated="06/13/06">
<comment>Guild tribute loadout, only if on</comment>
</opcode>
<opcode id="063b" name="OP_RespawnWindow" updated="03/14/07">
<comment>Server telling client enough to populate the respawn window when you die</comment>
</opcode>
<opcode id="314f" name="OP_InitialMobHealth" updated="06/27/12">
<comment>Initial health sent when a player clicks on the mob. Subsequent updated will be OP_MobHealth</comment>
</opcode>
<opcode id="311a" name="OP_MobHealth" updated="03/14/07">
<comment>health sent when a player clicks on the mob</comment>
</opcode>
<opcode id="16c1" name="OP_DeltaCheck" updated="03/14/07">
<comment>Client sending server delta information.</comment>
</opcode>
<opcode id="61ac" name="OP_LoadSpellSet" updated="02/13/07">
<comment>/mem spellsetname</comment>
</opcode>
<opcode id="00de" name="OP_Dye" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="31c2" name="OP_Consume" updated="12/07/05">
<comment>Client force feeding food/drink</comment>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="13e7" name="OP_Begging" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="68ac" name="OP_LFGCommand" updated="10/27/05">
<comment>old LFGReqCode</comment>
</opcode>
<opcode id="7ac3" name="OP_Bug" updated="10/27/05">
<comment>/bug</comment>
</opcode>
<opcode id="5c06" name="OP_Save" updated="04/19/06">
<comment>Client asking server to save user state</comment>
</opcode>
<opcode id="2eeb" name="OP_Camp" updated="02/13/07">
<comment>old cStartCampingCode</comment>
</opcode>
<opcode id="fe13" name="OP_ShopPlayerSell" updated="10/27/05">
<comment>old SellItemCode</comment>
</opcode>
<opcode id="10a1" name="OP_PetCommands" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="4ed9" name="OP_SetRunMode" updated="02/13/07">
<comment>old cRunToggleCode</comment>
</opcode>
<opcode id="1103" name="OP_SaveOnZoneReq" updated="03/14/07">
<comment></comment>
</opcode>
<opcode id="7e03" name="OP_ShopEnd" updated="10/27/05">
<comment>old CloseVendorCode</comment>
<payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="5666" name="OP_SenseTraps" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="05ac" name="OP_SenseHeading" updated="10/27/05">
<comment>old cSenseHeadingCode</comment>
</opcode>
<opcode id="528F" name="OP_LootComplete" updated="12/07/05">
<comment>old sDoneLootingCode</comment>
</opcode>
<opcode id="10A6" name="OP_Split" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="4668" name="OP_Surname" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="45f9" name="OP_ShopRequest" updated="10/27/05">
<comment>old OpenVendorCode</comment>
<payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="0f8e" name="OP_FaceChange" updated="10/27/05">
<comment>/face</comment>
</opcode>
<opcode id="4312" name="OP_Sneak" updated="06/29/05">
<comment>Clicked sneak</comment>
</opcode>
<opcode id="6f64" name="OP_Hide" updated="06/29/05">
<comment></comment>
</opcode>
<opcode id="34e8" name="OP_DisarmTraps" updated="05/11/05">
<comment>Clicked disarm traps</comment>
</opcode>
<opcode id="7c33" name="OP_Forage" updated="10/27/05">
<comment>old ForageCode</comment>
</opcode>
<opcode id="4298" name="OP_BoardBoat" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="67c9" name="OP_LeaveBoat" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="35a6" name="OP_LFPGetMatchesRequest" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="6980" name="OP_GMKill" updated="10/27/05">
<comment>GM /kill - Insta kill mob/pc</comment>
</opcode>
<opcode id="17a2" name="OP_GuildPublicNote" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="61ef" name="OP_YellForHelp" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="0af6" name="OP_ShopPlayerBuy" updated="05/11/05">
<comment>old BuyItemCode</comment>
</opcode>
<opcode id="6f82" name="OP_LFPCommand" updated="10/27/05">
<comment>looking for players</comment>
</opcode>
<opcode id="00dd" name="OP_ConsiderCorpse" updated="12/07/05">
<comment>old cConCorpseCode</comment>
</opcode>
<opcode id="3838" name="OP_ConfirmDelete" updated="10/27/05">
<comment>Client sends this to server to confirm op_deletespawn</comment>
</opcode>
<opcode id="0375" name="OP_Report" updated="06/29/05">
<comment></comment>
</opcode>
<opcode id="40b6" name="OP_TargetCommand" updated="02/13/07">
<comment>Target user</comment>
</opcode>
<opcode id="212d" name="OP_LFPGetMatchesResponse" updated="02/13/07">
<comment></comment>
</opcode>
<opcode id="1089" name="OP_FindPersonRequest" updated="02/13/07">
<comment>Control-F Find</comment>
</opcode>
<opcode id="71b1" name="OP_FindResponse" updated="02/13/07">
<comment>Response to control-F</comment>
</opcode>
<opcode id="23a1" name="OP_GMLastName" updated="10/27/05">
<comment>GM /lastname - Change user lastname</comment>
</opcode>
<opcode id="0840" name="OP_TradeSkillCombine" updated="06/29/05">
<comment></comment>
</opcode>
<opcode id="14ef" name="OP_Mend" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="1ffa" name="OP_MendHPUpdate" updated="05/11/05">
<comment></comment>
</opcode>
<opcode id="4775" name="OP_TributeInfo" updated="02/13/07">
<comment>Tribute information</comment>
</opcode>

<!-- OLD OPCODES. These haven't been mapped in a post 1/26/2005 world. If you
can find any of these in the current stream, please update them and let
us know!

<opcode id="1900" name="OP_ZoneSpawns" updated="05/29/08">
<comment>old ZoneSpawnsCode</comment>
<payload dir="server" typename="spawnStruct" sizechecktype="none"/>
</opcode>
<opcode id="0020" name="OP_GMServers" updated="05/26/04">
<comment>GM /servers - ?</comment>
</opcode>
<opcode id="790e" name="OP_GMKick" updated="01/26/05">
<comment>GM /kick - Boot player</comment>
</opcode>
<opcode id="0068" name="OP_Petition" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0074" name="OP_GMBecomeNPC" updated="05/26/04">
<comment>GM /becomenpc - Become an NPC</comment>
</opcode>
<opcode id="0076" name="OP_PetitionCheckout" updated="05/26/04">
<comment>Petition Checkout</comment>
</opcode>
<opcode id="007e" name="OP_PetitionCheckIn" updated="05/26/04">
<comment>Petition Checkin</comment>
</opcode>
<opcode id="688f" name="OP_PetitionResolve" updated="05/11/05">
<comment>Client Petition Resolve Request</comment>
</opcode>
<opcode id="0165" name="OP_DeletePetition" updated="01/26/05">
<comment>Player /deletepetition</comment>
</opcode>
<opcode id="0082" name="OP_PetitionQue" updated="05/26/04">
<comment>GM looking at petitions</comment>
</opcode>
<opcode id="0090" name="OP_PetitionUnCheckout" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0097" name="OP_GMSearchCorpse" updated="05/26/04">
<comment>GM /searchcorpse - Search all zones for named corpse</comment>
</opcode>
<opcode id="009a" name="OP_GuildPeace" updated="05/26/04">
<comment>/guildpeace</comment>
</opcode>
<opcode id="00a4" name="OP_GuildWar" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="00a7" name="OP_GuildLeader" updated="05/26/04">
<comment>/guildleader</comment>
</opcode>
<opcode id="00b6" name="OP_ApplyPoison" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="00da" name="OP_GMInquire" updated="05/26/04">
<comment>GM /inquire - Search soulmark data</comment>
</opcode>
<opcode id="00dc" name="OP_GMSoulmark" updated="05/26/04">
<comment>GM /praise /warn - Add soulmark comment to user file</comment>
</opcode>
<opcode id="00de" name="OP_GMHideMe" updated="05/26/04">
<comment>GM /hideme - Remove self from spawn lists and make invis</comment>
</opcode>
<opcode id="00ef" name="OP_SafePoint" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="010b" name="OP_GMGoto" updated="05/26/04">
<comment>GM /goto - Transport to another loc</comment>
</opcode>
<opcode id="012d" name="OP_BindWound" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0132" name="OP_GuildRemove" updated="05/26/04">
<comment>/guildremove</comment>
</opcode>
<opcode id="013b" name="OP_GMTraining" updated="05/26/04">
<comment>old OpenGMCode</comment>
<payload dir="both" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="013c" name="OP_GMEndTraining" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0152" name="OP_MoveCash" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0160" name="OP_Taunt" updated="05/26/04">
<comment>old ConsumeCode</comment>
</opcode>
<opcode id="016c" name="OP_Stun" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0175" name="OP_GMTrainSkill" updated="05/26/04">
<comment>old SkillTrainCode</comment>
</opcode>
<opcode id="0178" name="OP_GMEndTrainingResponse" updated="05/26/04">
<comment>old CloseGMCode</comment>
<payload dir="both" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="0183" name="OP_GMZoneRequest" updated="05/26/04">
<comment>/zone</comment>
</opcode>
<opcode id="018f" name="OP_BecomePK" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0197" name="OP_SetDataRate" updated="05/26/04">
<comment>Client sending datarate.txt value</comment>
</opcode>
<opcode id="0198" name="OP_GMDelCorpse" updated="05/26/04">
<comment>/delcorpse</comment>
</opcode>
<opcode id="0199" name="OP_Sacrifice" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="01af" name="OP_GMApproval" updated="05/26/04">
<comment>GM /approval - Name approval duty?</comment>
</opcode>
<opcode id="01b2" name="OP_GMToggle" updated="05/26/04">
<comment>GM /toggle - Toggle ability to receive tells from other PC's</comment>
</opcode>
<opcode id="01bc" name="OP_MoneyUpdate" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="01ba" name="OP_ReqZoneObjects" updated="05/26/04">
<comment>Client requesting zone objects</comment>
</opcode>
<opcode id="01c4" name="OP_Translocate" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="01ea" name="OP_RespondAA" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="01ed" name="OP_IncreaseStats" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="01ef" name="OP_ViewPetition" updated="05/26/04">
<comment>Player /viewpetition</comment>
</opcode>
<opcode id="01ff" name="OP_ExpansionSetting" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0205" name="OP_GainMoney" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0225" name="OP_GMZoneRequest2" updated="05/26/04">
<comment>/zone 2</comment>
</opcode>
<opcode id="0245" name="?" implicitlen="6" updated="07/14/04">
<comment>Unknown, but has implicit length</comment>
</opcode>
<opcode id="0261" name="OP_CrashDump" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0263" name="OP_GuildDemote" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0264" name="OP_ZoneUnavail" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="028b" name="OP_GMSummon" updated="05/26/04">
<comment>GM /summon - Summon PC to self</comment>
</opcode>
<opcode id="0296" name="OP_ItemTextFile" updated="05/26/04">
<comment>old BookTextCode</comment>
<payload dir="server" typename="bookTextStruct" sizechecktype="none"/>
</opcode>
<opcode id="029e" name="OP_OpenObject" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="028e" name="OP_GMEmoteZone" updated="05/26/04">
<comment>GM /emotezone - Send zonewide emote</comment>
</opcode>
<opcode id="0296" name="OP_ReadBook" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="02b4" name="OP_SummonCorpse" updated="05/26/04">
<comment>/summoncorpse</comment>
</opcode>
<opcode id="02cc" name="OP_ShopItem" updated="05/26/04">
<comment>Merchant Item data</comment>
</opcode>
<opcode id="02d0" name="OP_AdventureRequest" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="02d1" name="OP_AdventureMerchantResponse" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="02d2" name="OP_AdventureMerchantPurchase" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="02e2" name="OP_AdventurePointsUpdate" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="02ef" name="OP_Adventure" updated="05/26/04">
<comment>/adventure</comment>
</opcode>
<opcode id="1ee8" name="OP_CombatAbility" updated="02/15/05">
<comment></comment>
</opcode>
-->
</seqopcodes>

Roads
06-29-2012, 06:14 AM
yeah.. i manually edied them myself... I think the patch was made against a zoneopcodes file that wasn't from the last tarball. the codes that were being replaced int he diff file didnt match the tarball ones at all.. or the one that i was using before the patch.. is there a way to force it to ignore if they don't match and just patch anyway?

Razzle
06-29-2012, 03:37 PM
What usually makes them bomb is posting the patch info on the boards using windows or copying it in windows to make the patch you are going to apply. Stay out of windows while doing any posting of patches or retrieving of data.

fransick
06-29-2012, 03:50 PM
Thanks Razzle... that's what it was! For the record, my patch, post and paste all happened in Fedora so clean on this end. Although, I wonder if my patch was against the SVN/Tarball that's currently out there. I diff'd my old zoneopcodes.xml which might have been the first mistake. Perhaps with BA back in the fold, we'll be able to keep SVN/CVS/tarballs current as I believe he has rights to upload.

Roads
06-29-2012, 09:56 PM
yeah i think its a matter of just not having the same exact starting file to patch to.. i copied the diff in kubuntu using chrome right into nano.. never touched a windows machine.. and im glad ba is back also:)

BlueAdept
06-30-2012, 04:24 AM
:) thanks. Now I just have to remember how to compile the thing... :p

rogues
06-30-2012, 06:13 AM
I just want to make sure - am I correct in my assessment that the only major thing that's not working right now is mob positional update and mob despawns upon death? Or did I miss an opcode somewhere?

Again, thanks for the hard work!

BlueAdept
06-30-2012, 01:22 PM
I can not confirm this yet. I probably wont have SEQ up and running until like Tuesday.

When all op codes are found, I will make a new tarball file for it and see if I can figure out how to update the svn.

rogues
06-30-2012, 01:35 PM
I may have actually made myself useful, I figured out an opcode!

OP_MobUpdate changed from 4656 to 4645.

Mobs are moving on my map again.

Please let me know if this helps.

Roads
06-30-2012, 04:18 PM
Working here rogues:) good work..

rogues
07-01-2012, 05:33 AM
Thanks, glad to hear that's working.

I'm trying to find the opcode(s) that handle a mob death and turning into a corpse. I think I've found the code (01d5) but any of the likely suspects aren't working. Any ideas which opcode might handle this?

Roads
07-01-2012, 06:50 AM
No idea...i am bad at all this stuff:( I would like to find how to fix time remaining on spawns though.. mine always just shows a ascii square in the time area..

BlueAdept
07-01-2012, 05:18 PM
I never really knew how to do op codes. There is a tutorial, I think, if you do a search. I used to just be able to do some fixes for the player structure in the past.

rogues
07-01-2012, 07:10 PM
Yup, that's how I figured out how to do the other one, from the tutorial. I think one problem is that I do not have good pre-patch logs. I'm pretty rough at it still, but I'm trying.

purple
07-02-2012, 11:17 AM
OP_Death is what converts a mob to a corpse. OP_DeleteSpawn removes things from the map (corpse loot, zoning, etc.).

I think. It has been awhile.

rogues
07-02-2012, 11:21 AM
Ok, it sounds like I need to ID two opcodes then. I tried that code in both of those with no success, but I get what you are saying I think. I'll look around tonight. Thanks!

BlueAdept
07-02-2012, 08:00 PM
I wish I had some logs to help. I just got it up and running tonight. There are still some things that are not working. Hopefully the opcodes can be found. When they are, Ill put out a new tarball (and/or svn if I can figure out how to update it).

fransick
07-03-2012, 12:50 PM
I will have some time later this week to update more opcodes if that helps. I've gotten pretty good at figuring out most of them but didn't have time to do more than mess around in the lobby before heading out of town for vacation.

BlueAdept
07-03-2012, 02:17 PM
Not a problem. I just dont want to do a release and then have to update the release a couple days later. It has been a while since an actual release and needs everquest.h and zoneopcodes.xml updated in the tarball for it to function. Now that EQ is FTP, even after my Gold membership is up, I will try to keep the tarballs and svn up to date.

Fluxcapacitor
07-07-2012, 12:05 AM
Some handy opcodes:

799c newCorpseStruct
58c5 removeSpawnStruct

BlueAdept
07-07-2012, 06:34 AM
Thanks for those.

rogues
07-07-2012, 08:53 AM
Thanks, it looks good. Boy, was I off on the mod death one. I still need to do some skillups.

BlueAdept
07-07-2012, 09:52 AM
I still have not really had a chance to use SEQ. Im still working on updating my gear and relearning how to use my toons. Any one notice anything else off or missing? If not, Ill make a new tarball.

rogues
07-07-2012, 11:10 AM
The only other thing I noticed was I was seeing more than 54 players in an instance on a raid, which leads me to believe it's missing player despawns. I won't know if those latest opcodes fix that for a few more days.

fransick
07-07-2012, 12:13 PM
Here's an updated complete zoneopcodes.xml. Checked most everything several times and it looks good as far as I can see. Holler if I missed anything.


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE seqopcodes SYSTEM "seqopcodes.dtd">
<seqopcodes>

<!-- Critical opcodes used directly by ShowEQ -->
<opcode id="4f35" name="OP_NpcMoveUpdate" updated="06/27/12">
<comment>Position updates</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="666d" name="OP_MovementHistory" updated="06/27/12">
<comment>Movement data... rewind info?</comment>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="6c36" name="OP_DeleteSpawn" updated="06/27/12">
<comment>DeleteSpawnCode</comment>
<payload dir="both" typename="deleteSpawnStruct" sizechecktype="match"/>
</opcode>
<opcode id="4892" name="OP_ZoneEntry" updated="06/27/12">
<comment>ZoneEntryCode</comment>
<payload dir="client" typename="ClientZoneEntryStruct" sizechecktype="match"/>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="4e19" name="OP_GuildMOTD" updated="06/27/12">
<comment>GuildMOTD</comment>
<payload dir="server" typename="guildMOTDStruct" sizechecktype="none"/>
</opcode>
<opcode id="13da" name="OP_InspectAnswer" updated="06/27/12">
<comment>InspectDataCode</comment>
<payload dir="both" typename="inspectDataStruct" sizechecktype="match"/>
</opcode>
<opcode id="6dee" name="OP_TargetMouse" updated="06/27/12">
<comment>Targeting a person - old ClientTargetCode</comment>
<payload dir="both" typename="clientTargetStruct" sizechecktype="match"/>
</opcode>
<opcode id="169a" name="OP_Shroud" updated="06/27/12">
<comment>Server putting players into shroud form</comment>
<payload dir="server" typename="spawnShroudSelf" sizechecktype="none"/>
</opcode>
<opcode id="5613" name="OP_GroupInvite" updated="06/27/12">
<payload dir="both" typename="groupInviteStruct" sizechecktype="none"/>
<comment>You invite someone while ungrouped or get invited by someone ungrouped </comment>
</opcode>
<opcode id="2736" name="OP_GroupInvite2" updated="06/27/12">
<payload dir="client" typename="groupInviteStruct" sizechecktype="match"/>
<comment>You're inviting someone and you are grouped or get invited by a group</comment>
</opcode>
<opcode id="7139" name="OP_GroupFollow" updated="06/27/12">
<payload dir="server" typename="groupFollowStruct" sizechecktype="match"/>
<comment>You join a group or player joins group</comment>
</opcode>
<opcode id="9999" name="OP_GroupFollow2" updated="06/27/12">
<payload dir="server" typename="groupFollowStruct" sizechecktype="match"/>
<comment>Player joins your group</comment>
</opcode>
<opcode id="367f" name="OP_GroupDisband" updated="06/27/12">
<comment>You disband from group</comment>
<payload dir="server" typename="groupDisbandStruct" sizechecktype="match"/>
</opcode>
<opcode id="3352" name="OP_GroupDisband2" updated="06/27/12">
<comment>Other disbands from group</comment>
<payload dir="server" typename="groupDisbandStruct" sizechecktype="match"/>
</opcode>
<opcode id="44c2" name="OP_GroupLeader" updated="06/27/12">
<comment>Group leader change</comment>
<payload dir="server" typename="groupLeaderChangeStruct" sizechecktype="match"/>
</opcode>
<opcode id="6c16" name="OP_GroupCancelInvite" updated="06/27/12">
<payload dir="both" typename="groupDeclineStruct" sizechecktype="match"/>
<comment>Declining to join a group</comment>
</opcode>
<opcode id="194f" name="OP_DzSwitchInfo" updated="03/23/12">
<comment>Expedition compass etc</comment>
<payload dir="server" typename="dzSwitchInfo" sizechecktype="none"/>
</opcode>
<opcode id="7fd7" name="OP_DzInfo" updated="06/27/12">
<comment>Expedition Information</comment>
<payload dir="server" typename="dzInfo" sizechecktype="match"/>
</opcode>
<opcode id="7092" name="OP_FormattedMessage" updated="06/27/12">
<comment>FormattedMessageCode</comment>
<payload dir="server" typename="formattedMessageStruct" sizechecktype="none"/>
</opcode>
<opcode id="5a55" name="OP_SpawnDoor" updated="06/27/12">
<comment>DoorSpawnsCode</comment>
<payload dir="server" typename="doorStruct" sizechecktype="modulus"/>
</opcode>
<opcode id="783c" name="OP_AAExpUpdate" updated="06/27/12">
<comment>Receiving AA experience. Also when percent to AA changes.</comment>
<payload dir="server" typename="altExpUpdateStruct" sizechecktype="match"/>
</opcode>
<opcode id="2370" name="OP_HPUpdate" updated="06/27/12">
<comment>NpcHpUpdateCode Update HP % of a PC or NPC</comment>
<payload dir="both" typename="hpNpcUpdateStruct" sizechecktype="match"/>
</opcode>
<opcode id="79c9" name="OP_GuildMemberUpdate" updated="06/27/12">
<comment>Info regarding guild members</comment>
<payload dir="server" typename="GuildMemberUpdate" sizechecktype="match"/>
</opcode>
<opcode id="0598" name="OP_SpawnRename" updated="06/27/12">
<comment>Spawns getting renamed after initial NewSpawn</comment>
<payload dir="server" typename="spawnRenameStruct" sizechecktype="match"/>
</opcode>
<opcode id="63c7" name="OP_SwapSpell" updated="06/27/12">
<comment>TradeSpellBookSlotsCode</comment>
<payload dir="both" typename="tradeSpellBookSlotsStruct" sizechecktype="match"/>
</opcode>
<opcode id="4675" name="OP_SimpleMessage" updated="06/27/12">
<comment>SimpleMessageCode</comment>
<payload dir="server" typename="simpleMessageStruct" sizechecktype="match"/>
</opcode>
<opcode id="2e4f" name="OP_SpecialMesg" updated="06/27/12">
<comment>Communicate textual info to client</comment>
<payload dir="server" typename="specialMessageStruct" sizechecktype="none"/>
</opcode>
<opcode id="30a4" name="OP_RandomReq" updated="06/27/12">
<comment>RandomReqCode</comment>
<payload dir="client" typename="randomReqStruct" sizechecktype="match"/>
</opcode>
<opcode id="29df" name="OP_ConsentResponse" updated="06/27/12">
<comment>Server replying with consent information after /consent</comment>
<payload dir="server" typename="consentResponseStruct" sizechecktype="match"/>
</opcode>
<opcode id="032b" name="OP_DenyResponse" updated="06/27/12">
<comment>Server replying with deny information after /deny</comment>
<payload dir="server" typename="consentResponseStruct" sizechecktype="match"/>
</opcode>
<opcode id="058c" name="OP_BazaarSearch" updated="06/27/12">
<payload dir="client" typename="bazaarSearchQueryStruct" sizechecktype="none"/>
<payload dir="server" typename="bazaarSearchResponseStruct" sizechecktype="modulus"/>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
<comment>Bazaar search tool</comment>
</opcode>
<opcode id="7b64" name="OP_SpawnUpdate" updated="06/27/12">
<comment>SpawnUpdateCode</comment>
<payload dir="both" typename="SpawnUpdateStruct" sizechecktype="match"/>
</opcode>
<opcode id="3d00" name="OP_Stamina" updated="06/27/12">
<comment>Server updating on hunger/thirst</comment>
<payload dir="server" typename="staminaStruct" sizechecktype="match"/>
</opcode>
<opcode id="30e2" name="OP_Consider" updated="06/27/12">
<comment>ConsiderCode</comment>
<payload dir="both" typename="considerStruct" sizechecktype="match"/>
</opcode>
<opcode id="4118" name="OP_NewZone" updated="06/27/12">
<comment>NewZoneCode</comment>
<payload dir="server" typename="newZoneStruct" sizechecktype="match"/>
</opcode>
<opcode id="5c85" name="OP_GroundSpawn" updated="06/27/12">
<comment>MakeDropCode</comment>
<payload dir="server" typename="makeDropStruct" sizechecktype="none"/>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="58c5" name="OP_RemoveSpawn" updated="06/27/12">
<comment>Remove spawn from zone</comment>
<payload dir="both" typename="removeSpawnStruct" sizechecktype="none"/>
</opcode>
<opcode id="799c" name="OP_Death" updated="06/27/12">
<comment>old NewCorpseCode</comment>
<payload dir="server" typename="newCorpseStruct" sizechecktype="match"/>
</opcode>
<opcode id="33e5" name="OP_ClickObject" updated="06/27/12">
<comment>Items dropped on the ground</comment>
<payload dir="both" typename="remDropStruct" sizechecktype="match"/>
</opcode>
<opcode id="7f9e" name="OP_Action" updated="06/27/12">
<comment>Spells cast etc</comment>
<payload dir="both" typename="actionStruct" sizechecktype="match"/>
<payload dir="both" typename="actionAltStruct" sizechecktype="match"/>
</opcode>
<opcode id="3ea8" name="OP_Action2" updated="06/27/12">
<comment>Combat actions i.e. bash, kick etc</comment>
<payload dir="both" typename="action2Struct" sizechecktype="match"/>
</opcode>
<opcode id="4843" name="OP_Illusion" updated="06/27/12">
<comment>Spawn being illusioned (changing forms)</comment>
<payload dir="both" typename="spawnIllusionStruct" sizechecktype="match"/>
</opcode>
<opcode id="1b8a" name="OP_BuffFadeMsg" updated="06/27/12">
<comment>SpellFadeCode</comment>
<payload dir="both" typename="spellFadedStruct" sizechecktype="none"/>
</opcode>
<opcode id="8543" name="OP_CastSpell" updated="06/27/12">
<comment>StartCastCode</comment>
<payload dir="both" typename="startCastStruct" sizechecktype="match"/>
</opcode>
<opcode id="569e" name="OP_MemorizeSpell" updated="06/27/12">
<comment>MemSpellCode</comment>
<payload dir="both" typename="memSpellStruct" sizechecktype="match"/>
</opcode>
<opcode id="3164" name="OP_Emote" updated="06/27/12">
<comment>EmoteTextCode</comment>
<payload dir="both" typename="emoteTextStruct" sizechecktype="none"/>
</opcode>
<opcode id="07fb" name="OP_RandomReply" updated="06/27/12">
<comment>RandomCode</comment>
<payload dir="server" typename="randomStruct" sizechecktype="match"/>
</opcode>
<opcode id="3887" name="OP_ManaChange" updated="06/27/12">
<comment>Mana change. Bards send this up with no size. Casters receive this for mana updates.</comment>
<payload dir="server" typename="manaDecrementStruct" sizechecktype="match"/>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="7165" name="OP_MoneyOnCorpse" updated="06/27/12">
<comment>MoneyOnCorpseCode</comment>
<payload dir="server" typename="moneyOnCorpseStruct" sizechecktype="match"/>
</opcode>
<opcode id="6afd" name="OP_PlayerProfile" updated="06/27/12">
<comment>CharProfileCode</comment>
<payload dir="server" typename="charProfileStruct" sizechecktype="match"/>
</opcode>
<opcode id="6015" name="OP_TimeOfDay" updated="06/27/12">
<comment>TimeOfDayCode</comment>
<payload dir="server" typename="timeOfDayStruct" sizechecktype="match"/>
</opcode>
<opcode id="7062" name="OP_ClientUpdate" updated="06/27/12">
<comment>Position updates</comment>
<payload dir="server" typename="playerSpawnPosStruct" sizechecktype="match"/>
<payload dir="both" typename="playerSelfPosStruct" sizechecktype="match"/>
</opcode>
<opcode id="0d5a" name="OP_BeginCast" updated="06/27/12">
<comment>BeginCastCode</comment>
<payload dir="both" typename="beginCastStruct" sizechecktype="match"/>
</opcode>
<opcode id="2e79" name="OP_CommonMessage" updated="06/27/12">
<comment>ChannelMessageCode</comment>
<payload dir="both" typename="channelMessageStruct" sizechecktype="none"/>
</opcode>
<opcode id="7f01" name="OP_SkillUpdate" updated="06/27/12">
<comment>Skill up code</comment>
<payload dir="server" typename="skillIncStruct" sizechecktype="match"/>
</opcode>
<opcode id="5488" name="OP_SpawnAppearance" updated="06/27/12">
<comment>SpawnAppearanceCode</comment>
<payload dir="both" typename="spawnAppearanceStruct" sizechecktype="match"/>
</opcode>
<opcode id="0000" name="OP_ExpUpdate" updated="06/27/12">
<comment>ExpUpdateCode - opcode looks to be 221a as of 06/27/12 but that value causes seg faults for some reason</comment>
<payload dir="server" typename="expUpdateStruct" sizechecktype="match"/>
</opcode>
<opcode id="6e1c" name="OP_LevelUpdate" updated="06/27/12">
<comment>LevelUpUpdateCode</comment>
<payload dir="server" typename="levelUpUpdateStruct" sizechecktype="match"/>
</opcode>
<opcode id="1af0" name="OP_LeaderExpUpdate" updated="06/27/12">
<comment>Leadership AA Exp Update</comment>
<payload dir="server" typename="leadExpUpdateStruct" sizechecktype="match"/>
</opcode>
<opcode id="4656" name="OP_MobUpdate" updated="06/27/12">
<comment>MobUpdateCode</comment>
<payload dir="both" typename="spawnPositionUpdate" sizechecktype="match"/>
</opcode>
<opcode id="4aa2" name="OP_Trader" updated="06/27/12">
<comment>PC's turning trader on and off</comment>
<payload dir="server" typename="bazaarTraderRequest" sizechecktype="match"/>
</opcode>
<opcode id="6bb9" name="OP_Consent" updated="06/27/12">
<comment>/consent someone</comment>
<payload dir="client" typename="consentRequestStruct" sizechecktype="none"/>
</opcode>
<opcode id="0370" name="OP_ConsentDeny" updated="06/27/12">
<comment>/deny someone</comment>
<payload dir="client" typename="consentRequestStruct" sizechecktype="none"/>
</opcode>
<opcode id="399b" name="OP_ItemPacket" updated="06/27/12">
<comment>ItemCode</comment>
<payload dir="server" typename="itemPacketStruct" sizechecktype="none"/>
</opcode>
<opcode id="521c" name="OP_ItemLinkResponse" updated="06/27/12">
<comment>ItemInfoCode</comment>
<payload dir="server" typename="itemInfoStruct" sizechecktype="none"/>
<payload dir="client" typename="itemInfoReqStruct" sizechecktype="none"/>
</opcode>
<opcode id="0254" name="OP_EnvDamage" updated="06/27/12">
<comment>Environmental Damage</comment>
<payload dir="client" typename="environmentDamageStruct" sizechecktype="match"/>
</opcode>
<opcode id="59c3" name="OP_SetRunMode" updated="06/27/12">
<comment>old cRunToggleCode</comment>
<payload dir="client" typename="cRunToggleStruct" sizechecktype="match"/>
</opcode>
<opcode id="0000" name="OP_WearChange" updated="03/23/12">
<comment>Armor changes or give a pet a weapon (model changes)</comment>
<payload dir="both" typename="SpawnUpdateStruct" sizechecktype="match"/>
</opcode>

<!-- Not necessary for SEQ to run but here to name packets in logs. -->
<opcode id="3671" name="OP_GroupUpdate" updated="06/27/12">
<comment>Group member names - Variable length</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="51bc" name="OP_GuildMemberList" updated="06/27/12">
<comment>List of guild members - Variable length</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="0c2b" name="OP_ManaUpdate" updated="06/27/12">
<comment>Mana Update opcode - 10 bytes</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="5f51" name="OP_EndUpdate" updated="06/27/12">
<comment>Endurance Update opcode - 10 bytes</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="5206" name="OP_Marketplace" updated="06/27/12">
<comment>Marketplace data - Guessing variable length</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="2edd" name="OP_DzMembers" updated="06/27/12">
<comment>Expedition Members - Variable length</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="0d5f" name="OP_Campfire" updated="06/27/12">
<comment>Fellowship campfire information - 1076 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="10c9" name="OP_SelectCampfire" updated="06/27/12">
<comment>Fellowship campfire Choices - Guessing variable length</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="1d97" name="OP_Claims" updated="06/27/12">
<comment>Contents of claims window - Guessing variable length</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="5433" name="OP_VoiceChat" updated="06/27/12">
<comment>Voice chat server info - Variable length (Data sent when joining group,raid etc)</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="7a52" name="OP_PollQuestions" updated="06/27/12">
<comment>SOE in-game player poll questions - Variable length</comment>
<payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="591f" name="OP_PollResponses" updated="06/27/12">
<comment>Poll response choices - 1004 bytes</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="1d51" name="OP_ShroudProgression" updated="06/27/12">
<comment>Unlocked shrouds - 244 bytes</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="2538" name="OP_Fellowship" updated="06/27/12">
<comment>Fellowship information - 2552 bytes</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="1a7b" name="OP_ExpandedGuildInfo" updated="06/27/12">
<comment>Guild ranks and other misc guild data - Variable length</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="18e2" name="OP_GuildBank" updated="06/27/12">
<comment>Guild bank contents - Guessing variable length</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="1031" name="OP_OpenTradeskillContainer" updated="06/27/12">
<comment>Opens forge, kiln etc - 92 Bytes</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="1ecf" name="OP_TradeskillRecipes" updated="06/27/12">
<comment>Learned recipes - 84 Bytes</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="0000" name="OP_TradeSkillCombine" updated="06/27/12">
<comment>Tradeskill combine using new tradeskill window - 40 Bytes</comment>
<payload dir="both" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="4212" name="OP_TradeSkillCombineOld" updated="06/27/12">
<comment>Tradeskill combine using old tradeskill window - 24 Bytes</comment>
<payload dir="both" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="7113" name="OP_ItemPlayerPacket" updated="06/27/12">
<comment>Inventory/bank items coming over during zone - Variable length</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="512b" name="OP_TaskDescription" updated="06/27/12">
<comment>Task descriptions coming down for task window - Variable length</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="47ea" name="OP_TaskActivity" updated="06/27/12">
<comment>Task activity descriptions coming down for task window - Variable length</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="189b" name="OP_CompletedTasks" updated="06/27/12">
<comment>Task history for task window - Variable length</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="1b9c" name="OP_CustomTitles" updated="06/27/12">
<comment>List of available titles - 1520 bytes</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="0976" name="OP_Animation" updated="06/27/12">
<comment>Combat animation, emote animations etc - 4 bytes</comment>
<payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="177a" name="OP_WhoAllRequest" updated="06/27/12">
<comment>WhoAllReqCode - 156 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="4d5a" name="OP_WhoAllResponse" updated="06/27/12">
<comment>WhoAllOutputCode - Variable length</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="0c54" name="OP_InspectRequest" updated="06/27/12">
<comment>InspectRequestCode - 8 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="102f" name="OP_GetGuildMOTD" updated="06/27/12">
<comment>GuildMOTD - 648 Bytes</comment>
<payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="6617" name="OP_TradeRequest" updated="06/27/12">
<comment>Client request trade session - 8 bytes</comment>
<payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="1d40" name="OP_TradeDeny" updated="06/27/12">
<comment>Target not ready to trade - 12 bytes</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="606a" name="OP_TradeRequestAck" updated="06/27/12">
<comment>Trade request recipient is acknowledging they are able to trade - 8 bytes</comment>
<payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="2c6d" name="OP_CancelTrade" updated="06/27/12">
<comment>Cancel a trade window - 0 bytes</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="72f8" name="OP_FinishTrade" updated="06/27/12">
<comment>Trade is over - 12 bytes</comment>
<payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="0d1d" name="OP_TradeCoins" updated="06/27/12">
<comment>You put coins put in a trade window - 20 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="0149" name="OP_TradeCoins2" updated="06/27/12">
<comment>Someone else puts coins put in your trade window - 12 bytes</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="064a" name="OP_TradeAcceptClick" updated="06/27/12">
<comment>One side clicks Accept on the trade 8 bytes</comment>
<payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="3c66" name="OP_ItemLinkClick" updated="06/27/12">
<comment>Click on itemlinks - 48 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="4074" name="OP_EndLootRequest" updated="06/27/12">
<comment>DoneLootingCode - 4 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="0b93" name="OP_LootItem" updated="06/27/12">
<comment>Loot item from corpse - 20 bytes</comment>
<payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="47ae" name="OP_Track" updated="06/27/12">
<comment>Tracking data - Variable length</comment>
<payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="1564" name="OP_TraderShop" updated="06/27/12">
<comment>OpenTraderCode right-click on a trader in bazaar - 16 bytes</comment>
<payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="3edc" name="OP_AutoAttack" updated="06/27/12">
<comment>Attack on/off - 4 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="1497" name="OP_AutoAttack2" updated="06/27/12">
<comment>Attack on/off appears to be same as OP_AutoAttack - 4 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="231f" name="OP_ClickDoor" updated="06/27/12">
<comment>DoorOpenCode click request from client - 16 bytes</comment>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="3969" name="OP_MoveDoor" updated="06/27/12">
<comment>DoorClickCode response from server - 2 bytes</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="1418" name="OP_MoveItem" updated="06/27/12">
<comment>Client moving an item from one slot to another - 28 bytes</comment>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="0507" name="OP_TraderBuy" updated="06/27/12">
<comment>buy from a trader in bazaar</comment>
</opcode>
<opcode id="00bc" name="OP_LootRequest" updated="06/27/12">
<comment>LootCorpseCode - 4 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="132f" name="OP_Jump" updated="06/27/12">
<comment>JumpCode - 0 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="37a7" name="OP_TGB" updated="06/27/12">
<comment>Client telling server to set targetgroupbuff - 4 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="45d7" name="OP_Lockouts" updated="06/27/12">
<comment>Client requesting lockouts - 0 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="0bd0" name="OP_WelcomeScreenURL" updated="06/27/12">
<comment>URLs for the welcome screen window - Variable length</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="0c08" name="OP_RaidJoin" updated="06/27/12">
<comment>Client side raid invite requests 140 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="2bad" name="OP_RaidInvite" updated="06/27/12">
<comment>Server side raid information - 140 bytes or 144 bytes</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="1ebb" name="OP_Feedback" updated="06/27/12">
<comment>Client sending feedback to server - 1148 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="5b0b" name="OP_GuildsList" updated="03/23/12">
<comment>Listing of all guilds</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="4817" name="OP_LFGGetMatchesRequest" updated="06/27/12">
<comment>LFG/LFP client request - 16 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="1899" name="OP_LFGGetMatchesResponse" updated="06/27/12">
<comment>LFG/LFP server response - Variable length</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="27ac" name="OP_MercenaryList" updated="06/27/12">
<comment>Listing of hired mercenaries - 427 bytes
<payload dir="server" typename="unknown" sizechecktype="none"/></comment>
</opcode>
<opcode id="6fe7" name="OP_ClickInventory" updated="06/27/12">
<comment>Click items from inventory or armor - 16 bytes 5th byte is Slot ID</comment>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="65fb" name="OP_ClickInventoryAck" updated="06/27/12">
<comment>Server acknowledges click from inventory or armor - 20 bytes</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="3c2d" name="OP_BuffWindow" updated="06/27/12">
<comment>Changes to buff window or song window - 100 bytes</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="7ae1" name="OP_ClickBuffOff" updated="06/27/12">
<comment>Client clicks off buff - 8 bytes</comment>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="346b" name="OP_HouseAddress" updated="06/27/12">
<comment>House and guildhall address information - Variable length</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="5546" name="OP_HouseContents" updated="06/27/12">
<comment>Server sending house information and contents - variable length</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="3d24" name="OP_FriendsList" updated="06/27/12">
<comment>Server sending friends list contents - variable length</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="2b5f" name="OP_Rewards" updated="06/27/12">
<comment>Server sending pending rewards - variable length</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="7caa" name="OP_FTPNags" updated="06/27/12">
<comment>Free to play nags and other data - 1852 bytes</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="099e" name="OP_Find" updated="06/27/12">
<comment>Find window data - 112 bytes</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>


<!-- Below are used to help make sense of the logs when searching for opcodes
Using these marks unknown opcodes in logs for easier reading -->
<opcode id="5a6b" name="OP_Unknown1" updated="06/27/12">
<comment>3 byte opcode that spam logs. Marked here to make reading logs easier</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="2018" name="OP_Unknown2" updated="06/27/12">
<comment>3 byte opcode that spam logs. Marked here to make reading logs easier</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="3f49" name="OP_Unknown3" updated="06/27/12">
<comment>3 byte opcode that spam logs. Marked here to make reading logs easier</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>

<!-- Below are unverified -->
<opcode id="0000" name="OP_Buff" updated="11/15/11">
<comment>old BuffDropCode</comment>
<payload dir="both" typename="buffStruct" sizechecktype="match"/>
</opcode>
<opcode id="0000" name="OP_ZoneChange" updated="04/18/11">
<comment>old ZoneChangeCode</comment>
<payload dir="both" typename="zoneChangeStruct" sizechecktype="match"/>
</opcode>
<opcode id="0000" name="OP_CorpseLocResponse" updated="06/12/09">
<comment>old CorpseLocCode:</comment>
<payload dir="server" typename="corpseLocStruct" sizechecktype="match"/>
</opcode>
<opcode id="0000" name="OP_SendZonePoints" updated="10/15/10">
<comment>Coords in a zone that will port you to another zone</comment>
<payload dir="server" typename="zonePointsStruct" sizechecktype="none"/>
</opcode>
<opcode id="24D8" name="OP_RequestZoneChange" updated="10/20/07">
<comment>Send by server when a click causes zone. Also, origin</comment>
<payload dir="server" typename="requestZoneChangeStruct" sizechecktype="match"/>
</opcode>
<opcode id="44AE" name="OP_Logout" updated="10/21/09">
<comment></comment>
<payload dir="server" typename="none" sizechecktype="match"/>
</opcode>
<opcode id="097f" name="OP_WelcomeScreenTitle" updated="05/16/11">
<comment></comment>
</opcode>
<opcode id="0000" name="OP_VeteranRewards" update="04/18/11">
<comment></comment>
</opcode>
<opcode id="3B85" name="OP_SendAATable" updated="08/12/09">
<comment></comment>
</opcode>
<opcode id="5832" name="OP_SendAAStats" updated="08/12/09">
<comment></comment>
</opcode>
<opcode id="4d38" name="OP_AckPacket" updated="03/14/07">
<comment>Appears to be generic ack at the presentation level</comment>
</opcode>
<opcode id="71fb" name="OP_TributeUpdate" updated="03/14/07">
<comment>Tribute information</comment>
</opcode>
<opcode id="70a5" name="OP_Weather" updated="03/14/07">
<comment>old WeatherCode</comment>
</opcode>
<opcode id="5417" name="OP_ReqNewZone" updated="03/14/07">
<comment>Client requesting NewZone_Struct</comment>
</opcode>
<opcode id="45d2" name="OP_ReqClientSpawn" updated="03/14/07">
<comment>Client requesting spawn data</comment>
</opcode>
<opcode id="0000" name="OP_SendExpZonein" updated="03/14/07">
<comment>Both directions. Negotiating sending of exp info.</comment>
</opcode>
<opcode id="0a4f" name="OP_AAAction" updated="03/14/07">
<comment>Used for changing percent, buying? and activating skills</comment>
</opcode>
<opcode id="7038" name="OP_SetServerFilter" updated="03/14/07">
<comment>Client telling server /filter information</comment>
</opcode>
<opcode id="3854" name="OP_ClientReady" updated="03/14/07">
<comment></comment>
</opcode>
<opcode id="6774" name="OP_GuildTributeStatus" updated="03/14/07">
<comment>Guild tribute stats send on zone</comment>
</opcode>
<opcode id="28c1" name="OP_GuildTributeInfo" updated="06/13/06">
<comment>Guild tribute loadout, only if on</comment>
</opcode>
<opcode id="063b" name="OP_RespawnWindow" updated="03/14/07">
<comment>Server telling client enough to populate the respawn window when you die</comment>
</opcode>
<opcode id="314f" name="OP_InitialMobHealth" updated="06/27/12">
<comment>Initial health sent when a player clicks on the mob. Subsequent updated will be OP_MobHealth</comment>
</opcode>
<opcode id="311a" name="OP_MobHealth" updated="03/14/07">
<comment>health sent when a player clicks on the mob</comment>
</opcode>
<opcode id="16c1" name="OP_DeltaCheck" updated="03/14/07">
<comment>Client sending server delta information.</comment>
</opcode>
<opcode id="61ac" name="OP_LoadSpellSet" updated="02/13/07">
<comment>/mem spellsetname</comment>
</opcode>
<opcode id="00de" name="OP_Dye" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="31c2" name="OP_Consume" updated="12/07/05">
<comment>Client force feeding food/drink</comment>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="13e7" name="OP_Begging" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="68ac" name="OP_LFGCommand" updated="10/27/05">
<comment>old LFGReqCode</comment>
</opcode>
<opcode id="7ac3" name="OP_Bug" updated="10/27/05">
<comment>/bug</comment>
</opcode>
<opcode id="5c06" name="OP_Save" updated="04/19/06">
<comment>Client asking server to save user state</comment>
</opcode>
<opcode id="2eeb" name="OP_Camp" updated="02/13/07">
<comment>old cStartCampingCode</comment>
</opcode>
<opcode id="fe13" name="OP_ShopPlayerSell" updated="10/27/05">
<comment>old SellItemCode</comment>
</opcode>
<opcode id="10a1" name="OP_PetCommands" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="1103" name="OP_SaveOnZoneReq" updated="03/14/07">
<comment></comment>
</opcode>
<opcode id="7e03" name="OP_ShopEnd" updated="10/27/05">
<comment>old CloseVendorCode</comment>
<payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="5666" name="OP_SenseTraps" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="05ac" name="OP_SenseHeading" updated="10/27/05">
<comment>old cSenseHeadingCode</comment>
</opcode>
<opcode id="528F" name="OP_LootComplete" updated="12/07/05">
<comment>old sDoneLootingCode</comment>
</opcode>
<opcode id="10A6" name="OP_Split" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="4668" name="OP_Surname" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="45f9" name="OP_ShopRequest" updated="10/27/05">
<comment>old OpenVendorCode</comment>
<payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="0f8e" name="OP_FaceChange" updated="10/27/05">
<comment>/face</comment>
</opcode>
<opcode id="4312" name="OP_Sneak" updated="06/29/05">
<comment>Clicked sneak</comment>
</opcode>
<opcode id="6f64" name="OP_Hide" updated="06/29/05">
<comment></comment>
</opcode>
<opcode id="34e8" name="OP_DisarmTraps" updated="05/11/05">
<comment>Clicked disarm traps</comment>
</opcode>
<opcode id="7c33" name="OP_Forage" updated="10/27/05">
<comment>old ForageCode</comment>
</opcode>
<opcode id="4298" name="OP_BoardBoat" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="67c9" name="OP_LeaveBoat" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="35a6" name="OP_LFPGetMatchesRequest" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="6980" name="OP_GMKill" updated="10/27/05">
<comment>GM /kill - Insta kill mob/pc</comment>
</opcode>
<opcode id="17a2" name="OP_GuildPublicNote" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="61ef" name="OP_YellForHelp" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="0af6" name="OP_ShopPlayerBuy" updated="05/11/05">
<comment>old BuyItemCode</comment>
</opcode>
<opcode id="6f82" name="OP_LFPCommand" updated="10/27/05">
<comment>looking for players</comment>
</opcode>
<opcode id="00dd" name="OP_ConsiderCorpse" updated="12/07/05">
<comment>old cConCorpseCode</comment>
</opcode>
<opcode id="3838" name="OP_ConfirmDelete" updated="10/27/05">
<comment>Client sends this to server to confirm op_deletespawn</comment>
</opcode>
<opcode id="0375" name="OP_Report" updated="06/29/05">
<comment></comment>
</opcode>
<opcode id="40b6" name="OP_TargetCommand" updated="02/13/07">
<comment>Target user</comment>
</opcode>
<opcode id="212d" name="OP_LFPGetMatchesResponse" updated="02/13/07">
<comment></comment>
</opcode>
<opcode id="1089" name="OP_FindPersonRequest" updated="02/13/07">
<comment>Control-F Find</comment>
</opcode>
<opcode id="71b1" name="OP_FindResponse" updated="02/13/07">
<comment>Response to control-F</comment>
</opcode>
<opcode id="23a1" name="OP_GMLastName" updated="10/27/05">
<comment>GM /lastname - Change user lastname</comment>
</opcode>
<opcode id="14ef" name="OP_Mend" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="1ffa" name="OP_MendHPUpdate" updated="05/11/05">
<comment></comment>
</opcode>
<opcode id="4775" name="OP_TributeInfo" updated="02/13/07">
<comment>Tribute information</comment>
</opcode>

<!-- OLD OPCODES. These haven't been mapped in a post 1/26/2005 world. If you
can find any of these in the current stream, please update them and let
us know!

<opcode id="1900" name="OP_ZoneSpawns" updated="05/29/08">
<comment>old ZoneSpawnsCode</comment>
<payload dir="server" typename="spawnStruct" sizechecktype="none"/>
</opcode>
<opcode id="0020" name="OP_GMServers" updated="05/26/04">
<comment>GM /servers - ?</comment>
</opcode>
<opcode id="790e" name="OP_GMKick" updated="01/26/05">
<comment>GM /kick - Boot player</comment>
</opcode>
<opcode id="0068" name="OP_Petition" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0074" name="OP_GMBecomeNPC" updated="05/26/04">
<comment>GM /becomenpc - Become an NPC</comment>
</opcode>
<opcode id="0076" name="OP_PetitionCheckout" updated="05/26/04">
<comment>Petition Checkout</comment>
</opcode>
<opcode id="007e" name="OP_PetitionCheckIn" updated="05/26/04">
<comment>Petition Checkin</comment>
</opcode>
<opcode id="688f" name="OP_PetitionResolve" updated="05/11/05">
<comment>Client Petition Resolve Request</comment>
</opcode>
<opcode id="0165" name="OP_DeletePetition" updated="01/26/05">
<comment>Player /deletepetition</comment>
</opcode>
<opcode id="0082" name="OP_PetitionQue" updated="05/26/04">
<comment>GM looking at petitions</comment>
</opcode>
<opcode id="0090" name="OP_PetitionUnCheckout" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0097" name="OP_GMSearchCorpse" updated="05/26/04">
<comment>GM /searchcorpse - Search all zones for named corpse</comment>
</opcode>
<opcode id="009a" name="OP_GuildPeace" updated="05/26/04">
<comment>/guildpeace</comment>
</opcode>
<opcode id="00a4" name="OP_GuildWar" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="00a7" name="OP_GuildLeader" updated="05/26/04">
<comment>/guildleader</comment>
</opcode>
<opcode id="00b6" name="OP_ApplyPoison" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="00da" name="OP_GMInquire" updated="05/26/04">
<comment>GM /inquire - Search soulmark data</comment>
</opcode>
<opcode id="00dc" name="OP_GMSoulmark" updated="05/26/04">
<comment>GM /praise /warn - Add soulmark comment to user file</comment>
</opcode>
<opcode id="00de" name="OP_GMHideMe" updated="05/26/04">
<comment>GM /hideme - Remove self from spawn lists and make invis</comment>
</opcode>
<opcode id="00ef" name="OP_SafePoint" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="010b" name="OP_GMGoto" updated="05/26/04">
<comment>GM /goto - Transport to another loc</comment>
</opcode>
<opcode id="012d" name="OP_BindWound" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0132" name="OP_GuildRemove" updated="05/26/04">
<comment>/guildremove</comment>
</opcode>
<opcode id="013b" name="OP_GMTraining" updated="05/26/04">
<comment>old OpenGMCode</comment>
<payload dir="both" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="013c" name="OP_GMEndTraining" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0152" name="OP_MoveCash" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0160" name="OP_Taunt" updated="05/26/04">
<comment>old ConsumeCode</comment>
</opcode>
<opcode id="016c" name="OP_Stun" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0175" name="OP_GMTrainSkill" updated="05/26/04">
<comment>old SkillTrainCode</comment>
</opcode>
<opcode id="0178" name="OP_GMEndTrainingResponse" updated="05/26/04">
<comment>old CloseGMCode</comment>
<payload dir="both" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="0183" name="OP_GMZoneRequest" updated="05/26/04">
<comment>/zone</comment>
</opcode>
<opcode id="018f" name="OP_BecomePK" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0197" name="OP_SetDataRate" updated="05/26/04">
<comment>Client sending datarate.txt value</comment>
</opcode>
<opcode id="0198" name="OP_GMDelCorpse" updated="05/26/04">
<comment>/delcorpse</comment>
</opcode>
<opcode id="0199" name="OP_Sacrifice" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="01af" name="OP_GMApproval" updated="05/26/04">
<comment>GM /approval - Name approval duty?</comment>
</opcode>
<opcode id="01b2" name="OP_GMToggle" updated="05/26/04">
<comment>GM /toggle - Toggle ability to receive tells from other PC's</comment>
</opcode>
<opcode id="01bc" name="OP_MoneyUpdate" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="01ba" name="OP_ReqZoneObjects" updated="05/26/04">
<comment>Client requesting zone objects</comment>
</opcode>
<opcode id="01c4" name="OP_Translocate" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="01ea" name="OP_RespondAA" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="01ed" name="OP_IncreaseStats" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="01ef" name="OP_ViewPetition" updated="05/26/04">
<comment>Player /viewpetition</comment>
</opcode>
<opcode id="01ff" name="OP_ExpansionSetting" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0205" name="OP_GainMoney" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0225" name="OP_GMZoneRequest2" updated="05/26/04">
<comment>/zone 2</comment>
</opcode>
<opcode id="0245" name="?" implicitlen="6" updated="07/14/04">
<comment>Unknown, but has implicit length</comment>
</opcode>
<opcode id="0261" name="OP_CrashDump" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0263" name="OP_GuildDemote" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0264" name="OP_ZoneUnavail" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="028b" name="OP_GMSummon" updated="05/26/04">
<comment>GM /summon - Summon PC to self</comment>
</opcode>
<opcode id="0296" name="OP_ItemTextFile" updated="05/26/04">
<comment>old BookTextCode</comment>
<payload dir="server" typename="bookTextStruct" sizechecktype="none"/>
</opcode>
<opcode id="029e" name="OP_OpenObject" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="028e" name="OP_GMEmoteZone" updated="05/26/04">
<comment>GM /emotezone - Send zonewide emote</comment>
</opcode>
<opcode id="0296" name="OP_ReadBook" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="02b4" name="OP_SummonCorpse" updated="05/26/04">
<comment>/summoncorpse</comment>
</opcode>
<opcode id="02cc" name="OP_ShopItem" updated="05/26/04">
<comment>Merchant Item data</comment>
</opcode>
<opcode id="02d0" name="OP_AdventureRequest" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="02d1" name="OP_AdventureMerchantResponse" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="02d2" name="OP_AdventureMerchantPurchase" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="02e2" name="OP_AdventurePointsUpdate" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="02ef" name="OP_Adventure" updated="05/26/04">
<comment>/adventure</comment>
</opcode>
<opcode id="1ee8" name="OP_CombatAbility" updated="02/15/05">
<comment></comment>
</opcode>
-->
</seqopcodes>

I made a few small struct changes as well. Will download the last tarball and create a diff off of that and post when I have a few minutes.

fransick
07-07-2012, 04:14 PM
Let's see if this works... below is a full on diff from the latest tarball (5.13.10,4) that I created with emacs and pasted here using Firefox in Fedora14, Hoping it works for everyone. Just copy the code below and name it something like patch06-25-12.patch then put that file in your showeq directory (the one that has the conf, src directories in it) and use the command:


patch -p0 < patch06-25-12.patch

Fingers crossed...


--- src/everquest.h 2012-03-04 15:07:47.000000000 -0500
+++ src/everquest.h 2012-07-07 06:02:41.129508502 -0400
@@ -288,7 +288,7 @@
groupFindPathToPC,
groupHealthOfTargetsTarget,
groupUnknown15,
- raidMarkNPC, //0x10
+ raidMarkNPC, //0x10
raidNPCHealth,
raidDelegateMainAssist,
raidDelegateMarkNPC,
@@ -314,14 +314,14 @@
{
RecastTimer0 = 0,
RecastTimer1,
- WeaponHealClickTimer, // 2
- MuramiteBaneNukeClickTimer, // 3
+ WeaponHealClickTimer, // 2
+ MuramiteBaneNukeClickTimer, // 3
RecastTimer4,
- DispellClickTimer, // 5 (also click heal orbs?)
- EpicTimer, // 6
- OoWBPClickTimer, // 7
- VishQuestClassItemTimer, // 8
- HealPotionTimer, // 9
+ DispellClickTimer, // 5 (also click heal orbs?)
+ EpicTimer, // 6
+ OoWBPClickTimer, // 7
+ VishQuestClassItemTimer, // 8
+ HealPotionTimer, // 9
RecastTimer10,
RecastTimer11,
RecastTimer12,
@@ -331,8 +331,8 @@
RecastTimer16,
RecastTimer17,
RecastTimer18,
- ModRodTimer, // 19
- MAX_RECAST_TYPES // 20
+ ModRodTimer, // 19
+ MAX_RECAST_TYPES // 20
};


@@ -433,16 +433,16 @@
*/
struct spellBuff
{
-/*0000*/ uint8_t unknown0000; //
-/*0001*/ int8_t level; // Level of person who cast buff
-/*0002*/ uint8_t unknown0002; //
-/*0003*/ uint8_t unknown0003; //
+/*0000*/ uint8_t unknown0000; //
+/*0001*/ int8_t level; // Level of person who cast buff
+/*0002*/ uint8_t unknown0002; //
+/*0003*/ uint8_t unknown0003; //
/*0004*/ float unknown0004;
-/*0008*/ int32_t spellid; // Spell
-/*0012*/ int32_t duration; // Time remaining in ticks
-/*0016*/ int32_t effect; // holds the dmg absorb amount on runes
-/*0020*/ uint8_t unknown0020[4]; // *** this might need to be swapped with playerId
-/*0024*/ uint32_t playerId; // Global id of caster (for wear off)
+/*0008*/ int32_t spellid; // Spell
+/*0012*/ int32_t duration; // Time remaining in ticks
+/*0016*/ int32_t effect; // holds the dmg absorb amount on runes
+/*0020*/ uint8_t unknown0020[4]; // *** this might need to be swapped with playerId
+/*0024*/ uint32_t playerId; // Global id of caster (for wear off)
/*0028*/ uint8_t unknown0028[60];
/*0088*/
};
@@ -513,14 +513,15 @@

/*
* Visible equiptment.
- * Size: 12 Octets
+ * Size: 16 Octets
*/
struct EquipStruct
{
/*00*/ uint32_t equip0;
/*04*/ uint32_t equip1;
-/*08*/ uint32_t itemId;
-/*12*/
+/*08*/ uint32_t equip2;
+/*12*/ uint32_t itemId;
+/*16*/
};

/*
@@ -530,12 +531,12 @@
*/
struct zoneChangeStruct
{
-/*0000*/ char name[64]; // Character Name
-/*0064*/ uint16_t zoneId; // zone Id
-/*0066*/ uint16_t zoneInstance; // zone Instance
-/*0068*/ uint8_t unknown0068[8]; // unknown
-/*0076*/ uint8_t unknown0076[12]; // ***Placeholder (6/29/2005)
-/*0088*/ uint8_t unknown0088[4]; // HoT Beta (9/7/2010)
+/*0000*/ char name[64]; // Character Name
+/*0064*/ uint16_t zoneId; // zone Id
+/*0066*/ uint16_t zoneInstance; // zone Instance
+/*0068*/ uint8_t unknown0068[8]; // unknown
+/*0076*/ uint8_t unknown0076[12]; // ***Placeholder (6/29/2005)
+/*0088*/ uint8_t unknown0088[4]; // HoT Beta (9/7/2010)
/*0092*/
};

@@ -546,28 +547,28 @@
*/
struct requestZoneChangeStruct
{
-/*0000*/ uint16_t zoneId; // Zone to change to
-/*0002*/ uint16_t zoneInstance; // Instance to change to
-/*0004*/ float x; // Zone in x coord in next zone
-/*0008*/ float y; // Zone in y coord in next zone
-/*0012*/ float z; // Zone in z coord in next zone
-/*0016*/ float heading; // Zone in heading in next zone
-/*0020*/ uint32_t unknown0020; // *** Placeholder
+/*0000*/ uint16_t zoneId; // Zone to change to
+/*0002*/ uint16_t zoneInstance; // Instance to change to
+/*0004*/ float x; // Zone in x coord in next zone
+/*0008*/ float y; // Zone in y coord in next zone
+/*0012*/ float z; // Zone in z coord in next zone
+/*0016*/ float heading; // Zone in heading in next zone
+/*0020*/ uint32_t unknown0020; // *** Placeholder
/*0024*/
};

/*
** Client Zone Entry struct
-** Length: 68 Octets
+** Length: 76 Octets
** OpCode: ZoneEntryCode (when direction == client)
*/
struct ClientZoneEntryStruct
{
-/*0000*/ uint32_t unknown0000; // ***Placeholder
-/*0004*/ char name[32]; // Player firstname
-/*0036*/ uint8_t unknown0036[28]; // ***Placeholder
-/*0064*/ uint32_t unknown0064[3]; // unknown
-/*0068*/
+/*0000*/ uint32_t unknown0000; // ***Placeholder
+/*0004*/ char name[32]; // Player firstname
+/*0036*/ uint8_t unknown0036[28]; // ***Placeholder
+/*0064*/ uint32_t unknown0064[3]; // unknown
+/*0076*/
};


@@ -578,44 +579,44 @@
*/
struct newZoneStruct
{
-/*0000*/ char name[64]; // Character name
-/*0064*/ char shortName[32]; // Zone Short Name (maybe longer?)
+/*0000*/ char name[64]; // Character name
+/*0064*/ char shortName[32]; // Zone Short Name (maybe longer?)
/*0096*/ char unknown0096[96];
-/*0192*/ char longName[278]; // Zone Long Name
-/*0470*/ uint8_t ztype; // Zone type
-/*0471*/ uint8_t fog_red[4]; // Zone fog (red)
-/*0475*/ uint8_t fog_green[4]; // Zone fog (green)
-/*0479*/ uint8_t fog_blue[4]; // Zone fog (blue)
-/*0483*/ uint8_t unknown0483[87]; // *** Placeholder
-/*0570*/ uint8_t sky; // Zone sky
-/*0571*/ uint8_t unknown0571[13]; // *** Placeholder
-/*0584*/ float zone_exp_multiplier; // Experience Multiplier
-/*0588*/ float safe_y; // Zone Safe Y
-/*0592*/ float safe_x; // Zone Safe X
-/*0596*/ float safe_z; // Zone Safe Z
-/*0600*/ float unknown0600; // *** Placeholder
-/*0604*/ float unknown0604; // *** Placeholder
-/*0608*/ float underworld; // Underworld
-/*0612*/ float minclip; // Minimum view distance
-/*0616*/ float maxclip; // Maximum view distance
-/*0620*/ uint8_t unknown0616[84]; // *** Placeholder
-/*0704*/ char zonefile[64]; // Zone file name?
-/*0768*/ uint8_t unknown0764[36]; // *** Placeholder (12/05/2006)
-/*0804*/ uint8_t unknown0800[32]; // *** Placeholder (02/13/2007)
-/*0836*/ uint8_t unknown0832[12]; // *** Placeholder
-/*0848*/ uint8_t unknown0844[4]; // *** Placeholder (06/29/2005)
-/*0852*/ uint8_t unknown0848[4]; // *** Placeholder (09/13/2005)
-/*0856*/ uint8_t unknown0852[4]; // *** Placeholder (02/21/2006)
-/*0860*/ uint8_t unknown0856[36]; // *** Placeholder (06/13/2006)
-/*0896*/ uint8_t unknown0892[12]; // *** Placeholder (12/05/2006)
-/*0908*/ uint8_t unknown0904[8]; // *** Placeholder (02/13/2007)
-/*0916*/ uint8_t unknown0916[4]; // *** Placeholder (11/24/2007)
-/*0920*/ uint8_t unknown0920[4]; // *** Placeholder (01/17/2008)
-/*0924*/ uint8_t unknown0924[4]; // *** Placeholder (09/03/2008)
-/*0928*/ uint8_t unknown0928[4]; // *** Placeholder (10/07/2008)
-/*0932*/ uint8_t unknown0932[8]; // *** Placeholder (11/04/2009)
-/*0940*/ uint8_t unknown0940[4]; // *** Placeholder (12/15/2009)
-/*0944*/ uint8_t unknown0944[4]; // *** Placeholder (11/15/2011)
+/*0192*/ char longName[278]; // Zone Long Name
+/*0470*/ uint8_t ztype; // Zone type
+/*0471*/ uint8_t fog_red[4]; // Zone fog (red)
+/*0475*/ uint8_t fog_green[4]; // Zone fog (green)
+/*0479*/ uint8_t fog_blue[4]; // Zone fog (blue)
+/*0483*/ uint8_t unknown0483[87]; // *** Placeholder
+/*0570*/ uint8_t sky; // Zone sky
+/*0571*/ uint8_t unknown0571[13]; // *** Placeholder
+/*0584*/ float zone_exp_multiplier; // Experience Multiplier
+/*0588*/ float safe_y; // Zone Safe Y
+/*0592*/ float safe_x; // Zone Safe X
+/*0596*/ float safe_z; // Zone Safe Z
+/*0600*/ float unknown0600; // *** Placeholder
+/*0604*/ float unknown0604; // *** Placeholder
+/*0608*/ float underworld; // Underworld
+/*0612*/ float minclip; // Minimum view distance
+/*0616*/ float maxclip; // Maximum view distance
+/*0620*/ uint8_t unknown0616[84]; // *** Placeholder
+/*0704*/ char zonefile[64]; // Zone file name?
+/*0768*/ uint8_t unknown0764[36]; // *** Placeholder (12/05/2006)
+/*0804*/ uint8_t unknown0800[32]; // *** Placeholder (02/13/2007)
+/*0836*/ uint8_t unknown0832[12]; // *** Placeholder
+/*0848*/ uint8_t unknown0844[4]; // *** Placeholder (06/29/2005)
+/*0852*/ uint8_t unknown0848[4]; // *** Placeholder (09/13/2005)
+/*0856*/ uint8_t unknown0852[4]; // *** Placeholder (02/21/2006)
+/*0860*/ uint8_t unknown0856[36]; // *** Placeholder (06/13/2006)
+/*0896*/ uint8_t unknown0892[12]; // *** Placeholder (12/05/2006)
+/*0908*/ uint8_t unknown0904[8]; // *** Placeholder (02/13/2007)
+/*0916*/ uint8_t unknown0916[4]; // *** Placeholder (11/24/2007)
+/*0920*/ uint8_t unknown0920[4]; // *** Placeholder (01/17/2008)
+/*0924*/ uint8_t unknown0924[4]; // *** Placeholder (09/03/2008)
+/*0928*/ uint8_t unknown0928[4]; // *** Placeholder (10/07/2008)
+/*0932*/ uint8_t unknown0932[8]; // *** Placeholder (11/04/2009)
+/*0940*/ uint8_t unknown0940[4]; // *** Placeholder (12/15/2009)
+/*0944*/ uint8_t unknown0944[4]; // *** Placeholder (11/15/2011)
/*0948*/
};

@@ -627,10 +628,10 @@
struct dzSwitchInfo
{
/*0000*/ uint32_t unknown0000;
-/*0004*/ uint32_t show; // Show compass line
+/*0004*/ uint32_t show; // Show compass line
/*0008*/ uint16_t zoneID;
/*0010*/ uint16_t instanceID;
-/*0012*/ uint32_t type; // if(type != 1 && type > 2 && type <= 5) { color = green; } else { color = pink; }
+/*0012*/ uint32_t type; // if(type != 1 && type > 2 && type <= 5) { color = green; } else { color = pink; }
/*0016*/ uint32_t unknown0016;
/*0020*/ float y;
/*0024*/ float x;
@@ -650,8 +651,8 @@
/*0008*/ uint8_t newDZ;
/*0009*/ uint8_t padding0009[3];
/*0012*/ uint32_t maxPlayers;
-/*0016*/ char dzName[128]; // Instance name
-/*0144*/ char name[64]; // Your player's name
+/*0016*/ char dzName[128]; // Instance name
+/*0144*/ char name[64]; // Your player's name
/*0208*/
};

@@ -664,167 +665,183 @@
*/
struct playerProfileStruct
{
-/*00004*/ uint32_t gender; // Player Gender - 0 Male, 1 Female
-/*00008*/ uint32_t race; // Player race
-/*00012*/ uint32_t class_; // Player class
-/*00016*/ uint8_t unknown00016[40]; // ***Placeholder
-/*00056*/ uint8_t level; // Level of player
-/*00057*/ uint8_t level1; // Level of player (again?)
-/*00058*/ uint8_t unknown00058[2]; // ***Placeholder
-/*00060*/ BindStruct binds[5]; // Bind points (primary is first)
-/*00160*/ uint32_t deity; // deity
-/*00164*/ uint32_t intoxication; // Alcohol level (in ticks till sober?)
-/*00168*/ uint32_t spellSlotRefresh[13]; // Refresh time (millis)
-/*00220*/ uint8_t haircolor; // Player hair color
-/*00221*/ uint8_t beardcolor; // Player beard color
+/*00004*/ uint32_t gender; // Player Gender - 0 Male, 1 Female
+/*00008*/ uint32_t race; // Player race
+/*00012*/ uint32_t class_; // Player class
+/*00016*/ uint8_t unknown00016[40]; // ***Placeholder
+/*00056*/ uint8_t level; // Level of player
+/*00057*/ uint8_t level1; // Level of player (again?)
+/*00058*/ uint8_t unknown00058[2]; // ***Placeholder
+/*00060*/ BindStruct binds[5]; // Bind points (primary is first)
+/*00160*/ uint32_t deity; // deity
+/*00164*/ uint32_t intoxication; // Alcohol level (in ticks till sober?)
+/*00168*/ uint32_t spellSlotRefresh[13]; // Refresh time (millis)
+/*00220*/ uint8_t haircolor; // Player hair color
+/*00221*/ uint8_t beardcolor; // Player beard color
/*00222*/ uint8_t unknown00222[6];
-/*00228*/ uint8_t eyecolor1; // Player left eye color
-/*00229*/ uint8_t eyecolor2; // Player right eye color
-/*00230*/ uint8_t hairstyle; // Player hair style
-/*00231*/ uint8_t beard; // Player beard type
-/*00232*/ uint8_t unknown00232[22];
-/*00254*/ uint32_t item_material[9]; // Item texture/material of worn items
-/*00290*/ uint8_t unknown00290[222];
-/*00512*/ Color_Struct item_tint[9]; // RR GG BB 00
-/*00548*/ AA_Array aa_array[MAX_AA]; // AAs
-/*04148*/ uint32_t points; // Unspent Practice points
-/*04152*/ uint32_t MANA; // Current MANA
-/*04156*/ uint32_t curHp; // Current HP without +HP equipment
-/*04160*/ uint32_t STR; // Strength
-/*04164*/ uint32_t STA; // Stamina
-/*04168*/ uint32_t CHA; // Charisma
-/*04172*/ uint32_t DEX; // Dexterity
-/*04176*/ uint32_t INT; // Intelligence
-/*04180*/ uint32_t AGI; // Agility
-/*04184*/ uint32_t WIS; // Wisdom
-/*04188*/ uint8_t face; // Player face
-/*04189*/ uint8_t unknown04189[175];
-/*04364*/ int32_t sSpellBook[720]; // List of the Spells in spellbook
-/*07244*/ int32_t sMemSpells[MAX_SPELL_SLOTS]; // List of spells memorized
-/*07292*/ uint8_t unknown07292[20];
-/*07312*/ uint32_t platinum; // Platinum Pieces on player
-/*07316*/ uint32_t gold; // Gold Pieces on player
-/*07320*/ uint32_t silver; // Silver Pieces on player
-/*07324*/ uint32_t copper; // Copper Pieces on player
-/*07328*/ uint32_t platinum_cursor; // Platinum Pieces on cursor
-/*07332*/ uint32_t gold_cursor; // Gold Pieces on cursor
-/*07336*/ uint32_t silver_cursor; // Silver Pieces on cursor
-/*07340*/ uint32_t copper_cursor; // Copper Pieces on cursor
-/*07344*/ uint32_t skills[MAX_KNOWN_SKILLS]; // List of skills
-/*07744*/ uint32_t innateSkills[25];
-/*07844*/ uint8_t unknown07844[16];
-/*07860*/ uint32_t toxicity; // Potion Toxicity (15=too toxic, each potion adds 3)
-/*07864*/ uint32_t thirst; // Drink (ticks till next drink)
-/*07868*/ uint32_t hunger; // Food (ticks till next eat)
-/*07872*/ uint8_t unknown07872[20];
-/*07892*/ spellBuff buffs[MAX_BUFFS]; // Buffs currently on the player
-/*11588*/ uint32_t disciplines[MAX_DISCIPLINES]; // Known disciplines
-/*11988*/ uint8_t unknown10932[400];
-/*12188*/ uint32_t recastTimers[MAX_RECAST_TYPES]; // Timers (GMT of last use)
-/*12468*/ uint8_t unknown11412[480];
-/*12948*/ uint32_t endurance; // Current endurance
-/*12952*/ uint32_t aa_spent; // Number of spent AA points (including glyphs)
-/*12956*/ uint32_t aa_assigned; // Number of points currently assigned to AAs
-/*12960*/ uint32_t unknown11904[4];
-/*12976*/ uint32_t aa_unspent; // Unspent AA points
-/*12980*/ uint8_t unknown11924[4];
-/*12984*/ BandolierStruct bandoliers[MAX_BANDOLIERS]; // bandolier contents
-/*19384*/ InlineItem potionBelt[MAX_POTIONS_IN_BELT]; // potion belt
-/*19744*/ uint8_t unknown18008[92];
-/*19836*/
-};
+/*00228*/ uint8_t eyecolor1; // Player left eye color
+/*00229*/ uint8_t eyecolor2; // Player right eye color
+/*00230*/ uint8_t hairstyle; // Player hair style
+/*00231*/ uint8_t beard; // Player beard type
+/*00232*/ uint8_t unknown00232[4];
+/*00236*/ union
+ {
+ struct
+ {
+ /*00236*/ EquipStruct equip_helmet; // Equiptment: Helmet visual
+ /*00252*/ EquipStruct equip_chest; // Equiptment: Chest visual
+ /*00268*/ EquipStruct equip_arms; // Equiptment: Arms visual
+ /*00284*/ EquipStruct equip_bracers; // Equiptment: Wrist visual
+ /*00300*/ EquipStruct equip_hands; // Equiptment: Hands visual
+ /*00316*/ EquipStruct equip_legs; // Equiptment: Legs visual
+ /*00332*/ EquipStruct equip_feet; // Equiptment: Boots visual
+ /*00348*/ EquipStruct equip_primary; // Equiptment: Main visual
+ /*00364*/ EquipStruct equip_secondary; // Equiptment: Off visual
+ } equip;
+ /*00380*/ EquipStruct equipment[9];
+ };
+/*00380*/ uint8_t unknown00380[220];
+/*00600*/ Color_Struct item_tint[9]; // RR GG BB 00
+/*00636*/ AA_Array aa_array[MAX_AA]; // AAs
+/*04236*/ uint32_t points; // Unspent Practice points
+/*04240*/ uint32_t MANA; // Current MANA
+/*04244*/ uint32_t curHp; // Current HP without +HP equipment
+/*04248*/ uint32_t STR; // Strength
+/*04252*/ uint32_t STA; // Stamina
+/*04256*/ uint32_t CHA; // Charisma
+/*04260*/ uint32_t DEX; // Dexterity
+/*04264*/ uint32_t INT; // Intelligence
+/*04268*/ uint32_t AGI; // Agility
+/*04272*/ uint32_t WIS; // Wisdom
+/*04276*/ uint8_t unknown04276[28];
+/*04304*/ uint32_t face; // Player face
+/*04308*/ uint8_t unknown04308[180];
+/*04488*/ int32_t sSpellBook[720]; // List of the Spells in spellbook
+/*07368*/ int32_t sMemSpells[MAX_SPELL_SLOTS]; // List of spells memorized
+/*07416*/ uint8_t unknown07416[20];
+/*07436*/ uint32_t platinum; // Platinum Pieces on player
+/*07442*/ uint32_t gold; // Gold Pieces on player
+/*07444*/ uint32_t silver; // Silver Pieces on player
+/*07448*/ uint32_t copper; // Copper Pieces on player
+/*07452*/ uint32_t platinum_cursor; // Platinum Pieces on cursor
+/*07456*/ uint32_t gold_cursor; // Gold Pieces on cursor
+/*07460*/ uint32_t silver_cursor; // Silver Pieces on cursor
+/*07464*/ uint32_t copper_cursor; // Copper Pieces on cursor
+/*07468*/ uint32_t skills[MAX_KNOWN_SKILLS]; // List of skills
+/*07868*/ uint32_t innateSkills[25];
+/*07968*/ uint8_t unknown07968[16];
+/*07984*/ uint32_t toxicity; // Potion Toxicity (15=too toxic, each potion adds 3)
+/*07988*/ uint32_t thirst; // Drink (ticks till next drink)
+/*07992*/ uint32_t hunger; // Food (ticks till next eat)
+/*07996*/ uint8_t unknown07996[20];
+/*08016*/ spellBuff buffs[MAX_BUFFS]; // Buffs currently on the player
+/*11712*/ uint32_t disciplines[MAX_DISCIPLINES];// Known disciplines
+/*12112*/ uint8_t unknown12112[400];
+/*12312*/ uint32_t recastTimers[MAX_RECAST_TYPES];// Timers (GMT of last use)
+/*12592*/ uint8_t unknown12592[480];
+/*13072*/ uint32_t endurance; // Current endurance
+/*13076*/ uint32_t aa_spent; // Number of spent AA points (including glyphs)
+/*13080*/ uint32_t aa_assigned; // Number of points currently assigned to AAs
+/*13084*/ uint32_t unknown13084[4];
+/*13100*/ uint32_t aa_unspent; // Unspent AA points
+/*13104*/ uint8_t unknown13104[4];
+/*13108*/ BandolierStruct bandoliers[MAX_BANDOLIERS]; // bandolier contents
+/*19508*/ InlineItem potionBelt[MAX_POTIONS_IN_BELT]; // potion belt
+/*19868*/ uint8_t unknown19868[92];
+/*19960*/
+ };

/*
** Player Profile
-** Length: 29560 Octets
+** Length: 29688 Octets
** OpCode: CharProfileCode
*/
struct charProfileStruct
{
-/*00000*/ uint32_t checksum; //
-/*00004*/ playerProfileStruct profile; // Profile
-/*19836*/ char name[64]; // Name of player
-/*19900*/ char lastName[32]; // Last name of player
-/*19932*/ uint8_t unknown18196[8]; //***Placeholder (1/18/2006)
-/*19940*/ int32_t guildID; // guildID
-/*19944*/ uint32_t birthdayTime; // character birthday
-/*19948*/ uint32_t lastSaveTime; // character last save time
-/*19952*/ uint32_t timePlayedMin; // time character played
-/*19956*/ uint8_t unknown18220[4];
-/*19960*/ uint8_t pvp; // 1=pvp, 0=not pvp
-/*19961*/ uint8_t anon; // 2=roleplay, 1=anon, 0=not anon
-/*19962*/ uint8_t gm; // 0=no, 1=yes (guessing!)
-/*19963*/ int8_t guildstatus; // 0=member, 1=officer, 2=guildleader
-/*19964*/ uint8_t unknown18228[16];
-/*19980*/ uint32_t exp; // Current Experience
-/*19984*/ uint8_t unknown18240[12];
-/*19996*/ uint8_t languages[MAX_KNOWN_LANGS]; // List of languages ccc
-/*20022*/ uint8_t unknown18277[6]; // All 0x00 (language buffer?)
-/*20028*/ float y; // Players y position
-/*20032*/ float x; // Players x position
-/*20036*/ float z; // Players z position
-/*20040*/ float heading; // Players heading
-/*20044*/ uint32_t standState; // 0x64 = stand
-/*20048*/ uint32_t platinum_bank; // Platinum Pieces in Bank
-/*20052*/ uint32_t gold_bank; // Gold Pieces in Bank
-/*20056*/ uint32_t silver_bank; // Silver Pieces in Bank
-/*20060*/ uint32_t copper_bank; // Copper Pieces in Bank
-/*20064*/ uint32_t platinum_shared; // Shared platinum pieces ccc
-/*20068*/ uint8_t unknown18324[2124]; // Added 1088 for HoT
-/*22192*/ uint32_t expansions; // Bitmask for expansions ccc
-/*22196*/ uint8_t unknown20452[12];
-/*22208*/ uint32_t autosplit; // 0 = off, 1 = on ccc
-/*22212*/ uint8_t unknown20468[16];
-/*22228*/ uint16_t zoneId; // see zones.h ccc
-/*22230*/ uint16_t zoneInstance; // Instance id ccc
-/*22232*/ uint8_t unknown20486[992];
-/*23224*/ uint32_t leadAAActive; // 0 = leader AA off, 1 = leader AA on ccc
-/*23228*/ uint8_t unknown21484[4];
-/*23232*/ uint32_t ldon_guk_points; // Earned GUK points ccc
-/*23236*/ uint32_t ldon_mir_points; // Earned MIR points ccc
-/*23240*/ uint32_t ldon_mmc_points; // Earned MMC points ccc
-/*23244*/ uint32_t ldon_ruj_points; // Earned RUJ points ccc
-/*23248*/ uint32_t ldon_tak_points; // Earned TAK points ccc
-/*23252*/ uint32_t ldon_avail_points; // Available LDON points ccc
-/*23256*/ uint8_t unknown21512[144];
-/*23400*/ uint32_t tributeTime; // Time remaining on tribute (millisecs) ccc
-/*23404*/ uint32_t careerTribute; // Total favor points for this char ccc
-/*23408*/ uint32_t unknown21656; // *** Placeholder ccc
-/*23412*/ uint32_t currentTribute; // Current tribute points ccc
-/*23416*/ uint32_t unknown21664; // *** Placeholder
-/*23420*/ uint32_t tributeActive; // 0 = off, 1=on
-/*23424*/ TributeStruct tributes[MAX_TRIBUTES]; // Current tribute loadout ccc
-/*23464*/ uint8_t unknown21712[84]; // Added 208 bytes for HoT BETA ccc
-/*23548*/ float expGroupLeadAA; // Current group lead exp points ccc
-/*23552*/ uint32_t unknown21808;
-/*23556*/ float expRaidLeadAA; // Current raid lead AA exp points ccc
-/*23560*/ uint32_t unknown21816;
-/*23564*/ uint32_t groupLeadAAUnspent; // Unspent group lead AA points ccc
-/*23568*/ uint32_t raidLeadAAUnspent; // Unspent raid lead AA points ccc
-/*23572*/ uint32_t leadershipAAs[MAX_LEAD_AA]; // Leader AA ranks ccc
-/*23700*/ uint8_t unknown21956[128];
-/*23828*/ uint32_t airRemaining; // Air supply (seconds) ccc
-/*23832*/ uint8_t unknown22088[4608];
-/*28440*/ uint32_t expAA; // Exp earned in current AA point ccc
-/*28444*/ uint8_t unknown26700[40];
-/*28484*/ uint32_t currentRadCrystals; // Current count of radiant crystals ccc
-/*28488*/ uint32_t careerRadCrystals; // Total count of radiant crystals ever ccc
-/*28492*/ uint32_t currentEbonCrystals;// Current count of ebon crystals ccc
-/*28496*/ uint32_t careerEbonCrystals; // Total count of ebon crystals ever ccc
-/*28500*/ uint8_t groupAutoconsent; // 0=off, 1=on
-/*28501*/ uint8_t raidAutoconsent; // 0=off, 1=on
-/*28502*/ uint8_t guildAutoconsent; // 0=off, 1=on
-/*28503*/ uint8_t unknown26759[5]; // ***Placeholder (6/29/2005)
-/*28508*/ uint32_t showhelm; // 0=no, 1=yes
-/*28512*/ uint8_t unknown26768[1048]; // ***Placeholder (2/13/2007)
-/*29560*/
-};
+/*00000*/ uint32_t checksum; //
+/*00004*/ playerProfileStruct profile; // Profile
+/*19960*/ char name[64]; // Name of player
+/*20024*/ char lastName[32]; // Last name of player
+/*20054*/ uint8_t unknown20054[12]; //***Placeholder (1/18/2006)
+/*20066*/ int32_t guildID; // guildID
+/*20070*/ uint32_t birthdayTime; // character birthday
+/*20074*/ uint32_t lastSaveTime; // character last save time
+/*20078*/ uint32_t timePlayedMin; // time character played
+/*20082*/ uint8_t unknown20082[4];
+/*20086*/ uint8_t pvp; // 1=pvp, 0=not pvp
+/*20087*/ uint8_t anon; // 2=roleplay, 1=anon, 0=not anon
+/*20088*/ uint8_t gm; // 0=no, 1=yes (guessing!)
+/*20089*/ int8_t guildstatus; // 0=member, 1=officer, 2=guildleader
+/*20090*/ uint8_t unknown20090[16];
+/*20106*/ uint32_t exp; // Current Experience
+/*20110*/ uint8_t unknown20110[12];
+/*20122*/ uint8_t languages[MAX_KNOWN_LANGS]; // List of languages ccc
+/*20150*/ uint8_t unknown20150[6]; // All 0x00 (language buffer?)
+/*20156*/ float y; // Players y position
+/*20160*/ float x; // Players x position
+/*20164*/ float z; // Players z position
+/*20168*/ float heading; // Players heading
+/*20172*/ uint32_t standState; // 0x64 = stand
+/*20176*/ uint32_t platinum_bank; // Platinum Pieces in Bank
+/*20180*/ uint32_t gold_bank; // Gold Pieces in Bank
+/*20184*/ uint32_t silver_bank; // Silver Pieces in Bank
+/*20188*/ uint32_t copper_bank; // Copper Pieces in Bank
+/*20192*/ uint32_t platinum_shared; // Shared platinum pieces
+/*20196*/ uint8_t unknown20196[2124]; // Added 1088 for HoT
+/*22320*/ uint32_t expansions; // Bitmask for expansions
+/*22324*/ uint8_t unknown22324[12];
+/*22336*/ uint32_t autosplit; // 0 = off, 1 = on
+/*22340*/ uint8_t unknown22340[16];
+/*22356*/ uint16_t zoneId; // see zones.h
+/*22358*/ uint16_t zoneInstance; // Instance id
+/*22360*/ uint8_t unknown22360[992];
+/*23352*/ uint32_t leadAAActive; // 0 = leader AA off, 1 = leader AA on
+/*23356*/ uint8_t unknown23356[4];
+/*23360*/ uint32_t ldon_guk_points; // Earned GUK points
+/*23364*/ uint32_t ldon_mir_points; // Earned MIR points
+/*23368*/ uint32_t ldon_mmc_points; // Earned MMC points
+/*23372*/ uint32_t ldon_ruj_points; // Earned RUJ points
+/*23376*/ uint32_t ldon_tak_points; // Earned TAK points
+/*23380*/ uint32_t ldon_avail_points; // Available LDON points
+/*23384*/ uint8_t unknown23384[144];
+/*23528*/ uint32_t tributeTime; // Time remaining on tribute (millisecs)
+/*23532*/ uint32_t careerTribute; // Total favor points for this char
+/*23536*/ uint32_t unknown23536; // *** Placeholder
+/*23540*/ uint32_t currentTribute; // Current tribute points
+/*23544*/ uint32_t unknown23544; // *** Placeholder
+/*23548*/ uint32_t tributeActive; // 0 = off, 1=on
+/*23552*/ TributeStruct tributes[MAX_TRIBUTES]; // Current tribute loadout
+/*23592*/ uint8_t unknown23592[84]; // Added 208 bytes for HoT BETA
+/*23676*/ float expGroupLeadAA; // Current group lead exp points
+/*23680*/ uint32_t unknown23680;
+/*23684*/ float expRaidLeadAA; // Current raid lead AA exp points
+/*23688*/ uint32_t unknown23688;
+/*23692*/ uint32_t groupLeadAAUnspent; // Unspent group lead AA points
+/*23696*/ uint32_t raidLeadAAUnspent; // Unspent raid lead AA points
+/*23700*/ uint32_t leadershipAAs[MAX_LEAD_AA]; // Leader AA ranks
+/*23828*/ uint8_t unknown23828[128];
+/*23956*/ uint32_t airRemaining; // Air supply (seconds)
+/*23960*/ uint8_t unknown23960[4608];
+/*28568*/ uint32_t expAA; // Exp earned in current AA point
+/*28572*/ uint8_t unknown28572[40];
+/*28612*/ uint32_t currentRadCrystals; // Current count of radiant crystals
+/*28616*/ uint32_t careerRadCrystals; // Total count of radiant crystals ever
+/*28620*/ uint32_t currentEbonCrystals; // Current count of ebon crystals
+/*28624*/ uint32_t careerEbonCrystals; // Total count of ebon crystals ever
+/*28628*/ uint8_t groupAutoconsent; // 0=off, 1=on
+/*28629*/ uint8_t raidAutoconsent; // 0=off, 1=on
+/*28630*/ uint8_t guildAutoconsent; // 0=off, 1=on
+/*28631*/ uint8_t unknown28631[5]; // ***Placeholder (6/29/2005)
+/*28636*/ uint32_t showhelm; // 0=no, 1=yes
+/*28640*/ uint8_t unknown28640[1048]; // ***Placeholder (2/13/2007)
+/*29688*/
+ };

#if 0
// The following seem to be totally gone from charProfileStruct (9/13/05)
-/*2384*/ char title[32]; // Current character title
-/*2352*/ char servername[32]; // server the char was created on
-/*2416*/ char suffix[32]; // Current character suffix
+/*2384*/ char title[32]; // Current character title
+/*2352*/ char servername[32]; // server the char was created on
+/*2416*/ char suffix[32]; // Current character suffix
#endif

#if 1
@@ -877,23 +894,23 @@
union {
uint8_t unnamed[93];
struct _name {
-/* 35 */ uint8_t mass_group_buff; // All group-buff-casting classes(?)
+/* 35 */ uint8_t mass_group_buff; // All group-buff-casting classes(?)
// ===== Cleric =====
/* 36 */ uint8_t divine_resurrection;
-/* 37 */ uint8_t innate_invis_to_undead; // cleric, necromancer
+/* 37 */ uint8_t innate_invis_to_undead; // cleric, necromancer
/* 38 */ uint8_t celestial_regeneration;
/* 39 */ uint8_t bestow_divine_aura;
/* 40 */ uint8_t turn_undead;
/* 41 */ uint8_t purify_soul;
// ===== Druid =====
-/* 42 */ uint8_t quick_evacuation; // wizard, druid
-/* 43 */ uint8_t exodus; // wizard, druid
-/* 44 */ uint8_t quick_damage; // wizard, druid
-/* 45 */ uint8_t enhanced_root; // druid
-/* 46 */ uint8_t dire_charm; // enchanter, druid, necromancer
+/* 42 */ uint8_t quick_evacuation; // wizard, druid
+/* 43 */ uint8_t exodus; // wizard, druid
+/* 44 */ uint8_t quick_damage; // wizard, druid
+/* 45 */ uint8_t enhanced_root; // druid
+/* 46 */ uint8_t dire_charm; // enchanter, druid, necromancer
// ===== Shaman =====
/* 47 */ uint8_t cannibalization;
-/* 48 */ uint8_t quick_buff; // shaman, enchanter
+/* 48 */ uint8_t quick_buff; // shaman, enchanter
/* 49 */ uint8_t alchemy_mastery;
/* 50 */ uint8_t rabid_bear;
// ===== Wizard =====
@@ -906,7 +923,7 @@
/* 56 */ uint8_t jewel_craft_mastery;
/* 57 */ uint8_t gather_mana;
// ===== Mage =====
-/* 58 */ uint8_t mend_companion; // mage, necromancer
+/* 58 */ uint8_t mend_companion; // mage, necromancer
/* 59 */ uint8_t quick_summoning;
/* 60 */ uint8_t frenzied_burnout;
/* 61 */ uint8_t elemental_form_fire;
@@ -928,15 +945,15 @@
/* 75 */ uint8_t slay_undead;
/* 76 */ uint8_t act_of_valor;
/* 77 */ uint8_t holy_steed;
-/* 78 */ uint8_t fearless; // paladin, shadowknight
+/* 78 */ uint8_t fearless; // paladin, shadowknight

-/* 79 */ uint8_t two_hand_bash; // paladin, shadowknight
+/* 79 */ uint8_t two_hand_bash; // paladin, shadowknight
// ===== Ranger =====
-/* 80 */ uint8_t innate_camouflage; // ranger, druid
-/* 81 */ uint8_t ambidexterity; // all "dual-wield" users
-/* 82 */ uint8_t archery_mastery; // ranger
+/* 80 */ uint8_t innate_camouflage; // ranger, druid
+/* 81 */ uint8_t ambidexterity; // all "dual-wield" users
+/* 82 */ uint8_t archery_mastery; // ranger
/* 83 */ uint8_t unknown83;
-/* 84 */ uint8_t endless_quiver; // ranger
+/* 84 */ uint8_t endless_quiver; // ranger
// ===== Shadow Knight =====
/* 85 */ uint8_t unholy_steed;
/* 86 */ uint8_t improved_harm_touch;
@@ -960,10 +977,10 @@
// ===== Rogue =====
/* 102 */ uint8_t escape;
/* 103 */ uint8_t poison_mastery;
-/* 104 */ uint8_t double_riposte; // all "riposte" users
+/* 104 */ uint8_t double_riposte; // all "riposte" users
/* 105 */ uint8_t unknown105;
/* 106 */ uint8_t unknown106;
-/* 107 */ uint8_t purge_poison; // rogue
+/* 107 */ uint8_t purge_poison; // rogue
// ===== Warrior =====
/* 108 */ uint8_t flurry;
/* 109 */ uint8_t rampage;
@@ -973,17 +990,17 @@
// ===== (Other) =====
/* 113 */ uint8_t spell_casting_reinforcement_mastery; // all "pure" casters
/* 114 */ uint8_t unknown114;
-/* 115 */ uint8_t extended_notes; // bard
-/* 116 */ uint8_t dragon_punch; // monk
-/* 117 */ uint8_t strong_root; // wizard
-/* 118 */ uint8_t singing_mastery; // bard
-/* 119 */ uint8_t body_and_mind_rejuvenation; // paladin, ranger, bard
-/* 120 */ uint8_t physical_enhancement; // paladin, ranger, bard
-/* 121 */ uint8_t adv_trap_negotiation; // rogue, bard
-/* 122 */ uint8_t acrobatics; // all "safe-fall" users
-/* 123 */ uint8_t scribble_notes; // bard
-/* 124 */ uint8_t chaotic_stab; // rogue
-/* 125 */ uint8_t pet_discipline; // all pet classes except enchanter
+/* 115 */ uint8_t extended_notes; // bard
+/* 116 */ uint8_t dragon_punch; // monk
+/* 117 */ uint8_t strong_root; // wizard
+/* 118 */ uint8_t singing_mastery; // bard
+/* 119 */ uint8_t body_and_mind_rejuvenation; // paladin, ranger, bard
+/* 120 */ uint8_t physical_enhancement; // paladin, ranger, bard
+/* 121 */ uint8_t adv_trap_negotiation; // rogue, bard
+/* 122 */ uint8_t acrobatics; // all "safe-fall" users
+/* 123 */ uint8_t scribble_notes; // bard
+/* 124 */ uint8_t chaotic_stab; // rogue
+/* 125 */ uint8_t pet_discipline; // all pet classes except enchanter
/* 126 */ uint8_t unknown126;
/* 127 */ uint8_t unknown127;
} named;
@@ -1008,7 +1025,7 @@
/*0000*/ char name[64];
/*0000*/ uint32_t spawnId;
/*0000*/ uint8_t level;
-/*0000*/ uint8_t NPC; // 0=player,1=npc,2=pc corpse,3=npc corpse
+/*0000*/ uint8_t NPC; // 0=player,1=npc,2=pc corpse,3=npc corpse
/*0000*/ union
{
struct
@@ -1021,9 +1038,9 @@
unsigned invis:1;
unsigned padding5:11;
unsigned gm:1;
- unsigned anon:1; // 0=normal, 1=anon, 2=roleplay
+ unsigned anon:1; // 0=normal, 1=anon, 2=roleplay
unsigned padding4:1;
- unsigned gender:1; // Gender (0=male, 1=female)
+ unsigned gender:1; // Gender (0=male, 1=female)
unsigned padding3:1;
unsigned linkdead:1;
unsigned betabuffed:1;
@@ -1036,7 +1053,7 @@
};
int32_t miscData;
};
-/*0000*/ uint8_t otherData; // & 4 - has title, & 8 - has suffix, & 1 - it's a chest or untargetable
+/*0000*/ uint8_t otherData; // & 4 - has title, & 8 - has suffix, & 1 - it's a chest or untargetable
/*0000*/ uint32_t race;
/*0000*/ uint8_t charProperties;
/*0000*/ uint32_t bodytype;
@@ -1045,9 +1062,9 @@
/*0000*/ uint8_t holding;
/*0000*/ uint32_t deity;
/*0000*/ uint32_t guildID;
-/*0000*/ uint32_t guildstatus; // 0=member, 1=officer, 2=leader, -1=not guilded
+/*0000*/ uint32_t guildstatus; // 0=member, 1=officer, 2=leader, -1=not guilded
/*0000*/ uint8_t class_;
-/*0000*/ uint8_t state; // stand state
+/*0000*/ uint8_t state; // stand state
/*0000*/ uint8_t light;
/*0000*/ char lastName[32];
/*0000*/ uint32_t petOwnerId;
@@ -1055,19 +1072,19 @@
{
struct
{
-/*0000*/ signed padding0000:12; // ***Placeholder
- signed deltaX:13; // change in x
- signed padding0005:7; // ***Placeholder
-/*0000*/ signed deltaHeading:10;// change in heading
- signed deltaY:13; // change in y
- signed padding0006:9; // ***Placeholder
-/*0000*/ signed y:19; // y coord
- signed animation:13; // animation
-/*0000*/ unsigned heading:12; // heading
- signed x:19; // x coord
- signed padding0014:1; // ***Placeholder
-/*0000*/ signed z:19; // z coord
- signed deltaZ:13; // change in z
+/*0000*/ signed padding0000:12; // ***Placeholder
+ signed deltaX:13; // change in x
+ signed padding0005:7; // ***Placeholder
+/*0000*/ signed deltaHeading:10; // change in heading
+ signed deltaY:13; // change in y
+ signed padding0006:9; // ***Placeholder
+/*0000*/ signed y:19; // y coord
+ signed animation:13; // animation
+/*0000*/ unsigned heading:12; // heading
+ signed x:19; // x coord
+ signed padding0014:1; // ***Placeholder
+/*0000*/ signed z:19; // z coord
+ signed deltaZ:13; // change in z
};
int32_t posData[5];
};
@@ -1110,14 +1127,14 @@

#if 0
// Basic structure of how the packet looks on the wire, for reference.
-// May 29, 2008 eqgame.exe
+// March 16, 2012 eqgame.exe
struct spawnStruct
{
/*0000*/ char name[0];
/*0000*/ uint32_t spawnId;
/*0000*/ uint8_t level;
/*0000*/ float unknown1;
-/*0000*/ uint8_t NPC; // 0=player,1=npc,2=pc corpse,3=npc corpse
+/*0000*/ uint8_t NPC; // 0=player,1=npc,2=pc corpse,3=npc corpse
/*0000*/ unsigned padding7:1;
unsigned AFK:1;
unsigned sneak:1;
@@ -1126,9 +1143,9 @@
unsigned invis:1;
unsigned padding5:11;
unsigned gm:1;
- unsigned anon:1; // 0=normal, 1=anon, 2=roleplay
+ unsigned anon:1; // 0=normal, 1=anon, 2=roleplay
unsigned padding4:1;
- unsigned gender:1; // Gender (0=male, 1=female)
+ unsigned gender:1; // Gender (0=male, 1=female)
unsigned padding3:1;
unsigned linkdead:1;
unsigned betabuffed:1;
@@ -1138,7 +1155,7 @@
unsigned padding1:2;
unsigned trader:1;
unsigned buyer:1;
-/*0000*/ uint8_t otherData; // & 4 - has title, & 8 - has suffix, & 1 - it's a chest or untargetable
+/*0000*/ uint8_t otherData; // & 8 - has title, & 16 - has suffix, & 2 - auras, & 1 - it's a chest or untargetable
/*0000*/ uint32_t unknown3;
/*0000*/ uint32_t unknown4;
/*0000*/ uint32_t unknown5;
@@ -1146,10 +1163,10 @@
/*0000*/ float walkspeed;
/*0000*/ float runspeed;
/*0000*/ uint32_t race;
-/*0000*/ uint8_t charProperties; // for body types
+/*0000*/ uint8_t charProperties; // for body types - value indicates how many properties are present
/*0000*/ uint32_t bodytype;
-/*0000*/ uint32_t bodytype2; // this is only present if charProperties==2
- // are there more than two possible properties?
+/*0000*/ uint32_t bodytype2; // this is only present if charProperties==2
+ // are there more than two possible properties?
/*0000*/ uint8_t curHp;
/*0000*/ uint8_t haircolor;
/*0000*/ uint8_t facialhaircolor;
@@ -1163,10 +1180,10 @@
/*0000*/ uint8_t holding;
/*0000*/ uint32_t deity;
/*0000*/ uint32_t guildID;
-/*0000*/ uint32_t guildstatus; // 0=member, 1=officer, 2=leader, -1=not guilded
+/*0000*/ uint32_t guildstatus; // 0=member, 1=officer, 2=leader, -1=not guilded
/*0000*/ uint8_t class_;
/*0000*/ uint8_t PVP;
-/*0000*/ uint8_t state; // stand state
+/*0000*/ uint8_t state; // stand state
/*0000*/ uint8_t light;
/*0000*/ uint8_t unknown7;
/*0000*/ uint8_t unknown8;
@@ -1184,19 +1201,31 @@
/*0000*/ uint32_t unknown17;
/*0000*/ uint32_t unknown18;
/*0000*/ uint32_t unknown19;
-/*0000*/ signed padding0000:12; // ***Placeholder
- signed deltaX:13; // change in x
- signed padding0005:7; // ***Placeholder
-/*0000*/ signed deltaHeading:10;// change in heading
- signed deltaY:13; // change in y
- signed padding0006:9; // ***Placeholder
-/*0000*/ signed y:19; // y coord
- signed animation:13; // animation
-/*0000*/ unsigned heading:12; // heading
- signed x:19; // x coord
- signed padding0014:1; // ***Placeholder
-/*0000*/ signed z:19; // z coord
- signed deltaZ:13; // change in z
+/*0000*/ signed padding0000:12; // ***Placeholder
+ signed deltaX:13; // change in x
+ signed padding0005:7; // ***Placeholder
+/*0000*/ signed deltaHeading:10; // change in heading
+ signed deltaY:13; // change in y
+ signed padding0006:9; // ***Placeholder
+/*0000*/ signed y:19; // y coord
+ signed animation:13; // animation
+/*0000*/ unsigned heading:12; // heading
+ signed x:19; // x coord
+ signed padding0014:1; // ***Placeholder
+/*0000*/ signed z:19; // z coord
+ signed deltaZ:13; // change in z
+// If not a valid player race (skip these if a valid player race)
+/*0000*/ union
+ {
+ struct
+ {
+ /*0000*/ EquipStruct equip_helmet; // Equipment: Helmet visual (maybe)
+ /*0000*/ EquipStruct equip_primary; // Equipment: Main visual
+ /*0000*/ EquipStruct equip_secondary; // Equipment: Off visual
+ } equip;
+ /*0000*/ EquipStruct equipment[3];
+ };
+// skip these bytes if not a valid player race - colors[9] and equipment[9]
/*0000*/ union
{
struct
@@ -1212,9 +1241,7 @@
/*0000*/ Color_Struct color_secondary; // Color of secondary item
} equipment_colors;
/*0000*/ Color_Struct colors[9]; // Array elements correspond to struct equipment_colors above
- };
-
-// skip these bytes if not a valid player race
+ }
/*0000*/ union
{
struct
@@ -1231,12 +1258,11 @@
} equip;
/*0000*/ EquipStruct equipment[9];
};
-
-/*0000*/ char title[0]; // only read if(hasTitleOrSuffix & 4)
-/*0000*/ char suffix[0]; // only read if(hasTitleOrSuffix & 8)
+/*0000*/ char title[0]; // only read if(otherData & 8)
+/*0000*/ char suffix[0]; // only read if(otherData & 16)
/*0000*/ char unknown20[8];
/*0000*/ uint8_t isMercenary;
-/*0000*/ char unknown20[24];
+/*0000*/ char unknown21[54];
};
#endif

@@ -1244,31 +1270,31 @@
#if 0
// Old stuff from spawnStruct seq doesn't actually use at all..
//
-/*0004*/ float size; // Model size
-/*0078*/ int8_t aa_title; // 0=none, 1=general, 2=archtype, 3=class
-/*0074*/ uint8_t invis; // Invis (0=not, 1=invis)
-/*0117*/ uint8_t lfg; // 0=off, 1=lfg on
-/*0196*/ uint8_t afk; // 0=no, 1=afk
-/*0207*/ int8_t guildrank; // 0=normal, 1=officer, 2=leader
-/*0213*/ uint8_t face; // Face id for players
-/*0247*/ uint8_t is_pet; // 0=no, 1=yes
-/*0284*/ uint8_t beardcolor; // Beard color
-/*0500*/ uint8_t showhelm; // 0=no, 1=yes
-/*0501*/ uint8_t helm; // Helm texture
-/*0660*/ uint8_t hairstyle; // Hair style
-/*0090*/ uint8_t eyecolor1; // Player's left eye color
-/*0542*/ uint8_t eyecolor2; // Left eye color
-/*0547*/ uint8_t haircolor; // Hair color
-/*0574*/ uint8_t is_npc; // 0=no, 1=yes
-/*0575*/ uint8_t findable; // 0=can't be found, 1=can be found
-/*0728*/ uint8_t beard; // Beard style (not totally, sure but maybe!)
-/*0723*/ uint8_t max_hp; // (name prolly wrong)takes on the value 100 for players, 100 or 110 for NPCs and 120 for PC corpses...
-/*122*/ uint8_t pvp; // 0=Not pvp,1=pvp
+/*0004*/ float size; // Model size
+/*0078*/ int8_t aa_title; // 0=none, 1=general, 2=archtype, 3=class
+/*0074*/ uint8_t invis; // Invis (0=not, 1=invis)
+/*0117*/ uint8_t lfg; // 0=off, 1=lfg on
+/*0196*/ uint8_t afk; // 0=no, 1=afk
+/*0207*/ int8_t guildrank; // 0=normal, 1=officer, 2=leader
+/*0213*/ uint8_t face; // Face id for players
+/*0247*/ uint8_t is_pet; // 0=no, 1=yes
+/*0284*/ uint8_t beardcolor; // Beard color
+/*0500*/ uint8_t showhelm; // 0=no, 1=yes
+/*0501*/ uint8_t helm; // Helm texture
+/*0660*/ uint8_t hairstyle; // Hair style
+/*0090*/ uint8_t eyecolor1; // Player's left eye color
+/*0542*/ uint8_t eyecolor2; // Left eye color
+/*0547*/ uint8_t haircolor; // Hair color
+/*0574*/ uint8_t is_npc; // 0=no, 1=yes
+/*0575*/ uint8_t findable; // 0=can't be found, 1=can be found
+/*0728*/ uint8_t beard; // Beard style (not totally, sure but maybe!)
+/*0723*/ uint8_t max_hp; // (name prolly wrong)takes on the value 100 for PCs, 100 or 110 for NPCs and 120 for PC corpses...
+/*122*/ uint8_t pvp; // 0=Not pvp,1=pvp
union
{
-/*0091*/ int8_t equip_chest2; // Second place in packet for chest texture (usually 0xFF in live packets)
- // Not sure why there are 2 of them, but it effects chest texture!
-/*0091*/ int8_t mount_color; // drogmor: 0=white, 1=black, 2=green, 3=red
+/*0091*/ int8_t equip_chest2; // Second place in packet for chest texture (usually 0xFF in live packets)
+ // Not sure why there are 2 of them, but it effects chest texture!
+/*0091*/ int8_t mount_color; // drogmor: 0=white, 1=black, 2=green, 3=red
};
#endif

@@ -1293,21 +1319,21 @@

struct doorStruct
{
-/*0000*/ char name[32]; // Filename of Door?
-/*0016*/ // uint8_t unknown016[16]; // ***Placeholder
-/*0032*/ float y; // y loc
-/*0036*/ float x; // x loc
-/*0040*/ float z; // z loc
-/*0044*/ float heading; // heading
-/*0048*/ uint32_t incline; // incline
-/*0052*/ uint32_t size; // size
-/*0056*/ uint8_t unknown0056[4]; // ***Placeholder
-/*0060*/ uint8_t doorId; // door's id #
-/*0061*/ uint8_t opentype; // open type
-/*0062*/ uint8_t spawnstate; // spawn state
-/*0063*/ uint8_t invertstate; // invert state
+/*0000*/ char name[32]; // Filename of Door?
+/*0016*/ // uint8_t unknown016[16]; // ***Placeholder
+/*0032*/ float y; // y loc
+/*0036*/ float x; // x loc
+/*0040*/ float z; // z loc
+/*0044*/ float heading; // heading
+/*0048*/ uint32_t incline; // incline
+/*0052*/ uint32_t size; // size
+/*0056*/ uint8_t unknown0056[4]; // ***Placeholder
+/*0060*/ uint8_t doorId; // door's id #
+/*0061*/ uint8_t opentype; // open type
+/*0062*/ uint8_t spawnstate; // spawn state
+/*0063*/ uint8_t invertstate; // invert state
/*0064*/ uint32_t zonePoint;
-/*0068*/ uint8_t unknown068[28]; // ***Placeholder
+/*0068*/ uint8_t unknown068[28]; // ***Placeholder
/*0096*/
};

@@ -1320,13 +1346,13 @@
// now only fill this with data we need from the serialized packet
struct makeDropStruct
{
- uint32_t dropId; // DropID
- float heading; // Heading
- float z; // Z Position
- float x; // X Position
- float y; // Y Position
- char idFile[30]; // ACTOR ID - The client reads 30 bytes from the packet
- // - 20100210 eqgame.exe in EQItemList::UnpackNetData
+ uint32_t dropId; // DropID
+ float heading; // Heading
+ float z; // Z Position
+ float x; // X Position
+ float y; // Y Position
+ char idFile[30]; // ACTOR ID - The client reads 30 bytes from the packet
+ // - 20100210 eqgame.exe in EQItemList::UnpackNetData
};

/*
@@ -1367,12 +1393,12 @@
*/
struct timeOfDayStruct
{
-/*0000*/ uint8_t hour; // Hour (1-24)
-/*0001*/ uint8_t minute; // Minute (0-59)
-/*0002*/ uint8_t day; // Day (1-28)
-/*0003*/ uint8_t month; // Month (1-12)
-/*0004*/ uint16_t year; // Year
-/*0006*/ uint16_t unknown0016; // Placeholder
+/*0000*/ uint8_t hour; // Hour (1-24)
+/*0001*/ uint8_t minute; // Minute (0-59)
+/*0002*/ uint8_t day; // Day (1-28)
+/*0003*/ uint8_t month; // Month (1-12)
+/*0004*/ uint16_t year; // Year
+/*0006*/ uint16_t unknown0016; // Placeholder
/*0008*/
};

@@ -1384,7 +1410,7 @@
*/
struct itemPacketStruct
{
-/*000*/ ItemPacketType packetType; // See ItemPacketType for more info.
+/*000*/ ItemPacketType packetType; // See ItemPacketType for more info.
/*004*/ char serializedItem[0];
/*xx*/
};
@@ -1396,9 +1422,9 @@
*/
struct itemInfoReqStruct
{
-/*000*/ uint32_t itemNr; // ItemNr
-/*005*/ uint32_t requestSeq; // Request sequence number
-/*008*/ char name[64]; // Item name
+/*000*/ uint32_t itemNr; // ItemNr
+/*005*/ uint32_t requestSeq; // Request sequence number
+/*008*/ char name[64]; // Item name
/*072*/
};

@@ -1409,7 +1435,7 @@
*/
struct itemInfoStruct
{
-/*000*/ uint32_t requestSeq; // Corresponds to sequence # in req
+/*000*/ uint32_t requestSeq; // Corresponds to sequence # in req
/*004*/ char serializedItem[0];
/*xxx*/
};
@@ -1424,7 +1450,7 @@
struct spawnPositionUpdate
{
/*0000*/ int16_t spawnId;
-/*0002*/ uint8_t unk1[2]; // BSH 13 Apr 2011
+/*0002*/ uint8_t unk1[2]; // BSH 13 Apr 2011
/*0004*/ int64_t y:19, z:19, x:19, u3:7;
unsigned heading:12;
signed unused2:4;
@@ -1433,38 +1459,38 @@

/*
** Rename a spawn
-** Length: 200 Octets
+** Length: 232 Octets
** OpCode: SpawnRename
*/
struct spawnRenameStruct
{
/*000*/ char old_name[64];
-/*064*/ char old_name_again[64]; //not sure what the difference is
+/*064*/ char old_name_again[64]; //not sure what the difference is
/*128*/ char new_name[64];
-/*192*/ uint32_t unknown192; //set to 0
-/*196*/ uint32_t unknown196; //set to 1
-/*200*/ uint8_t unknown0084[32]; // ***Placeholder
+/*192*/ uint32_t unknown192; //set to 0
+/*196*/ uint32_t unknown196; //set to 1
+/*200*/ uint8_t unknown0084[32]; // ***Placeholder
/*232*/
};

/*
** Illusion a spawn
-** Length: 264 Octets
+** Length: 300 Octets
** OpCode: Illusion
*/
struct spawnIllusionStruct
{
-/*0000*/ uint32_t spawnId; // Spawn id of the target
-/*0004*/ char name[64]; // Name of the target
-/*0068*/ uint32_t race; // New race
-/*0072*/ uint8_t gender; // New gender (0=male, 1=female)
-/*0073*/ uint8_t texture; // ???
-/*0074*/ uint8_t helm; // ???
-/*0075*/ uint8_t unknown0075; // ***Placeholder
-/*0076*/ uint32_t unknown0076; // ***Placeholder
-/*0080*/ uint32_t face; // New face
-/*0084*/ uint8_t unknown0084[180]; // ***Placeholder
-/*0264*/
+/*0000*/ uint32_t spawnId; // Spawn id of the target
+/*0004*/ char name[64]; // Name of the target
+/*0068*/ uint32_t race; // New race
+/*0072*/ uint8_t gender; // New gender (0=male, 1=female)
+/*0073*/ uint8_t texture; // ???
+/*0074*/ uint8_t helm; // ???
+/*0075*/ uint8_t unknown0075; // ***Placeholder
+/*0076*/ uint32_t unknown0076; // ***Placeholder
+/*0080*/ uint32_t face; // New face
+/*0084*/ uint8_t unknown0084[216]; // ***Placeholder
+/*0300*/
};

/**
@@ -1476,9 +1502,9 @@
*/
struct spawnShroudOther
{
-/*00000*/ uint32_t spawnId; // Spawn Id of the shrouded player
-/*00004*/ uint16_t spawnStructSize; // Size of spawnStruct (or start of)
-/*00006*/ spawnStruct spawn; // Updated spawn struct for the player (variable length)
+/*00000*/ uint32_t spawnId; // Spawn Id of the shrouded player
+/*00004*/ uint16_t spawnStructSize; // Size of spawnStruct (or start of)
+/*00006*/ spawnStruct spawn; // Updated spawn struct for the player (variable length)
/*xxxxx*/
};

@@ -1493,11 +1519,11 @@
*/
struct spawnShroudSelf
{
-/*00000*/ uint32_t spawnId; // Spawn Id of you
-/*00004*/ uint16_t ppStart; // Start of playerProfile data (spawnId+ppStart+spawnStruct)
-/*00004*/ spawnStruct spawn; // Updated spawnStruct for you (variable length)
-/*xxxxx*/ playerProfileStruct profile; // Character profile for shrouded char
-/*xxxxx*/ uint8_t items; // Items on the player
+/*00000*/ uint32_t spawnId; // Spawn Id of you
+/*00004*/ uint16_t ppStart; // Start of playerProfile data (spawnId+ppStart+spawnStruct)
+/*00004*/ spawnStruct spawn; // Updated spawnStruct for you (variable length)
+/*xxxxx*/ playerProfileStruct profile; // Character profile for shrouded char
+/*xxxxx*/ uint8_t items; // Items on the player
/*xxxxx*/
};

@@ -1524,8 +1550,8 @@

struct dbSpawnStruct
{
-/*0000*/ struct spawnStruct spawn; // Spawn Information
-/*0258*/ char zoneName[40]; // Zone Information
+/*0000*/ struct spawnStruct spawn; // Spawn Information
+/*0258*/ char zoneName[40]; // Zone Information
};

/*
@@ -1534,8 +1560,8 @@

struct petStruct
{
-/*0000*/ struct spawnStruct owner; // Pet Owner Information
-/*0258*/ struct spawnStruct pet; // Pet Infromation
+/*0000*/ struct spawnStruct owner; // Pet Owner Information
+/*0258*/ struct spawnStruct pet; // Pet Infromation
};

/*
@@ -1546,7 +1572,7 @@

struct sysMsgStruct
{
-/*0000*/ char message[0]; // Variable length message
+/*0000*/ char message[0]; // Variable length message
};

/*
@@ -1557,8 +1583,8 @@

struct emoteTextStruct
{
-/*0000*/ uint8_t unknown0002[4]; // ***Placeholder
-/*0002*/ char text[0]; // Emote `Text
+/*0000*/ uint8_t unknown0002[4]; // ***Placeholder
+/*0002*/ char text[0]; // Emote `Text
};

/*
@@ -1568,19 +1594,19 @@

This is how channelMessageStruct looks on the wire, for reference (8/12/09 eqgame.exe)

-char sender[0]; // Variable length senders name
-char target[0]; // Variable length target characters name
+char sender[0]; // Variable length senders name
+char target[0]; // Variable length target characters name
uint32_t unknown;
-uint32_t language; // Language
-uint32_t chanNum; // Channel
+uint32_t language; // Language
+uint32_t chanNum; // Channel
uint32_t unknown;
uint8_t unknown;
-uint32_t skillInLanguage; // senders skill in language
-char message[0]; // Variable length message
+uint32_t skillInLanguage; // senders skill in language
+char message[0]; // Variable length message
uint8_t unknown;
uint32_t unknown;
uint32_t unknown;
-char unknown[0]; // Variable legth unknown text
+char unknown[0]; // Variable legth unknown text
uint8_t unknown;
uint32_t unknown;

@@ -1594,7 +1620,7 @@
/*0128*/ uint32_t language;
/*0132*/ uint32_t chanNum;
/*0144*/ uint32_t skillInLanguage;
-/*0148*/ char message[2048]; // Maximum message size according to eqgame.exe
+/*0148*/ char message[2048]; // Maximum message size according to eqgame.exe
};

/*
@@ -1605,11 +1631,11 @@

struct formattedMessageStruct
{
-/*0000*/ uint8_t unknown0002[4]; // ***Placeholder
-/*0004*/ uint32_t messageFormat; // Indicates the message format
-/*0008*/ ChatColor messageColor; // Message color
-/*0012*/ char messages[0]; // messages(NULL delimited)
-/*0???*/ uint8_t unknownXXXX[8]; // ***Placeholder
+/*0000*/ uint8_t unknown0002[4]; // ***Placeholder
+/*0004*/ uint32_t messageFormat; // Indicates the message format
+/*0008*/ ChatColor messageColor; // Message color
+/*0012*/ char messages[0]; // messages(NULL delimited)
+/*0???*/ uint8_t unknownXXXX[8]; // ***Placeholder
};

/*
@@ -1620,9 +1646,9 @@

struct simpleMessageStruct
{
-/*0000*/ uint32_t messageFormat; // Indicates the message format
-/*0004*/ ChatColor messageColor; // Message color
-/*0008*/ uint32_t unknown; // ***Placeholder
+/*0000*/ uint32_t messageFormat; // Indicates the message format
+/*0004*/ ChatColor messageColor; // Message color
+/*0008*/ uint32_t unknown; // ***Placeholder
/*0012*/
};

@@ -1634,13 +1660,13 @@

struct specialMessageStruct
{
- /*0000*/ uint8_t unknown0000[3]; // message style?
- /*0003*/ ChatColor messageColor; // message color
- /*0007*/ uint16_t target; // message target
- /*0009*/ uint16_t padding; // padding
- /*0011*/ char source[0]; // message text
- /*0xxx*/ uint32_t unknown0xxx[3]; //***Placeholder
- /*0yyy*/ char message[0]; // message text
+ /*0000*/ uint8_t unknown0000[3]; // message style?
+ /*0003*/ ChatColor messageColor; // message color
+ /*0007*/ uint16_t target; // message target
+ /*0009*/ uint16_t padding; // padding
+ /*0011*/ char source[0]; // message text
+ /*0xxx*/ uint32_t unknown0xxx[3]; //***Placeholder
+ /*0yyy*/ char message[0]; // message text
};

/*
@@ -1650,10 +1676,10 @@
*/
struct guildMOTDStruct
{
- /*0000*/ uint32_t unknown0000; //***Placeholder
- /*0004*/ char target[64]; // motd target
- /*0068*/ char sender[64]; // motd "sender" (who set it)
- /*0132*/ uint32_t unknown0132; //***Placeholder
+ /*0000*/ uint32_t unknown0000; //***Placeholder
+ /*0004*/ char target[64]; // motd target
+ /*0068*/ char sender[64]; // motd "sender" (who set it)
+ /*0132*/ uint32_t unknown0132; //***Placeholder
/*0136*/ char message[0];
};

@@ -1679,7 +1705,7 @@

struct consentRequestStruct
{
-/*0000*/ char consentee[0]; // Name of player who was consented
+/*0000*/ char consentee[0]; // Name of player who was consented
};

/*
@@ -1689,10 +1715,10 @@

struct consentResponseStruct
{
-/*0000*/ char consentee[64]; // Name of player who was consented
-/*0064*/ char consenter[64]; // Name of player who consented
-/*0128*/ uint8_t allow; // 00 = deny, 01 = allow
-/*0129*/ char corpseZoneName[64]; // Zone where the corpse is
+/*0000*/ char consentee[64]; // Name of player who was consented
+/*0064*/ char consenter[64]; // Name of player who consented
+/*0128*/ uint8_t allow; // 00 = deny, 01 = allow
+/*0129*/ char corpseZoneName[64]; // Zone where the corpse is
/*0193*/
};

@@ -1704,10 +1730,10 @@

struct groupUpdateStruct
{
-/*0000*/ int32_t action; // Group update action
-/*0004*/ char yourname[64]; // Group Member Names
-/*0068*/ char membername[64]; // Group leader name
-/*0132*/ uint8_t unknown0132[324]; // ***Placeholder
+/*0000*/ int32_t action; // Group update action
+/*0004*/ char yourname[64]; // Group Member Names
+/*0068*/ char membername[64]; // Group leader name
+/*0132*/ uint8_t unknown0132[324]; // ***Placeholder
/*456*/
};

@@ -1736,9 +1762,9 @@

struct groupInviteStruct
{
-/*0000*/ char invitee[64]; // Invitee's Name
-/*0064*/ char inviter[64]; // Inviter's Name
-/*0128*/ uint8_t unknown0128[24]; // ***Placeholder
+/*0000*/ char invitee[64]; // Invitee's Name
+/*0064*/ char inviter[64]; // Inviter's Name
+/*0128*/ uint8_t unknown0128[24]; // ***Placeholder
/*0152*/
};

@@ -1750,11 +1776,11 @@

struct groupDeclineStruct
{
-/*0000*/ char yourname[64]; // Player Name
-/*0064*/ char membername[64]; // Invited Member Name
-/*0128*/ uint8_t unknown0128[20]; // ***Placeholder
-/*0148*/ uint8_t reason; // Already in Group = 1, Declined Invite = 3
-/*0149*/ uint8_t unknown0141[3]; // ***Placeholder
+/*0000*/ char yourname[64]; // Player Name
+/*0064*/ char membername[64]; // Invited Member Name
+/*0128*/ uint8_t unknown0128[20]; // ***Placeholder
+/*0148*/ uint8_t reason; // Already in Group = 1, Declined Invite = 3
+/*0149*/ uint8_t unknown0141[3]; // ***Placeholder
/*0152*/
};

@@ -1766,11 +1792,11 @@

struct groupFollowStruct
{
-/*0000*/ char unknown0000[64]; // ***Placeholder (zeros)
-/*0064*/ char invitee[64]; // Invitee's Member Name
-/*0128*/ uint8_t unknown0132[4]; // ***Placeholder
-/*0132*/ uint32_t level; // Invitee's level
-/*0136*/ uint8_t unknown0136[12]; // ***Placeholder (zeros)
+/*0000*/ char unknown0000[64]; // ***Placeholder (zeros)
+/*0064*/ char invitee[64]; // Invitee's Member Name
+/*0128*/ uint8_t unknown0132[4]; // ***Placeholder
+/*0132*/ uint32_t level; // Invitee's level
+/*0136*/ uint8_t unknown0136[12]; // ***Placeholder (zeros)
/*0148*/
};

@@ -1782,9 +1808,9 @@

struct groupDisbandStruct
{
-/*0000*/ char yourname[64]; // Player Name
-/*0064*/ char membername[64]; // Invited Member Name
-/*0128*/ uint8_t unknown0128[20]; // ***Placeholder
+/*0000*/ char yourname[64]; // Player Name
+/*0064*/ char membername[64]; // Invited Member Name
+/*0128*/ uint8_t unknown0128[20]; // ***Placeholder
/*0148*/
};

@@ -1796,9 +1822,9 @@

struct groupLeaderChangeStruct
{
-/*0000*/ char unknown0000[64]; // ***Placeholder
-/*0064*/ char membername[64]; // Invited Member Name
-/*0128*/ uint8_t unknown0128[20]; // ***Placeholder
+/*0000*/ char unknown0000[64]; // ***Placeholder
+/*0064*/ char membername[64]; // Invited Member Name
+/*0128*/ uint8_t unknown0128[20]; // ***Placeholder
/*0148*/
};

@@ -1810,7 +1836,7 @@

struct deleteSpawnStruct
{
-/*0000*/ uint32_t spawnId; // Spawn ID to delete
+/*0000*/ uint32_t spawnId; // Spawn ID to delete
/*0004*/
};

@@ -1822,8 +1848,8 @@

struct removeSpawnStruct
{
-/*0000*/ uint32_t spawnId; // Spawn ID to delete
-/*0004*/ uint8_t removeSpawn; // 0 if spawn is not in your update radius
+/*0000*/ uint32_t spawnId; // Spawn ID to delete
+/*0004*/ uint8_t removeSpawn; // 0 if spawn is not in your update radius
/*0005*/
};

@@ -1835,10 +1861,10 @@

struct remDropStruct
{
-/*0000*/ uint16_t dropId; // DropID - Guess
-/*0002*/ uint8_t unknown0004[2]; // ***Placeholder
-/*0004*/ uint16_t spawnId; // Pickup ID - Guess
-/*0006*/ uint8_t unknown0008[2]; // ***Placeholder
+/*0000*/ uint16_t dropId; // ID assigned to drop
+/*0002*/ uint8_t unknown0004[2]; // ***Placeholder
+/*0004*/ uint16_t spawnId; // ID of player picking item up
+/*0006*/ uint8_t unknown0008[2]; // ***Placeholder
/*0008*/
};

@@ -1850,11 +1876,11 @@

struct considerStruct
{
-/*0000*/ uint32_t playerid; // PlayerID
-/*0004*/ uint32_t targetid; // TargetID
-/*0008*/ int32_t faction; // Faction
-/*0012*/ int32_t level; // Level
-/*0016*/ int32_t unknown0016; // unknown
+/*0000*/ uint32_t playerid; // PlayerID
+/*0004*/ uint32_t targetid; // TargetID
+/*0008*/ int32_t faction; // Faction
+/*0012*/ int32_t level; // Level
+/*0016*/ int32_t unknown0016; // unknown
/*0020*/
};

@@ -1866,13 +1892,13 @@

struct castOnStruct
{
-/*0000*/ uint16_t targetId; // Target ID
-/*0002*/ uint8_t unknown0002[2]; // ***Placeholder
-/*0004*/ int16_t sourceId; // ***Source ID
-/*0006*/ uint8_t unknown0006[2]; // ***Placeholder
-/*0008*/ uint8_t unknown0008[24]; // might be some spell info?
-/*0032*/ uint16_t spellId; // Spell Id
-/*0034*/ uint8_t unknown0034[2]; // ***Placeholder
+/*0000*/ uint16_t targetId; // Target ID
+/*0002*/ uint8_t unknown0002[2]; // ***Placeholder
+/*0004*/ int16_t sourceId; // ***Source ID
+/*0006*/ uint8_t unknown0006[2]; // ***Placeholder
+/*0008*/ uint8_t unknown0008[24]; // might be some spell info?
+/*0032*/ uint16_t spellId; // Spell Id
+/*0034*/ uint8_t unknown0034[2]; // ***Placeholder
/*0036*/
};

@@ -1884,32 +1910,32 @@

struct newCorpseStruct
{
-/*0000*/ uint32_t spawnId; // Id of spawn that died
-/*0004*/ uint32_t killerId; // Killer
-/*0008*/ uint32_t corpseid; // corpses id
-/*0012*/ int32_t type; // corpse type?
-/*0016*/ uint32_t spellId; // ID of Spell
-/*0020*/ uint16_t zoneId; // Bind zone id
-/*0022*/ uint16_t zoneInstance; // Bind zone instance
-/*0024*/ uint32_t damage; // Damage
-/*0028*/ uint8_t unknown0028[4]; // ***Placeholder
+/*0000*/ uint32_t spawnId; // Id of spawn that died
+/*0004*/ uint32_t killerId; // Killer
+/*0008*/ uint32_t corpseid; // corpses id
+/*0012*/ int32_t type; // corpse type?
+/*0016*/ uint32_t spellId; // ID of Spell
+/*0020*/ uint16_t zoneId; // Bind zone id
+/*0022*/ uint16_t zoneInstance; // Bind zone instance
+/*0024*/ uint32_t damage; // Damage
+/*0028*/ uint8_t unknown0028[4]; // ***Placeholder
/*0032*/
};

/**
** Environmental damage (lava, falls)
-** Length: 31 Octets
+** Length: 39 Octets
*/

struct environmentDamageStruct
{
-/*0000*/ uint32_t spawnId; // Who is taking the damage
+/*0000*/ uint32_t spawnId; // Who is taking the damage
/*0004*/ uint8_t unknown0004[2];
-/*0006*/ uint32_t damage; // how much damage?
+/*0006*/ uint32_t damage; // how much damage?
/*0010*/ uint8_t unknown0010[12];
-/*0022*/ uint8_t type; // Damage type. FC = fall. FA = lava.
-/*0023*/ uint8_t unknown0023[8];
-/*0031*/
+/*0022*/ uint8_t type; // Damage type. FC = fall. FA = lava.
+/*0023*/ uint8_t unknown0023[16];
+/*0039*/
};

/*
@@ -1920,11 +1946,11 @@

struct moneyOnCorpseStruct
{
-/*0000*/ uint8_t unknown0002[4]; // ***Placeholder
-/*0004*/ uint32_t platinum; // Platinum Pieces
-/*0008*/ uint32_t gold; // Gold Pieces
-/*0012*/ uint32_t silver; // Silver Pieces
-/*0016*/ uint32_t copper; // Copper Pieces
+/*0000*/ uint8_t unknown0002[4]; // ***Placeholder
+/*0004*/ uint32_t platinum; // Platinum Pieces
+/*0008*/ uint32_t gold; // Gold Pieces
+/*0012*/ uint32_t silver; // Silver Pieces
+/*0016*/ uint32_t copper; // Copper Pieces
/*0020*/
};

@@ -1936,42 +1962,42 @@

struct staminaStruct
{
-/*0000*/ uint32_t food; // Hunger, in ticks till next eat
-/*0004*/ uint32_t water; // Thirst, in ticks till next eat
+/*0000*/ uint32_t food; // Hunger, in ticks till next eat
+/*0004*/ uint32_t water; // Thirst, in ticks till next eat
/*0008*/
};

/*
** Battle Code
-** Length: 28 Octets
+** Length: 30 Octets
** OpCode: ActionCode
*/

// This can be used to gather info on spells cast on us
struct action2Struct
{
-/*0000*/ uint16_t target; // Target ID
-/*0002*/ uint16_t source; // Source ID
-/*0004*/ uint8_t type; // Bash, kick, cast, etc.
-/*0005*/ int16_t spell; // SpellID
+/*0000*/ uint16_t target; // Target ID
+/*0002*/ uint16_t source; // Source ID
+/*0004*/ uint8_t type; // Bash, kick, cast, etc.
+/*0005*/ int16_t spell; // SpellID
/*0007*/ int32_t damage;
-/*0011*/ uint8_t unknown0011[13]; // ***Placeholder
-/*0024*/ uint8_t unknown0024[4]; // ***Placeholder (11/24/07)
-/*0028*/
+/*0011*/ uint8_t unknown0011[13]; // ***Placeholder
+/*0024*/ uint8_t unknown0024[6]; // ***Placeholder (11/24/07)
+/*0030*/
};

// This can be used to gather info on spells cast on us
struct actionStruct
{
-/*0000*/ uint16_t target; // Target ID
-/*0002*/ uint16_t source; // SourceID
-/*0004*/ uint8_t level; // Caster level
-/*0005*/ uint8_t unknown0005[21]; // ***Placeholder
-/*0026*/ uint8_t type; // Casts, Falls, Bashes, etc...
+/*0000*/ uint16_t target; // Target ID
+/*0002*/ uint16_t source; // SourceID
+/*0004*/ uint8_t level; // Caster level
+/*0005*/ uint8_t unknown0005[21]; // ***Placeholder
+/*0026*/ uint8_t type; // Casts, Falls, Bashes, etc...
/*0027*/ uint8_t unknown0031[6];
-/*0033*/ int16_t spell; // SpellID
-/*0035*/ uint8_t unknown0035[2]; // ***Placeholder
-/*0037*/ uint8_t unknown0037[2]; // ***Placeholder
+/*0033*/ int16_t spell; // SpellID
+/*0035*/ uint8_t unknown0035[2]; // ***Placeholder
+/*0037*/ uint8_t unknown0037[2]; // ***Placeholder
/*0039*/
};

@@ -1980,14 +2006,14 @@
// has to do with buff blocking??
struct actionAltStruct
{
-/*0000*/ uint16_t target; // Target ID
-/*0002*/ uint16_t source; // SourceID
-/*0004*/ uint8_t level; // Caster level
-/*0005*/ uint8_t unknown0005[21]; // ***Placeholder
-/*0026*/ uint8_t type; // Casts, Falls, Bashes, etc...
+/*0000*/ uint16_t target; // Target ID
+/*0002*/ uint16_t source; // SourceID
+/*0004*/ uint8_t level; // Caster level
+/*0005*/ uint8_t unknown0005[21]; // ***Placeholder
+/*0026*/ uint8_t type; // Casts, Falls, Bashes, etc...
/*0027*/ uint8_t unknown0031[6];
-/*0033*/ int16_t spell; // SpellID
-/*0035*/ uint8_t unknown0035[2]; // ***Placeholder
+/*0033*/ int16_t spell; // SpellID
+/*0035*/ uint8_t unknown0035[2]; // ***Placeholder
/*0037*/ uint32_t unknown0037;
/*0041*/ uint8_t unknown0041[15];
/*0056*/
@@ -2001,7 +2027,7 @@

struct clientTargetStruct
{
-/*0000*/ uint32_t newTarget; // Target ID
+/*0000*/ uint32_t newTarget; // Target ID
/*0004*/
};

@@ -2013,13 +2039,13 @@

struct startCastStruct
{
-/*0000*/ int32_t slot; // ***Placeholder
-/*0004*/ uint32_t spellId; // Spell ID
-/*0008*/ int32_t inventorySlot; // ***Placeholder
-/*0012*/ uint8_t unknown0012[8]; // ***Placeholder
-/*0020*/ uint32_t targetId; // The current selected target
-/*0024*/ uint8_t unknown0024[4]; // ***Placeholder
-/*0028*/ uint8_t unknown0028[16]; // ***Placeholder (4/7/2009)
+/*0000*/ int32_t slot; // Spell slot
+/*0004*/ uint32_t spellId; // Spell ID
+/*0008*/ int32_t inventorySlot; // ***Placeholder
+/*0012*/ uint8_t unknown0012[8]; // ***Placeholder
+/*0020*/ uint32_t targetId; // The current selected target
+/*0024*/ uint8_t unknown0024[4]; // ***Placeholder
+/*0028*/ uint8_t unknown0028[16]; // ***Placeholder (4/7/2009)
/*0044*/
};

@@ -2031,11 +2057,11 @@

struct manaDecrementStruct
{
-/*0000*/ int32_t newMana; // New Mana AMount
+/*0000*/ int32_t newMana; // New Mana AMount
/*0004*/ int32_t unknown;
-/*0008*/ int32_t spellId; // Last Spell Cast
+/*0008*/ int32_t spellId; // Last Spell Cast
/*0012*/ uint8_t unknown0012[4];
-/*0016*/ uint8_t unknown0016[4]; //*** Placeholder (02/13/07)
+/*0016*/ uint8_t unknown0016[4]; //*** Placeholder (02/13/07)
/*0020*/
};

@@ -2046,8 +2072,8 @@
*/
struct spMesgStruct
{
-/*0000*/ int32_t msgType; // Type of message
-/*0004*/ char message[0]; // Message, followed by four Octets?
+/*0000*/ int32_t msgType; // Type of message
+/*0004*/ char message[0]; // Message, followed by four Octets?
};

/*
@@ -2057,23 +2083,24 @@
*/
struct spellFadedStruct
{
-/*0000*/ uint32_t color; // color of the spell fade message
-/*0004*/ char message[0]; // fade message
-/*0???*/ uint8_t paddingXXX[3]; // always 0's
+/*0000*/ uint32_t color; // color of the spell fade message
+/*0004*/ char message[0]; // fade message
+/*0???*/ uint8_t paddingXXX[3]; // always 0's
};

/*
** Spell Action Struct
-** Length: 8 Octets
+** Length: 10 Octets
** OpCode: BeginCastCode
*/
struct beginCastStruct
{
-/*0000*/ uint16_t spawnId; // Id of who is casting
-/*0002*/ uint16_t spellId; // Id of spell
-/*0004*/ int16_t param1; // Paramater 1
-/*0006*/ int16_t param2; // Paramater 2
-/*0008*/
+/*0000*/ uint16_t spawnId; // Id of who is casting
+/*0002*/ uint16_t spellId; // Id of spell
+/*0004*/ int16_t param1; // Paramater 1
+/*0006*/ int16_t param2; // Paramater 2
+/*0008*/ int16_t param3; // Paramater 3
+/*0010*/
};

/*
@@ -2084,11 +2111,11 @@

struct memSpellStruct
{
-/*0000*/ uint32_t slotId; // Slot spell is being memorized in
-/*0004*/ uint32_t spellId; // Id of spell
-/*0008*/ int16_t param1; // Paramater 1
-/*0010*/ int16_t param2; // Paramater 2
-/*0012*/ uint8_t unknown0012[4]; // *** Placeholder
+/*0000*/ uint32_t slotId; // Slot spell is being memorized in
+/*0004*/ uint32_t spellId; // Id of spell
+/*0008*/ int16_t param1; // Paramater 1
+/*0010*/ int16_t param2; // Paramater 2
+/*0012*/ uint8_t unknown0012[4]; // *** Placeholder
/*0016*/
};

@@ -2100,9 +2127,9 @@

struct skillTrainStruct
{
-/*0000*/ int32_t playerid; // player doing the training
-/*0004*/ int32_t type; // type of training?
-/*0008*/ uint32_t skillId; // Id of skill
+/*0000*/ int32_t playerid; // player doing the training
+/*0004*/ int32_t type; // type of training?
+/*0008*/ uint32_t skillId; // Id of skill
/*0012*/
};

@@ -2114,9 +2141,9 @@

struct skillIncStruct
{
-/*0000*/ uint32_t skillId; // Id of skill
-/*0004*/ int32_t value; // New value of skill
-/*0008*/ uint8_t unknown0008[4]; // *** Placeholder
+/*0000*/ uint32_t skillId; // Id of skill
+/*0004*/ int32_t value; // New value of skill
+/*0008*/ uint8_t unknown0008[4]; // *** Placeholder
/*0012*/
};

@@ -2127,13 +2154,13 @@
** Opcode: WearChangeCode
*/

-// ZBTEMP: Find newItemID
+// ZBTEMP: Find newItemID ***
struct wearChangeStruct
{
-/*0000*/ uint16_t spawnId; // SpawnID
-/*0002*/ Color_Struct color; // item color
-/*0006*/ uint8_t wearSlotId; // Slot ID
-/*0007*/ uint8_t unknown0007[7]; // unknown
+/*0000*/ uint16_t spawnId; // SpawnID
+/*0002*/ Color_Struct color; // item color
+/*0006*/ uint8_t wearSlotId; // Slot ID
+/*0007*/ uint8_t unknown0007[7]; // unknown
/*0014*/
};

@@ -2145,9 +2172,9 @@

struct levelUpUpdateStruct
{
-/*0000*/ uint32_t level; // New level
-/*0004*/ uint32_t levelOld; // Old level
-/*0008*/ uint32_t exp; // Current Experience
+/*0000*/ uint32_t level; // New level
+/*0004*/ uint32_t levelOld; // Old level
+/*0008*/ uint32_t exp; // Current Experience
/*0012*/
};

@@ -2159,8 +2186,8 @@

struct expUpdateStruct
{
-/*0000*/ uint32_t exp; // experience value x/330
-/*0004*/ uint32_t type; // 0=set, 2=update
+/*0000*/ uint32_t exp; // experience value x/330
+/*0004*/ uint32_t type; // 0=set, 2=update
/*0008*/
};

@@ -2171,10 +2198,10 @@
*/
struct altExpUpdateStruct
{
-/*0000*/ uint32_t altexp; // alt exp x/330
-/*0004*/ uint32_t aapoints; // current number of AA points
-/*0008*/ uint8_t percent; // percentage in integer form
-/*0009*/ uint8_t unknown0009[3]; // ***Place Holder
+/*0000*/ uint32_t altexp; // alt exp x/330
+/*0004*/ uint32_t aapoints; // current number of AA points
+/*0008*/ uint8_t percent; // percentage in integer form
+/*0009*/ uint8_t unknown0009[3]; // ***Place Holder
/*0012*/
};

@@ -2185,32 +2212,32 @@
*/
struct leadExpUpdateStruct
{
-/*0000*/ uint32_t unknown0000; // All zeroes?
-/*0004*/ uint32_t groupLeadExp; // Group leadership exp value
-/*0008*/ uint32_t unspentGroupPoints; // Unspent group points
-/*0012*/ uint32_t unknown0012; // Type?
-/*0016*/ uint32_t unknown0016; // All zeroes?
-/*0020*/ uint32_t raidLeadExp; // Raid leadership exp value
-/*0024*/ uint32_t unspentRaidPoints; // Unspent raid points
+/*0000*/ uint32_t unknown0000; // All zeroes?
+/*0004*/ uint32_t groupLeadExp; // Group leadership exp value
+/*0008*/ uint32_t unspentGroupPoints; // Unspent group points
+/*0012*/ uint32_t unknown0012; // Type?
+/*0016*/ uint32_t unknown0016; // All zeroes?
+/*0020*/ uint32_t raidLeadExp; // Raid leadership exp value
+/*0024*/ uint32_t unspentRaidPoints; // Unspent raid points
/*0028*/ uint32_t unknown0028;
/*0032*/
};

/*
** Player Spawn Update
-** Length: 19 Octets
+** Length: 23 Octets
** OpCode: SpawnUpdateCode
*/

struct SpawnUpdateStruct
{
-/*0000*/ uint16_t spawnId; // Id of spawn to update
-/*0002*/ uint16_t subcommand; // some sort of subcommand type
-/*0004*/ int16_t arg1; // first option
-/*0006*/ int16_t arg2; // second option
-/*0008*/ uint8_t arg3; // third option?
-/*0009*/ uint8_t unknown0009[10];
-/*0019*/
+/*0000*/ uint16_t spawnId; // Id of spawn to update
+/*0002*/ uint16_t subcommand; // some sort of subcommand type
+/*0004*/ int16_t arg1; // first option
+/*0006*/ int16_t arg2; // second option
+/*0008*/ uint8_t arg3; // third option?
+/*0009*/ uint8_t unknown0009[14];
+/*0023*/
};

/*
@@ -2235,12 +2262,12 @@

struct inspectDataStruct
{
-/*0000*/ uint8_t unknown0000[8]; // ***Placeholder
-/*0008*/ char itemNames[23][64]; // 23 items with names
- // 64 characters long.
-/*1480*/ int32_t icons[23]; // Icon Information
-/*1572*/ char mytext[200]; // Player Defined Text Info
-/*1772*/ uint8_t unknown1772[88]; // ***Placeholder
+/*0000*/ uint8_t unknown0000[8]; // ***Placeholder
+/*0008*/ char itemNames[23][64]; // 23 items with names
+ // 64 characters long.
+/*1480*/ int32_t icons[23]; // Icon Information
+/*1572*/ char mytext[200]; // Player Defined Text Info
+/*1772*/ uint8_t unknown1772[88]; // ***Placeholder
/*1860*/
};

@@ -2253,7 +2280,7 @@
struct bookTextStruct
{
/*0000*/ uint16_t unknown0000;
-/*0002*/ char text[0]; // Text of item reading
+/*0002*/ char text[0]; // Text of item reading
};

/*
@@ -2264,8 +2291,8 @@

struct badCastStruct
{
-/*0000*/ uint32_t spawnId; // Id of who is casting
-/*0004*/ char message[0]; // Text Message
+/*0000*/ uint32_t spawnId; // Id of who is casting
+/*0004*/ char message[0]; // Text Message
};

/*
@@ -2275,8 +2302,8 @@
*/
struct randomReqStruct
{
-/*0000*/ uint32_t bottom; // Low number
-/*0004*/ uint32_t top; // High number
+/*0000*/ uint32_t bottom; // Low number
+/*0004*/ uint32_t top; // High number
/*0008*/
};

@@ -2287,10 +2314,10 @@
*/
struct randomStruct
{
-/*0000*/ uint32_t bottom; // Low number
-/*0004*/ uint32_t top; // High number
-/*0008*/ uint32_t result; // result number
-/*0012*/ char name[64]; // name rolled by
+/*0000*/ uint32_t bottom; // Low number
+/*0004*/ uint32_t top; // High number
+/*0008*/ uint32_t result; // result number
+/*0012*/ char name[64]; // name rolled by
/*0076*/
};

@@ -2303,21 +2330,21 @@
struct playerSpawnPosStruct
{
/*0000*/ uint16_t spawnId;
- uint8_t unk[2]; // BSH 13 Apr 2011
-/*0002*/ signed padding0000:12; // ***Placeholder
- signed deltaX:13; // change in x
- signed padding0005:7; // ***Placeholder
-/*0006*/ signed deltaHeading:10;// change in heading
- signed deltaY:13; // change in y
- signed padding0006:9; // ***Placeholder
-/*0010*/ signed y:19; // y coord
- signed animation:10; // animation
- signed padding0010:3; // ***Placeholder
-/*0014*/ unsigned heading:12; // heading
- signed x:19; // x coord
- signed padding0014:1; // ***Placeholder
-/*0020*/ signed z:19; // z coord
- signed deltaZ:13; // change in z
+ uint8_t unk[2]; // BSH 13 Apr 2011
+/*0002*/ signed padding0000:12; // ***Placeholder
+ signed deltaX:13; // change in x
+ signed padding0005:7; // ***Placeholder
+/*0006*/ signed deltaHeading:10; // change in heading
+ signed deltaY:13; // change in y
+ signed padding0006:9; // ***Placeholder
+/*0010*/ signed y:19; // y coord
+ signed animation:10; // animation
+ signed padding0010:3; // ***Placeholder
+/*0014*/ unsigned heading:12; // heading
+ signed x:19; // x coord
+ signed padding0014:1; // ***Placeholder
+/*0020*/ signed z:19; // z coord
+ signed deltaZ:13; // change in z
/*0024*/
};

@@ -2329,21 +2356,21 @@

struct playerSelfPosStruct
{
-/*0000*/ uint16_t spawnId; // Player's spawn id
-/*0002*/ uint8_t unknown0002[2]; // ***Placeholder (update time counter?)
-/*0004*/ uint8_t unknown0004[6]; // ***Placeholder -- BSH 13 Apr 2011
-/*0010*/ float x; // x coord (2nd loc value)
-/*0014*/ float y; // y coord (1st loc value)
-/*0018*/ signed deltaHeading:10; // change in heading
- unsigned animation:10; // animation
- unsigned padding0016:12; // ***Placeholder
-/*0022*/ float deltaX; // Change in x
-/*0026*/ float deltaY; // Change in y
-/*0030*/ float z; // z coord (3rd loc value)
-/*0034*/ float deltaZ; // Change in z
-/*0038*/ unsigned padding0036:10; // ***Placeholder
- unsigned heading:12; // Directional heading
- unsigned padding0037:10; // ***Placeholder
+/*0000*/ uint16_t spawnId; // Player's spawn id
+/*0002*/ uint8_t unknown0002[2]; // ***Placeholder (update time counter?)
+/*0004*/ uint8_t unknown0004[6]; // ***Placeholder -- BSH 13 Apr 2011
+/*0010*/ float x; // x coord (2nd loc value)
+/*0014*/ float y; // y coord (1st loc value)
+/*0018*/ signed deltaHeading:10; // change in heading
+ unsigned animation:10; // animation
+ unsigned padding0016:12; // ***Placeholder
+/*0022*/ float deltaX; // Change in x
+/*0026*/ float deltaY; // Change in y
+/*0030*/ float z; // z coord (3rd loc value)
+/*0034*/ float deltaZ; // Change in z
+/*0038*/ unsigned padding0036:10; // ***Placeholder
+ unsigned heading:12; // Directional heading
+ unsigned padding0037:10; // ***Placeholder
/*0042*/
};

@@ -2356,9 +2383,9 @@

struct spawnAppearanceStruct
{
-/*0000*/ uint16_t spawnId; // ID of the spawn
-/*0002*/ uint16_t type; // Type of data sent
-/*0004*/ uint32_t parameter; // Values associated with the type
+/*0000*/ uint16_t spawnId; // ID of the spawn
+/*0002*/ uint16_t type; // Type of data sent
+/*0004*/ uint32_t parameter; // Values associated with the type
/*0008*/
};

@@ -2370,55 +2397,55 @@

struct bindWoundStruct
{
-/*0000*/ uint16_t playerid; // TargetID
-/*0002*/ uint8_t unknown0002[2]; // ***Placeholder
-/*0004*/ uint32_t hpmaybe; // Hitpoints -- Guess
+/*0000*/ uint16_t playerid; // TargetID
+/*0002*/ uint8_t unknown0002[2]; // ***Placeholder
+/*0004*/ uint32_t hpmaybe; // Hitpoints -- Guess
/*0008*/
};

struct inspectedStruct
{
-/*0000*/ uint16_t inspectorid; // Source ID
-/*0002*/ uint8_t unknown0002[2]; // ***Placeholder
-/*0004*/ uint16_t inspectedid; // Target ID - Should be you
-/*0006*/ uint8_t unknown0006[2]; // ***Placeholder
+/*0000*/ uint16_t inspectorid; // Source ID
+/*0002*/ uint8_t unknown0002[2]; // ***Placeholder
+/*0004*/ uint16_t inspectedid; // Target ID - Should be you
+/*0006*/ uint8_t unknown0006[2]; // ***Placeholder
/*0008*/
};

struct attack1Struct
{
-/*0000*/ uint16_t spawnId; // Spawn ID
-/*0002*/ int16_t param1; // ***Placeholder
-/*0004*/ int16_t param2; // ***Placeholder
-/*0006*/ int16_t param3; // ***Placeholder
-/*0008*/ int16_t param4; // ***Placeholder
-/*0010*/ int16_t param5; // ***Placeholder
+/*0000*/ uint16_t spawnId; // Spawn ID
+/*0002*/ int16_t param1; // ***Placeholder
+/*0004*/ int16_t param2; // ***Placeholder
+/*0006*/ int16_t param3; // ***Placeholder
+/*0008*/ int16_t param4; // ***Placeholder
+/*0010*/ int16_t param5; // ***Placeholder
/*0012*/
};

struct attack2Struct
{
-/*0000*/ uint16_t spawnId; // Spawn ID
-/*0002*/ int16_t param1; // ***Placeholder
-/*0004*/ int16_t param2; // ***Placeholder
-/*0006*/ int16_t param3; // ***Placeholder
-/*0008*/ int16_t param4; // ***Placeholder
-/*0010*/ int16_t param5; // ***Placeholder
+/*0000*/ uint16_t spawnId; // Spawn ID
+/*0002*/ int16_t param1; // ***Placeholder
+/*0004*/ int16_t param2; // ***Placeholder
+/*0006*/ int16_t param3; // ***Placeholder
+/*0008*/ int16_t param4; // ***Placeholder
+/*0010*/ int16_t param5; // ***Placeholder
/*0012*/
};

struct newGuildInZoneStruct
{
-/*0000*/ uint8_t unknown0000[8]; // ***Placeholder
-/*0008*/ char guildname[56]; // Guildname
+/*0000*/ uint8_t unknown0000[8]; // ***Placeholder
+/*0008*/ char guildname[56]; // Guildname
/*0064*/
};

struct moneyUpdateStruct
{
-/*0000*/ uint32_t spawnid; // ***Placeholder
-/*0004*/ uint32_t cointype; // Coin Type
-/*0008*/ uint32_t amount; // Amount
+/*0000*/ uint32_t spawnid; // ***Placeholder
+/*0004*/ uint32_t cointype; // Coin Type
+/*0008*/ uint32_t amount; // Amount
/*0012*/
};

@@ -2426,43 +2453,50 @@

struct memorizeSlotStruct
{
-/*0000*/ uint32_t slot; // Memorization slot (0-7)
-/*0004*/ uint32_t spellId; // Id of spell
- // (offset of spell in spdat.eff)
-/*0008*/ uint32_t action; // 1-memming,0-scribing,2-forget
+/*0000*/ uint32_t slot; // Memorization slot (0-7)
+/*0004*/ uint32_t spellId; // Id of spell
+ // (offset of spell in spdat.eff)
+/*0008*/ uint32_t action; // 1-memming,0-scribing,2-forget
/*0012*/
};

+/*
+** Spawn Appearance
+** Length: 4 Octets
+** OpCode: SetRunModeCode
+*/
+
struct cRunToggleStruct
{
-/*0000*/ uint32_t status; //01=run 00=walk
+/*0000*/ uint32_t status; //01=run 00=walk
+/*0004*/
};

struct cChatFiltersStruct
{
-/*0000*/ uint32_t DamageShields; //00=on 01=off
-/*0004*/ uint32_t NPCSpells; //00=on 01=off
-/*0008*/ uint32_t PCSpells; //00=all 01=off 02=grp
-/*0012*/ uint32_t BardSongs; //00=all 01=me 02=grp 03=off
+/*0000*/ uint32_t DamageShields; //00=on 01=off
+/*0004*/ uint32_t NPCSpells; //00=on 01=off
+/*0008*/ uint32_t PCSpells; //00=all 01=off 02=grp
+/*0012*/ uint32_t BardSongs; //00=all 01=me 02=grp 03=off
/*0016*/ uint32_t Unused;
-/*0020*/ uint32_t GuildChat; //00=off 01=on
-/*0024*/ uint32_t Socials; //00=off 01=on
-/*0028*/ uint32_t GroupChat; //00=off 01=on
-/*0032*/ uint32_t Shouts; //00=off 01=on
-/*0036*/ uint32_t Auctions; //00=off 01=on
-/*0040*/ uint32_t OOC; //00=off 01=on
-/*0044*/ uint32_t MyMisses; //00=off 01=on
-/*0048*/ uint32_t OthersMisses; //00=off 01=on
-/*0052*/ uint32_t OthersHits; //00=off 01=on
-/*0056*/ uint32_t AttackerMisses; //00=off 01=on
-/*0060*/ uint32_t CriticalSpells; //00=all 01=me 02=off
-/*0064*/ uint32_t CriticalMelee; //00=all 01=me 02=off
+/*0020*/ uint32_t GuildChat; //00=off 01=on
+/*0024*/ uint32_t Socials; //00=off 01=on
+/*0028*/ uint32_t GroupChat; //00=off 01=on
+/*0032*/ uint32_t Shouts; //00=off 01=on
+/*0036*/ uint32_t Auctions; //00=off 01=on
+/*0040*/ uint32_t OOC; //00=off 01=on
+/*0044*/ uint32_t MyMisses; //00=off 01=on
+/*0048*/ uint32_t OthersMisses; //00=off 01=on
+/*0052*/ uint32_t OthersHits; //00=off 01=on
+/*0056*/ uint32_t AttackerMisses; //00=off 01=on
+/*0060*/ uint32_t CriticalSpells; //00=all 01=me 02=off
+/*0064*/ uint32_t CriticalMelee; //00=all 01=me 02=off
/*0068*/
};

struct cOpenSpellBookStruct
{
-/*0000*/ int32_t status; //01=open 00=close
+/*0000*/ int32_t status; //01=open 00=close
/*0004*/
};

@@ -2484,7 +2518,7 @@
{
/*0000*/ uint16_t spawnID;
/*0002*/ uint16_t unknown0004;
-/*0004*/ uint16_t LFG; //1=LFG
+/*0004*/ uint16_t LFG; //1=LFG
/*0006*/ uint16_t unknown0008;
/*0008*/
};
@@ -2498,7 +2532,7 @@
struct clientLFGStruct
{
/*0000*/ uint8_t name[64];
-/*0064*/ uint16_t LFG; //1=LFG
+/*0064*/ uint16_t LFG; //1=LFG
/*0066*/ uint16_t unknown0008;
};

@@ -2510,16 +2544,16 @@

struct buffStruct
{
-/*0000*/ uint32_t spawnid; //spawn id
+/*0000*/ uint32_t spawnid; //spawn id
/*0004*/ uint8_t unknown0004[4];
/*0008*/ float unknown0008;
-/*0012*/ uint32_t spellid; // spellid
-/*0016*/ uint32_t duration; // duration
+/*0012*/ uint32_t spellid; // spellidbegin
+/*0016*/ uint32_t duration; // duration
/*0024*/ uint8_t unknown0024[8];
-/*0028*/ uint32_t playerId; // Player id who cast the buff
+/*0028*/ uint32_t playerId; // Player id who cast the buff
/*0032*/ uint8_t unknown0032[4];
-/*0036*/ uint32_t spellslot; // spellslot
-/*0040*/ uint32_t changetype; // 1=buff fading,2=buff duration
+/*0036*/ uint32_t spellslot; // spellslot
+/*0040*/ uint32_t changetype; // 1=buff fading,2=buff duration
/*0044*/
};

@@ -2531,46 +2565,56 @@

struct GuildMemberUpdate
{
-/*000*/ uint32_t guildId; // guild id
-/*004*/ char name[64]; // member name
-/*068*/ uint16_t zoneId; // zone id
-/*070*/ uint16_t zoneInstance; // zone instance
-/*072*/ uint32_t lastOn; // time the player was last on.
+/*000*/ uint32_t guildId; // guild id
+/*004*/ char name[64]; // member name
+/*068*/ uint16_t zoneId; // zone id
+/*070*/ uint16_t zoneInstance; // zone instance
+/*072*/ uint32_t lastOn; // time the player was last on.
/*076*/
};

/*
** Bazaar trader on/off struct
-** Length: 8 Octets
+** Length: 76 Octets
**
*/
struct bazaarTraderRequest
{
-/*000*/ uint32_t spawnId; // Spawn id of person turning trader on/off
-/*004*/ uint8_t mode; // 0=off, 1=on
-/*005*/ uint8_t uknown005[3]; //
-/*008*/
+/*000*/ uint32_t spawnId; // Spawn id of person turning trader on/off
+/*004*/ uint8_t mode; // 0=off, 1=on
+/*005*/ uint8_t uknown005[3]; //
+/*008*/ char name[64]; // trader name
+/*072*/ uint8_t uknown072[4]; //
+/*076*/
};

struct bazaarSearchQueryStruct
{
uint32_t mark;
uint32_t type;
- char unknownXXX0[20]; // Value seems to always be the same
- char searchstring[64];
+ char unknownXXX0[20]; // Value seems to always be the same
+ char searchstring[64];
uint32_t unknownXXX1;
uint32_t unknownXXX2;
};

+/*
+** Item Bazaar Search Result
+** Length: 160 Octets
+** OpCode: BazaarSearch
+*/
struct bazaarSearchResponseStruct
{
- uint32_t mark;
- uint32_t count;
- uint32_t item_id;
- uint32_t player_id;
- uint32_t price;
- uint32_t status; // XXX Still poorly understood. 0=simple search
- char item_name[64]; // nul-padded name with appended "(count)"
+/*0000*/ uint32_t mark; // ***unknown***
+/*0004*/ uint32_t player_id; // trader ID
+/*0008*/ char merchant_name[64]; // trader name
+/*0072*/ uint32_t count; // Count of items for sale
+/*0076*/ uint32_t item_id; // ID of item for sale
+/*0080*/ uint8_t uknown0080[8]; // ***unknown***
+/*0088*/ char item_name[64]; // nul-padded name with appended "(count)"
+/*0152*/ uint32_t price; // price in copper
+/*0156*/ uint8_t uknown0156[4]; // ***unknown***
+/*0160*/
};

/*
@@ -2608,7 +2652,7 @@
{
/*000*/ uint8_t unknown000[64];
/*064*/ uint32_t numberOfGuilds; // ?
-/*068*/ guildListStruct guilds[MAX_GUILDS]; // MAX_GUILDS varies by server now
+/*068*/ guildListStruct guilds[MAX_GUILDS]; // MAX_GUILDS varies by server now
};

struct worldMOTDStruct
--- src/filter.cpp 2012-03-04 14:47:14.000000000 -0500
+++ src/filter.cpp 2012-04-04 00:19:40.750894500 -0400
@@ -56,8 +56,8 @@
/* FilterItem Class - allows easy creation / deletion of regex types */
FilterItem::FilterItem(const QString& filterPattern, bool caseSensitive)
{
- uint8_t minLevel = 0;
- uint8_t maxLevel = 0;
+ uint32_t minLevel = 0;
+ uint32_t maxLevel = 0;

QString workString = filterPattern;

--- src/main.cpp 2012-03-04 15:07:47.000000000 -0500
+++ src/main.cpp 2012-04-04 00:19:15.531306855 -0400
@@ -51,7 +51,7 @@
#endif
#include "datalocationmgr.h"

-static const char *id="@(#) $Id: main.cpp 750 2010-02-20 23:01:46Z ieatacid $ $Name$";
+static const char *id="@(#) $Id: main.cpp 760 2012-03-10 05:17:33Z ngdeao $ $Name$";

/* **********************************
defines used for option processing
--- src/spawnshell.cpp 2012-03-04 15:07:47.000000000 -0500
+++ src/spawnshell.cpp 2012-04-04 00:19:40.751894483 -0400
@@ -654,20 +654,31 @@
spawn->posData[3] = netStream.readUInt32NC();
spawn->posData[4] = netStream.readUInt32NC();

- // skip color
- netStream.skipBytes(36);
-
race = spawn->race;

// this is how the client checks if equipment should be read.
if(spawn->NPC == 0 || race <= 12 || race == 128 || race == 130 || race == 330 || race == 522)
{
+ // skip color
+ netStream.skipBytes(36);
for(i = 0; i < 9; i++)
{
spawn->equipment[i].itemId = netStream.readUInt32NC();
+ spawn->equipment[i].equip2 = netStream.readUInt32NC();
spawn->equipment[i].equip1 = netStream.readUInt32NC();
spawn->equipment[i].equip0 = netStream.readUInt32NC();
}
+ } else {
+ netStream.skipBytes(16);
+ spawn->equipment[7].itemId = netStream.readUInt32NC();
+ spawn->equipment[7].equip2 = netStream.readUInt32NC();
+ spawn->equipment[7].equip1 = netStream.readUInt32NC();
+ spawn->equipment[7].equip0 = netStream.readUInt32NC();
+ // secondary
+ spawn->equipment[8].itemId = netStream.readUInt32NC();
+ spawn->equipment[8].equip2 = netStream.readUInt32NC();
+ spawn->equipment[8].equip1 = netStream.readUInt32NC();
+ spawn->equipment[8].equip0 = netStream.readUInt32NC();
}

if(spawn->otherData & 8)
--- src/terminal.cpp 2012-03-04 14:47:14.000000000 -0500
+++ src/terminal.cpp 2012-04-04 00:19:40.752894466 -0400
@@ -27,7 +27,7 @@
"\e[0;32m", // 5 - OOC
NULL, // 6
"\e[0;35m", // 7 - Tell
- "\e[1;37m", // 8 - Say
+ "\e[1;38m", // 8 - Say
NULL, // 9
NULL, // 10
"\e[5;31m", // 11 - GM Say
--- conf/worldopcodes.xml 2012-03-04 14:47:03.000000000 -0500
+++ conf/worldopcodes.xml 2012-07-07 06:07:58.000000000 -0400
@@ -15,7 +15,7 @@
<comment>old GuildListCode</comment>
<payload dir="server" typename="worldGuildListStruct" sizechecktype="none"/>
</opcode>
- <opcode id="D677" name="OP_MOTD" updated="11/07/10">
+ <opcode id="2042" name="OP_MOTD" updated="06/27/12">
<comment>old MOTDCode Server message of the day</comment>
<payload dir="server" typename="worldMOTDStruct" sizechecktype="none"/>
</opcode>
@@ -51,13 +51,13 @@
<opcode id="2874" name="OP_SendSkillCapsChecksum" updated="11/07/10">
<comment>Third client verification packet</comment>
</opcode>
- <opcode id="0A54" name="OP_SetChatServer" updated="11/07/10">
+ <opcode id="28d4" name="OP_SetChatServer" updated="06/27/12">
<comment>Chatserver? IP,Port,servername.Charname,password(?)</comment>
</opcode>
- <opcode id="37DB" name="OP_SetChatServer2" updated="11/07/10">
+ <opcode id="75f5" name="OP_SetChatServer2" updated="06/27/12">
<comment>Chatserver? IP,Port,servername.Charname,password(?)</comment>
</opcode>
- <opcode id="0479" name="OP_ZoneServerInfo" updated="11/07/10">
+ <opcode id="777c" name="OP_ZoneServerInfo" updated="06/27/12">
<comment>old ZoneServerInfo</comment>
</opcode>
<opcode id="72F3" name="OP_WorldComplete" updated="11/07/10">
--- conf/zoneopcodes.xml 2012-03-04 15:07:47.000000000 -0500
+++ conf/zoneopcodes.xml 2012-07-07 16:20:37.000000000 -0400
@@ -2,376 +2,636 @@
<!DOCTYPE seqopcodes SYSTEM "seqopcodes.dtd">
<seqopcodes>

- <!--
- Critical opcodes used directly by ShowEQ
- -->
- <opcode id="2339" name="OP_NpcMoveUpdate" updated="11/16/11">
+ <!-- Critical opcodes used directly by ShowEQ -->
+ <opcode id="4f35" name="OP_NpcMoveUpdate" updated="06/27/12">
<comment>Position updates</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="45d7" name="OP_MovementHistory" updated="12/17/11">
- <comment></comment>
+ <opcode id="666d" name="OP_MovementHistory" updated="06/27/12">
+ <comment>Movement data... rewind info?</comment>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="0CAE" name="OP_DeleteSpawn" updated="11/16/11">
- <comment>old DeleteSpawnCode</comment>
+ <opcode id="6c36" name="OP_DeleteSpawn" updated="06/27/12">
+ <comment>DeleteSpawnCode</comment>
<payload dir="both" typename="deleteSpawnStruct" sizechecktype="match"/>
</opcode>
- <opcode id="5821" name="OP_ZoneEntry" updated="11/16/11">
- <comment>old ZoneEntryCode</comment>
+ <opcode id="4892" name="OP_ZoneEntry" updated="06/27/12">
+ <comment>ZoneEntryCode</comment>
<payload dir="client" typename="ClientZoneEntryStruct" sizechecktype="match"/>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="102F" name="OP_GuildMOTD" updated="11/15/11">
+ <opcode id="4e19" name="OP_GuildMOTD" updated="06/27/12">
<comment>GuildMOTD</comment>
<payload dir="server" typename="guildMOTDStruct" sizechecktype="none"/>
</opcode>
- <opcode id="0C54" name="OP_InspectAnswer" updated="11/15/11">
- <comment>old InspectDataCode</comment>
+ <opcode id="13da" name="OP_InspectAnswer" updated="06/27/12">
+ <comment>InspectDataCode</comment>
<payload dir="both" typename="inspectDataStruct" sizechecktype="match"/>
</opcode>
- <opcode id="000F" name="OP_SendZonePoints" updated="10/15/10">
- <comment>Coords in a zone that will port you to another zone</comment>
- <payload dir="server" typename="zonePointsStruct" sizechecktype="none"/>
- </opcode>
- <opcode id="3EDC" name="OP_TargetMouse" updated="11/15/11">
+ <opcode id="6dee" name="OP_TargetMouse" updated="06/27/12">
<comment>Targeting a person - old ClientTargetCode</comment>
<payload dir="both" typename="clientTargetStruct" sizechecktype="match"/>
</opcode>
- <opcode id="4878" name="OP_Shroud" updated="11/15/11">
+ <opcode id="169a" name="OP_Shroud" updated="06/27/12">
<comment>Server putting players into shroud form</comment>
<payload dir="server" typename="spawnShroudSelf" sizechecktype="none"/>
</opcode>
- <opcode id="3671" name="OP_GroupFollow" updated="11/15/11">
+ <opcode id="5613" name="OP_GroupInvite" updated="06/27/12">
+ <payload dir="both" typename="groupInviteStruct" sizechecktype="none"/>
+ <comment>You invite someone while ungrouped or get invited by someone ungrouped </comment>
+ </opcode>
+ <opcode id="2736" name="OP_GroupInvite2" updated="06/27/12">
+ <payload dir="client" typename="groupInviteStruct" sizechecktype="match"/>
+ <comment>You're inviting someone and you are grouped or get invited by a group</comment>
+ </opcode>
+ <opcode id="7139" name="OP_GroupFollow" updated="06/27/12">
<payload dir="server" typename="groupFollowStruct" sizechecktype="match"/>
- <comment>You join a group</comment>
+ <comment>You join a group or player joins group</comment>
</opcode>
- <opcode id="44C2" name="OP_GroupFollow2" updated="11/15/11">
+ <opcode id="9999" name="OP_GroupFollow2" updated="06/27/12">
<payload dir="server" typename="groupFollowStruct" sizechecktype="match"/>
<comment>Player joins your group</comment>
</opcode>
- <opcode id="7139" name="OP_GroupUpdate" updated="11/15/11">
- <payload dir="server" typename="uint8_t" sizechecktype="none"/>
- <comment>Variable length packet with group member names</comment>
- </opcode>
- <opcode id="74E9" name="OP_GroupDisband" updated="11/15/11">
+ <opcode id="367f" name="OP_GroupDisband" updated="06/27/12">
<comment>You disband from group</comment>
<payload dir="server" typename="groupDisbandStruct" sizechecktype="match"/>
</opcode>
- <opcode id="3C58" name="OP_GroupDisband2" updated="11/15/11">
+ <opcode id="3352" name="OP_GroupDisband2" updated="06/27/12">
<comment>Other disbands from group</comment>
<payload dir="server" typename="groupDisbandStruct" sizechecktype="match"/>
</opcode>
- <opcode id="4B82" name="OP_GroupLeader" updated="11/15/11">
+ <opcode id="44c2" name="OP_GroupLeader" updated="06/27/12">
<comment>Group leader change</comment>
<payload dir="server" typename="groupLeaderChangeStruct" sizechecktype="match"/>
</opcode>
- <opcode id="3BDD" name="OP_DzSwitchInfo" updated="10/21/09">
- <comment></comment>
+ <opcode id="6c16" name="OP_GroupCancelInvite" updated="06/27/12">
+ <payload dir="both" typename="groupDeclineStruct" sizechecktype="match"/>
+ <comment>Declining to join a group</comment>
+ </opcode>
+ <opcode id="194f" name="OP_DzSwitchInfo" updated="03/23/12">
+ <comment>Expedition compass etc</comment>
<payload dir="server" typename="dzSwitchInfo" sizechecktype="none"/>
</opcode>
- <opcode id="4C14" name="OP_DzInfo" updated="10/21/09">
- <comment></comment>
+ <opcode id="7fd7" name="OP_DzInfo" updated="06/27/12">
+ <comment>Expedition Information</comment>
<payload dir="server" typename="dzInfo" sizechecktype="match"/>
</opcode>
- <opcode id="4675" name="OP_FormattedMessage" updated="11/15/11">
- <comment>old FormattedMessageCode</comment>
+ <opcode id="7092" name="OP_FormattedMessage" updated="06/27/12">
+ <comment>FormattedMessageCode</comment>
<payload dir="server" typename="formattedMessageStruct" sizechecktype="none"/>
</opcode>
- <opcode id="0E24" name="OP_SpawnDoor" updated="11/15/11">
- <comment>old DoorSpawnsCode</comment>
+ <opcode id="5a55" name="OP_SpawnDoor" updated="06/27/12">
+ <comment>DoorSpawnsCode</comment>
<payload dir="server" typename="doorStruct" sizechecktype="modulus"/>
</opcode>
- <opcode id="1318" name="OP_AAExpUpdate" updated="12/17/11">
+ <opcode id="783c" name="OP_AAExpUpdate" updated="06/27/12">
<comment>Receiving AA experience. Also when percent to AA changes.</comment>
<payload dir="server" typename="altExpUpdateStruct" sizechecktype="match"/>
</opcode>
- <opcode id="2370" name="OP_HPUpdate" updated="11/16/11">
- <comment>old NpcHpUpdateCode Update HP % of a PC or NPC</comment>
+ <opcode id="2370" name="OP_HPUpdate" updated="06/27/12">
+ <comment>NpcHpUpdateCode Update HP % of a PC or NPC</comment>
<payload dir="both" typename="hpNpcUpdateStruct" sizechecktype="match"/>
</opcode>
- <opcode id="0ff4" name="OP_ManaUpdate" updated="04/18/11">
- <comment>Mana Update opcode</comment>
- </opcode>
- <opcode id="2370" name="OP_EndUpdate" updated="05/19/11">
- <comment>Endurance Update opcode</comment>
- </opcode>
- <opcode id="589f" name="OP_GuildMemberUpdate" updated="12/17/11">
- <comment></comment>
+ <opcode id="79c9" name="OP_GuildMemberUpdate" updated="06/27/12">
+ <comment>Info regarding guild members</comment>
<payload dir="server" typename="GuildMemberUpdate" sizechecktype="match"/>
</opcode>
- <opcode id="1055" name="OP_SpawnRename" updated="12/17/11">
+ <opcode id="0598" name="OP_SpawnRename" updated="06/27/12">
<comment>Spawns getting renamed after initial NewSpawn</comment>
<payload dir="server" typename="spawnRenameStruct" sizechecktype="match"/>
</opcode>
- <opcode id="03CC" name="OP_GroupInvited" updated="11/15/11">
- <payload dir="server" typename="groupInviteStruct" sizechecktype="match"/>
- <comment>You got invited to a group</comment>
- </opcode>
- <opcode id="3288" name="OP_GroupInvite" updated="11/15/11">
- <payload dir="both" typename="groupInviteStruct" sizechecktype="none"/>
- <comment>You invite or get invited</comment>
- </opcode>
- <opcode id="28A7" name="OP_SwapSpell" updated="11/15/11">
- <comment>old TradeSpellBookSlotsCode</comment>
+ <opcode id="63c7" name="OP_SwapSpell" updated="06/27/12">
+ <comment>TradeSpellBookSlotsCode</comment>
<payload dir="both" typename="tradeSpellBookSlotsStruct" sizechecktype="match"/>
</opcode>
- <opcode id="0698" name="OP_SimpleMessage" updated="11/15/11">
- <comment>old SimpleMessageCode</comment>
+ <opcode id="4675" name="OP_SimpleMessage" updated="06/27/12">
+ <comment>SimpleMessageCode</comment>
<payload dir="server" typename="simpleMessageStruct" sizechecktype="match"/>
</opcode>
- <opcode id="039D" name="OP_SpecialMesg" updated="11/15/11">
+ <opcode id="2e4f" name="OP_SpecialMesg" updated="06/27/12">
<comment>Communicate textual info to client</comment>
<payload dir="server" typename="specialMessageStruct" sizechecktype="none"/>
</opcode>
- <opcode id="303E" name="OP_RandomReq" updated="11/15/11">
- <comment>old RandomReqCode</comment>
+ <opcode id="30a4" name="OP_RandomReq" updated="06/27/12">
+ <comment>RandomReqCode</comment>
<payload dir="client" typename="randomReqStruct" sizechecktype="match"/>
</opcode>
- <opcode id="2C03" name="OP_ConsentResponse" updated="11/15/11">
+ <opcode id="29df" name="OP_ConsentResponse" updated="06/27/12">
<comment>Server replying with consent information after /consent</comment>
<payload dir="server" typename="consentResponseStruct" sizechecktype="match"/>
</opcode>
- <opcode id="0AAA" name="OP_DenyResponse" updated="11/15/11">
+ <opcode id="032b" name="OP_DenyResponse" updated="06/27/12">
<comment>Server replying with deny information after /deny</comment>
<payload dir="server" typename="consentResponseStruct" sizechecktype="match"/>
</opcode>
- <opcode id="2881" name="OP_BazaarSearch" updated="12/17/11">
+ <opcode id="058c" name="OP_BazaarSearch" updated="06/27/12">
<payload dir="client" typename="bazaarSearchQueryStruct" sizechecktype="none"/>
<payload dir="server" typename="bazaarSearchResponseStruct" sizechecktype="modulus"/>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
<comment>Bazaar search tool</comment>
</opcode>
- <opcode id="1A58" name="OP_WearChange" updated="11/15/11">
- <comment>old SpawnUpdateCode</comment>
+ <opcode id="7b64" name="OP_SpawnUpdate" updated="06/27/12">
+ <comment>SpawnUpdateCode</comment>
<payload dir="both" typename="SpawnUpdateStruct" sizechecktype="match"/>
</opcode>
- <opcode id="3E17" name="OP_SpawnAppearance" updated="10/21/09">
- <comment>old SpawnAppearanceCode</comment>
- <payload dir="both" typename="spawnAppearanceStruct" sizechecktype="match"/>
- </opcode>
- <opcode id="7686" name="OP_Stamina" updated="12/17/11">
+ <opcode id="3d00" name="OP_Stamina" updated="06/27/12">
<comment>Server updating on hunger/thirst</comment>
<payload dir="server" typename="staminaStruct" sizechecktype="match"/>
</opcode>
- <opcode id="70C6" name="OP_Consider" updated="11/16/11">
- <comment>old ConsiderCode</comment>
+ <opcode id="30e2" name="OP_Consider" updated="06/27/12">
+ <comment>ConsiderCode</comment>
<payload dir="both" typename="considerStruct" sizechecktype="match"/>
</opcode>
- <opcode id="1111" name="OP_ZoneChange" updated="04/18/11">
- <comment>old ZoneChangeCode</comment>
- <payload dir="both" typename="zoneChangeStruct" sizechecktype="match"/>
- </opcode>
- <opcode id="0000" name="OP_Buff" updated="11/15/11">
- <comment>old BuffDropCode</comment>
- <payload dir="both" typename="buffStruct" sizechecktype="match"/>
- </opcode>
- <opcode id="44AE" name="OP_Logout" updated="10/21/09">
- <comment></comment>
- <payload dir="server" typename="none" sizechecktype="match"/>
- </opcode>
- <opcode id="2736" name="OP_GroupInvite2" updated="11/15/11">
- <payload dir="client" typename="groupInviteStruct" sizechecktype="match"/>
- <comment>You're inviting someone and you are grouped</comment>
- </opcode>
- <opcode id="6C16" name="OP_GroupCancelInvite" updated="11/15/11">
- <payload dir="both" typename="groupDeclineStruct" sizechecktype="match"/>
- <comment>Declining to join a group</comment>
- </opcode>
- <opcode id="4118" name="OP_NewZone" updated="11/16/11">
- <comment>old NewZoneCode</comment>
+ <opcode id="4118" name="OP_NewZone" updated="06/27/12">
+ <comment>NewZoneCode</comment>
<payload dir="server" typename="newZoneStruct" sizechecktype="match"/>
</opcode>
- <opcode id="5C85" name="OP_GroundSpawn" updated="11/15/11">
- <comment>old MakeDropCode</comment>
+ <opcode id="5c85" name="OP_GroundSpawn" updated="06/27/12">
+ <comment>MakeDropCode</comment>
<payload dir="server" typename="makeDropStruct" sizechecktype="none"/>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="0555" name="OP_ExpUpdate" updated="06/12/09">
- <comment>old ExpUpdateCode</comment>
- <payload dir="server" typename="expUpdateStruct" sizechecktype="match"/>
- </opcode>
- <opcode id="58c5" name="OP_RemoveSpawn" updated="11/16/11">
+ <opcode id="58c5" name="OP_RemoveSpawn" updated="06/27/12">
<comment>Remove spawn from zone</comment>
<payload dir="both" typename="removeSpawnStruct" sizechecktype="none"/>
</opcode>
- <opcode id="799C" name="OP_Death" updated="11/16/11">
+ <opcode id="799c" name="OP_Death" updated="06/27/12">
<comment>old NewCorpseCode</comment>
<payload dir="server" typename="newCorpseStruct" sizechecktype="match"/>
</opcode>
- <opcode id="33E5" name="OP_ClickObject" updated="11/15/11">
- <comment>old RemDropCode</comment>
+ <opcode id="33e5" name="OP_ClickObject" updated="06/27/12">
+ <comment>Items dropped on the ground</comment>
<payload dir="both" typename="remDropStruct" sizechecktype="match"/>
</opcode>
- <opcode id="7F9E" name="OP_Action" updated="11/15/11">
- <comment></comment>
+ <opcode id="7f9e" name="OP_Action" updated="06/27/12">
+ <comment>Spells cast etc</comment>
<payload dir="both" typename="actionStruct" sizechecktype="match"/>
<payload dir="both" typename="actionAltStruct" sizechecktype="match"/>
</opcode>
- <opcode id="3EA8" name="OP_Action2" updated="11/15/11">
- <comment>old ActionCode</comment>
+ <opcode id="3ea8" name="OP_Action2" updated="06/27/12">
+ <comment>Combat actions i.e. bash, kick etc</comment>
<payload dir="both" typename="action2Struct" sizechecktype="match"/>
</opcode>
- <opcode id="4843" name="OP_Illusion" updated="11/15/11">
+ <opcode id="4843" name="OP_Illusion" updated="06/27/12">
<comment>Spawn being illusioned (changing forms)</comment>
<payload dir="both" typename="spawnIllusionStruct" sizechecktype="match"/>
</opcode>
- <opcode id="8543" name="OP_BuffFadeMsg" updated="11/15/11">
- <comment>old SpellFadeCode</comment>
+ <opcode id="1b8a" name="OP_BuffFadeMsg" updated="06/27/12">
+ <comment>SpellFadeCode</comment>
<payload dir="both" typename="spellFadedStruct" sizechecktype="none"/>
</opcode>
- <opcode id="569A" name="OP_CastSpell" updated="11/15/11">
- <comment>old StartCastCode</comment>
+ <opcode id="8543" name="OP_CastSpell" updated="06/27/12">
+ <comment>StartCastCode</comment>
<payload dir="both" typename="startCastStruct" sizechecktype="match"/>
</opcode>
- <opcode id="1B8A" name="OP_MemorizeSpell" updated="11/15/11">
- <comment>old MemSpellCode</comment>
+ <opcode id="569e" name="OP_MemorizeSpell" updated="06/27/12">
+ <comment>MemSpellCode</comment>
<payload dir="both" typename="memSpellStruct" sizechecktype="match"/>
</opcode>
- <opcode id="3164" name="OP_Emote" updated="11/15/11">
- <comment>old EmoteTextCode</comment>
+ <opcode id="3164" name="OP_Emote" updated="06/27/12">
+ <comment>EmoteTextCode</comment>
<payload dir="both" typename="emoteTextStruct" sizechecktype="none"/>
</opcode>
- <opcode id="07FB" name="OP_RandomReply" updated="11/15/11">
- <comment>old RandomCode</comment>
+ <opcode id="07fb" name="OP_RandomReply" updated="06/27/12">
+ <comment>RandomCode</comment>
<payload dir="server" typename="randomStruct" sizechecktype="match"/>
</opcode>
- <opcode id="71BF" name="OP_ManaChange" updated="11/15/11">
+ <opcode id="3887" name="OP_ManaChange" updated="06/27/12">
<comment>Mana change. Bards send this up with no size. Casters receive this for mana updates.</comment>
<payload dir="server" typename="manaDecrementStruct" sizechecktype="match"/>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="7165" name="OP_MoneyOnCorpse" updated="11/15/11">
- <comment>old MoneyOnCorpseCode</comment>
+ <opcode id="7165" name="OP_MoneyOnCorpse" updated="06/27/12">
+ <comment>MoneyOnCorpseCode</comment>
<payload dir="server" typename="moneyOnCorpseStruct" sizechecktype="match"/>
</opcode>
- <opcode id="2222" name="OP_CorpseLocResponse" updated="06/12/09">
- <comment>old CorpseLocCode:</comment>
- <payload dir="server" typename="corpseLocStruct" sizechecktype="match"/>
- </opcode>
- <opcode id="6AFD" name="OP_PlayerProfile" updated="11/16/11">
- <comment>old CharProfileCode</comment>
+ <opcode id="6afd" name="OP_PlayerProfile" updated="06/27/12">
+ <comment>CharProfileCode</comment>
<payload dir="server" typename="charProfileStruct" sizechecktype="match"/>
</opcode>
- <opcode id="6015" name="OP_TimeOfDay" updated="01/17/08">
- <comment>old TimeOfDayCode</comment>
+ <opcode id="6015" name="OP_TimeOfDay" updated="06/27/12">
+ <comment>TimeOfDayCode</comment>
<payload dir="server" typename="timeOfDayStruct" sizechecktype="match"/>
</opcode>
- <opcode id="51BC" name="OP_GuildMemberList" updated="12/17/11">
- <comment></comment>
- <payload dir="server" typename="uint8_t" sizechecktype="none"/>
- </opcode>
- <opcode id="7062" name="OP_ClientUpdate" updated="11/15/11">
+ <opcode id="7062" name="OP_ClientUpdate" updated="06/27/12">
<comment>Position updates</comment>
<payload dir="server" typename="playerSpawnPosStruct" sizechecktype="match"/>
<payload dir="both" typename="playerSelfPosStruct" sizechecktype="match"/>
</opcode>
- <opcode id="4656" name="OP_MobUpdate" updated="01/17/08">
- <comment>old MobUpdateCode</comment>
- <payload dir="both" typename="spawnPositionUpdate" sizechecktype="match"/>
- </opcode>
- <opcode id="0D5A" name="OP_BeginCast" updated="01/17/08">
- <comment>old BeginCastCode</comment>
+ <opcode id="0d5a" name="OP_BeginCast" updated="06/27/12">
+ <comment>BeginCastCode</comment>
<payload dir="both" typename="beginCastStruct" sizechecktype="match"/>
</opcode>
- <opcode id="2E79" name="OP_CommonMessage" updated="11/15/11">
- <comment>old ChannelMessageCode</comment>
+ <opcode id="2e79" name="OP_CommonMessage" updated="06/27/12">
+ <comment>ChannelMessageCode</comment>
<payload dir="both" typename="channelMessageStruct" sizechecktype="none"/>
</opcode>
- <opcode id="7F01" name="OP_SkillUpdate" updated="11/15/11">
- <comment>old SkillIncCode</comment>
+ <opcode id="7f01" name="OP_SkillUpdate" updated="06/27/12">
+ <comment>Skill up code</comment>
<payload dir="server" typename="skillIncStruct" sizechecktype="match"/>
</opcode>
- <opcode id="6A99" name="OP_LevelUpdate" updated="01/17/08">
- <comment>old LevelUpUpdateCode</comment>
+ <opcode id="5488" name="OP_SpawnAppearance" updated="06/27/12">
+ <comment>SpawnAppearanceCode</comment>
+ <payload dir="both" typename="spawnAppearanceStruct" sizechecktype="match"/>
+ </opcode>
+ <opcode id="0000" name="OP_ExpUpdate" updated="06/27/12">
+ <comment>ExpUpdateCode - opcode looks to be 221a as of 06/27/12 but that value causes seg faults for some reason</comment>
+ <payload dir="server" typename="expUpdateStruct" sizechecktype="match"/>
+ </opcode>
+ <opcode id="6e1c" name="OP_LevelUpdate" updated="06/27/12">
+ <comment>LevelUpUpdateCode</comment>
<payload dir="server" typename="levelUpUpdateStruct" sizechecktype="match"/>
</opcode>
+ <opcode id="1af0" name="OP_LeaderExpUpdate" updated="06/27/12">
+ <comment>Leadership AA Exp Update</comment>
+ <payload dir="server" typename="leadExpUpdateStruct" sizechecktype="match"/>
+ </opcode>
+ <opcode id="4656" name="OP_MobUpdate" updated="06/27/12">
+ <comment>MobUpdateCode</comment>
+ <payload dir="both" typename="spawnPositionUpdate" sizechecktype="match"/>
+ </opcode>
+ <opcode id="4aa2" name="OP_Trader" updated="06/27/12">
+ <comment>PC's turning trader on and off</comment>
+ <payload dir="server" typename="bazaarTraderRequest" sizechecktype="match"/>
+ </opcode>
+ <opcode id="6bb9" name="OP_Consent" updated="06/27/12">
+ <comment>/consent someone</comment>
+ <payload dir="client" typename="consentRequestStruct" sizechecktype="none"/>
+ </opcode>
+ <opcode id="0370" name="OP_ConsentDeny" updated="06/27/12">
+ <comment>/deny someone</comment>
+ <payload dir="client" typename="consentRequestStruct" sizechecktype="none"/>
+ </opcode>
+ <opcode id="399b" name="OP_ItemPacket" updated="06/27/12">
+ <comment>ItemCode</comment>
+ <payload dir="server" typename="itemPacketStruct" sizechecktype="none"/>
+ </opcode>
+ <opcode id="521c" name="OP_ItemLinkResponse" updated="06/27/12">
+ <comment>ItemInfoCode</comment>
+ <payload dir="server" typename="itemInfoStruct" sizechecktype="none"/>
+ <payload dir="client" typename="itemInfoReqStruct" sizechecktype="none"/>
+ </opcode>
+ <opcode id="0254" name="OP_EnvDamage" updated="06/27/12">
+ <comment>Environmental Damage</comment>
+ <payload dir="client" typename="environmentDamageStruct" sizechecktype="match"/>
+ </opcode>
+ <opcode id="59c3" name="OP_SetRunMode" updated="06/27/12">
+ <comment>old cRunToggleCode</comment>
+ <payload dir="client" typename="cRunToggleStruct" sizechecktype="match"/>
+ </opcode>
+ <opcode id="0000" name="OP_WearChange" updated="03/23/12">
+ <comment>Armor changes or give a pet a weapon (model changes)</comment>
+ <payload dir="both" typename="SpawnUpdateStruct" sizechecktype="match"/>
+ </opcode>

<!-- Not necessary for SEQ to run but here to name packets in logs. -->
- <opcode id="758c" name="OP_Marketplace" updated="12/17/11">
- <comment>Marketplace data</comment>
+ <opcode id="3671" name="OP_GroupUpdate" updated="06/27/12">
+ <comment>Group member names - Variable length</comment>
+ <payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="097f" name="OP_WelcomeScreenTitle" updated="05/16/11">
- <comment></comment>
+ <opcode id="51bc" name="OP_GuildMemberList" updated="06/27/12">
+ <comment>List of guild members - Variable length</comment>
+ <payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="5d0f" name="OP_VeteranRewards" update="04/18/11">
- <comment></comment>
+ <opcode id="0c2b" name="OP_ManaUpdate" updated="06/27/12">
+ <comment>Mana Update opcode - 10 bytes</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="5f51" name="OP_EndUpdate" updated="06/27/12">
+ <comment>Endurance Update opcode - 10 bytes</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="5206" name="OP_Marketplace" updated="06/27/12">
+ <comment>Marketplace data - Guessing variable length</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="2edd" name="OP_DzMembers" updated="06/27/12">
+ <comment>Expedition Members - Variable length</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="0d5f" name="OP_Campfire" updated="06/27/12">
+ <comment>Fellowship campfire information - 1076 bytes</comment>
+ <payload dir="client" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="10c9" name="OP_SelectCampfire" updated="06/27/12">
+ <comment>Fellowship campfire Choices - Guessing variable length</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="1d97" name="OP_Claims" updated="06/27/12">
+ <comment>Contents of claims window - Guessing variable length</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="5433" name="OP_VoiceChat" updated="06/27/12">
+ <comment>Voice chat server info - Variable length (Data sent when joining group,raid etc)</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
- <opcode id="7209" name="OP_WelcomeScreenURL" updated="05/16/11">
- <comment></comment>
+ <opcode id="7a52" name="OP_PollQuestions" updated="06/27/12">
+ <comment>SOE in-game player poll questions - Variable length</comment>
+ <payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
- <opcode id="3B85" name="OP_SendAATable" updated="08/12/09">
- <comment></comment>
+ <opcode id="591f" name="OP_PollResponses" updated="06/27/12">
+ <comment>Poll response choices - 1004 bytes</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="1d51" name="OP_ShroudProgression" updated="06/27/12">
+ <comment>Unlocked shrouds - 244 bytes</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="2538" name="OP_Fellowship" updated="06/27/12">
+ <comment>Fellowship information - 2552 bytes</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="1a7b" name="OP_ExpandedGuildInfo" updated="06/27/12">
+ <comment>Guild ranks and other misc guild data - Variable length</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="18e2" name="OP_GuildBank" updated="06/27/12">
+ <comment>Guild bank contents - Guessing variable length</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="1031" name="OP_OpenTradeskillContainer" updated="06/27/12">
+ <comment>Opens forge, kiln etc - 92 Bytes</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="1ecf" name="OP_TradeskillRecipes" updated="06/27/12">
+ <comment>Learned recipes - 84 Bytes</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
- <opcode id="5832" name="OP_SendAAStats" updated="08/12/09">
- <comment></comment>
+ <opcode id="0000" name="OP_TradeSkillCombine" updated="06/27/12">
+ <comment>Tradeskill combine using new tradeskill window - 40 Bytes</comment>
+ <payload dir="both" typename="uint8_t" sizechecktype="none"/>
+ </opcode>
+ <opcode id="4212" name="OP_TradeSkillCombineOld" updated="06/27/12">
+ <comment>Tradeskill combine using old tradeskill window - 24 Bytes</comment>
+ <payload dir="both" typename="uint8_t" sizechecktype="none"/>
+ </opcode>
+ <opcode id="7113" name="OP_ItemPlayerPacket" updated="06/27/12">
+ <comment>Inventory/bank items coming over during zone - Variable length</comment>
+ <payload dir="server" typename="uint8_t" sizechecktype="none"/>
+ </opcode>
+ <opcode id="512b" name="OP_TaskDescription" updated="06/27/12">
+ <comment>Task descriptions coming down for task window - Variable length</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="47ea" name="OP_TaskActivity" updated="06/27/12">
+ <comment>Task activity descriptions coming down for task window - Variable length</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="189b" name="OP_CompletedTasks" updated="06/27/12">
+ <comment>Task history for task window - Variable length</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="1b9c" name="OP_CustomTitles" updated="06/27/12">
+ <comment>List of available titles - 1520 bytes</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="0976" name="OP_Animation" updated="06/27/12">
+ <comment>Combat animation, emote animations etc - 4 bytes</comment>
+ <payload dir="both" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="177a" name="OP_WhoAllRequest" updated="06/27/12">
+ <comment>WhoAllReqCode - 156 bytes</comment>
+ <payload dir="client" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="4d5a" name="OP_WhoAllResponse" updated="06/27/12">
+ <comment>WhoAllOutputCode - Variable length</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="0c54" name="OP_InspectRequest" updated="06/27/12">
+ <comment>InspectRequestCode - 8 bytes</comment>
+ <payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
- <opcode id="4e99" name="OP_Claims" updated="12/17/11">
- <comment>Contents of claims window</comment>
+ <opcode id="102f" name="OP_GetGuildMOTD" updated="06/27/12">
+ <comment>GuildMOTD - 648 Bytes</comment>
+ <payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
- <opcode id="2864" name="OP_PollQuestions" updated="12/17/11">
- <comment>SOE in-game player poll questions</comment>
+ <opcode id="6617" name="OP_TradeRequest" updated="06/27/12">
+ <comment>Client request trade session - 8 bytes</comment>
+ <payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
- <opcode id="0f6d" name="OP_PollResponses" updated="12/17/11">
- <comment>Poll response choices</comment>
+ <opcode id="1d40" name="OP_TradeDeny" updated="06/27/12">
+ <comment>Target not ready to trade - 12 bytes</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
- <opcode id="2071" name="OP_ShroudProgression" updated="12/17/11">
- <comment>Unlocked shrouds</comment>
+ <opcode id="606a" name="OP_TradeRequestAck" updated="06/27/12">
+ <comment>Trade request recipient is acknowledging they are able to trade - 8 bytes</comment>
+ <payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
- <opcode id="01e5" name="OP_Fellowship" updated="12/17/11">
- <comment>Fellowship information</comment>
+ <opcode id="2c6d" name="OP_CancelTrade" updated="06/27/12">
+ <comment>Cancel a trade window - 0 bytes</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
- <opcode id="4274" name="OP_ExpandedGuildInfo" updated="12/17/11">
- <comment>Variable length guild ranks and other misc guild data</comment>
+ <opcode id="72f8" name="OP_FinishTrade" updated="06/27/12">
+ <comment>Trade is over - 12 bytes</comment>
+ <payload dir="both" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="0d1d" name="OP_TradeCoins" updated="06/27/12">
+ <comment>You put coins put in a trade window - 20 bytes</comment>
+ <payload dir="client" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="0149" name="OP_TradeCoins2" updated="06/27/12">
+ <comment>Someone else puts coins put in your trade window - 12 bytes</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="064a" name="OP_TradeAcceptClick" updated="06/27/12">
+ <comment>One side clicks Accept on the trade 8 bytes</comment>
+ <payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
- <opcode id="6255" name="OP_GuildBank" updated="12/17/11">
- <comment>Guild bank contents</comment>
+ <opcode id="3c66" name="OP_ItemLinkClick" updated="06/27/12">
+ <comment>Click on itemlinks - 48 bytes</comment>
+ <payload dir="client" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="4074" name="OP_EndLootRequest" updated="06/27/12">
+ <comment>DoneLootingCode - 4 bytes</comment>
+ <payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
- <opcode id="1d40" name="OP_OpenTradeskillContainer" updated="12/17/11">
- <comment>Opens forge, kiln etc</comment>
+ <opcode id="0b93" name="OP_LootItem" updated="06/27/12">
+ <comment>Loot item from corpse - 20 bytes</comment>
+ <payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
- <opcode id="6fb9" name="OP_TradeskillRecipes" updated="12/17/11">
- <comment>Learned recipes</comment>
+ <opcode id="47ae" name="OP_Track" updated="06/27/12">
+ <comment>Tracking data - Variable length</comment>
+ <payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
- <opcode id="2369" name="OP_Unknown1" updated="02/13/07">
- <comment>Unkown packets that spam logs. Marked here to make reading logs easier</comment>
+ <opcode id="1564" name="OP_TraderShop" updated="06/27/12">
+ <comment>OpenTraderCode right-click on a trader in bazaar - 16 bytes</comment>
+ <payload dir="both" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="3edc" name="OP_AutoAttack" updated="06/27/12">
+ <comment>Attack on/off - 4 bytes</comment>
+ <payload dir="client" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="1497" name="OP_AutoAttack2" updated="06/27/12">
+ <comment>Attack on/off appears to be same as OP_AutoAttack - 4 bytes</comment>
+ <payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
- <opcode id="7C94" name="OP_Unknown2" updated="02/13/07">
- <comment>Unkown packets that spam logs. Marked here to make reading logs easier</comment>
+ <opcode id="231f" name="OP_ClickDoor" updated="06/27/12">
+ <comment>DoorOpenCode click request from client - 16 bytes</comment>
+ <payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="5851" name="OP_Unknown3" updated="02/13/07">
- <comment>Unkown packets that spam logs. Marked here to make reading logs easier</comment>
+ <opcode id="3969" name="OP_MoveDoor" updated="06/27/12">
+ <comment>DoorClickCode response from server - 2 bytes</comment>
+ <payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="3333" name="OP_Unknown4" updated="02/13/07">
- <comment>Unkown packets that spam logs. Marked here to make reading logs easier</comment>
+ <opcode id="1418" name="OP_MoveItem" updated="06/27/12">
+ <comment>Client moving an item from one slot to another - 28 bytes</comment>
+ <payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
- <opcode id="4444" name="OP_Unknown5" updated="02/13/07">
- <comment>Unkown packets that spam logs. Marked here to make reading logs easier</comment>
+ <opcode id="0507" name="OP_TraderBuy" updated="06/27/12">
+ <comment>buy from a trader in bazaar</comment>
</opcode>
- <opcode id="5555" name="OP_Unknown6" updated="02/13/07">
- <comment>Unkown packets that spam logs. Marked here to make reading logs easier</comment>
+ <opcode id="00bc" name="OP_LootRequest" updated="06/27/12">
+ <comment>LootCorpseCode - 4 bytes</comment>
+ <payload dir="client" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="132f" name="OP_Jump" updated="06/27/12">
+ <comment>JumpCode - 0 bytes</comment>
+ <payload dir="client" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="37a7" name="OP_TGB" updated="06/27/12">
+ <comment>Client telling server to set targetgroupbuff - 4 bytes</comment>
+ <payload dir="client" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="45d7" name="OP_Lockouts" updated="06/27/12">
+ <comment>Client requesting lockouts - 0 bytes</comment>
+ <payload dir="client" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="0bd0" name="OP_WelcomeScreenURL" updated="06/27/12">
+ <comment>URLs for the welcome screen window - Variable length</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="0c08" name="OP_RaidJoin" updated="06/27/12">
+ <comment>Client side raid invite requests 140 bytes</comment>
+ <payload dir="client" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="2bad" name="OP_RaidInvite" updated="06/27/12">
+ <comment>Server side raid information - 140 bytes or 144 bytes</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="1ebb" name="OP_Feedback" updated="06/27/12">
+ <comment>Client sending feedback to server - 1148 bytes</comment>
+ <payload dir="client" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="5b0b" name="OP_GuildsList" updated="03/23/12">
+ <comment>Listing of all guilds</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="4817" name="OP_LFGGetMatchesRequest" updated="06/27/12">
+ <comment>LFG/LFP client request - 16 bytes</comment>
+ <payload dir="client" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="1899" name="OP_LFGGetMatchesResponse" updated="06/27/12">
+ <comment>LFG/LFP server response - Variable length</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="27ac" name="OP_MercenaryList" updated="06/27/12">
+ <comment>Listing of hired mercenaries - 427 bytes
+ <payload dir="server" typename="unknown" sizechecktype="none"/></comment>
+ </opcode>
+ <opcode id="6fe7" name="OP_ClickInventory" updated="06/27/12">
+ <comment>Click items from inventory or armor - 16 bytes 5th byte is Slot ID</comment>
+ <payload dir="client" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="65fb" name="OP_ClickInventoryAck" updated="06/27/12">
+ <comment>Server acknowledges click from inventory or armor - 20 bytes</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="3c2d" name="OP_BuffWindow" updated="06/27/12">
+ <comment>Changes to buff window or song window - 100 bytes</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="7ae1" name="OP_ClickBuffOff" updated="06/27/12">
+ <comment>Client clicks off buff - 8 bytes</comment>
+ <payload dir="client" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="346b" name="OP_HouseAddress" updated="06/27/12">
+ <comment>House and guildhall address information - Variable length</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="5546" name="OP_HouseContents" updated="06/27/12">
+ <comment>Server sending house information and contents - variable length</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="3d24" name="OP_FriendsList" updated="06/27/12">
+ <comment>Server sending friends list contents - variable length</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="2b5f" name="OP_Rewards" updated="06/27/12">
+ <comment>Server sending pending rewards - variable length</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="7caa" name="OP_FTPNags" updated="06/27/12">
+ <comment>Free to play nags and other data - 1852 bytes</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="099e" name="OP_Find" updated="06/27/12">
+ <comment>Find window data - 112 bytes</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="0698" name="OP_ConsiderCorpse" updated="06/27/12">
+ <comment>ConCorpseCode - 20 bytes</comment>
+ <payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>


- <!-- Below are unverified as of 12-1-2007 -->
- <opcode id="4d38" name="OP_AckPacket" updated="03/14/07">
- <comment>Appears to be generic ack at the presentation level</comment>
+
+ <!-- Below are used to help make sense of the logs when searching for opcodes
+ Using these marks unknown opcodes in logs for easier reading -->
+ <opcode id="5a6b" name="OP_Unknown1" updated="06/27/12">
+ <comment>3 byte opcode that spam logs. Marked here to make reading logs easier</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="2018" name="OP_Unknown2" updated="06/27/12">
+ <comment>3 byte opcode that spam logs. Marked here to make reading logs easier</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
+ </opcode>
+ <opcode id="3f49" name="OP_Unknown3" updated="06/27/12">
+ <comment>3 byte opcode that spam logs. Marked here to make reading logs easier</comment>
+ <payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
- <opcode id="71fb" name="OP_TributeUpdate" updated="03/14/07">
- <comment>Tribute information</comment>
+
+ <!-- Below are unverified -->
+ <opcode id="0000" name="OP_Buff" updated="11/15/11">
+ <comment>old BuffDropCode</comment>
+ <payload dir="both" typename="buffStruct" sizechecktype="match"/>
</opcode>
- <opcode id="4849" name="OP_ItemPlayerPacket" updated="11/15/11">
- <comment>Inventory/bank items coming over during zone</comment>
- <payload dir="server" typename="uint8_t" sizechecktype="none"/>
+ <opcode id="0000" name="OP_ZoneChange" updated="04/18/11">
+ <comment>old ZoneChangeCode</comment>
+ <payload dir="both" typename="zoneChangeStruct" sizechecktype="match"/>
</opcode>
- <opcode id="2E4F" name="OP_TaskDescription" updated="12/17/11">
- <comment>Task descriptions coming down for task window</comment>
+ <opcode id="0000" name="OP_CorpseLocResponse" updated="06/12/09">
+ <comment>old CorpseLocCode:</comment>
+ <payload dir="server" typename="corpseLocStruct" sizechecktype="match"/>
</opcode>
- <opcode id="512B" name="OP_TaskActivity" updated="12/17/11">
- <comment>Task activity descriptions coming down for task window</comment>
+ <opcode id="0000" name="OP_SendZonePoints" updated="10/15/10">
+ <comment>Coords in a zone that will port you to another zone</comment>
+ <payload dir="server" typename="zonePointsStruct" sizechecktype="none"/>
</opcode>
- <opcode id="6D1F" name="OP_CompletedTasks" updated="12/17/11">
- <comment>Task history for task window</comment>
+ <opcode id="24D8" name="OP_RequestZoneChange" updated="10/20/07">
+ <comment>Send by server when a click causes zone. Also, origin</comment>
+ <payload dir="server" typename="requestZoneChangeStruct" sizechecktype="match"/>
+ </opcode>
+ <opcode id="44AE" name="OP_Logout" updated="10/21/09">
+ <comment></comment>
+ <payload dir="server" typename="none" sizechecktype="match"/>
+ </opcode>
+ <opcode id="097f" name="OP_WelcomeScreenTitle" updated="05/16/11">
+ <comment></comment>
+ </opcode>
+ <opcode id="0000" name="OP_VeteranRewards" update="04/18/11">
+ <comment></comment>
+ </opcode>
+ <opcode id="3B85" name="OP_SendAATable" updated="08/12/09">
+ <comment></comment>
+ </opcode>
+ <opcode id="5832" name="OP_SendAAStats" updated="08/12/09">
+ <comment></comment>
+ </opcode>
+ <opcode id="4d38" name="OP_AckPacket" updated="03/14/07">
+ <comment>Appears to be generic ack at the presentation level</comment>
+ </opcode>
+ <opcode id="71fb" name="OP_TributeUpdate" updated="03/14/07">
+ <comment>Tribute information</comment>
</opcode>
<opcode id="70a5" name="OP_Weather" updated="03/14/07">
<comment>old WeatherCode</comment>
@@ -379,13 +639,10 @@
<opcode id="5417" name="OP_ReqNewZone" updated="03/14/07">
<comment>Client requesting NewZone_Struct</comment>
</opcode>
- <opcode id="0D8A" name="OP_CustomTitles" updated="11/15/11">
- <comment>List of available titles</comment>
- </opcode>
<opcode id="45d2" name="OP_ReqClientSpawn" updated="03/14/07">
<comment>Client requesting spawn data</comment>
</opcode>
- <opcode id="3703" name="OP_SendExpZonein" updated="03/14/07">
+ <opcode id="0000" name="OP_SendExpZonein" updated="03/14/07">
<comment>Both directions. Negotiating sending of exp info.</comment>
</opcode>
<opcode id="0a4f" name="OP_AAAction" updated="03/14/07">
@@ -397,15 +654,6 @@
<opcode id="3854" name="OP_ClientReady" updated="03/14/07">
<comment></comment>
</opcode>
- <opcode id="0137" name="OP_TGB" updated="03/14/07">
- <comment>Client telling server to set targetgroupbuff</comment>
- </opcode>
- <opcode id="237e" name="OP_RaidJoin" updated="03/14/07">
- <comment></comment>
- </opcode>
- <opcode id="7161" name="OP_GuildExtendedInfo" updated="03/14/07">
- <comment>Extra guild info (i.e. chat channel, url)</comment>
- </opcode>
<opcode id="6774" name="OP_GuildTributeStatus" updated="03/14/07">
<comment>Guild tribute stats send on zone</comment>
</opcode>
@@ -415,10 +663,7 @@
<opcode id="063b" name="OP_RespawnWindow" updated="03/14/07">
<comment>Server telling client enough to populate the respawn window when you die</comment>
</opcode>
- <opcode id="0B93" name="OP_Animation" updated="12/17/11">
- <comment></comment>
- </opcode>
- <opcode id="010D" name="OP_InitialMobHealth" updated="03/14/07">
+ <opcode id="314f" name="OP_InitialMobHealth" updated="06/27/12">
<comment>Initial health sent when a player clicks on the mob. Subsequent updated will be OP_MobHealth</comment>
</opcode>
<opcode id="311a" name="OP_MobHealth" updated="03/14/07">
@@ -427,63 +672,9 @@
<opcode id="16c1" name="OP_DeltaCheck" updated="03/14/07">
<comment>Client sending server delta information.</comment>
</opcode>
- <opcode id="24D8" name="OP_RequestZoneChange" updated="10/20/07">
- <comment>Send by server when a click causes zone. Also, origin</comment>
- <payload dir="server" typename="requestZoneChangeStruct" sizechecktype="match"/>
- </opcode>
- <opcode id="117A" name="OP_WhoAllRequest" updated="11/15/11">
- <comment>old WhoAllReqCode</comment>
- </opcode>
- <opcode id="15DE" name="OP_WhoAllResponse" updated="11/15/11">
- <comment>old sWhoAllOutputCode</comment>
- </opcode>
<opcode id="61ac" name="OP_LoadSpellSet" updated="02/13/07">
<comment>/mem spellsetname</comment>
</opcode>
- <opcode id="2683" name="OP_InspectRequest" updated="12/17/11">
- <comment>old InspectRequestCode</comment>
- </opcode>
- <opcode id="1B7B" name="OP_GetGuildMOTD" updated="12/17/11">
- <comment></comment>
- </opcode>
- <opcode id="00AA" name="OP_TradeRequest" updated="12/17/11">
- <comment>Client request trade session</comment>
- </opcode>
- <opcode id="606A" name="OP_TradeRequestAck" updated="12/17/11">
- <comment>Trade request recipient is acknowledging they are able to trade</comment>
- </opcode>
- <opcode id="527E" name="OP_CancelTrade" updated="12/17/11">
- <comment>Cancel a trade window</comment>
- </opcode>
- <opcode id="1EBB" name="OP_FinishTrade" updated="12/17/11">
- <comment>Trade is over</comment>
- </opcode>
- <opcode id="1418" name="OP_TradeCoins" updated="12/17/11">
- <comment>Coins put in trade window</comment>
- </opcode>
- <opcode id="064A" name="OP_TradeAcceptClick" updated="12/17/11">
- <comment>One side clicks Accept on the trade</comment>
- </opcode>
- <opcode id="6BB9" name="OP_Consent" updated="11/15/11">
- <comment>/consent someone</comment>
- <payload dir="client" typename="consentRequestStruct" sizechecktype="none"/>
- </opcode>
- <opcode id="7CAE" name="OP_ConsentDeny" updated="11/15/11">
- <comment>/deny someone</comment>
- <payload dir="client" typename="consentRequestStruct" sizechecktype="none"/>
- </opcode>
- <opcode id="3DF8" name="OP_ItemPacket" updated="11/15/11">
- <comment>old ItemCode</comment>
- <payload dir="server" typename="itemPacketStruct" sizechecktype="none"/>
- </opcode>
- <opcode id="6948" name="OP_ItemLinkClick" updated="12/17/11">
- <comment></comment>
- </opcode>
- <opcode id="24C9" name="OP_ItemLinkResponse" updated="12/17/11">
- <comment>old ItemInfoCode</comment>
- <payload dir="server" typename="itemInfoStruct" sizechecktype="none"/>
- <payload dir="client" typename="itemInfoReqStruct" sizechecktype="none"/>
- </opcode>
<opcode id="00de" name="OP_Dye" updated="10/27/05">
<comment></comment>
</opcode>
@@ -497,28 +688,9 @@
<opcode id="68ac" name="OP_LFGCommand" updated="10/27/05">
<comment>old LFGReqCode</comment>
</opcode>
- <opcode id="022f" name="OP_LFGGetMatchesRequest" updated="10/27/05">
- <comment></comment>
- </opcode>
- <opcode id="4074" name="OP_EndLootRequest" updated="11/15/11">
- <comment>old cDoneLootingCode</comment>
- </opcode>
- <opcode id="5BD9" name="OP_LootItem" updated="11/15/11">
- <comment></comment>
- </opcode>
<opcode id="7ac3" name="OP_Bug" updated="10/27/05">
<comment>/bug</comment>
</opcode>
- <opcode id="1ac1" name="OP_Track" updated="12/17/11">
- <comment>Clicked Track</comment>
- </opcode>
- <opcode id="0681" name="OP_TraderShop" updated="06/29/05">
- <comment>old OpenTraderCode right-click on a trader in bazaar</comment>
- </opcode>
- <opcode id="66f0" name="OP_Trader" updated="06/29/05">
- <comment>People turning trader on and off</comment>
- <payload dir="server" typename="bazaarTraderRequest" sizechecktype="match"/>
- </opcode>
<opcode id="5c06" name="OP_Save" updated="04/19/06">
<comment>Client asking server to save user state</comment>
</opcode>
@@ -528,18 +700,9 @@
<opcode id="fe13" name="OP_ShopPlayerSell" updated="10/27/05">
<comment>old SellItemCode</comment>
</opcode>
- <opcode id="4b88" name="OP_AutoAttack" updated="02/13/07">
- <comment></comment>
- </opcode>
- <opcode id="3299" name="OP_AutoAttack2" updated="02/13/07">
- <comment></comment>
- </opcode>
<opcode id="10a1" name="OP_PetCommands" updated="10/27/05">
<comment></comment>
</opcode>
- <opcode id="4ed9" name="OP_SetRunMode" updated="02/13/07">
- <comment>old cRunToggleCode</comment>
- </opcode>
<opcode id="1103" name="OP_SaveOnZoneReq" updated="03/14/07">
<comment></comment>
</opcode>
@@ -547,9 +710,6 @@
<comment>old CloseVendorCode</comment>
<payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
- <opcode id="231F" name="OP_MoveDoor" updated="11/15/11">
- <comment>old DoorClickCode</comment>
- </opcode>
<opcode id="5666" name="OP_SenseTraps" updated="10/27/05">
<comment></comment>
</opcode>
@@ -559,10 +719,6 @@
<opcode id="528F" name="OP_LootComplete" updated="12/07/05">
<comment>old sDoneLootingCode</comment>
</opcode>
- <opcode id="3980" name="OP_EnvDamage" updated="02/13/07">
- <comment>Environmental Damage</comment>
- <payload dir="client" typename="environmentDamageStruct" sizechecktype="match"/>
- </opcode>
<opcode id="10A6" name="OP_Split" updated="10/27/05">
<comment></comment>
</opcode>
@@ -573,9 +729,6 @@
<comment>old OpenVendorCode</comment>
<payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
- <opcode id="2963" name="OP_MoveItem" updated="11/15/11">
- <comment>Client moving an item from one slot to another</comment>
- </opcode>
<opcode id="0f8e" name="OP_FaceChange" updated="10/27/05">
<comment>/face</comment>
</opcode>
@@ -600,25 +753,12 @@
<opcode id="35a6" name="OP_LFPGetMatchesRequest" updated="10/27/05">
<comment></comment>
</opcode>
- <opcode id="5892" name="OP_RaidInvite" updated="10/27/05">
- <comment></comment>
- </opcode>
- <opcode id="6dd8" name="OP_TraderBuy" updated="10/27/05">
- <comment>buy from a trader in bazaar</comment>
- </opcode>
<opcode id="6980" name="OP_GMKill" updated="10/27/05">
<comment>GM /kill - Insta kill mob/pc</comment>
</opcode>
- <opcode id="36e2" name="OP_ClickDoor" updated="02/13/07">
- <comment>old DoorOpenCode</comment>
- <payload dir="both" typename="uint8_t" sizechecktype="none"/>
- </opcode>
<opcode id="17a2" name="OP_GuildPublicNote" updated="10/27/05">
<comment></comment>
</opcode>
- <opcode id="00BC" name="OP_LootRequest" updated="11/15/11">
- <comment>old cLootCorpseCode</comment>
- </opcode>
<opcode id="61ef" name="OP_YellForHelp" updated="10/27/05">
<comment></comment>
</opcode>
@@ -628,9 +768,6 @@
<opcode id="6f82" name="OP_LFPCommand" updated="10/27/05">
<comment>looking for players</comment>
</opcode>
- <opcode id="00dd" name="OP_ConsiderCorpse" updated="12/07/05">
- <comment>old cConCorpseCode</comment>
- </opcode>
<opcode id="3838" name="OP_ConfirmDelete" updated="10/27/05">
<comment>Client sends this to server to confirm op_deletespawn</comment>
</opcode>
@@ -643,9 +780,6 @@
<opcode id="212d" name="OP_LFPGetMatchesResponse" updated="02/13/07">
<comment></comment>
</opcode>
- <opcode id="132F" name="OP_Jump" updated="11/15/11">
- <comment>old cJumpCode?</comment>
- </opcode>
<opcode id="1089" name="OP_FindPersonRequest" updated="02/13/07">
<comment>Control-F Find</comment>
</opcode>
@@ -655,32 +789,15 @@
<opcode id="23a1" name="OP_GMLastName" updated="10/27/05">
<comment>GM /lastname - Change user lastname</comment>
</opcode>
- <opcode id="0840" name="OP_TradeSkillCombine" updated="06/29/05">
- <comment></comment>
- </opcode>
- <opcode id="355b" name="OP_LFGGetMatchesResponse" updated="06/13/06">
- <comment></comment>
- </opcode>
<opcode id="14ef" name="OP_Mend" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="1ffa" name="OP_MendHPUpdate" updated="05/11/05">
<comment></comment>
</opcode>
- <opcode id="5306" name="OP_Feedback" updated="10/27/05">
- <comment>/feedback</comment>
- </opcode>
<opcode id="4775" name="OP_TributeInfo" updated="02/13/07">
<comment>Tribute information</comment>
</opcode>
- <opcode id="7416" name="OP_LeaderExpUpdate" updated="06/29/05">
- <comment>Leadership AA Exp Update</comment>
- <payload dir="server" typename="leadExpUpdateStruct" sizechecktype="match"/>
- </opcode>
- <opcode id="062c" name="OP_Lockouts" updated="02/13/07">
- <comment>Server telling client lockouts</comment>
- </opcode>
-

<!-- OLD OPCODES. These haven't been mapped in a post 1/26/2005 world. If you
can find any of these in the current stream, please update them and let
--- ChangeLog 2012-03-09 23:40:19.000000000 -0500
+++ ChangeLog 2012-07-07 17:26:43.927191179 -0400
@@ -1,3 +1,7 @@
+Fransick (06/25/2012)
+- Updated opcodes
+- Minor struct changes
+
Razzle (3/9/12)
- Updated version to 5.13.10.4
- Merged Fransick's patch


Let me know if there are any problems patching. I tested against a clean download and compiled it without errors so hoping the same for everyone else.

fransick
07-07-2012, 04:36 PM
In case anyone is lurking that better understands SEQ code...

Here's a backtrace from the consistent segfaults I get when I set OP_ExpUdate to 221a which is correct and works on a few of my alts but crashes my main everytime.


(gdb) bt
#0 0x0445c52d in QString::QString(QString const&) () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#1 0x0447bcfb in QUType_QString::set(QUObject*, QString const&) () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#2 0x080fa04a in Player::expGained (this=0x847d110, t0=..., t1=84, t2=13951645, t3=...) at player.moc:592
#3 0x080fa340 in Player::updateExp (this=0x847d110, data=0x846a59b "\252") at player.cpp:669
#4 0x080fc99c in Player::qt_invoke (this=0x847d110, _id=15, _o=0xbfffc380) at player.moc:737
#5 0x04185642 in QObject::activate_signal(QConnectionList*, QUObject*) () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#6 0x080906cf in EQPacketDispatch::signal (this=0x8410588, t0=0x846a59b "\252", t1=8, t2=2 '\002') at packetinfo.moc:99
#7 0x08089e19 in EQPacketStream::dispatchPacket (this=0x8326040, data=0x846a59b "\252", len=8, opCode=8730, opcodeEntry=0x843aa58) at packetstream.cpp:435
#8 0x0808c16a in EQPacketStream::processPacket (this=0x8326040, packet=..., isSubpacket=true) at packetstream.cpp:717
#9 0x0808c44a in EQPacketStream::processPacket (this=0x8326040, packet=..., isSubpacket=false) at packetstream.cpp:805
#10 0x0808ccc8 in EQPacketStream::handlePacket (this=0x8326040, packet=...) at packetstream.cpp:570
#11 0x08093322 in EQPacket::dispatchPacket (this=0x82aa0b0, packet=...) at packet.cpp:659
#12 0x08095bf5 in dispatchPacket (this=0x82aa0b0) at packet.cpp:583
#13 EQPacket::processPackets (this=0x82aa0b0) at packet.cpp:400
#14 0x08095ed0 in EQPacket::qt_invoke (this=0x82aa0b0, _id=2, _o=0xbfffe788) at packet.moc:577
#15 0x04185642 in QObject::activate_signal(QConnectionList*, QUObject*) () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#16 0x04185724 in QObject::activate_signal(int) () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#17 0x044ccc5a in QTimer::timeout() () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#18 0x041a5e3e in QTimer::event(QEvent*) () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#19 0x04123ffd in QApplication::internalNotify(QObject*, QEvent*) () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#20 0x0412418b in QApplication::notify(QObject*, QEvent*) () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#21 0x0411823c in QEventLoop::activateTimers() () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#22 0x040d3182 in QEventLoop::processEvents(unsigned int) () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#23 0x04139b50 in QEventLoop::enterLoop() () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#24 0x04139ad7 in QEventLoop::exec() () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#25 0x04124d20 in QApplication::exec() () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#26 0x08067a8b in main (argc=1, argv=0xbffff414) at main.cpp:737


Any thoughts are appreciated. I looked at the different files mentioned above and couldn't figure out a logical fix

BlueAdept
07-09-2012, 06:24 AM
So far, I havent had any segs (I haven't applied your patches yet). I run 3 toons (all casters). It is old hardware and old OS, centos 5.0. Possibly a qt version problem?

fransick
07-09-2012, 07:26 AM
I'm perplexed as the fix is just to not set the OP-ExpUpdate opcode in zoneopcodes.xml - i.e. set it to 0000. When I do that, SEQ is bombproof and will run for days at a time without issue. If I set that opcode to it's apparent correct value of 221a, it crashes my main but none of my alts. Weirdness!

Let me know how it goes when you apply the patch above. Looking for some validation as I am by no means an expert programmer so this is new territory for me.

BlueAdept
07-09-2012, 11:16 AM
For me, it will be a couple days. I have new hardware and a new os to install (upgrades came today).

BlueAdept
07-09-2012, 11:19 AM
Another quick question. How are you finding the op codes, there are several methods, but wanted to see which one you are using. Are you comparing old logs to new logs, are you packet capturing or using the actual logging capabilities of SEQ or are you pulling them directly from the exe?

fransick
07-09-2012, 11:40 AM
I attack it like a jigsaw puzzle using reference logs from the last working patch then I packet capture and look through that data to match it to the right opcode. I've been adding opcodes to zoneopcodes.xml to help make this easier as there are fewer unknowns in the logs. I also use opcode monitoring within SEQ to verify the opcodes as it shows immediate hits so it's useful to see if an associated action is causing the expected opcode hit.

Not scientific or particularly fast but kind of fun as you do start to understand the opcodes and get a sense of what you will see from patch to patch. I wish I were smart enough to fix the opcode finder that looked at the exe. That would make things so much easier and probably fill in some of the unknown opcodes that are hard to pinpoint using the hunt and peck log method.

rogues
07-09-2012, 01:42 PM
I'm perplexed as the fix is just to not set the OP-ExpUpdate opcode in zoneopcodes.xml - i.e. set it to 0000. When I do that, SEQ is bombproof and will run for days at a time without issue. If I set that opcode to it's apparent correct value of 221a, it crashes my main but none of my alts. Weirdness!

Let me know how it goes when you apply the patch above. Looking for some validation as I am by no means an expert programmer so this is new territory for me.

Is your main set to get aaxp and your alts set to just regular xp? I haven't seen any crashes, although prior to the last patch seq would crash if the toon levelled up or down.

fransick
07-09-2012, 01:57 PM
Good question... all are set to 90% AA. But I like the line of thinking. I may play around with different values and see if I can further pinpoint the issue. Thanks!

fransick
07-13-2012, 12:48 PM
No news is good news... going to venture that no one has uncovered any big issues with the patch provided. \

I did find a few reference opcode (read that as stuff I added just to make reading the logs easier and in no way affect SEQ performance) issues that throw "opcode doesn't match size" warnings because the opcode is set to either "server" or "client" and in fact it can come from either. I'll fix those once I confirm and hopefully we can bless the patch, make a new tarball and update SVN/CVS and call it a day.

Spanners
07-15-2012, 05:26 AM
HI, firstly thanks for your efforts it is much appreciated :)

I've just tried the patch from above, after downloading the latest source and received the following output:



missioncontrol2:/home/build/showeq-5.13.10.4# patch -p0 < patch06-25-12.patch
patching file src/everquest.h
Hunk #6 FAILED at 531.
Hunk #11 FAILED at 665.
Hunk #30 FAILED at 1270.
Hunk #34 FAILED at 1410.
Hunk #36 FAILED at 1435.
Hunk #37 FAILED at 1450.
Hunk #38 FAILED at 1459.
Hunk #66 FAILED at 1962.
Hunk #69 FAILED at 2039.
Hunk #86 FAILED at 2330.
10 out of 95 hunks FAILED -- saving rejects to file src/everquest.h.rej
patching file src/filter.cpp
patching file src/main.cpp
patching file src/spawnshell.cpp
patching file src/terminal.cpp
patching file conf/worldopcodes.xml
Hunk #2 FAILED at 51.
1 out of 2 hunks FAILED -- saving rejects to file conf/worldopcodes.xml.rej
patching file conf/zoneopcodes.xml
Hunk #1 FAILED at 2.
1 out of 14 hunks FAILED -- saving rejects to file conf/zoneopcodes.xml.rej
patching file ChangeLog



Was I supposed to do something else between download, extract and patch ?
Thanks

Spanners

BlueAdept
07-15-2012, 01:47 PM
I havent had time. My new linux box used the hard drive from my old laptop, which apparently went bad. I just got a new HD on Sat but havent had time to actually get it up and running.

rogues
07-18-2012, 05:43 PM
Damn, today's patch has things broken again.

Nstalkerga
07-18-2012, 06:15 PM
Damn, today's patch has things broken again.

With all the patch/break/fix..

Ive always wondered .. is there some way to correlate the easy to find opcodes from the myseq to assist in finding the proper showeq ones?

Guessing prolly not since ones is in the code itself of the application .. vs in the packet stream of the network.
but i figured id ask ;)

Fluxcapacitor
07-19-2012, 12:25 AM
This will at least get you maps. I don't understand where the new spawns come from, so no skittles. 6087 appears to be a new spawn opcode.

zoneopcodes.xml

OP_WearChange 3f55
OP_MovementHistory 268c
OP_PlayerProfile 537c
OP_MobUpdate 5a05

everquest.h

memspell +4 on end
begin cast +2 on end
PlayerProfile +4096 at 20196

Edit: fransick pointed out that the SpawnRename struct did not change, so do not change SpawnRename +64 on end
The rest in this post are good.

BlueAdept
07-19-2012, 07:15 AM
Doh...I had just gotten my new system up the night before the patch (did not have time to patch SEQ to get it working). I woke up early yesterday to get it working and found that there was a patch :(

Fluxcapacitor
07-19-2012, 02:51 PM
Can anyone explain how the spawns are captured? Is there an OpCode for it? I see the spawnStruct defined in everquest.h, but I don't see any OpCode assigned to it.

fransick
07-19-2012, 08:58 PM
Can anyone explain how the spawns are captured? Is there an OpCode for it? I see the spawnStruct defined in everquest.h, but I don't see any OpCode assigned to it.

ZoneEntry captures spawns.

In addition to the changes you mentioned above, you can add the following to get maps and skittles:

OP_NewZone 51ae
OP_ZoneEntry 6087
OP_SpawnRename 7b71

I'll have time to work out the rest this weekend. Are you sure about the spawnrename struct change? it stilled looked like 232 bytes to me but I only had a few minutes to look at things as I just got back into town.

Fluxcapacitor
07-19-2012, 10:37 PM
It's possible that the old opcode mapped to something similar with +64 bytes as I didn't have a new OpCode for it. I'll look at it again. Thanks for the info!

Fluxcapacitor
07-19-2012, 11:03 PM
OP_NpcMoveUpdate 5a4c
OP_DeleteSpawn 3c58


Either way, rename spawn is not working. Npcs dont turn into corpses.

rogues
07-20-2012, 04:19 AM
Great work guys, getting close.

PC's don't despawn either. But I may have misunderstood the changes to everquest.h. When you say "PlayerProfile +4096 at 20196" does that mean you add 4096 to each subsequent line until 28568? Probably sounds like a stupid question, but if I just added 4096 and changed the end to 33784 with no other changes then 24292 would have been higher than the next number (was 22320).

Sorry for the stupid question. Got map, got skittles, I'm happy.

fransick
07-20-2012, 04:24 AM
OP_NpcMoveUpdate 5a4c
OP_DeleteSpawn 3c58


Either way, rename spawn is not working. Npcs dont turn into corpses.

Rename spawn is something a little different... it applies to pets etc i.e. "Konarn" gets renamed to "Soandsos Pet." OP_Death is the opcode that turns mobs/players into corpses. That's another of the critical opcodes that I forgot to look for last night. I never left the lobby so missed that one. I believe we are looking for the following to get back to nominal functionality:

OP_Death 5ebc
OP_NpcMoveUpdate 5a4c

Guessing on these two:
OP_RemoveSpawn 4194
OP_DeleteSpawn 3c58

That should hold ya over until we can comb through the logs and rebuild the opcode puzzle.

nicknaks
07-20-2012, 05:49 AM
Thanks for the updates and sorry for the dumbass question.
Unfortunately I would appear to be a little stupid. I can understand the changes to zoneopcodes.xml but the everquest.h changes confuse me a little. I presume I should change these in the /src/ directory of the uncompiled code prior to recompiling but I'm not entirely sure what the "PlayerProfile +4096 at 20196" means .. for example in the curent everquest.h I have:
/*20196*/ unit8_t unknown20196[2124]; // Added 1088 for HOT

Should I modify this to simply increment 20196 by 4096 so getting:

/*24292*/ unit8_t unknown20196[2124]; // Added 1088 for HOT

Then recompile (./configure ; make ; make install)

?

While I'm at it I'd like to be able to help with this stuff in the future. I notice that after logging in a SEQ coredumped I had the log entry:

Warning OP_PlayerProfile (0x537c) (dataLen: 33784) doesn't match: sizeof(charProfileStruct):29688

Now 33784-39688 is 4096 which is what you said needed to be added to PLayerProfile in everquest.h - is this the kind of information that's required to redo the OP Codes and Structs each time we have a patch?


This will at least get you maps. I don't understand where the new spawns come from, so no skittles. 6087 appears to be a new spawn opcode.

zoneopcodes.xml

OP_WearChange 3f55
OP_MovementHistory 268c
OP_PlayerProfile 537c
OP_MobUpdate 5a05

everquest.h

memspell +4 on end
begin cast +2 on end
PlayerProfile +4096 at 20196
SpawnRename +64 on end

Fluxcapacitor
07-20-2012, 05:57 AM
Change /*20196*/ unit8_t unknown20196[2124]; // Added 1088 for HOT to this /*20196*/ uint8_t unknown20196[6220]; // Added 1088 for HoT

I believe the /*xxxxx*/ are just comments. It's not technically necessary, but for your own benefit, you should increment the subsequent comments to properly identify locations within the struct.

The SpawnRename struct did not change, so ignore the "SpawnRename +64 on end" from my previous post. The opcode did change though. fransick has that in a previous post.

fransick
07-20-2012, 06:15 AM
Change /*20196*/ unit8_t unknown20196[2124]; // Added 1088 for HOT to this /*20196*/ uint8_t unknown20196[6220]; // Added 1088 for HoT

I believe the /*xxxxx*/ are just comments. It's not technically necessary, but for your own benefit, you should increment the subsequent comments to properly identify locations within the struct.

Yes, I believe you are correct. I haven't found an easy way for redoing the comments so went through and did it by hand last night:


/*20192*/ uint32_t platinum_shared; // Shared platinum pieces
/*20196*/ uint8_t unknown20196[6220]; // Added 1088 for HoT
/*26416*/ uint32_t expansions; // Bitmask for expansions
/*26420*/ uint8_t unknown22324[12];
/*26432*/ uint32_t autosplit; // 0 = off, 1 = on
/*26436*/ uint8_t unknown22340[16];
/*26452*/ uint16_t zoneId; // see zones.h
/*26454*/ uint16_t zoneInstance; // Instance id
/*26456*/ uint8_t unknown22360[992];
/*27488*/ uint32_t leadAAActive; // 0 = leader AA off, 1 = leader AA on
/*27452*/ uint8_t unknown23356[4];
/*27456*/ uint32_t ldon_guk_points; // Earned GUK points
/*27460*/ uint32_t ldon_mir_points; // Earned MIR points
/*27464*/ uint32_t ldon_mmc_points; // Earned MMC points
/*27468*/ uint32_t ldon_ruj_points; // Earned RUJ points
/*27472*/ uint32_t ldon_tak_points; // Earned TAK points
/*27476*/ uint32_t ldon_avail_points; // Available LDON points
/*27480*/ uint8_t unknown23384[144];
/*27624*/ uint32_t tributeTime; // Time remaining on tribute (millisecs)
/*27628*/ uint32_t careerTribute; // Total favor points for this char
/*27632*/ uint32_t unknown23536; // *** Placeholder
/*27636*/ uint32_t currentTribute; // Current tribute points
/*27640*/ uint32_t unknown23544; // *** Placeholder
/*27644*/ uint32_t tributeActive; // 0 = off, 1=on
/*27648*/ TributeStruct tributes[MAX_TRIBUTES]; // Current tribute loadout
/*27688*/ uint8_t unknown23592[84]; // Added 208 bytes for HoT BETA
/*27772*/ float expGroupLeadAA; // Current group lead exp points
/*27776*/ uint32_t unknown23680;
/*27780*/ float expRaidLeadAA; // Current raid lead AA exp points
/*27784*/ uint32_t unknown23688;
/*27788*/ uint32_t groupLeadAAUnspent; // Unspent group lead AA points
/*27792*/ uint32_t raidLeadAAUnspent; // Unspent raid lead AA points
/*27796*/ uint32_t leadershipAAs[MAX_LEAD_AA]; // Leader AA ranks
/*27924*/ uint8_t unknown23828[128];
/*28052*/ uint32_t airRemaining; // Air supply (seconds)
/*28056*/ uint8_t unknown23960[4608];
/*32664*/ uint32_t expAA; // Exp earned in current AA point
/*32668*/ uint8_t unknown28572[40];
/*32708*/ uint32_t currentRadCrystals; // Current count of radiant crystals
/*32712*/ uint32_t careerRadCrystals; // Total count of radiant crystals ever
/*32716*/ uint32_t currentEbonCrystals; // Current count of ebon crystals
/*32720*/ uint32_t careerEbonCrystals; // Total count of ebon crystals ever
/*32724*/ uint8_t groupAutoconsent; // 0=off, 1=on
/*32725*/ uint8_t raidAutoconsent; // 0=off, 1=on
/*32726*/ uint8_t guildAutoconsent; // 0=off, 1=on
/*32727*/ uint8_t unknown28631[5]; // ***Placeholder (6/29/2005)
/*32732*/ uint32_t showhelm; // 0=no, 1=yes
/*32736*/ uint8_t unknown28640[1048]; // ***Placeholder (2/13/2007)
/*33784*/

As someone who struggles with playerprofile struct changes, how do you figure out that the added bytes fell at 20196 and, say, not at the end of the struct? I look at that packet in the logs and just get overwhelmed at it's size and cannot map the data in it easily to the struct in everquest.h. Is there something I am missing? So want to learn that end of the puzzle!

nicknaks
07-20-2012, 07:42 AM
Thanks Fluxcapacitor that's got me skittles and mob listing which is my main concern. Just a quick question on the other additions to everquest.h - where you say "begin cast +2 on end" as there is currently no addition would that mean putting a new [2] at the end of the last line within the beginCastCode struct so where I currently have the last 2 lines as:

/*0006*/ int16_t param2; // Parameter 2
/*0008*/

I should put [2] on to the end of the /*0008*/ line ?

/*0006*/ int16_t param2; // Parameter 2
/*0008*/ [2]

Regards,

nicknaks

fransick
07-20-2012, 08:24 AM
Thanks Fluxcapacitor that's got me skittles and mob listing which is my main concern. Just a quick question on the other additions to everquest.h - where you say "begin cast +2 on end" as there is currently no addition would that mean putting a new [2] at the end of the last line within the beginCastCode struct so where I currently have the last 2 lines as:

/*0006*/ int16_t param2; // Parameter 2
/*0008*/

I should put [2] on to the end of the /*0008*/ line ?

/*0006*/ int16_t param2; // Parameter 2
/*0008*/ [2]

Regards,

nicknaks

Yes you are on the right track. It would look like:

/*0010*/ uint8_t unknown0010[2]; // *** Placeholder
/*0012*/

I haven't made the other changes to everquest.h Flux mentioned as I find getting/confirming the opcode first ensures I don't go hacking around everquest.h only to find the struct didn't match because I had the wrong opcode. that said, sometimes it's necessary to make struct changes first because without them you get seqfaults a la the playerprofile change this patch.

Fluxcapacitor
07-20-2012, 05:51 PM
Here is a combined list from fransick and me that will get you skittles, maps, select on target, buffs

zoneopcodes.xml

OP_WearChange 3f55
OP_MovementHistory 268c
OP_PlayerProfile 537c
OP_MobUpdate 5a05
OP_MemorizeSpell 2306
OP_SpawnRename 7b71
OP_Death 5ebc
OP_NewZone 51ae
OP_ZoneEntry 6087
OP_TargetMouse 604d
OP_DeleteSpawn 3c58
OP_Consider 2a6d
OP_Action 3237

everquest.h

BeginCast +2 bytes of padding on end


/*
** Spell Action Struct
** Length: 8 Octets
** OpCode: BeginCastCode
*/
struct beginCastStruct
{
/*0000*/ uint16_t spawnId; // Id of who is casting
/*0002*/ uint16_t spellId; // Id of spell
/*0004*/ int16_t param1; // Paramater 1
/*0006*/ int16_t param2; // Paramater 2
/*0008*/ uint8_t unknown0008[2]; // 7-19-2012
/*0010*/
};



PlayerProfile +4096 bytes of padding at 20196


/*20196*/ uint8_t unknown20196[6220]; // Increased 7-19-2012


Thanks to fransick for the opcodes and steering me in the right direction!

rogues
07-21-2012, 09:40 PM
Things are looking good, thanks!!!

fransick
07-22-2012, 08:24 PM
Here's a mostly complete zoneopcodes.xml if anyone would be so kind to test it out. If it passes muster, I'll set about creating a new tarball with all the recent changes.


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE seqopcodes SYSTEM "seqopcodes.dtd">
<seqopcodes>

<!-- Critical opcodes used directly by ShowEQ -->
<opcode id="5a4c" name="OP_NpcMoveUpdate" updated="07/18/12">
<comment>Position updates</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="268c" name="OP_MovementHistory" updated="07/18/12">
<comment>Movement data... rewind info?</comment>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="3c58" name="OP_DeleteSpawn" updated="07/18/12">
<comment>DeleteSpawnCode</comment>
<payload dir="both" typename="deleteSpawnStruct" sizechecktype="match"/>
</opcode>
<opcode id="6087" name="OP_ZoneEntry" updated="07/18/12">
<comment>ZoneEntryCode</comment>
<payload dir="client" typename="ClientZoneEntryStruct" sizechecktype="match"/>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="3cd6" name="OP_GuildMOTD" updated="07/18/12">
<comment>GuildMOTD</comment>
<payload dir="server" typename="guildMOTDStruct" sizechecktype="none"/>
</opcode>
<opcode id="321a" name="OP_InspectAnswer" updated="07/18/12">
<comment>InspectDataCode</comment>
<payload dir="both" typename="inspectDataStruct" sizechecktype="match"/>
</opcode>
<opcode id="604d" name="OP_TargetMouse" updated="07/18/12">
<comment>Targeting a person - old ClientTargetCode</comment>
<payload dir="both" typename="clientTargetStruct" sizechecktype="match"/>
</opcode>
<opcode id="6f9d" name="OP_Shroud" updated="07/18/12">
<comment>Server putting players into shroud form</comment>
<payload dir="server" typename="spawnShroudSelf" sizechecktype="none"/>
</opcode>
<opcode id="0479" name="OP_GroupInvite" updated="07/18/12">
<payload dir="both" typename="groupInviteStruct" sizechecktype="none"/>
<comment>You invite someone while ungrouped or get invited by someone ungrouped </comment>
</opcode>
<opcode id="083b" name="OP_GroupInvite2" updated="07/18/12">
<payload dir="client" typename="groupInviteStruct" sizechecktype="match"/>
<comment>You're inviting someone and you are grouped or get invited by a group</comment>
</opcode>
<opcode id="9999" name="OP_GroupFollow" updated="07/18/12">
<payload dir="server" typename="groupFollowStruct" sizechecktype="match"/>
<comment>You join a group or player joins group</comment>
</opcode>
<opcode id="367b" name="OP_GroupFollow2" updated="07/18/12">
<payload dir="server" typename="groupFollowStruct" sizechecktype="match"/>
<comment>Player joins your group</comment>
</opcode>
<opcode id="6364" name="OP_GroupDisband" updated="07/18/12">
<comment>You disband from group</comment>
<payload dir="server" typename="groupDisbandStruct" sizechecktype="match"/>
</opcode>
<opcode id="367f" name="OP_GroupDisband2" updated="07/18/12">
<comment>Other disbands from group</comment>
<payload dir="server" typename="groupDisbandStruct" sizechecktype="match"/>
</opcode>
<opcode id="6a9b" name="OP_GroupLeader" updated="07/18/12">
<comment>Group leader change</comment>
<payload dir="server" typename="groupLeaderChangeStruct" sizechecktype="match"/>
</opcode>
<opcode id="132f" name="OP_GroupCancelInvite" updated="07/18/12">
<payload dir="both" typename="groupDeclineStruct" sizechecktype="match"/>
<comment>Declining to join a group</comment>
</opcode>
<opcode id="6d1f" name="OP_DzSwitchInfo" updated="07/18/12">
<comment>Expedition compass etc</comment>
<payload dir="server" typename="dzSwitchInfo" sizechecktype="none"/>
</opcode>
<opcode id="2edd" name="OP_DzInfo" updated="07/18/12">
<comment>Expedition Information</comment>
<payload dir="server" typename="dzInfo" sizechecktype="match"/>
</opcode>
<opcode id="0142" name="OP_FormattedMessage" updated="07/18/12">
<comment>FormattedMessageCode</comment>
<payload dir="server" typename="formattedMessageStruct" sizechecktype="none"/>
</opcode>
<opcode id="3604" name="OP_SpawnDoor" updated="07/18/12">
<comment>DoorSpawnsCode</comment>
<payload dir="server" typename="doorStruct" sizechecktype="modulus"/>
</opcode>
<opcode id="0736" name="OP_AAExpUpdate" updated="07/18/12">
<comment>Receiving AA experience. Also when percent to AA changes.</comment>
<payload dir="server" typename="altExpUpdateStruct" sizechecktype="match"/>
</opcode>
<opcode id="0c2b" name="OP_HPUpdate" updated="07/18/12">
<comment>NpcHpUpdateCode Update HP % of a PC or NPC</comment>
<payload dir="both" typename="hpNpcUpdateStruct" sizechecktype="match"/>
</opcode>
<opcode id="49e7" name="OP_GuildMemberUpdate" updated="07/18/12">
<comment>Info regarding guild members</comment>
<payload dir="server" typename="GuildMemberUpdate" sizechecktype="match"/>
</opcode>
<opcode id="7b71" name="OP_SpawnRename" updated="07/18/12">
<comment>Spawns getting renamed after initial NewSpawn</comment>
<payload dir="server" typename="spawnRenameStruct" sizechecktype="match"/>
</opcode>
<opcode id="1f87" name="OP_SwapSpell" updated="07/18/12">
<comment>TradeSpellBookSlotsCode</comment>
<payload dir="both" typename="tradeSpellBookSlotsStruct" sizechecktype="match"/>
</opcode>
<opcode id="50d0" name="OP_SimpleMessage" updated="07/18/12">
<comment>SimpleMessageCode</comment>
<payload dir="server" typename="simpleMessageStruct" sizechecktype="match"/>
</opcode>
<opcode id="47ea" name="OP_SpecialMesg" updated="07/18/12">
<comment>Communicate textual info to client including hail responses etc</comment>
<payload dir="server" typename="specialMessageStruct" sizechecktype="none"/>
</opcode>
<opcode id="2dc6" name="OP_RandomReq" updated="07/18/12">
<comment>RandomReqCode</comment>
<payload dir="client" typename="randomReqStruct" sizechecktype="match"/>
</opcode>
<opcode id="440f" name="OP_ConsentResponse" updated="07/18/12">
<comment>Server replying with consent information after /consent</comment>
<payload dir="server" typename="consentResponseStruct" sizechecktype="match"/>
</opcode>
<opcode id="7e45" name="OP_DenyResponse" updated="07/18/12">
<comment>Server replying with deny information after /deny</comment>
<payload dir="server" typename="consentResponseStruct" sizechecktype="match"/>
</opcode>
<opcode id="0643" name="OP_BazaarSearch" updated="07/18/12">
<payload dir="client" typename="bazaarSearchQueryStruct" sizechecktype="none"/>
<payload dir="server" typename="bazaarSearchResponseStruct" sizechecktype="modulus"/>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
<comment>Bazaar search tool</comment>
</opcode>
<opcode id="3f55" name="OP_SpawnUpdate" updated="07/18/12">
<comment>SpawnUpdateCode</comment>
<payload dir="both" typename="SpawnUpdateStruct" sizechecktype="match"/>
</opcode>
<opcode id="3d00" name="OP_Stamina" updated="06/27/12">
<comment>Server updating on hunger/thirst</comment>
<payload dir="server" typename="staminaStruct" sizechecktype="match"/>
</opcode>
<opcode id="2a6d" name="OP_Consider" updated="07/18/12">
<comment>ConsiderCode</comment>
<payload dir="both" typename="considerStruct" sizechecktype="match"/>
</opcode>
<opcode id="51ae" name="OP_NewZone" updated="07/18/12">
<comment>NewZoneCode</comment>
<payload dir="server" typename="newZoneStruct" sizechecktype="match"/>
</opcode>
<opcode id="1436" name="OP_GroundSpawn" updated="07/18/12">
<comment>MakeDropCode</comment>
<payload dir="server" typename="makeDropStruct" sizechecktype="none"/>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="4194" name="OP_RemoveSpawn" updated="07/18/12">
<comment>Remove spawn from zone</comment>
<payload dir="both" typename="removeSpawnStruct" sizechecktype="none"/>
</opcode>
<opcode id="5ebc" name="OP_Death" updated="07/18/12">
<comment>old NewCorpseCode</comment>
<payload dir="server" typename="newCorpseStruct" sizechecktype="match"/>
</opcode>
<opcode id="6618" name="OP_ClickObject" updated="07/18/12">
<comment>Items dropped on the ground</comment>
<payload dir="both" typename="remDropStruct" sizechecktype="match"/>
</opcode>
<opcode id="3237" name="OP_Action" updated="07/18/12">
<comment>Spells cast etc</comment>
<payload dir="both" typename="actionStruct" sizechecktype="match"/>
<payload dir="both" typename="actionAltStruct" sizechecktype="match"/>
</opcode>
<opcode id="45d6" name="OP_Action2" updated="07/18/12">
<comment>Combat actions i.e. bash, kick etc</comment>
<payload dir="both" typename="action2Struct" sizechecktype="match"/>
</opcode>
<opcode id="2b9d" name="OP_Illusion" updated="07/18/12">
<comment>Spawn being illusioned (changing forms)</comment>
<payload dir="both" typename="spawnIllusionStruct" sizechecktype="match"/>
</opcode>
<opcode id="569e" name="OP_BuffFadeMsg" updated="07/18/12">
<comment>SpellFadeCode</comment>
<payload dir="both" typename="spellFadedStruct" sizechecktype="none"/>
</opcode>
<opcode id="1b8a" name="OP_CastSpell" updated="07/18/12">
<comment>StartCastCode</comment>
<payload dir="both" typename="startCastStruct" sizechecktype="match"/>
</opcode>
<opcode id="2306" name="OP_MemorizeSpell" updated="07/18/12">
<comment>MemSpellCode</comment>
<payload dir="both" typename="memSpellStruct" sizechecktype="match"/>
</opcode>
<opcode id="1044" name="OP_Emote" updated="07/18//12">
<comment>EmoteTextCode</comment>
<payload dir="both" typename="emoteTextStruct" sizechecktype="none"/>
</opcode>
<opcode id="77a2" name="OP_RandomReply" updated="07/18/12">
<comment>RandomCode</comment>
<payload dir="server" typename="randomStruct" sizechecktype="match"/>
</opcode>
<opcode id="2917" name="OP_ManaChange" updated="07/18/12">
<comment>Mana change. Bards send this up with no size. Casters receive this for mana updates.</comment>
<payload dir="server" typename="manaDecrementStruct" sizechecktype="match"/>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="0cf7" name="OP_MoneyOnCorpse" updated="07/18/12">
<comment>MoneyOnCorpseCode</comment>
<payload dir="server" typename="moneyOnCorpseStruct" sizechecktype="match"/>
</opcode>
<opcode id="537c" name="OP_PlayerProfile" updated="07/18/12">
<comment>CharProfileCode</comment>
<payload dir="server" typename="charProfileStruct" sizechecktype="match"/>
</opcode>
<opcode id="6015" name="OP_TimeOfDay" updated="07/18/12">
<comment>TimeOfDayCode</comment>
<payload dir="server" typename="timeOfDayStruct" sizechecktype="match"/>
</opcode>
<opcode id="7062" name="OP_ClientUpdate" updated="07/18/12">
<comment>Position updates</comment>
<payload dir="server" typename="playerSpawnPosStruct" sizechecktype="match"/>
<payload dir="both" typename="playerSelfPosStruct" sizechecktype="match"/>
</opcode>
<opcode id="0d5a" name="OP_BeginCast" updated="07/18/12">
<comment>BeginCastCode</comment>
<payload dir="both" typename="beginCastStruct" sizechecktype="match"/>
</opcode>
<opcode id="2e79" name="OP_CommonMessage" updated="07/18/12">
<comment>ChannelMessageCode</comment>
<payload dir="both" typename="channelMessageStruct" sizechecktype="none"/>
</opcode>
<opcode id="1191" name="OP_SkillUpdate" updated="07/18/12">
<comment>Skill up code</comment>
<payload dir="server" typename="skillIncStruct" sizechecktype="match"/>
</opcode>
<opcode id="47d3" name="OP_SpawnAppearance" updated="07/18/12">
<comment>SpawnAppearanceCode</comment>
<payload dir="both" typename="spawnAppearanceStruct" sizechecktype="match"/>
</opcode>
<opcode id="0000" name="OP_ExpUpdate" updated="07/18/12">
<comment>ExpUpdateCode - opcode looks to be 71eb as of 07/18/12 but that value causes seg faults for some reason</comment>
<payload dir="server" typename="expUpdateStruct" sizechecktype="match"/>
</opcode>
<opcode id="221a" name="OP_LevelUpdate" updated="07/18/12">
<comment>LevelUpUpdateCode</comment>
<payload dir="server" typename="levelUpUpdateStruct" sizechecktype="match"/>
</opcode>
<opcode id="429b" name="OP_LeaderExpUpdate" updated="07/18/12">
<comment>Leadership AA Exp Update</comment>
<payload dir="server" typename="leadExpUpdateStruct" sizechecktype="match"/>
</opcode>
<opcode id="5a05" name="OP_MobUpdate" updated="07/18/12">
<comment>MobUpdateCode</comment>
<payload dir="both" typename="spawnPositionUpdate" sizechecktype="match"/>
</opcode>
<opcode id="37a7" name="OP_Trader" updated="07/18/12">
<comment>PC's turning trader on and off</comment>
<payload dir="server" typename="bazaarTraderRequest" sizechecktype="match"/>
</opcode>
<opcode id="6bb9" name="OP_Consent" updated="07/18/12">
<comment>/consent someone</comment>
<payload dir="client" typename="consentRequestStruct" sizechecktype="none"/>
</opcode>
<opcode id="19a8" name="OP_ConsentDeny" updated="07/18/12">
<comment>/deny someone</comment>
<payload dir="client" typename="consentRequestStruct" sizechecktype="none"/>
</opcode>
<opcode id="38b0" name="OP_ItemPacket" updated="07/18/12">
<comment>ItemCode</comment>
<payload dir="server" typename="itemPacketStruct" sizechecktype="none"/>
</opcode>
<opcode id="0322" name="OP_ItemLinkResponse" updated="07/18/12">
<comment>ItemInfoCode</comment>
<payload dir="server" typename="itemInfoStruct" sizechecktype="none"/>
<payload dir="client" typename="itemInfoReqStruct" sizechecktype="none"/>
</opcode>
<opcode id="43ac" name="OP_EnvDamage" updated="07/18/12">
<comment>Environmental Damage</comment>
<payload dir="client" typename="environmentDamageStruct" sizechecktype="match"/>
</opcode>
<opcode id="70ec" name="OP_SetRunMode" updated="07/28/12">
<comment>old cRunToggleCode</comment>
<payload dir="client" typename="cRunToggleStruct" sizechecktype="match"/>
</opcode>
<opcode id="0000" name="OP_WearChange" updated="03/23/12">
<comment>Armor changes or give a pet a weapon (model changes)</comment>
<payload dir="both" typename="SpawnUpdateStruct" sizechecktype="match"/>
</opcode>

<!-- Not necessary for SEQ to run but here to name packets in logs. -->
<opcode id="5d32" name="OP_GroupUpdate" updated="07/18/12">
<comment>Group member names - Variable length</comment>
<payload dir="both" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="3ba3" name="OP_UIUpdate" updated="07/18/12">
<comment>Seems to be sent to handle a variety of UI updates - Variable length</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="2cc9" name="OP_GroupMemberList" updated="07/18/12">
<comment>List of group members - 187 bytes but probably variable</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="5f8d" name="OP_GuildMemberList" updated="07/18/12">
<comment>List of guild members - Variable length</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="5f51" name="OP_ManaUpdate" updated="07/18/12">
<comment>Mana Update opcode - 10 bytes</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="399f" name="OP_EndUpdate" updated="07/18/12">
<comment>Endurance Update opcode - 10 bytes</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="12db" name="OP_Marketplace" updated="06/27/12">
<comment>Marketplace data - Guessing variable length</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="2a8e" name="OP_MarketplaceSelect" updated="07/18/12">
<comment>Sent when highlighting an item in Marketplace - Variable length</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="7f72" name="OP_DzMembers" updated="07/18/12">
<comment>Expedition Members - Variable length</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="0d5f" name="OP_Campfire" updated="06/27/12">
<comment>Fellowship campfire information - 1076 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="162d" name="OP_SelectCampfire" updated="07/18/12">
<comment>Fellowship campfire Choices - Guessing variable length</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="7866" name="OP_Claims" updated="07/18/12">
<comment>Contents of claims window - Guessing variable length</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="4dd9" name="OP_VoiceChat" updated="07/18/12">
<comment>Voice chat server info - Variable length (Data sent when joining group,raid etc)</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="30fa" name="OP_PollQuestions" updated="07/18/12">
<comment>SOE in-game player poll questions - Variable length</comment>
<payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="2bba" name="OP_PollResponses" updated="07/18/12">
<comment>Poll response choices - 1004 bytes</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="5fa8" name="OP_ShroudProgression" updated="07/18/12">
<comment>Unlocked shrouds - 244 bytes</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="2071" name="OP_ShroudTemplates" updated="07/18/12">
<comment>Shroud templates to choose from on shroud NPC - 19008 bytes</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="322a" name="OP_Fellowship" updated="07/18/12">
<comment>Fellowship information - 2552 bytes</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="654f" name="OP_ExpandedGuildInfo" updated="07/18/12">
<comment>Guild ranks and other misc guild data - Variable length</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="5933" name="OP_GuildBank" updated="07/18/12">
<comment>Guild bank contents - Guessing variable length</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="3a75" name="OP_OpenTradeskillContainer" updated="07/18/12">
<comment>Opens forge, kiln etc - 92 Bytes</comment>
<payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="3ec7" name="OP_TradeskillRecipes" updated="07/18/12">
<comment>Learned recipes - 84 Bytes</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="0000" name="OP_TradeSkillCombine" updated="06/27/12">
<comment>Tradeskill combine using new tradeskill window - 40 Bytes</comment>
<payload dir="both" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="4212" name="OP_TradeSkillCombineOld" updated="06/27/12">
<comment>Tradeskill combine using old tradeskill window - 24 Bytes</comment>
<payload dir="both" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="41b5" name="OP_ItemPlayerPacket" updated="07/18/12">
<comment>Inventory/bank items coming over during zone - Variable length</comment>
<payload dir="both" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="2d25" name="OP_TaskDescription" updated="07/18/12">
<comment>Task descriptions coming down for task window - Variable length</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="2ac1" name="OP_TaskActivity" updated="07/18/12">
<comment>Task activity descriptions coming down for task window - Variable length</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="72ad" name="OP_CompletedTasks" updated="07/18/12">
<comment>Task history for task window - Variable length</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="766f" name="OP_CustomTitles" updated="07/18/12">
<comment>List of available titles - 1520 bytes</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="7f56" name="OP_Animation" updated="07/18/12">
<comment>Combat animation, emote animations etc - 4 bytes</comment>
<payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="4502" name="OP_WhoAllRequest" updated="07/18/12">
<comment>WhoAllReqCode - 156 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="2e67" name="OP_WhoAllResponse" updated="07/18/12">
<comment>WhoAllOutputCode - Variable length</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="570c" name="OP_InspectRequest" updated="07/18/12">
<comment>InspectRequestCode - 8 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="2444" name="OP_GetGuildMOTD" updated="07/18/12">
<comment>Request guildMOTD - 648 Bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="1031" name="OP_TradeRequest" updated="07/18/12">
<comment>You request trade session - 8 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="4981" name="OP_TradeRequest2" updated="07/18/12">
<comment>Someone requests a trade session with you or trade is cancelled - 8 bytes</comment>
<payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="442b" name="OP_TradeDeny" updated="07/18/12">
<comment>Target not ready to trade - 12 bytes</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="3aff" name="OP_TradeRequestAck" updated="07/18/12">
<comment>Trade request recipient is acknowledging they are able to trade - 8 bytes</comment>
<payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="4ffe" name="OP_CancelTrade" updated="07/18/12">
<comment>Cancel a trade window - 0 bytes</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="3d86" name="OP_FinishTrade" updated="07/18/12">
<comment>Trade is over - 12 bytes</comment>
<payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="0ed5" name="OP_TradeCoins" updated="07/18/12">
<comment>You put coins put in a trade window - 20 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="3c27" name="OP_TradeCoins2" updated="07/18/12">
<comment>Someone else puts coins put in your trade window - 12 bytes</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="3ff6" name="OP_TradeAcceptClick" updated="07/18/12">
<comment>One side clicks Accept on the trade 8 bytes</comment>
<payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="3c66" name="OP_ItemLinkClick" updated="07/18/12">
<comment>Click on itemlinks - 48 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="49b8" name="OP_EndLootRequest" updated="07/18/12">
<comment>DoneLootingCode - 4 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="28c8" name="OP_LootItem" updated="07/18/12">
<comment>Loot item from corpse - 20 bytes</comment>
<payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="47ae" name="OP_Track" updated="06/27/12">
<comment>Tracking data - Variable length</comment>
<payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="0000" name="OP_TraderShop" updated="06/27/12">
<comment>OpenTraderCode right-click on a trader in bazaar - 16 bytes</comment>
<payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="4885" name="OP_AutoAttack" updated="07/18/12">
<comment>Attack on/off - 4 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="73d6" name="OP_AutoAttack2" updated="07/18/12">
<comment>Attack on/off appears to be same as OP_AutoAttack - 4 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="7b05" name="OP_ClickDoor" updated="07/18/12">
<comment>DoorOpenCode click request from client - 16 bytes</comment>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="3969" name="OP_MoveDoor" updated="06/27/12">
<comment>DoorClickCode response from server - 2 bytes</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="7452" name="OP_MoveItem" updated="07/18/12">
<comment>Client moving an item from one slot to another - 28 bytes</comment>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="0507" name="OP_TraderBuy" updated="06/27/12">
<comment>buy from a trader in bazaar</comment>
</opcode>
<opcode id="00bc" name="OP_LootRequest" updated="06/27/12">
<comment>LootCorpseCode - 4 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="243b" name="OP_Jump" updated="07/18/12">
<comment>JumpCode - 0 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="1318" name="OP_TGB" updated="07/18/12">
<comment>Client telling server to set targetgroupbuff - 4 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="45d7" name="OP_Lockouts" updated="06/27/12">
<comment>Client requesting lockouts - 0 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="0bd0" name="OP_WelcomeScreenURL" updated="06/27/12">
<comment>URLs for the welcome screen window - Variable length</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="1fbd" name="OP_RaidInvite" updated="07/18/12">
<comment>Client side raid invite requests 140 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="2bad" name="OP_RaidJoin" updated="07/18/12">
<comment>Server side raid information - Variable length</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="1ebb" name="OP_Feedback" updated="06/27/12">
<comment>Client sending feedback to server - 1148 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="5b0b" name="OP_GuildsList" updated="03/23/12">
<comment>Listing of all guilds</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="5fb8" name="OP_LFGGetMatchesRequest" updated="07/18/12">
<comment>LFG/LFP client request - 16 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="1890" name="OP_LFGGetMatchesResponse" updated="07/18/12">
<comment>LFG/LFP server response - Variable length</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="069e" name="OP_MercenaryList" updated="07/18/12">
<comment>Listing of hired mercenaries - 427 bytes
<payload dir="server" typename="unknown" sizechecktype="none"/></comment>
</opcode>
<opcode id="226b" name="OP_ClickInventory" updated="07/18/12">
<comment>Click items from inventory or armor - 16 bytes 5th byte is Slot ID</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="178c" name="OP_ClickInventoryAck" updated="07/18/12">
<comment>Server acknowledges click from inventory or armor - 20 bytes</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="3e50" name="OP_BuffWindow" updated="07/18/12">
<comment>Changes to buff window or song window - 100 bytes</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="5bad" name="OP_ClickBuffOff" updated="07/18/12">
<comment>Client clicks off buff - 8 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="7961" name="OP_HouseAddress" updated="07/18/12">
<comment>House and guildhall address information - Variable length</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="7cbe" name="OP_HouseContents" updated="07/18/12">
<comment>Server sending house information and contents - variable length</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="3d24" name="OP_FriendsList" updated="06/27/12">
<comment>Server sending friends list contents - variable length</comment>
<payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="4552" name="OP_Rewards" updated="07/18/12">
<comment>Server sending pending rewards - variable length</comment>
<payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="000c" name="OP_FTPNags" updated="7/18/12">
<comment>Free to play nags and other data - 1852 bytes</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="50c1" name="OP_Find" updated="07/18/12">
<comment>Find window data - 112 bytes</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="7092" name="OP_ConsiderCorpse" updated="07/18/12">
<comment>ConCorpseCode - 20 bytes</comment>
<payload dir="client" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="9ca5" name="OP_TributeUpdate" updated="07/18/12">
<comment>Tribute and trophy skills - Variable length</comment>
</opcode>

<!-- Below are used to help make sense of the logs when searching for opcodes
Using these marks unknown opcodes in logs for easier reading -->
<opcode id="2018" name="OP_Unknown1" updated="07/18/12">
<comment>3 byte opcode that spam logs. Marked here to make reading logs easier</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="3f49" name="OP_Unknown2" updated="07/18/12">
<comment>3 byte opcode that spam logs. Marked here to make reading logs easier</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="7fd2" name="OP_Unknown3" updated="07/18/12">
<comment>3 byte opcode that spam logs. Marked here to make reading logs easier</comment>
<payload dir="server" typename="unknown" sizechecktype="none"/>
</opcode>

<!-- Below are unverified -->
<opcode id="0000" name="OP_Buff" updated="11/15/11">
<comment>old BuffDropCode</comment>
<payload dir="both" typename="buffStruct" sizechecktype="match"/>
</opcode>
<opcode id="0000" name="OP_ZoneChange" updated="04/18/11">
<comment>old ZoneChangeCode</comment>
<payload dir="both" typename="zoneChangeStruct" sizechecktype="match"/>
</opcode>
<opcode id="0000" name="OP_CorpseLocResponse" updated="06/12/09">
<comment>old CorpseLocCode:</comment>
<payload dir="server" typename="corpseLocStruct" sizechecktype="match"/>
</opcode>
<opcode id="0000" name="OP_SendZonePoints" updated="10/15/10">
<comment>Coords in a zone that will port you to another zone</comment>
<payload dir="server" typename="zonePointsStruct" sizechecktype="none"/>
</opcode>
<opcode id="24D8" name="OP_RequestZoneChange" updated="10/20/07">
<comment>Send by server when a click causes zone. Also, origin</comment>
<payload dir="server" typename="requestZoneChangeStruct" sizechecktype="match"/>
</opcode>
<opcode id="0000" name="OP_Logout" updated="10/21/09">
<comment></comment>
<payload dir="server" typename="none" sizechecktype="match"/>
</opcode>
<opcode id="097f" name="OP_WelcomeScreenTitle" updated="05/16/11">
<comment></comment>
</opcode>
<opcode id="0000" name="OP_VeteranRewards" update="04/18/11">
<comment></comment>
</opcode>
<opcode id="3B85" name="OP_SendAATable" updated="08/12/09">
<comment></comment>
</opcode>
<opcode id="5832" name="OP_SendAAStats" updated="08/12/09">
<comment></comment>
</opcode>
<opcode id="4d38" name="OP_AckPacket" updated="03/14/07">
<comment>Appears to be generic ack at the presentation level</comment>
</opcode>
<opcode id="70a5" name="OP_Weather" updated="03/14/07">
<comment>old WeatherCode</comment>
</opcode>
<opcode id="5417" name="OP_ReqNewZone" updated="03/14/07">
<comment>Client requesting NewZone_Struct</comment>
</opcode>
<opcode id="45d2" name="OP_ReqClientSpawn" updated="03/14/07">
<comment>Client requesting spawn data</comment>
</opcode>
<opcode id="0000" name="OP_SendExpZonein" updated="03/14/07">
<comment>Both directions. Negotiating sending of exp info.</comment>
</opcode>
<opcode id="0a4f" name="OP_AAAction" updated="03/14/07">
<comment>Used for changing percent, buying? and activating skills</comment>
</opcode>
<opcode id="7038" name="OP_SetServerFilter" updated="03/14/07">
<comment>Client telling server /filter information</comment>
</opcode>
<opcode id="3854" name="OP_ClientReady" updated="03/14/07">
<comment></comment>
</opcode>
<opcode id="6774" name="OP_GuildTributeStatus" updated="03/14/07">
<comment>Guild tribute stats send on zone</comment>
</opcode>
<opcode id="28c1" name="OP_GuildTributeInfo" updated="06/13/06">
<comment>Guild tribute loadout, only if on</comment>
</opcode>
<opcode id="063b" name="OP_RespawnWindow" updated="03/14/07">
<comment>Server telling client enough to populate the respawn window when you die</comment>
</opcode>
<opcode id="314f" name="OP_InitialMobHealth" updated="06/27/12">
<comment>Initial health sent when a player clicks on the mob. Subsequent updated will be OP_MobHealth</comment>
</opcode>
<opcode id="311a" name="OP_MobHealth" updated="03/14/07">
<comment>health sent when a player clicks on the mob</comment>
</opcode>
<opcode id="16c1" name="OP_DeltaCheck" updated="03/14/07">
<comment>Client sending server delta information.</comment>
</opcode>
<opcode id="61ac" name="OP_LoadSpellSet" updated="02/13/07">
<comment>/mem spellsetname</comment>
</opcode>
<opcode id="00de" name="OP_Dye" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="31c2" name="OP_Consume" updated="12/07/05">
<comment>Client force feeding food/drink</comment>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="13e7" name="OP_Begging" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="68ac" name="OP_LFGCommand" updated="10/27/05">
<comment>old LFGReqCode</comment>
</opcode>
<opcode id="7ac3" name="OP_Bug" updated="10/27/05">
<comment>/bug</comment>
</opcode>
<opcode id="5c06" name="OP_Save" updated="04/19/06">
<comment>Client asking server to save user state</comment>
</opcode>
<opcode id="2eeb" name="OP_Camp" updated="02/13/07">
<comment>old cStartCampingCode</comment>
</opcode>
<opcode id="fe13" name="OP_ShopPlayerSell" updated="10/27/05">
<comment>old SellItemCode</comment>
</opcode>
<opcode id="10a1" name="OP_PetCommands" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="1103" name="OP_SaveOnZoneReq" updated="03/14/07">
<comment></comment>
</opcode>
<opcode id="7e03" name="OP_ShopEnd" updated="10/27/05">
<comment>old CloseVendorCode</comment>
<payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="5666" name="OP_SenseTraps" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="05ac" name="OP_SenseHeading" updated="10/27/05">
<comment>old cSenseHeadingCode</comment>
</opcode>
<opcode id="528F" name="OP_LootComplete" updated="12/07/05">
<comment>old sDoneLootingCode</comment>
</opcode>
<opcode id="10A6" name="OP_Split" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="4668" name="OP_Surname" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="45f9" name="OP_ShopRequest" updated="10/27/05">
<comment>old OpenVendorCode</comment>
<payload dir="both" typename="unknown" sizechecktype="none"/>
</opcode>
<opcode id="0f8e" name="OP_FaceChange" updated="10/27/05">
<comment>/face</comment>
</opcode>
<opcode id="4312" name="OP_Sneak" updated="06/29/05">
<comment>Clicked sneak</comment>
</opcode>
<opcode id="6f64" name="OP_Hide" updated="06/29/05">
<comment></comment>
</opcode>
<opcode id="34e8" name="OP_DisarmTraps" updated="05/11/05">
<comment>Clicked disarm traps</comment>
</opcode>
<opcode id="7c33" name="OP_Forage" updated="10/27/05">
<comment>old ForageCode</comment>
</opcode>
<opcode id="4298" name="OP_BoardBoat" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="67c9" name="OP_LeaveBoat" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="35a6" name="OP_LFPGetMatchesRequest" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="6980" name="OP_GMKill" updated="10/27/05">
<comment>GM /kill - Insta kill mob/pc</comment>
</opcode>
<opcode id="17a2" name="OP_GuildPublicNote" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="61ef" name="OP_YellForHelp" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="0af6" name="OP_ShopPlayerBuy" updated="05/11/05">
<comment>old BuyItemCode</comment>
</opcode>
<opcode id="6f82" name="OP_LFPCommand" updated="10/27/05">
<comment>looking for players</comment>
</opcode>
<opcode id="3838" name="OP_ConfirmDelete" updated="10/27/05">
<comment>Client sends this to server to confirm op_deletespawn</comment>
</opcode>
<opcode id="0375" name="OP_Report" updated="06/29/05">
<comment></comment>
</opcode>
<opcode id="40b6" name="OP_TargetCommand" updated="02/13/07">
<comment>Target user</comment>
</opcode>
<opcode id="212d" name="OP_LFPGetMatchesResponse" updated="02/13/07">
<comment></comment>
</opcode>
<opcode id="1089" name="OP_FindPersonRequest" updated="02/13/07">
<comment>Control-F Find</comment>
</opcode>
<opcode id="71b1" name="OP_FindResponse" updated="02/13/07">
<comment>Response to control-F</comment>
</opcode>
<opcode id="23a1" name="OP_GMLastName" updated="10/27/05">
<comment>GM /lastname - Change user lastname</comment>
</opcode>
<opcode id="14ef" name="OP_Mend" updated="10/27/05">
<comment></comment>
</opcode>
<opcode id="1ffa" name="OP_MendHPUpdate" updated="05/11/05">
<comment></comment>
</opcode>
<opcode id="4775" name="OP_TributeInfo" updated="02/13/07">
<comment>Tribute information</comment>
</opcode>

<!-- OLD OPCODES. These haven't been mapped in a post 1/26/2005 world. If you
can find any of these in the current stream, please update them and let
us know!

<opcode id="1900" name="OP_ZoneSpawns" updated="05/29/08">
<comment>old ZoneSpawnsCode</comment>
<payload dir="server" typename="spawnStruct" sizechecktype="none"/>
</opcode>
<opcode id="0020" name="OP_GMServers" updated="05/26/04">
<comment>GM /servers - ?</comment>
</opcode>
<opcode id="790e" name="OP_GMKick" updated="01/26/05">
<comment>GM /kick - Boot player</comment>
</opcode>
<opcode id="0068" name="OP_Petition" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0074" name="OP_GMBecomeNPC" updated="05/26/04">
<comment>GM /becomenpc - Become an NPC</comment>
</opcode>
<opcode id="0076" name="OP_PetitionCheckout" updated="05/26/04">
<comment>Petition Checkout</comment>
</opcode>
<opcode id="007e" name="OP_PetitionCheckIn" updated="05/26/04">
<comment>Petition Checkin</comment>
</opcode>
<opcode id="688f" name="OP_PetitionResolve" updated="05/11/05">
<comment>Client Petition Resolve Request</comment>
</opcode>
<opcode id="0165" name="OP_DeletePetition" updated="01/26/05">
<comment>Player /deletepetition</comment>
</opcode>
<opcode id="0082" name="OP_PetitionQue" updated="05/26/04">
<comment>GM looking at petitions</comment>
</opcode>
<opcode id="0090" name="OP_PetitionUnCheckout" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0097" name="OP_GMSearchCorpse" updated="05/26/04">
<comment>GM /searchcorpse - Search all zones for named corpse</comment>
</opcode>
<opcode id="009a" name="OP_GuildPeace" updated="05/26/04">
<comment>/guildpeace</comment>
</opcode>
<opcode id="00a4" name="OP_GuildWar" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="00a7" name="OP_GuildLeader" updated="05/26/04">
<comment>/guildleader</comment>
</opcode>
<opcode id="00b6" name="OP_ApplyPoison" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="00da" name="OP_GMInquire" updated="05/26/04">
<comment>GM /inquire - Search soulmark data</comment>
</opcode>
<opcode id="00dc" name="OP_GMSoulmark" updated="05/26/04">
<comment>GM /praise /warn - Add soulmark comment to user file</comment>
</opcode>
<opcode id="00de" name="OP_GMHideMe" updated="05/26/04">
<comment>GM /hideme - Remove self from spawn lists and make invis</comment>
</opcode>
<opcode id="00ef" name="OP_SafePoint" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="010b" name="OP_GMGoto" updated="05/26/04">
<comment>GM /goto - Transport to another loc</comment>
</opcode>
<opcode id="012d" name="OP_BindWound" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0132" name="OP_GuildRemove" updated="05/26/04">
<comment>/guildremove</comment>
</opcode>
<opcode id="013b" name="OP_GMTraining" updated="05/26/04">
<comment>old OpenGMCode</comment>
<payload dir="both" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="013c" name="OP_GMEndTraining" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0152" name="OP_MoveCash" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0160" name="OP_Taunt" updated="05/26/04">
<comment>old ConsumeCode</comment>
</opcode>
<opcode id="016c" name="OP_Stun" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0175" name="OP_GMTrainSkill" updated="05/26/04">
<comment>old SkillTrainCode</comment>
</opcode>
<opcode id="0178" name="OP_GMEndTrainingResponse" updated="05/26/04">
<comment>old CloseGMCode</comment>
<payload dir="both" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="0183" name="OP_GMZoneRequest" updated="05/26/04">
<comment>/zone</comment>
</opcode>
<opcode id="018f" name="OP_BecomePK" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0197" name="OP_SetDataRate" updated="05/26/04">
<comment>Client sending datarate.txt value</comment>
</opcode>
<opcode id="0198" name="OP_GMDelCorpse" updated="05/26/04">
<comment>/delcorpse</comment>
</opcode>
<opcode id="0199" name="OP_Sacrifice" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="01af" name="OP_GMApproval" updated="05/26/04">
<comment>GM /approval - Name approval duty?</comment>
</opcode>
<opcode id="01b2" name="OP_GMToggle" updated="05/26/04">
<comment>GM /toggle - Toggle ability to receive tells from other PC's</comment>
</opcode>
<opcode id="01bc" name="OP_MoneyUpdate" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="01ba" name="OP_ReqZoneObjects" updated="05/26/04">
<comment>Client requesting zone objects</comment>
</opcode>
<opcode id="01c4" name="OP_Translocate" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="01ea" name="OP_RespondAA" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="01ed" name="OP_IncreaseStats" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="01ef" name="OP_ViewPetition" updated="05/26/04">
<comment>Player /viewpetition</comment>
</opcode>
<opcode id="01ff" name="OP_ExpansionSetting" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0205" name="OP_GainMoney" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0225" name="OP_GMZoneRequest2" updated="05/26/04">
<comment>/zone 2</comment>
</opcode>
<opcode id="0245" name="?" implicitlen="6" updated="07/14/04">
<comment>Unknown, but has implicit length</comment>
</opcode>
<opcode id="0261" name="OP_CrashDump" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0263" name="OP_GuildDemote" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="0264" name="OP_ZoneUnavail" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="028b" name="OP_GMSummon" updated="05/26/04">
<comment>GM /summon - Summon PC to self</comment>
</opcode>
<opcode id="0296" name="OP_ItemTextFile" updated="05/26/04">
<comment>old BookTextCode</comment>
<payload dir="server" typename="bookTextStruct" sizechecktype="none"/>
</opcode>
<opcode id="029e" name="OP_OpenObject" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="028e" name="OP_GMEmoteZone" updated="05/26/04">
<comment>GM /emotezone - Send zonewide emote</comment>
</opcode>
<opcode id="0296" name="OP_ReadBook" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="02b4" name="OP_SummonCorpse" updated="05/26/04">
<comment>/summoncorpse</comment>
</opcode>
<opcode id="02cc" name="OP_ShopItem" updated="05/26/04">
<comment>Merchant Item data</comment>
</opcode>
<opcode id="02d0" name="OP_AdventureRequest" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="02d1" name="OP_AdventureMerchantResponse" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="02d2" name="OP_AdventureMerchantPurchase" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="02e2" name="OP_AdventurePointsUpdate" updated="05/26/04">
<comment></comment>
</opcode>
<opcode id="02ef" name="OP_Adventure" updated="05/26/04">
<comment>/adventure</comment>
</opcode>
<opcode id="1ee8" name="OP_CombatAbility" updated="02/15/05">
<comment></comment>
</opcode>
-->
</seqopcodes>

rogues
07-23-2012, 04:23 AM
It seems to be working fine for me, fransick.

Fluxcapacitor
07-23-2012, 08:41 PM
Looks good to me. Now that I have figured out how to discover opcodes, I can truly appreciate all the work that goes into a full tarball.

Thanks fransick!!!!

fransick
07-23-2012, 09:50 PM
Heading out of town for work this week so a complete tarball will have to wait until this weekend. Good news is it sounds like things are working so it should just be an exercise in uploading. Glad it is workin well for y'all!

I have 4 more opcodes to find and the list is completely updated. Annotating the number of bytes in the opcode comments certainly made it easier to update this time around. I am half tempted to change all the "XX Octets" comments in everquest.h to "size: XX" so my editor finds will work in both everquest.h and the log captures. The whole process is tedious for someone like me that cannot find them any other way but grinding through logs.

fransick
07-26-2012, 06:26 AM
Boy I sure hope todays patch is only backend, login server stuff... the thought of having to redo opcodes again is too much to bear, haha. I'll have time this weekend to tarball the changes finally and get them uploaded. Work keeps getting in the way of recreation!

Razzle
07-26-2012, 05:39 PM
Boy I sure hope todays patch is only backend, login server stuff... the thought of having to redo opcodes again is too much to bear, haha. I'll have time this weekend to tarball the changes finally and get them uploaded. Work keeps getting in the way of recreation!
One of the big reasons I went to myseq was due to long time to find opcodes. If I only had 30 min, I wanted to use it to play. Now when i am not getting an hour to play a week, it is worse. So my dev time has gone to nothing too. Someday I will have free time again.

Razzle

rogues
07-26-2012, 08:36 PM
Servers never went down today, thankfully.

purple
07-29-2012, 08:56 PM
As someone who struggles with playerprofile struct changes, how do you figure out that the added bytes fell at 20196 and, say, not at the end of the struct? I look at that packet in the logs and just get overwhelmed at it's size and cannot map the data in it easily to the struct in everquest.h. Is there something I am missing? So want to learn that end of the puzzle!

structvis.pl. All glory to ksmith.

pita
07-30-2012, 01:08 PM
getting 2 issues.

Crashes whenever the session being monitored, has a toon that levels up.

Will often get the following, if leave my toon at the char select over night:


Warning: EQPacket: SessionRequest wanted a max packet size of 1277831310 which is above our sane max packet size of 25600. Using our max

purple
07-30-2012, 04:23 PM
The SessionRequest thing is more than likely just a non-EQ packet being detected as an EQ Packet because of the contents. Use Session Tracking if you don't. Otherwise just ignore it.

Crashing when you level is a bad opcode or a change in the levelUpUpdateStruct. Which it is would be evident by looking at packets.

pita
07-30-2012, 05:11 PM
The SessionRequest thing is more than likely just a non-EQ packet being detected as an EQ Packet because of the contents. Use Session Tracking if you don't. Otherwise just ignore it.

Crashing when you level is a bad opcode or a change in the levelUpUpdateStruct. Which it is would be evident by looking at packets.

I do have session tracking turned on. Still occurs.

I will see if I can get the error, when it crashes on a level up, next time.

fransick
07-30-2012, 05:47 PM
I do have session tracking turned on. Still occurs.

I will see if I can get the error, when it crashes on a level up, next time.

I had to create a toon to capture a level up packet (all main toons are 95) but I didn't level again after setting the opcode so I'll take a look as well. My main crashes on every exp update but none of my alts do. I had to just set that opcode to "0000" to avoid constant crashes. I looked at the packet and everything looks to be in order so no idea why that barfs everytime, might be something similar with level up too.

fransick
07-31-2012, 04:07 PM
The SessionRequest thing is more than likely just a non-EQ packet being detected as an EQ Packet because of the contents. Use Session Tracking if you don't. Otherwise just ignore it.

Crashing when you level is a bad opcode or a change in the levelUpUpdateStruct. Which it is would be evident by looking at packets.

Confirmed... level up caused me to CTD as well. The packet and struct look to be right:

Everquest.h:

/*
** Level Update
** Length: 12 Octets
** OpCode: LevelUpUpdateCode
*/

struct levelUpUpdateStruct
{
/*0000*/ uint32_t level; // New level
/*0004*/ uint32_t levelOld; // Old level
/*0008*/ uint32_t exp; // Current Experience
/*0012*/
};

Packet capture when level up:

Jul 30 2012 20:06:45:784 [Decoded] [Server->Client] [Size: 12]
[OPCode: 0x221a]
[Name: OP_LevelUpdate][Updated: 07/18/12][Type: levelUpUpdateStruct (12) ==]
000 | 03 00 00 00 02 00 00 00 00 00 00 00 | ............



My new level was 3 and old was 2 so that looks correct. Additionally, I had 0% into next level. I am beginning to think between this and expupdate causing CTD that perhaps the handling of exp and % of exp is not right for some reason. Anyone have any thoughts as to what could be up. I don't see anything obvious. Will try to backtrace the next CTD and see if that shows anything.

fransick
07-31-2012, 04:09 PM
Confirmed... level up caused me to CTD as well. The packet and struct look to be right:

Everquest.h:

/*
** Level Update
** Length: 12 Octets
** OpCode: LevelUpUpdateCode
*/

struct levelUpUpdateStruct
{
/*0000*/ uint32_t level; // New level
/*0004*/ uint32_t levelOld; // Old level
/*0008*/ uint32_t exp; // Current Experience
/*0012*/
};

Packet capture when level up:

Jul 30 2012 20:06:45:784 [Decoded] [Server->Client] [Size: 12]
[OPCode: 0x221a]
[Name: OP_LevelUpdate][Updated: 07/18/12][Type: levelUpUpdateStruct (12) ==]
000 | 03 00 00 00 02 00 00 00 00 00 00 00 | ............



My new level was 3 and old was 2 so that looks correct. Additionally, I had 0% into next level. I am beginning to think between this and expupdate causing CTD that perhaps the handling of exp and % of exp is not right for some reason. Anyone have any thoughts as to what could be up. I don't see anything obvious. Will try to backtrace the next CTD and see if that shows anything.

Well wouldn't you know it... dinged 4 and had gdm ready for a backtrace and didn't CTD. Will try to level again and see if I can replicate the CTD.

fransick
07-31-2012, 05:33 PM
Well I dinged again and didn't CTD. Below is a backtrace from what I believe to be the offending ExpUpdate. If I zone with that opcode set to the correct value it CTD every time. The packet looks to match the struct so not sure why it is bombing, Maybe someone smarter can figure out what's up with Exp.


(gdb) bt
#0 0x0445c52d in QString::QString(QString const&) () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#1 0x0447bcfb in QUType_QString::set(QUObject*, QString const&) () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#2 0x080fa04a in Player::expGained (this=0x847d0d0, t0=..., t1=84, t2=45987979, t3=...) at player.moc:592
#3 0x080fa340 in Player::updateExp (this=0x847d0d0, data=0x885679d "\251") at player.cpp:669
#4 0x080fc99c in Player::qt_invoke (this=0x847d0d0, _id=15, _o=0xbfffc380) at player.moc:737
#5 0x04185642 in QObject::activate_signal(QConnectionList*, QUObject*) () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#6 0x080906cf in EQPacketDispatch::signal (this=0x8463a08, t0=0x885679d "\251", t1=8, t2=2 '\002') at packetinfo.moc:99
#7 0x08089e19 in EQPacketStream::dispatchPacket (this=0x8326620, data=0x885679d "\251", len=8, opCode=29163, opcodeEntry=0x843d238) at packetstream.cpp:435
#8 0x0808c16a in EQPacketStream::processPacket (this=0x8326620, packet=..., isSubpacket=true) at packetstream.cpp:717
#9 0x0808c44a in EQPacketStream::processPacket (this=0x8326620, packet=..., isSubpacket=false) at packetstream.cpp:805
#10 0x0808ccc8 in EQPacketStream::handlePacket (this=0x8326620, packet=...) at packetstream.cpp:570
#11 0x08093322 in EQPacket::dispatchPacket (this=0x847a078, packet=...) at packet.cpp:659
#12 0x08095bf5 in dispatchPacket (this=0x847a078) at packet.cpp:583
#13 EQPacket::processPackets (this=0x847a078) at packet.cpp:400
#14 0x08095ed0 in EQPacket::qt_invoke (this=0x847a078, _id=2, _o=0xbfffe788) at packet.moc:577
#15 0x04185642 in QObject::activate_signal(QConnectionList*, QUObject*) () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#16 0x04185724 in QObject::activate_signal(int) () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#17 0x044ccc5a in QTimer::timeout() () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#18 0x041a5e3e in QTimer::event(QEvent*) () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#19 0x04123ffd in QApplication::internalNotify(QObject*, QEvent*) () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#20 0x0412418b in QApplication::notify(QObject*, QEvent*) () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#21 0x0411823c in QEventLoop::activateTimers() () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#22 0x040d3182 in QEventLoop::processEvents(unsigned int) () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#23 0x04139b50 in QEventLoop::enterLoop() () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#24 0x04139ad7 in QEventLoop::exec() () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#25 0x04124d20 in QApplication::exec() () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
#26 0x08067a8b in main (argc=1, argv=0xbffff414) at main.cpp:737

purple
08-01-2012, 07:51 PM
It's been forever since I've done work on seq, so ignore this if you want. But here's what went through my head for this.

Check expGained in player.cpp and you see:


emit expGained( m_lastSpawnKilledName,
m_lastSpawnKilledLevel,
expIncrement,
m_zoneMgr->longZoneName());


This is a loose coupling setup by QT. You see how this gets hooked up in interface.cpp here:


connect(m_player, SIGNAL(expGained(const QString &, int, long, QString )),
m_expWindow, SLOT(addExpRecord(const QString &, int, long,QString )));


So the expGained event ends up calling addExpRecord on the expWindow.addExpRecord(const QString&, int, long, QString).

In your backtrace, the issue is the generated code (moc) which is trying to marshall the parameters. it's trying to copy a QString based on a const QString reference. There is something wrong with the QString. You can always add in printf debugging in player.cpp right before the emit to check the values for m_lastSpawnKilledName and m_zoneMgr->longZoneName(), but it looks to me like it is the longZoneName that is messed up (because the backtrace is showing making a QString from a const QString reference and longZoneName is a const QString reference but the slot's last parm is a QString. You can always figure out how longZoneName gets set (a lookup from zones.h based on zone id from OP_ZoneEntry or OP_PlayerProfile?). But I'd just walk back all that stuff and try to figure out what is up.

Personally, I'd use tcpdump to record the crash too so that I didn't need the EQ Client to reproduce this anymore.

fransick
08-02-2012, 04:59 AM
It's been forever since I've done work on seq, so ignore this if you want. But here's what went through my head for this

Never! Still learning and always eager for a little direction. On vacation this week but will play with your advice when I get back. Thanks so much for popping in and helping out even though you've long since moved on from EQ. Much appreciated!

Razzle
08-02-2012, 07:41 AM
So frustrating to not be able to help with this. I do almost all of my dev work offline with a emu server.

I glanced at seq code and didnt see anything obvious. But i only spent a few minutes looking. Tracking down bugs can be so frustrating.

rogues
08-03-2012, 07:39 AM
Another 2 hour patch this morning. It looks like there's just a couple changes, fingers crossed for seq.

I'm guessing the Hero's Forge visible gear augs will cause some fairly massive changes...

Razzle
08-03-2012, 08:25 AM
Guessin they will use those extra bytes the added to the equipment structs awhile back. So maybe no major struct changes. Maybe.