EQExtractor2 update.

This commit is contained in:
Derision 2013-03-16 19:56:09 +00:00
parent 810fdf3cca
commit 7c264ad097
13 changed files with 1539 additions and 3 deletions

39
utils/EQExtractor2/.gitignore vendored Normal file
View File

@ -0,0 +1,39 @@
# Object files
*.o
*.obj
# Libraries
*.lib
*.a
# Shared objects
*.so
*.so.*
*.dylib
# Executables
*.exe
*.out
*.app
# CMake
CMakeCache.txt
CMakeFiles
Makefile
cmake_install.cmake
install_manifest.txt
Build/
build/
Build32/
build32/
Build64/
build64/
Build_32/
build_32/
Build_64/
build_64/
log/
logs/
bin/
obj/
*.suo

View File

@ -1,5 +1,8 @@
EQExtractor2 Changelog. All changes since the 1.0 release.
==03/16/2013==
Derision: Added decoder to support packet dumps from current Live client. SQL generation NOT SUPPORTED YET.
==02/13/2013==
Derision: Added decoder to support packet dumps from current Live client. SQL generation NOT SUPPORTED YET.
Derision: Added boolean to patch decoders to indicate if they support SQL generation or not.

View File

@ -102,6 +102,8 @@ namespace EQApplicationLayer
PatchList.Add(new PatchTestServerFebruary52013Decoder());
PatchList.Add(new PatchFebruary112013Decoder());
PatchList.Add(new PatchMarch132013Decoder());
PatchList.Add(new PatchSoD());

View File

@ -92,6 +92,7 @@
<Compile Include="PatchJuly13-2012.cs" />
<Compile Include="PatchJune25-2012.cs" />
<Compile Include="PatchMar15-2012.cs" />
<Compile Include="PatchMarch13-2013.cs" />
<Compile Include="PatchMarch15-2011.cs" />
<Compile Include="PatchMay12-2010.cs" />
<Compile Include="PatchMay12-2011.cs" />
@ -163,6 +164,9 @@
<None Include="patch_June25-2012.conf">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="patch_Mar13-2013.conf">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="patch_Mar15-2012.conf">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>

View File

@ -18,7 +18,7 @@ namespace EQExtractor2
{
public partial class EQExtractor2Form1 : Form
{
string Version = "EQExtractor2 Version 2.6.0 SVN";
string Version = "EQExtractor2 Version 2.6.1 SVN";
static int PacketsSeen = 0;
static long BytesRead = 0;

Binary file not shown.

View File

@ -546,7 +546,10 @@ namespace EQExtractor2.Patches
public void DecodeItemPacket(StreamWriter OutputStream, ByteStream Buffer, PacketDirection Direction)
{
String UnkString = Buffer.ReadString(false);
Buffer.SkipBytes(88);
//Buffer.SkipBytes(88);
Buffer.SkipBytes(35);
UInt32 RecastTimer = Buffer.ReadUInt32();
Buffer.SkipBytes(49);
String ItemName = Buffer.ReadString(false);
String ItemLore = Buffer.ReadString(false);
String ItemIDFile = Buffer.ReadString(false);
@ -554,6 +557,7 @@ namespace EQExtractor2.Patches
UInt32 ItemID = Buffer.ReadUInt32();
OutputStream.WriteLine("ItemName: {0}, IDFile: {1}", ItemName, ItemIDFile);
OutputStream.WriteLine("Recast Time: {0:X}", RecastTimer);
Buffer.SkipBytes(251);

View File

@ -17,7 +17,759 @@ namespace EQExtractor2.Patches
PatchConfFileName = "patch_Feb11-2013.conf";
PacketsToMatch = new PacketToMatch[] {
new PacketToMatch { OPCodeName = "OP_ZoneEntry", Direction = PacketDirection.ClientToServer, RequiredSize = 76, VersionMatched = false },
new PacketToMatch { OPCodeName = "OP_PlayerProfile", Direction = PacketDirection.ServerToClient, RequiredSize = -1, VersionMatched = true },
};
SupportsSQLGeneration = false;
}
}
public override void RegisterExplorers()
{
//OpManager.RegisterExplorer("OP_PlayerProfile", ExplorePlayerProfile);
//OpManager.RegisterExplorer("OP_CharInventory", ExploreInventory);
}
public void DecodeItemPacket(StreamWriter OutputStream, ByteStream Buffer, PacketDirection Direction)
{
String UnkString = Buffer.ReadString(false);
//Buffer.SkipBytes(88);
Buffer.SkipBytes(35);
UInt32 RecastTimer = Buffer.ReadUInt32();
Buffer.SkipBytes(49);
String ItemName = Buffer.ReadString(false);
String ItemLore = Buffer.ReadString(false);
String ItemIDFile = Buffer.ReadString(false);
Buffer.ReadString(false);
UInt32 ItemID = Buffer.ReadUInt32();
OutputStream.WriteLine("ItemName: {0}, IDFile: {1}", ItemName, ItemIDFile);
OutputStream.WriteLine("Recast Time: {0:X}", RecastTimer);
Buffer.SkipBytes(251);
String CharmFile = Buffer.ReadString(false);
OutputStream.WriteLine("CharmFile: {0}", CharmFile);
Buffer.SkipBytes(74); // Secondary BS
String FileName = Buffer.ReadString(false);
OutputStream.WriteLine("FileName: {0}", CharmFile);
Buffer.SkipBytes(76); // Tertiary BS
UInt32 ClickEffect = Buffer.ReadUInt32();
//Buffer.SkipBytes(26); // ClickEffect Struct
//OutputStream.WriteLine("Click Effect - effect : {0}", Buffer.ReadUInt32());
OutputStream.WriteLine("Click Effect - level2 : {0}", Buffer.ReadByte());
OutputStream.WriteLine("Click Effect - Type : {0}", Buffer.ReadUInt32());
OutputStream.WriteLine("Click Effect - level : {0}", Buffer.ReadByte());
OutputStream.WriteLine("Click Effect - Max Charges : {0}", Buffer.ReadUInt32());
OutputStream.WriteLine("Click Effect - Cast Time : {0}", Buffer.ReadUInt32());
OutputStream.WriteLine("Click Effect - Recast : {0}", Buffer.ReadUInt32());
OutputStream.WriteLine("Click Effect - Recast Type: {0}", Buffer.ReadUInt32());
OutputStream.WriteLine("Click Effect - Unk5: {0}", Buffer.ReadUInt32());
String ClickName = Buffer.ReadString(false);
OutputStream.WriteLine("ClickEffect = {0}, ClickName = {1}", ClickEffect, ClickName);
Buffer.ReadUInt32();
ClickEffect = Buffer.ReadUInt32();
Buffer.SkipBytes(26); // ClickEffect Struct
ClickName = Buffer.ReadString(false);
OutputStream.WriteLine("ClickEffect = {0}, ClickName = {1}", ClickEffect, ClickName);
Buffer.ReadUInt32();
ClickEffect = Buffer.ReadUInt32();
Buffer.SkipBytes(26); // ClickEffect Struct
ClickName = Buffer.ReadString(false);
OutputStream.WriteLine("ClickEffect = {0}, ClickName = {1}", ClickEffect, ClickName);
Buffer.ReadUInt32();
ClickEffect = Buffer.ReadUInt32();
Buffer.SkipBytes(26); // ClickEffect Struct
ClickName = Buffer.ReadString(false);
OutputStream.WriteLine("ClickEffect = {0}, ClickName = {1}", ClickEffect, ClickName);
Buffer.ReadUInt32();
ClickEffect = Buffer.ReadUInt32();
Buffer.SkipBytes(26); // ClickEffect Struct
ClickName = Buffer.ReadString(false);
OutputStream.WriteLine("ClickEffect = {0}, ClickName = {1}", ClickEffect, ClickName);
Buffer.ReadUInt32();
ClickEffect = Buffer.ReadUInt32();
Buffer.SkipBytes(26); // ClickEffect Struct
ClickName = Buffer.ReadString(false);
OutputStream.WriteLine("ClickEffect = {0}, ClickName = {1}", ClickEffect, ClickName);
Buffer.ReadUInt32();
//Buffer.SkipBytes(167);
Buffer.SkipBytes(125);
//Byte UnkByte = Buffer.ReadByte();
//OutputStream.WriteLine("Unk byte is {0:X}", UnkByte);
OutputStream.WriteLine("At String ? Pos is {0}", Buffer.GetPosition());
UnkString = Buffer.ReadString(false);
OutputStream.WriteLine("Unk String is {0}", UnkString);
Buffer.SkipBytes(41);
UInt32 SubItemCount = Buffer.ReadUInt32();
OutputStream.WriteLine("Buffer Pos: {0}, SubItemCount = {1}", Buffer.GetPosition(), SubItemCount);
for (int j = 0; j < SubItemCount; ++j)
{
Buffer.ReadUInt32();
DecodeItemPacket(OutputStream, Buffer, Direction);
}
}
public void ExploreInventory(StreamWriter OutputStream, ByteStream Buffer, PacketDirection Direction)
{
if (Buffer.Length() < 4)
return;
UInt32 Count = Buffer.ReadUInt32();
for (int i = 0; i < Count; ++i)
{
try
{
DecodeItemPacket(OutputStream, Buffer, Direction);
}
catch
{
return;
}
}
}
public void ExplorePlayerProfile(StreamWriter OutputStream, ByteStream Buffer, PacketDirection Direction)
{
OutputStream.WriteLine("{0, -5}: Checksum = {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: ChecksumSize = {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown = {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown = {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("");
OutputStream.WriteLine("{0, -5}: Gender = {1}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Race = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Class = {1}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Level = {1}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Level1 = {1}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("");
UInt32 BindCount = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: BindCount = {1}", Buffer.GetPosition() - 4, BindCount);
for (int i = 0; i < BindCount; ++i)
{
OutputStream.WriteLine("{0, -5}: Bind: {1} Zone: {2} XYZ: {3},{4},{5} Heading: {6}",
Buffer.GetPosition(), i, Buffer.ReadUInt32(), Buffer.ReadSingle(), Buffer.ReadSingle(), Buffer.ReadSingle(), Buffer.ReadSingle());
}
OutputStream.WriteLine("");
OutputStream.WriteLine("{0, -5}: Deity = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Intoxication = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("");
//Buffer.SkipBytes(8); // Deity, intoxication
UInt32 UnknownCount = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: Unknown Count = {1}", Buffer.GetPosition() - 4, UnknownCount);
for (int i = 0; i < UnknownCount; ++i)
{
OutputStream.WriteLine("{0, -5}: Unknown : {1}, Value = {2}", Buffer.GetPosition(), i, Buffer.ReadUInt32());
//Buffer.SkipBytes(4);
}
UInt32 EquipmentCount = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: EquipmentCount = {1}", Buffer.GetPosition() - 4, EquipmentCount);
for (int i = 0; i < EquipmentCount; ++i)
{
OutputStream.Write("{0, -5}: Equip: {1} Values: ", Buffer.GetPosition(), i);
for (int j = 0; j < 5; ++j)
OutputStream.Write("{0} ", Buffer.ReadUInt32());
OutputStream.WriteLine("");
//Buffer.SkipBytes(20);
}
UInt32 EquipmentCount2 = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: EquipmentCount2 = {1}", Buffer.GetPosition() - 4, EquipmentCount2);
for (int i = 0; i < EquipmentCount2; ++i)
{
OutputStream.Write("{0, -5}: Equip2: {1} Values: ", Buffer.GetPosition(), i);
for (int j = 0; j < 5; ++j)
OutputStream.Write("{0} ", Buffer.ReadUInt32());
OutputStream.WriteLine("");
//Buffer.SkipBytes(20);
}
UInt32 TintCount = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: TintCount = {1}", Buffer.GetPosition() - 4, TintCount);
for (int i = 0; i < TintCount; ++i)
{
OutputStream.WriteLine("{0, -5}: TintCount : {1}, Value = {2}", Buffer.GetPosition(), i, Buffer.ReadUInt32());
//Buffer.SkipBytes(4);
}
UInt32 TintCount2 = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: TintCount2 = {1}", Buffer.GetPosition() - 4, TintCount2);
for (int i = 0; i < TintCount; ++i)
{
OutputStream.WriteLine("{0, -5}: TintCount2 : {1}, Value = {2}", Buffer.GetPosition(), i, Buffer.ReadUInt32());
//Buffer.SkipBytes(4);
}
OutputStream.WriteLine("{0, -5}: Hair Color = {1}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Beard Color = {1}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Unknown = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Eye1 Color = {1}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Eye2 Color = {1}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Hairstyle = {1}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Beard = {1}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Face = {1}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Drakkin Heritage = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Drakkin Tattoo = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Drakkin Details = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown = {1}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Unknown = {1}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Unknown = {1}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Unknown = {1}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Unknown = {1}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Height = {1}", Buffer.GetPosition(), Buffer.ReadSingle());
OutputStream.WriteLine("{0, -5}: Unknown = {1}", Buffer.GetPosition(), Buffer.ReadSingle());
OutputStream.WriteLine("{0, -5}: Unknown = {1}", Buffer.GetPosition(), Buffer.ReadSingle());
OutputStream.WriteLine("{0, -5}: Unknown = {1}", Buffer.GetPosition(), Buffer.ReadSingle());
OutputStream.WriteLine("{0, -5}: Primary = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Secondary = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
//Buffer.SkipBytes(52); // Per SEQ, this looks like face, haircolor, beardcolor etc.
OutputStream.WriteLine("{0, -5}: Unspent Skill Points = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Mana = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Current HP = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
//UInt32 Points = Buffer.ReadUInt32();
//UInt32 Mana = Buffer.ReadUInt32();
//UInt32 CurHP = Buffer.ReadUInt32();
//OutputStream.WriteLine("Points, Mana, CurHP = {0}, {1}, {2}", Points, Mana, CurHP);
OutputStream.WriteLine("{0, -5}: STR = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: STA = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: CHA = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: DEX = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: INT = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: AGI = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: WIS = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
//Buffer.SkipBytes(28);
//Buffer.SkipBytes(28);
UInt32 AACount = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: AA Count = {1}", Buffer.GetPosition() - 4, AACount);
for (int i = 0; i < AACount; ++i)
{
OutputStream.WriteLine(" AA: {0}, Value: {1}, Unknown08: {2}", Buffer.ReadUInt32(), Buffer.ReadUInt32(), Buffer.ReadUInt32());
//Buffer.SkipBytes(12);
}
UInt32 SkillCount = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: Skill Count = {1}", Buffer.GetPosition() - 4, SkillCount);
for (int i = 0; i < SkillCount; ++i)
{
Buffer.SkipBytes(4);
}
UInt32 SomethingCount = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: Something Count = {1}", Buffer.GetPosition() - 4, SomethingCount);
for (int i = 0; i < SomethingCount; ++i)
{
//Buffer.SkipBytes(4);
OutputStream.WriteLine("Something {0} : {1}", i, Buffer.ReadUInt32());
}
UInt32 DisciplineCount = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: Discipline Count = {1}", Buffer.GetPosition() - 4, DisciplineCount);
for (int i = 0; i < DisciplineCount; ++i)
{
Buffer.SkipBytes(4);
}
UInt32 TimeStampCount = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: TimeStamp Count = {1}", Buffer.GetPosition() - 4, TimeStampCount);
for (int i = 0; i < TimeStampCount; ++i)
{
//Buffer.SkipBytes(4);
OutputStream.WriteLine("Timestamp {0} : {1}", i, Buffer.ReadUInt32());
}
System.DateTime dateTime;
UInt32 RecastCount = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: Recast Count = {1}", Buffer.GetPosition() - 4, RecastCount);
for (int i = 0; i < RecastCount; ++i)
{
//Buffer.SkipBytes(4);
UInt32 TimeStamp = Buffer.ReadUInt32();
dateTime = new System.DateTime(1970, 1, 1, 0, 0, 0, 0);
dateTime = dateTime.AddSeconds(TimeStamp);
OutputStream.WriteLine("Recast {0} : {1} {2}", i, TimeStamp, dateTime.ToString());
}
UInt32 TimeStamp2Count = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: TimeStamp2 Count = {1}", Buffer.GetPosition() - 4, TimeStamp2Count);
for (int i = 0; i < TimeStamp2Count; ++i)
{
//Buffer.SkipBytes(4);
UInt32 TimeStamp = Buffer.ReadUInt32();
dateTime = new System.DateTime(1970, 1, 1, 0, 0, 0, 0);
dateTime = dateTime.AddSeconds(TimeStamp);
OutputStream.WriteLine("Timestamp {0} : {1} {2}", i, TimeStamp, dateTime.ToString());
}
UInt32 SpellBookSlots = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: SpellBookSlot Count = {1}", Buffer.GetPosition() - 4, SpellBookSlots);
for (int i = 0; i < SpellBookSlots; ++i)
{
Buffer.SkipBytes(4);
}
UInt32 SpellMemSlots = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: Spell Mem Count = {1}", Buffer.GetPosition() - 4, SpellMemSlots);
for (int i = 0; i < SpellMemSlots; ++i)
{
Buffer.SkipBytes(4);
}
SomethingCount = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: Unknown Count = {1}", Buffer.GetPosition() - 4, SomethingCount);
for (int i = 0; i < SomethingCount; ++i)
{
//Buffer.SkipBytes(4);
OutputStream.WriteLine("Unknown {0} : {1}", i, Buffer.ReadUInt32());
}
OutputStream.WriteLine("{0, -5}: Unknown = {1}", Buffer.GetPosition(), Buffer.ReadByte());
UInt32 BuffCount = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: Buff Count = {1}", Buffer.GetPosition() - 4, BuffCount);
for (int i = 0; i < BuffCount; ++i)
{
Buffer.ReadByte();
float UnkFloat = Buffer.ReadSingle();
UInt32 PlayerID = Buffer.ReadUInt32();
Byte UnkByte = Buffer.ReadByte();
UInt32 Counters1 = Buffer.ReadUInt32();
UInt32 Duration = Buffer.ReadUInt32();
Byte Level = Buffer.ReadByte();
UInt32 SpellID = Buffer.ReadUInt32();
UInt32 SlotID = Buffer.ReadUInt32();
Buffer.SkipBytes(5);
UInt32 Counters2 = Buffer.ReadUInt32();
OutputStream.WriteLine("Sl: {0}, UF: {1}, PID: {2}, UByte: {3}, Cnt1: {4}, Dur: {5}, Lvl: {6} SpellID: {7}, SlotID: {8}, Cnt2: {9}",
i, UnkFloat, PlayerID, UnkByte, Counters1, Duration, Level, SpellID, SlotID, Counters2);
Buffer.SkipBytes(44);
}
OutputStream.WriteLine("{0, -5}: Plat = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Gold = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Silver = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Copper = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Plat Cursor = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Gold Cursor = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Silver Cursor = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Copper Cursor = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Toxicity? = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Thirst? = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Hunger? = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
//Buffer.SkipBytes(20);
OutputStream.WriteLine("{0, -5}: AA Spent = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: AA Point Count? = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: AA Assigned = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: AA Spent General = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: AA Spent Archetype = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: AA Spent Class = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: AA Spent Special = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: AA Unspent = {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown", Buffer.GetPosition(), Buffer.ReadUInt16());
//Buffer.SkipBytes(30);
UInt32 BandolierCount = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: Bandolier Count = {1}", Buffer.GetPosition() - 4, BandolierCount);
for (int i = 0; i < BandolierCount; ++i)
{
Buffer.ReadString(false);
Buffer.ReadString(false);
Buffer.SkipBytes(8);
Buffer.ReadString(false);
Buffer.SkipBytes(8);
Buffer.ReadString(false);
Buffer.SkipBytes(8);
Buffer.ReadString(false);
Buffer.SkipBytes(8);
}
UInt32 PotionCount = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: Potion Count = {1}", Buffer.GetPosition() - 4, PotionCount);
for (int i = 0; i < PotionCount; ++i)
{
Buffer.ReadString(false);
Buffer.SkipBytes(8);
}
OutputStream.WriteLine("{0, -5}: Unknown {1}", Buffer.GetPosition(), Buffer.ReadInt32());
OutputStream.WriteLine("{0, -5}: Item HP Total? {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Endurance Total? {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Mana Total? {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Expansion Count {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
UInt32 NameLength = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: Name Length: {1}", Buffer.GetPosition() - 4, NameLength);
int CurrentPosition = Buffer.GetPosition();
OutputStream.WriteLine("{0, -5}: Name: {1}", Buffer.GetPosition(), Buffer.ReadString(false));
Buffer.SetPosition(CurrentPosition + (int)NameLength);
UInt32 LastNameLength = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: LastName Length: {1}", Buffer.GetPosition() - 4, LastNameLength);
CurrentPosition = Buffer.GetPosition();
OutputStream.WriteLine("{0, -5}: Last Name: {1}", Buffer.GetPosition(), Buffer.ReadString(false));
Buffer.SetPosition(CurrentPosition + (int)LastNameLength);
OutputStream.WriteLine("{0, -5}: Birthday {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Account Start Date {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Last Login Date {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Time Played Minutes {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Time Entitled On Account {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Expansions {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
UInt32 LanguageCount = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: Language Count = {1}", Buffer.GetPosition() - 4, LanguageCount);
for (int i = 0; i < LanguageCount; ++i)
{
Buffer.SkipBytes(1);
}
OutputStream.WriteLine("{0, -5}: Zone ID {1}", Buffer.GetPosition(), Buffer.ReadUInt16());
OutputStream.WriteLine("{0, -5}: Zone Instance {1}", Buffer.GetPosition(), Buffer.ReadUInt16());
OutputStream.WriteLine("{0, -5}: Y,X,Z {1},{2},{3} Heading: {4}",
Buffer.GetPosition(), Buffer.ReadSingle(), Buffer.ReadSingle(), Buffer.ReadSingle(), Buffer.ReadSingle());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: GuildID? {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Experience {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Bank Plat {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Bank Gold {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Bank Silver {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Bank Copper {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
UInt32 Unknown42 = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: Unknown, value 42? {1}", Buffer.GetPosition() - 4, Unknown42);
Buffer.SkipBytes((int)(Unknown42 * 8));
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Career Tribute Favour {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Current Tribute Favour {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadByte());
UInt32 PersonalTributeCount = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: Personal Tribute Count {1}", Buffer.GetPosition() - 4, PersonalTributeCount);
Buffer.SkipBytes((int)(PersonalTributeCount * 8));
UInt32 GuildTributeCount = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: Guild Tribute Count {1}", Buffer.GetPosition() - 4, GuildTributeCount);
Buffer.SkipBytes((int)(GuildTributeCount * 8));
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("Skipping 121 bytes starting at offset {0}", Buffer.GetPosition());
Buffer.SkipBytes(121);
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("Position now {0}", Buffer.GetPosition());
UInt32 Unknown64 = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: Unknown64 {1}", Buffer.GetPosition() - 4, Unknown64);
Buffer.SkipBytes((int)Unknown64);
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
Unknown64 = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: Unknown64 {1}", Buffer.GetPosition() - 4, Unknown64);
Buffer.SkipBytes((int)Unknown64);
Unknown64 = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: Unknown64 {1}", Buffer.GetPosition() - 4, Unknown64);
Buffer.SkipBytes((int)Unknown64);
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("Skipping 320 bytes starting at offset {0}", Buffer.GetPosition());
Buffer.SkipBytes(320);
OutputStream.WriteLine("Skipping 343 bytes starting at offset {0}", Buffer.GetPosition());
Buffer.SkipBytes(343);
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadByte());
UInt32 Unknown6 = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: Unknown6 {1} LDON Stuff ?", Buffer.GetPosition() - 4, Unknown6);
for (int i = 0; i < Unknown6; ++i)
OutputStream.WriteLine("{0, -5}: Unknown LDON? {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
Unknown64 = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: Unknown64 {1}", Buffer.GetPosition() - 4, Unknown64);
Buffer.SkipBytes((int)Unknown64 * 4);
// Air remaining ?
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
// Next 7 could be PVP stats,
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
// PVP LastKill struct ?
OutputStream.WriteLine("Skipping string + 24 bytes starting at offset {0}", Buffer.GetPosition());
//Buffer.SkipBytes(25);
Byte b;
do
{
b = Buffer.ReadByte();
} while (b != 0);
Buffer.SkipBytes(24);
// PVP LastDeath struct ?
OutputStream.WriteLine("Skipping string + 24 bytes starting at offset {0}", Buffer.GetPosition());
//Buffer.SkipBytes(25);
do
{
b = Buffer.ReadByte();
} while (b != 0);
Buffer.SkipBytes(24);
// PVP Number of Kills in Last 24 hours ?
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
UInt32 Unknown50 = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: Unknown50 {1}", Buffer.GetPosition() - 4, Unknown50);
// PVP Recent Kills ?
OutputStream.WriteLine("Skipping 50 x (String + 24 bytes) starting at offset {0}", Buffer.GetPosition());
//Buffer.SkipBytes(1338);
for (int i = 0; i < 50; ++i)
{
do
{
b = Buffer.ReadByte();
} while (b != 0);
Buffer.SkipBytes(24);
}
//
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Group autoconsent? {1:X}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Raid autoconsent? {1:X}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Guild autoconsent? {1:X}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: Level3? {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Showhelm? {1}", Buffer.GetPosition(), Buffer.ReadByte());
OutputStream.WriteLine("{0, -5}: RestTimer? {1}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("Skipping 1028 bytes starting at offset {0}", Buffer.GetPosition());
Buffer.SkipBytes(1028);
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
OutputStream.WriteLine("Pointer is {0} bytes from end.", Buffer.Length() - Buffer.GetPosition());
}
}
}

View File

@ -0,0 +1,79 @@
using System;
using System.IO;
using System.Diagnostics;
using System.Collections.Generic;
using EQExtractor2.InternalTypes;
using EQExtractor2.OpCodes;
using EQPacket;
using MyUtils;
namespace EQExtractor2.Patches
{
class PatchMarch132013Decoder : PatchFebruary112013Decoder
{
public PatchMarch132013Decoder()
{
Version = "EQ Client Build Date March 13 2013.";
PatchConfFileName = "patch_Mar13-2013.conf";
SupportsSQLGeneration = false;
}
override public List<Door> GetDoors()
{
List<Door> DoorList = new List<Door>();
List<byte[]> SpawnDoorPacket = GetPacketsOfType("OP_SpawnDoor", PacketDirection.ServerToClient);
if ((SpawnDoorPacket.Count == 0) || (SpawnDoorPacket[0].Length == 0))
return DoorList;
int DoorCount = SpawnDoorPacket[0].Length / 100;
ByteStream Buffer = new ByteStream(SpawnDoorPacket[0]);
for (int d = 0; d < DoorCount; ++d)
{
string DoorName = Buffer.ReadFixedLengthString(32, false);
float YPos = Buffer.ReadSingle();
float XPos = Buffer.ReadSingle();
float ZPos = Buffer.ReadSingle();
float Heading = Buffer.ReadSingle();
UInt32 Incline = Buffer.ReadUInt32();
Int32 Size = Buffer.ReadInt32();
Buffer.SkipBytes(4); // Skip Unknown
Byte DoorID = Buffer.ReadByte();
Byte OpenType = Buffer.ReadByte();
Byte StateAtSpawn = Buffer.ReadByte();
Byte InvertState = Buffer.ReadByte();
Int32 DoorParam = Buffer.ReadInt32();
// Skip past the trailing unknowns in the door struct, moving to the next door in the packet.
Buffer.SkipBytes(32);
string DestZone = "NONE";
Door NewDoor = new Door(DoorName, YPos, XPos, ZPos, Heading, Incline, Size, DoorID, OpenType, StateAtSpawn, InvertState,
DoorParam, DestZone, 0, 0, 0, 0);
DoorList.Add(NewDoor);
}
return DoorList;
}
}
}

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,653 @@
# ShowEQ Import Notes:
# ZERO THE FILE first
# perl -pi -e 's/0x[0-9a-fA-F]{4}/0x0000/g' opcodes.conf
# Unknown Mapping:
# OP_Action2 -> OP_Damage
# OP_EnvDamage -> OP_Damage ---> might have been a one time mistake
# Name Differences:
# OP_CancelInvite -> OP_GroupCancelInvite
# OP_GMFind -> OP_FindPersonRequest
# OP_CommonMessage -> OP_ChannelMessage
OP_Unknown=0x0000
OP_ExploreUnknown=0x0000 used for unknown explorer
# world packets
# Required to reach Char Select:
OP_SendLoginInfo=0x4c47
OP_ApproveWorld=0x0fba
OP_LogServer=0x147e
OP_SendCharInfo=0x3501
OP_ExpansionInfo=0x5529
OP_GuildsList=0x1eb4
OP_EnterWorld=0x5148
OP_PostEnterWorld=0x138c
OP_World_Client_CRC1=0x5c81
OP_World_Client_CRC2=0x68ba
OP_SendSpellChecksum=0x0000
OP_SendSkillCapsChecksum=0x0000
# Character Select Related:
OP_SendMaxCharacters=0x6c2c
OP_SendMembership=0x489a
OP_SendMembershipDetails=0x5f73
OP_CharacterCreateRequest=0x7d54
OP_CharacterCreate=0x43cb
OP_DeleteCharacter=0x7974
OP_RandomNameGenerator=0x36b8
OP_ApproveName=0x3cb0
OP_MOTD=0x1e9b
OP_SetChatServer=0x7d67
OP_SetChatServer2=0x072c
OP_ZoneServerInfo=0x5e3b
OP_WorldComplete=0x230b
OP_WorldUnknown001=0xa5af
OP_FloatListThing=0x42e1
# Reasons for Disconnect:
OP_ZoneUnavail=0x1b4a
OP_WorldClientReady=0x36b2
OP_CharacterStillInZone=0x0000
OP_WorldChecksumFailure=0x0000
OP_WorldLoginFailed=0x0000
OP_WorldLogout=0x0000
OP_WorldLevelTooHigh=0x0000
OP_CharInacessable=0x0000
OP_UserCompInfo=0x0000
OP_SendExeChecksum=0x0000
OP_SendBaseDataChecksum=0x0000
# Zone in opcodes
OP_AckPacket=0x2e94
OP_ZoneEntry=0x9e82
OP_ReqNewZone=0x1536
OP_NewZone=0x23ef
OP_ZoneSpawns=0x0325
OP_PlayerProfile=0x48b7
OP_TimeOfDay=0x6665
OP_LevelUpdate=0x1048
OP_Stamina=0x1fb1
OP_RequestClientZoneChange=0x2521
OP_ZoneChange=0x6976
OP_LockoutTimerInfo=0x0000
OP_ZoneServerReady=0x0000
OP_ZoneInUnknown=0x0000
OP_LogoutReply=0x0000
OP_PreLogoutReply=0x0000
# Required to fully log in
OP_SpawnAppearance=0x3fe5
OP_ChangeSize=0x095f
OP_TributeUpdate=0x61af
OP_TributeTimer=0x7f61
OP_SendTributes=0x765f
OP_SendGuildTributes=0x7fde
OP_TributeInfo=0x7869
OP_Weather=0x6f63
OP_ReqClientSpawn=0x1fd2
OP_SpawnDoor=0x5ab7
OP_GroundSpawn=0x6410
OP_SendZonepoints=0x2694
OP_BlockedBuffs=0x5d12
OP_RemoveBlockedBuffs=0x6b1a
OP_ClearBlockedBuffs=0x5c27
OP_WorldObjectsSent=0x3f24
OP_SendExpZonein=0x39ef
OP_SendAATable=0x2aed
OP_RespondAA=0x6375
OP_UpdateAA=0x7ae9
OP_SendAAStats=0x4215
OP_AAExpUpdate=0x7c0b
OP_ExpUpdate=0x25cf
OP_HPUpdate=0x462c
OP_ManaChange=0x7db5
OP_TGB=0x4111
OP_SpecialMesg=0x0000
OP_GuildMemberList=0x4f53
OP_GuildMOTD=0x5906
OP_CharInventory=0x3efe
OP_WearChange=0x18ea
OP_ClientUpdate=0x1ad3
OP_ClientReady=0x5b91 # 0x422d
OP_SetServerFilter=0x6d02
# Guild Opcodes - Disabled until crashes are resolved in RoF
OP_GetGuildMOTD=0x26d9 # Was 0x35dc
OP_GetGuildMOTDReply=0x4a78 # Was 0x4586
OP_GuildMemberUpdate=0x5809 # Was 0x5643
OP_GuildInvite=0x6327
OP_GuildRemove=0x4b63
OP_GuildPeace=0x1fa2
OP_SetGuildMOTD=0x0024
OP_GuildList=0x0000
OP_GuildWar=0x2366
OP_GuildLeader=0x70f6
OP_GuildDelete=0x50d7
OP_GuildInviteAccept=0x6f2e
OP_GuildDemote=0x02b3
OP_GuildPublicNote=0x5b86
OP_GuildManageBanker=0x714f # Was 0x0737
OP_GuildBank=0x033e # Was 0x10c3
OP_SetGuildRank=0x04f1
OP_GuildUpdateURLAndChannel=0x3d53
OP_GuildStatus=0x54a2
OP_GuildCreate=0x23b5 # or maybe 0x086e
OP_GuildMemberLevelUpdate=0x0000 # Unused?
OP_ZoneGuildList=0x0000 # Unused?
OP_GetGuildsList=0x0000 # Unused?
OP_LFGuild=0x0000
OP_GuildManageRemove=0x0000
OP_GuildManageAdd=0x0000
OP_GuildManageStatus=0x0000
# GM/Guide Opcodes
OP_GMServers=0x19ee
OP_GMBecomeNPC=0x6f5e
OP_GMZoneRequest=0x64c6
OP_GMZoneRequest2=0x3271
OP_GMGoto=0x6d39
OP_GMSearchCorpse=0x026a
OP_GMHideMe=0x3195
OP_GMDelCorpse=0x696f
OP_GMApproval=0x639b
OP_GMToggle=0x4c77
OP_GMSummon=0x3ff2 # Was 0x684f
OP_GMEmoteZone=0x722a # Was 0x0655
OP_GMEmoteWorld=0x77a6 # Was 0x1935
OP_GMFind=0x572d
OP_GMKick=0x1d1b
OP_GMKill=0x68c0
OP_GMNameChange=0x075d # Was 0x4434
OP_GMLastName=0x362a # Was 0x3077
# Misc Opcodes
OP_InspectRequest=0x3e82
OP_InspectAnswer=0x5168
OP_InspectMessageUpdate=0x420b
OP_BeginCast=0x436d
OP_BuffFadeMsg=0x46b9
OP_ConsentResponse=0x38d7
OP_MemorizeSpell=0x4d4b
OP_SwapSpell=0x21d2
OP_CastSpell=0x56ab
OP_Consider=0x476f
OP_FormattedMessage=0x69aa
OP_SimpleMessage=0x0e87
OP_Buff=0x2acd
OP_Illusion=0x739c
OP_MoneyOnCorpse=0x43c4
OP_RandomReply=0x467d
OP_DenyResponse=0x2eba
OP_SkillUpdate=0x3b99
OP_GMTrainSkillConfirm=0x24d4 # 0x3960
OP_RandomReq=0x3599
OP_Death=0x43a6
OP_GMTraining=0x0aa1
OP_GMEndTraining=0x5dd1
OP_GMTrainSkill=0x5823
OP_Animation=0x7487
OP_Begging=0x2bac
OP_Consent=0x5ccb
OP_ConsentDeny=0x1a5d
OP_AutoFire=0x6bfd
OP_PetCommands=0x0e7a
OP_DeleteSpell=0x3587
OP_Surname=0x378f
OP_ClearSurname=0x23c5
OP_FaceChange=0x7fc4
OP_SenseHeading=0x54cf
OP_Action=0x4965
OP_ConsiderCorpse=0x1294
OP_HideCorpse=0x5141
OP_CorpseDrag=0x14bb
OP_CorpseDrop=0x66e8
OP_Bug=0x055c
OP_Feedback=0x6cb3
OP_Report=0x28a6
OP_Damage=0x0002e
OP_ChannelMessage=0x1f4e
OP_Assist=0x2612
OP_AssistGroup=0x2ebc
OP_MoveCoin=0x7611
OP_ZonePlayerToBind=0x4284
OP_KeyRing=0x7d31
OP_WhoAllRequest=0x05f2
OP_WhoAllResponse=0x396c
OP_FriendsWho=0x40dd
OP_ConfirmDelete=0x065f
OP_Logout=0x0b31
OP_Rewind=0x15f2
OP_TargetCommand=0x15b5
OP_Hide=0x0ba4
OP_Jump=0x3622
OP_Camp=0x2181
OP_Emote=0x4773
OP_SetRunMode=0x6cdb
OP_BankerChange=0x1289
OP_TargetMouse=0x698f
OP_MobHealth=0x0294
OP_InitialMobHealth=0x0000 # Unused?
OP_TargetHoTT=0x72b0
OP_XTargetResponse=0x38c9
OP_XTargetRequest=0x616b
OP_XTargetAutoAddHaters=0x0ef7
OP_TargetBuffs=0x0aa5
OP_BuffCreate=0x3e45
OP_BuffRemoveRequest=0x063f
OP_DeleteSpawn=0x49e0
OP_AutoAttack=0x18e2
OP_AutoAttack2=0x6af7
OP_Consume=0x6388
OP_MoveItem=0x2bf6
OP_DeleteItem=0x388a
OP_DeleteCharge=0x6d3e
OP_ItemPacket=0x608e
OP_ItemLinkResponse=0x08af
OP_ItemLinkClick=0x5564
OP_ItemPreview=0x57e3
OP_NewSpawn=0x0009
OP_Track=0x1261
OP_TrackTarget=0x3a0a
OP_TrackUnknown=0x7c61
OP_ClickDoor=0x718e
OP_MoveDoor=0x3953
OP_RemoveAllDoors=0x4ca7
OP_EnvDamage=0x71bc
OP_BoardBoat=0x3bf8
OP_Forage=0x1c5b
OP_LeaveBoat=0x136c
OP_ControlBoat=0x0686
OP_SafeFallSuccess=0x001c
OP_RezzComplete=0x105a
OP_RezzRequest=0x546d
OP_RezzAnswer=0x58b4
OP_Shielding=0x747c
OP_RequestDuel=0x1a3a
OP_MobRename=0x6732
OP_AugmentItem=0x269c # Was 0x37cb
OP_WeaponEquip1=0x0232
OP_WeaponEquip2=0x6f0c # Was 0x6022
OP_WeaponUnequip2=0x1310 # Was 0x0110
OP_ApplyPoison=0x319c
OP_Save=0x2ab5
OP_TestBuff=0x0a40 # Was 0x3772
OP_CustomTitles=0x3fab
OP_Split=0x6f03
OP_YellForHelp=0x79c5
OP_LoadSpellSet=0x520e
OP_Bandolier=0x1b9f
OP_PotionBelt=0xb71d # Was 0x4d3b
OP_DuelResponse=0x51cd
OP_DuelResponse2=0x5b83
OP_SaveOnZoneReq=0x2a94
OP_ReadBook=0x1fbe
OP_Dye=0x6158
OP_InterruptCast=0x1ed1
OP_AAAction=0x7515
OP_LeadershipExpToggle=0x6005
OP_LeadershipExpUpdate=0x6527
OP_PurchaseLeadershipAA=0x7a2e
OP_UpdateLeadershipAA=0x05c4
OP_MarkNPC=0x7d33
OP_ClearNPCMarks=0x34ca
OP_DelegateAbility=0x57eb
OP_SetGroupTarget=0x2eff
OP_Charm=0x1d9e
OP_Stun=0x1a1a
OP_SendFindableNPCs=0x6788
OP_FindPersonRequest=0x6ccd
OP_FindPersonReply=0x1f1c
OP_Sound=0x6957
OP_PetBuffWindow=0x66a7
OP_LevelAppearance=0x3714
OP_Translocate=0x4613
OP_Sacrifice=0x1502
OP_PopupResponse=0x53e9
OP_OnLevelMessage=0x1b75
OP_AugmentInfo=0x7afb
OP_Petition=0x5f39
OP_SomeItemPacketMaybe=0x5357
OP_PVPStats=0x1dbf # Unsure
OP_PVPLeaderBoardRequest=0x60fa
OP_PVPLeaderBoardReply=0x9639
OP_PVPLeaderBoardDetailsRequest=0x02a0
OP_PVPLeaderBoardDetailsReply=0x628f
OP_RestState=0x3f4c
OP_RespawnWindow=0x311b
OP_LDoNButton=0x528a
OP_SetStartCity=0x7d25 # Was 0x2d1b
OP_VoiceMacroIn=0x5a9f
OP_VoiceMacroOut=0xbaab
OP_ItemViewUnknown=0x0285
OP_VetRewardsAvaliable=0x05e1
OP_VetClaimRequest=0x18c9
OP_VetClaimReply=0x22d7
OP_DisciplineUpdate=0x2bf1 # Was 0x2f05
OP_DisciplineTimer=0x3f01 # Was 0x5e3f
OP_BecomeCorpse=0x0000 # Unused?
OP_Action2=0x0000 # Unused?
OP_MobUpdate=0x3c0e
OP_NPCMoveUpdate=0x1df9
OP_CameraEffect=0x7b49
OP_SpellEffect=0x655c
OP_RemoveNimbusEffect=0x3d58
OP_AltCurrency=0x1df7
OP_AltCurrencyMerchantRequest=0x1c52
OP_AltCurrencyMerchantReply=0x5976
OP_AltCurrencyPurchase=0x2322
OP_AltCurrencySell=0x34d8
OP_AltCurrencySellSelection=0x39ca
OP_AltCurrencyReclaim=0x5f85
OP_CrystalCountUpdate=0x6b56 # Was 0x3f60
OP_CrystalCreate=0x1b2a # Was 0x5a82
OP_CrystalReclaim=0x19cb # Was 0x7616
OP_Untargetable=0x442c
OP_IncreaseStats=0x502f
OP_Weblink=0x70c8
#OP_OpenInventory=0x0000 # Likely does not exist in RoF -U
OP_OpenContainer=0x0000
OP_DzQuit=0x6dc9
OP_DzListTimers=0x59b4
OP_DzAddPlayer=0x0cc4
OP_DzRemovePlayer=0x5421
OP_DzSwapPlayer=0x0260
OP_DzMakeLeader=0x18cf
OP_DzPlayerList=0x2767
OP_DzJoinExpeditionConfirm=0x25a4
OP_DzJoinExpeditionReply=0x0dd1
OP_DzExpeditionInfo=0x74b5
OP_DzExpeditionList=0x2270
OP_DzMemberStatus=0x1952
OP_DzLeaderStatus=0x0c68
OP_DzExpeditionEndsWarning=0x2443
OP_DzMemberList=0x0000
OP_DzCompass=0x3dfd # Was 0x4f09
OP_DzChooseZone=0x0000 # Maybe 0x29d6
# New Opcodes
OP_SpawnPositionUpdate=0x0000 # Actually OP_MobUpdate ?
OP_ManaUpdate=0x48e4
OP_EnduranceUpdate=0x47d6
OP_MobManaUpdate=0x752a
OP_MobEnduranceUpdate=0x244c
# Mercenary Opcodes
OP_MercenaryDataUpdateRequest=0x5fdf
OP_MercenaryDataUpdate=0x7f41
OP_MercenaryDataRequest=0x565b
OP_MercenaryDataResponse=0x14b8
OP_MercenaryHire=0x2455
OP_MercenaryDismiss=0x1455
OP_MercenaryTimerRequest=0x2afe
OP_MercenaryTimer=0x2972
OP_MercenaryUnknown1=0x71dd
OP_MercenaryCommand=0x10d3
OP_MercenarySuspendRequest=0x096d
OP_MercenarySuspendResponse=0x1d94
OP_MercenaryUnsuspendResponse=0x2f6b
# Looting
OP_LootRequest=0x64e9
OP_EndLootRequest=0x4542
OP_LootItem=0x2cf8
OP_LootComplete=0x60fe
# bazaar trader stuff:
OP_BazaarSearch=0x3b59
OP_TraderDelItem=0x0000
OP_BecomeTrader=0x2a43
OP_TraderShop=0x2b3b
OP_Trader=0x1e94 # Was 0x6790
OP_TraderBuy=0x0000
OP_Barter=0x5df5
OP_ShopItem=0x0000
OP_BazaarInspect=0x0000
OP_Bazaar=0x0000
OP_TraderItemUpdate=0x0000
# pc/npc trading
OP_TradeRequest=0x7506
OP_TradeAcceptClick=0x2d41
OP_TradeRequestAck=0x619d
OP_TradeCoins=0x6e22
OP_FinishTrade=0x4676
OP_CancelTrade=0x2e79
OP_TradeMoneyUpdate=0x29df
OP_MoneyUpdate=0x6ef4
OP_TradeBusy=0x73c4
# Sent after canceling trade or after closing tradeskill object
OP_FinishWindow=0x4c2b
OP_FinishWindow2=0x0830
# Sent on Live for what seems to be item existance verification
# Ex. Before Right Click Effect happens from items
OP_ItemVerifyRequest=0x2977
OP_ItemVerifyReply=0x7640
# merchant stuff
OP_ShopPlayerSell=0x396d
OP_ShopRequest=0x6717
OP_ShopEnd=0x0bf6
OP_ShopEndConfirm=0x7b50
OP_ShopPlayerBuy=0x5013
OP_ShopDelItem=0x1658
# tradeskill stuff:
OP_ClickObject=0x00c6
OP_ClickObjectAction=0x49ed
OP_ClearObject=0x22c2
OP_RecipeDetails=0x120d
OP_RecipesFavorite=0x40bd
OP_RecipesSearch=0x5bc1
OP_RecipeReply=0x37ca
OP_RecipeAutoCombine=0x741a
OP_TradeSkillCombine=0x7272
# Tribute Packets:
OP_OpenGuildTributeMaster=0x57a8
OP_OpenTributeMaster=0x48e8 # Was 0x40f5
OP_SelectTribute=0x1b89
OP_TributeItem=0x0434
OP_TributeMoney=0x032b # Was 0x6fed
OP_TributeToggle=0x5c5e
OP_TributePointUpdate=0x13ab
OP_TributeNPC=0x0000
OP_GuildTributeInfo=0x0000
OP_OpenTributeReply=0x0000
OP_GuildTributeStatus=0x0000
# Adventure packets:
OP_LeaveAdventure=0x0b93
OP_AdventureFinish=0x6f69
OP_AdventureInfoRequest=0x6ecf
OP_AdventureInfo=0x5463
OP_AdventureRequest=0x4715
OP_AdventureDetails=0x43f0
OP_AdventureData=0x9515
OP_AdventureUpdate=0x372a
OP_AdventureMerchantRequest=0x4fb7 # Was 654d
OP_AdventureMerchantResponse=0x2988 # Was 7949
OP_AdventureMerchantPurchase=0x15a8 # Was 155a
OP_AdventureMerchantSell=0x486c # Was 389c
OP_AdventurePointsUpdate=0x677c # Was 7589
OP_AdventureStatsRequest=0x0130
OP_AdventureStatsReply=0x0b8d
OP_AdventureLeaderboardRequest=0x1437
OP_AdventureLeaderboardReply=0x3c78
# Group Opcodes
OP_GroupDisband=0x34d7
OP_GroupInvite=0x4533
OP_GroupFollow=0x6e8f
OP_GroupUpdate=0x2b6a
OP_GroupUpdateB=0x4c76
OP_GroupCancelInvite=0x0000
OP_GroupAcknowledge=0x465d
OP_GroupDelete=0x0fa1
OP_CancelInvite=0x2fb6
OP_GroupFollow2=0x2e85
OP_GroupInvite2=0x1a45
OP_GroupDisbandYou=0x5c5a
OP_GroupDisbandOther=0x39f0
OP_GroupLeaderChange=0x00f0
OP_GroupRoles=0x228a
OP_GroupMakeLeader=0x6050
OP_DoGroupLeadershipAbility=0x42aa
OP_GroupLeadershipAAUpdate=0x5b21
# LFG/LFP Opcodes
OP_LFGCommand=0x79f1
OP_LFGGetMatchesRequest=0x7069
OP_LFGGetMatchesResponse=0x6fd7
OP_LFPGetMatchesRequest=0x6276
OP_LFPGetMatchesResponse=0x3008
OP_LFPCommand=0x087e
OP_LFGAppearance=0x0000
OP_LFGResponse=0x0000
# Raid Opcodes
OP_RaidInvite=0x6988
OP_RaidUpdate=0x09f9
OP_RaidJoin=0x0000
# Button-push commands
OP_Taunt=0x751f
OP_CombatAbility=0x02aa
OP_SenseTraps=0x2d68 # Was 0x2ee0
OP_PickPocket=0x6d4b
OP_DisarmTraps=0x0000
OP_Disarm=0x49ca
OP_Sneak=0x1975
OP_Fishing=0x6b72
OP_InstillDoubt=0x2bd1
OP_FeignDeath=0x574e
OP_Mend=0x219f
OP_Bind_Wound=0x10d5
OP_LDoNOpen=0x57e2
# Task packets
OP_TaskDescription=0x2b71
OP_TaskActivity=0x53b3
OP_CompletedTasks=0x7c6b
OP_TaskActivityComplete=0x16c5
OP_AcceptNewTask=0x1e7a
OP_CancelTask=0x1798
OP_TaskMemberList=0x4844 # Was 0x1656
OP_OpenNewTasksWindow=0x67b4 # Was 0x11de
OP_AvaliableTask=0x0a3f # Was 0x2377
OP_TaskHistoryRequest=0x4c34
OP_TaskHistoryReply=0x593e
OP_DeclineAllTasks=0x0000
# Title opcodes
OP_NewTitlesAvailable=0x1104
OP_RequestTitles=0x71b2
OP_SendTitleList=0x6d31
OP_SetTitle=0x7ade
OP_SetTitleReply=0x23f0
# mail opcodes
OP_Command=0x0000
OP_MailboxHeader=0x0000
OP_MailHeader=0x0000
OP_MailBody=0x0000
OP_NewMail=0x0000
OP_SentConfirm=0x0000
########### Below this point should not be needed ###########
# This section are all unknown in Titanium
OP_ForceFindPerson=0x0000
OP_LocInfo=0x0000
OP_ReloadUI=0x0000
OP_ItemName=0x0000
OP_ItemLinkText=0x0000
OP_MultiLineMsg=0x0000
OP_MendHPUpdate=0x0000
OP_TargetReject=0x0000
OP_SafePoint=0x0000
OP_ApproveZone=0x0000
OP_ZoneComplete=0x0000
OP_ClientError=0x0000
OP_DumpName=0x0000
OP_Heartbeat=0x0000
OP_CrashDump=0x0000
OP_LoginComplete=0x0000
# discovered opcodes not yet used:
OP_PickLockSuccess=0x0000
OP_PlayMP3=0x0000
OP_ReclaimCrystals=0x0000
OP_DynamicWall=0x0000
OP_OpenDiscordMerchant=0x0000
OP_DiscordMerchantInventory=0x0000
OP_GiveMoney=0x0000
OP_RequestKnowledgeBase=0x0000
OP_KnowledgeBase=0x0000
OP_SlashAdventure=0x0000 # /adventure
OP_BecomePVPPrompt=0x0000
OP_MoveLogRequest=0x0000 # gone I think
OP_MoveLogDisregard=0x0000 # gone I think
# named unknowns, to make looking for real unknown easier
OP_AnnoyingZoneUnknown=0x0000
OP_Some6ByteHPUpdate=0x0000 seems to happen when you target group members
OP_QueryResponseThing=0x0000
# realityincarnate: these are just here to stop annoying several thousand byte packet dumps
#OP_LoginUnknown1=0x46d3 # OP_SendSpellChecksum
#OP_LoginUnknown2=0x040b # OP_SendSkillCapsChecksum
# Petition Opcodes
OP_PetitionSearch=0x0000 search term for petition
OP_PetitionSearchResults=0x0000 (list of?) matches from search
OP_PetitionSearchText=0x0000 text results of search
OP_PetitionUpdate=0x0000
OP_PetitionCheckout=0x0000
OP_PetitionCheckIn=0x0000
OP_PetitionQue=0x0000
OP_PetitionUnCheckout=0x0000
OP_PetitionDelete=0x0000
OP_DeletePetition=0x0000
OP_PetitionResolve=0x0000
OP_PDeletePetition=0x0000
OP_PetitionBug=0x0000
OP_PetitionRefresh=0x0000
OP_PetitionCheckout2=0x0000
OP_PetitionViewPetition=0x0000
# Login opcodes
OP_SessionReady=0x0000
OP_Login=0x0000
OP_ServerListRequest=0x0000
OP_PlayEverquestRequest=0x0000
OP_PlayEverquestResponse=0x0000
OP_ChatMessage=0x0000
OP_LoginAccepted=0x0000
OP_ServerListResponse=0x0000
OP_Poll=0x0000
OP_EnterChat=0x0000
OP_PollResponse=0x0000
# raw opcodes
OP_RAWSessionRequest=0x0000
OP_RAWSessionResponse=0x0000
OP_RAWCombined=0x0000
OP_RAWSessionDisconnect=0x0000
OP_RAWKeepAlive=0x0000
OP_RAWSessionStatRequest=0x0000
OP_RAWSessionStatResponse=0x0000
OP_RAWPacket=0x0000
OP_RAWFragment=0x0000
OP_RAWOutOfOrderAck=0x0000
OP_RAWAck=0x0000
OP_RAWAppCombined=0x0000
OP_RAWOutOfSession=0x0000
# we need to document the differences between these packets to make identifying them easier
OP_Some3ByteHPUpdate=0x0000 # initial HP update for mobs
OP_InitialHPUpdate=0x0000

Binary file not shown.