Remove trailing whitespace

This commit is contained in:
j883376
2013-05-06 13:07:41 -04:00
parent 7a93966158
commit ffcff4aea1
548 changed files with 16397 additions and 16398 deletions
@@ -142,7 +142,7 @@ Derision: Redesigned the UI. Use the menu bar, or the following shortcuts:
Ctrl-V View Packets
Ctrl-A Dump AA
Ctrl-D Show Debug Window (hidden by default. Change in Options).
Ctrl-O Set Options (these settings persist across sessions).
Ctrl-O Set Options (these settings persist across sessions).
Derision: Added the ability to disable removal of redundant waypoints.
Derision: Added an option to only generate SQL for spawns whose name contains a given string.
@@ -153,7 +153,7 @@ Derision: Fixed crash when Debug log was closed rather than just hidden.
Derision: Replaced HexDump method with a considerably faster version.
==07/14/2010==
Derision: Renamed PatchTestJune242010Decoder to PatchJuly132010Decoder.
Derision: Renamed PatchTestJune242010Decoder to PatchJuly132010Decoder.
Derision: Updated patch_May12-2010.conf with current EQEmu patch_Live.conf. Updated version number to 2.0.5
==06/26/2010==
@@ -60,9 +60,9 @@ namespace EQApplicationLayer
// Put our supported patch version decoders into the list.
PatchList = new List<PatchSpecficDecoder>();
PatchList.Add(new PatchMay122010Decoder());
PatchList.Add(new PatchJuly132010Decoder());
PatchList.Add(new PatchTestSep012010Decoder());
@@ -92,7 +92,7 @@ namespace EQApplicationLayer
PatchList.Add(new PatchJuly132012Decoder());
PatchList.Add(new PatchAugust152012Decoder());
PatchList.Add(new PatchDecember102012Decoder());
PatchList.Add(new PatchJanuary162013Decoder());
@@ -106,10 +106,10 @@ namespace EQApplicationLayer
PatchList.Add(new PatchMarch132013Decoder());
PatchList.Add(new PatchApril152013Decoder());
PatchList.Add(new PatchSoD());
}
}
// This is called from the main form to tell us where the application was launched from (where to look for the .conf files)
// and also gives us the LogHandler method so we can send debug messages to the main form.
@@ -143,7 +143,7 @@ namespace EQApplicationLayer
}
public string GetDecoderVersion()
{
{
// We don't need to check if PatchDecoder is null, because it is always initialised to an instance of the base
// PatchSpecficDecoder class
return PatchDecoder.GetVersion();
@@ -156,7 +156,7 @@ namespace EQApplicationLayer
}
public bool DumpPackets(string FileName, bool ShowTimeStamps)
{
{
return PatchDecoder.DumpPackets(FileName, ShowTimeStamps);
}
@@ -187,7 +187,7 @@ namespace EQApplicationLayer
else if (TempStatus > Status)
Status = TempStatus;
}
return Status;
return Status;
}
// This is called by the main form when all the packets have been processed. It prompts us to pass the packets down
@@ -214,7 +214,7 @@ namespace EQApplicationLayer
{
return PatchDecoder.GetCaptureStartTime();
}
public string GetZoneName()
{
return PatchDecoder.GetZoneName();
@@ -255,13 +255,13 @@ namespace EQApplicationLayer
SQLOut("DELETE from doors where zone = '" + ZoneName + "' and doorid >= @BaseDoorID and doorid <= @BaseDoorID + " + UpperBound + " and version = " + SpawnVersion + ";");
foreach(Door d in DoorList)
{
{
if ((d.OpenType == 57) || (d.OpenType == 58))
{
{
ZonePoint? zp = GetZonePointNumber(d.DoorParam);
if (zp != null)
{
{
d.DestZone = ZoneNumberToName(zp.Value.TargetZoneID);
d.DestX = zp.Value.TargetX;
d.DestY = zp.Value.TargetY;
@@ -276,7 +276,7 @@ namespace EQApplicationLayer
SQLOut(DoorQuery);
}
}
}
public void GenerateSpawnSQL(bool GenerateSpawns, bool GenerateGrids, bool GenerateMerchants,
string ZoneName, UInt32 ZoneID, UInt32 SpawnVersion,
@@ -325,18 +325,18 @@ namespace EQApplicationLayer
NPCSpawnList NPCSL = new NPCSpawnList();
foreach(ZoneEntryStruct Spawn in ZoneSpawns)
{
{
if (NPCType.IsMount(Spawn.SpawnName))
continue;
if (!IncludeInvisibleMen && (Spawn.Race == 127))
continue;
Spawn.Findable = (FindableEntities.IndexOf(Spawn.SpawnID) >= 0);
if (Spawn.IsNPC != 1)
continue;
if (Spawn.PetOwnerID > 0)
continue;
@@ -346,9 +346,9 @@ namespace EQApplicationLayer
bool ColoursInUse = false;
for (int ColourSlot = 0; ColourSlot < 9; ++ColourSlot)
{
{
if (((Spawn.SlotColour[ColourSlot] & 0x00ffffff) != 0) && UseNPCTypesTint)
ColoursInUse = true;
ColoursInUse = true;
}
if (Spawn.IsMercenary > 0)
@@ -358,7 +358,7 @@ namespace EQApplicationLayer
Spawn.BodyType, Spawn.HairColor, Spawn.BeardColor, Spawn.EyeColor1, Spawn.EyeColor2, Spawn.HairStyle, Spawn.Beard,
Spawn.DrakkinHeritage, Spawn.DrakkinTattoo, Spawn.DrakkinDetails, Spawn.Deity, Spawn.Class, Spawn.EquipChest2,
Spawn.Helm, Spawn.LastName);
if (ExistingDBID == 0)
{
@@ -368,7 +368,7 @@ namespace EQApplicationLayer
Spawn.Helm, Spawn.LastName, Spawn.Findable, Spawn.MeleeTexture1, Spawn.MeleeTexture2, Spawn.ArmorTintRed, Spawn.ArmorTintGreen, Spawn.ArmorTintBlue, Spawn.SlotColour);
NPCTL.AddNPCType(NewNPCType);
ExistingDBID = NPCTypeDBID++;
UInt32 ArmorTintID = 0;
@@ -435,17 +435,17 @@ namespace EQApplicationLayer
string Spawn2EntryQuery = "INSERT INTO spawn2(`id`, `spawngroupID`, `zone`, `version`, `x`, `y`, `z`, `heading`, `respawntime`, `variance`, `pathgrid`, `_condition`, `cond_value`, `enabled`) VALUES(";
Spawn2EntryQuery += "@StartingSpawn2ID + " + Spawn2ID + ", @StartingSpawnGroupID + " + SpawnGroupID + ", '" + ZoneName + "', " + SpawnVersion + ", " + Spawn.XPos + ", " + Spawn.YPos + ", " + Spawn.ZPos + ", ";
Spawn2EntryQuery += Spawn.Heading + ", 640, 0, 0, 0, 1, 1);";
SpawnGroupID++;
SpawnEntryID++;
Spawn2ID++;
if (GenerateSpawns)
{
SQLOut(SpawnGroupQuery);
SQLOut(SpawnEntryQuery);
SQLOut(Spawn2EntryQuery);
}
}
}
if (UpdateExistingNPCTypes)
@@ -472,7 +472,7 @@ namespace EQApplicationLayer
for (int ColourSlot = 0; ColourSlot < 9; ++ColourSlot)
{
if (((n.SlotColour[ColourSlot] & 0x00ffffff) != 0) && UseNPCTypesTint)
ColoursInUse = true;
ColoursInUse = true;
}
if (ColoursInUse)
@@ -505,11 +505,11 @@ namespace EQApplicationLayer
}
if (GenerateGrids)
{
{
List<PositionUpdate> AllMovementUpdates = PatchDecoder.GetAllMovementUpdates();
foreach (PositionUpdate Update in AllMovementUpdates)
NPCSL.AddWaypoint(Update.SpawnID, Update.p, Update.HighRes);
foreach (PositionUpdate Update in AllMovementUpdates)
NPCSL.AddWaypoint(Update.SpawnID, Update.p, Update.HighRes);
SQLOut("--");
SQLOut("-- Grids");
@@ -520,24 +520,24 @@ namespace EQApplicationLayer
foreach (NPCSpawn ns in NPCSL._NPCSpawnList)
{
if (ns.Waypoints.Count > 1)
{
{
bool AllWaypointsTheSame = true;
for (int WPNumber = 0; WPNumber < ns.Waypoints.Count; ++WPNumber)
{
{
if (WPNumber == 0)
continue;
if ((ns.Waypoints[WPNumber].x != ns.Waypoints[WPNumber - 1].x) ||
(ns.Waypoints[WPNumber].y != ns.Waypoints[WPNumber - 1].y) ||
(ns.Waypoints[WPNumber].z != ns.Waypoints[WPNumber - 1].z))
{
AllWaypointsTheSame = false;
AllWaypointsTheSame = false;
}
}
if (AllWaypointsTheSame)
continue;
int WaypointsInserted = 0;
int WPNum = 1;
@@ -551,10 +551,10 @@ namespace EQApplicationLayer
for (int WPNumber = FirstUsableWaypoint; WPNumber < ns.Waypoints.Count; ++WPNumber)
{
Position p = ns.Waypoints[WPNumber];
Position p = ns.Waypoints[WPNumber];
if (CoalesceWaypoints)
{
{
if ((WPNumber > FirstUsableWaypoint) && (WPNumber < (ns.Waypoints.Count - 2)))
{
Position np = ns.Waypoints[WPNumber + 1];
@@ -579,14 +579,14 @@ namespace EQApplicationLayer
}
}
// If this is the last waypoint, and we haven't inserted any of the previous ones, then don't bother
// If this is the last waypoint, and we haven't inserted any of the previous ones, then don't bother
// with this one either.
if ((WPNumber == (ns.Waypoints.Count - 1)) && (WaypointsInserted == 0))
continue;
SQLOut("INSERT into grid_entries (`gridid`, `zoneid`, `number`, `x`, `y`, `z`, `heading`, `pause`) VALUES(@StartingGridID + " + GridDBID + ", " + ZoneID + ", " + (WPNum++) + ", " + p.x + ", " + p.y + ", " + p.z + ", " + p.heading + ", " + Pause + ");");
++WaypointsInserted;
++WaypointsInserted;
}
if (WaypointsInserted > 1)
{
@@ -598,7 +598,7 @@ namespace EQApplicationLayer
SQLOut("UPDATE spawn2 set x = " + ns.Waypoints[1].x + ", y = " + ns.Waypoints[1].y + ", z = " + ns.Waypoints[1].z + ", heading = " + ns.Waypoints[1].heading + " WHERE id = @StartingSpawn2ID + " + ns.Spawn2DBID + ";");
++GridDBID;
}
}
}
}
}
@@ -627,7 +627,7 @@ namespace EQApplicationLayer
continue;
UInt32 MerchantNPCTypeID = npc.NPCTypeID;
SQLOut("--");
SQLOut("-- " + npc.Name);
SQLOut("-- ");
@@ -639,7 +639,7 @@ namespace EQApplicationLayer
string Insert = "";
if (mi.Quantity >= 0)
{
{
if (!StartOfPlayerSoldItems)
{
StartOfPlayerSoldItems = true;
@@ -662,7 +662,7 @@ namespace EQApplicationLayer
SQLOut("UPDATE npc_types SET merchant_id = @StartingMerchantID + " + MerchantDBID + " WHERE id = @StartingNPCTypeID + " + MerchantNPCTypeID + ";");
++MerchantDBID;
}
}
}
public void GenerateZonePointSQL(string ZoneName, SQLDestination SQLOut)
@@ -671,13 +671,13 @@ namespace EQApplicationLayer
{
string Insert = String.Format("REPLACE into zone_points(`zone`, `number`, `y`, `x`, `z`, `heading`, `target_y`, `target_x`, `target_z`, `target_heading`, `zoneinst`, `target_zone_id`, `buffer`) VALUES('{0}', {1}, 0, 0, 0, 0, {2}, {3}, {4}, {5}, {6}, {7}, 0);", ZoneName, zp.Number, zp.y, zp.x, zp.z, zp.Heading, zp.Instance, zp.ZoneID);
SQLOut(Insert);
SQLOut(Insert);
}
}
public void GenerateZonePointList()
{
ZonePointList = PatchDecoder.GetZonePointList();
ZonePointList = PatchDecoder.GetZonePointList();
}
public ZonePoint? GetZonePointNumber(Int32 Number)
@@ -697,7 +697,7 @@ namespace EQApplicationLayer
{
UInt16 ZoneID = PatchDecoder.GetZoneNumber();
NewZoneStruct NewZone = PatchDecoder.GetZoneData();
NewZoneStruct NewZone = PatchDecoder.GetZoneData();
SQLOut("--");
SQLOut("-- Zone Config");
@@ -725,7 +725,7 @@ namespace EQApplicationLayer
public bool DumpAAs(string FileName)
{
return PatchDecoder.DumpAAs(FileName);
}
}
public void GenerateObjectSQL(bool DoGroundSpawns, bool DoObjects, UInt32 SpawnVersion, SQLDestination SQLOut)
{
@@ -794,7 +794,7 @@ namespace EQApplicationLayer
case "IT10802_ACTORDEF":
return 16;
case "IT10803_ACTORDEF":
return 15;
return 15;
case "IT10865_ACTORDEF":
return 15;
case "IT128_ACTORDEF":
@@ -215,7 +215,7 @@
<Content Include="ChangeLog.txt" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
+46 -46
View File
@@ -53,32 +53,32 @@
this.StatusBar = new System.Windows.Forms.ToolStripStatusLabel();
this.statusStrip1.SuspendLayout();
this.SuspendLayout();
//
//
// InputFileOpenDialog
//
//
this.InputFileOpenDialog.Filter = "Capture Files (*.pcap)|*.pcap|All files (*.*)|*.*";
//
//
// PacketDumpFileDialog
//
//
this.PacketDumpFileDialog.Filter = "Text Files (*.txt)|*.txt|All files (*.*)|*.*";
this.PacketDumpFileDialog.Title = "Dump Packets To File";
//
//
// ProgressBar
//
//
this.ProgressBar.Location = new System.Drawing.Point(2, 78);
this.ProgressBar.Name = "ProgressBar";
this.ProgressBar.Size = new System.Drawing.Size(627, 23);
this.ProgressBar.TabIndex = 35;
this.ProgressBar.Visible = false;
//
//
// mainMenu1
//
//
this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.menuFile,
this.menuView});
//
//
// menuFile
//
//
this.menuFile.Index = 0;
this.menuFile.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.menuLoadPCAP,
@@ -88,131 +88,131 @@
this.menuViewPackets,
this.menuExit});
this.menuFile.Text = "File";
//
//
// menuLoadPCAP
//
//
this.menuLoadPCAP.Index = 0;
this.menuLoadPCAP.Shortcut = System.Windows.Forms.Shortcut.CtrlL;
this.menuLoadPCAP.Text = "Load PCAP";
this.menuLoadPCAP.Click += new System.EventHandler(this.menuLoadPCAP_Click);
//
//
// menuGenerateSQL
//
//
this.menuGenerateSQL.Enabled = false;
this.menuGenerateSQL.Index = 1;
this.menuGenerateSQL.Shortcut = System.Windows.Forms.Shortcut.CtrlS;
this.menuGenerateSQL.Text = "Generate SQL";
this.menuGenerateSQL.Click += new System.EventHandler(this.menuGenerateSQL_Click);
//
//
// menuPacketDump
//
//
this.menuPacketDump.Enabled = false;
this.menuPacketDump.Index = 2;
this.menuPacketDump.Shortcut = System.Windows.Forms.Shortcut.CtrlP;
this.menuPacketDump.Text = "Packet Dump";
this.menuPacketDump.Click += new System.EventHandler(this.menuPacketDump_Click);
//
//
// menuDumpAAs
//
//
this.menuDumpAAs.Enabled = false;
this.menuDumpAAs.Index = 3;
this.menuDumpAAs.Shortcut = System.Windows.Forms.Shortcut.CtrlA;
this.menuDumpAAs.Text = "Dump AAs";
this.menuDumpAAs.Click += new System.EventHandler(this.menuDumpAAs_Click);
//
//
// menuViewPackets
//
//
this.menuViewPackets.Enabled = false;
this.menuViewPackets.Index = 4;
this.menuViewPackets.Shortcut = System.Windows.Forms.Shortcut.CtrlV;
this.menuViewPackets.Text = "View Packets";
this.menuViewPackets.Click += new System.EventHandler(this.menuViewPackets_Click);
//
//
// menuExit
//
//
this.menuExit.Index = 5;
this.menuExit.Text = "Exit";
this.menuExit.Click += new System.EventHandler(this.menuExit_Click);
//
//
// menuView
//
//
this.menuView.Index = 1;
this.menuView.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.menuViewDebugLog,
this.menuOptions});
this.menuView.Text = "View";
this.menuView.Popup += new System.EventHandler(this.menuView_Popup);
//
//
// menuViewDebugLog
//
//
this.menuViewDebugLog.Index = 0;
this.menuViewDebugLog.Shortcut = System.Windows.Forms.Shortcut.CtrlD;
this.menuViewDebugLog.Text = "Debug Log";
this.menuViewDebugLog.Click += new System.EventHandler(this.menuViewDebugLog_Click);
//
//
// menuOptions
//
//
this.menuOptions.Index = 1;
this.menuOptions.Shortcut = System.Windows.Forms.Shortcut.CtrlO;
this.menuOptions.Text = "Options";
this.menuOptions.Click += new System.EventHandler(this.menuOptions_Click);
//
//
// label1
//
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(12, 9);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(92, 13);
this.label1.TabIndex = 36;
this.label1.Text = "EQ Client Version:";
//
//
// ClientVersionLabel
//
//
this.ClientVersionLabel.AutoSize = true;
this.ClientVersionLabel.Location = new System.Drawing.Point(116, 9);
this.ClientVersionLabel.Name = "ClientVersionLabel";
this.ClientVersionLabel.Size = new System.Drawing.Size(166, 13);
this.ClientVersionLabel.TabIndex = 37;
this.ClientVersionLabel.Text = ".PCAP file not loaded. Press Ctrl-L";
//
//
// label2
//
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(55, 37);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(49, 13);
this.label2.TabIndex = 38;
this.label2.Text = "Packets:";
//
//
// PacketCountLabel
//
//
this.PacketCountLabel.AutoSize = true;
this.PacketCountLabel.Location = new System.Drawing.Point(116, 37);
this.PacketCountLabel.Name = "PacketCountLabel";
this.PacketCountLabel.Size = new System.Drawing.Size(145, 13);
this.PacketCountLabel.TabIndex = 39;
this.PacketCountLabel.Text = " ";
//
//
// ZoneLabelText
//
//
this.ZoneLabelText.AutoSize = true;
this.ZoneLabelText.Location = new System.Drawing.Point(72, 62);
this.ZoneLabelText.Name = "ZoneLabelText";
this.ZoneLabelText.Size = new System.Drawing.Size(32, 13);
this.ZoneLabelText.TabIndex = 40;
this.ZoneLabelText.Text = "Zone";
//
//
// ZoneLabel
//
//
this.ZoneLabel.AutoSize = true;
this.ZoneLabel.Location = new System.Drawing.Point(116, 62);
this.ZoneLabel.Name = "ZoneLabel";
this.ZoneLabel.Size = new System.Drawing.Size(145, 13);
this.ZoneLabel.TabIndex = 41;
this.ZoneLabel.Text = " ";
//
//
// statusStrip1
//
//
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.StatusBar});
this.statusStrip1.Location = new System.Drawing.Point(0, 104);
@@ -220,15 +220,15 @@
this.statusStrip1.Size = new System.Drawing.Size(633, 22);
this.statusStrip1.TabIndex = 42;
this.statusStrip1.Text = "statusStrip1";
//
//
// StatusBar
//
//
this.StatusBar.Name = "StatusBar";
this.StatusBar.Size = new System.Drawing.Size(209, 17);
this.StatusBar.Text = "Ready. Press Ctrl-L to load a .PCAP file";
//
//
// EQExtractor2Form1
//
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(633, 126);
@@ -1,7 +1,7 @@
//
// Copyright (C) 2001-2010 EQEMu Development Team (http://eqemulator.net). Distributed under GPL version 2.
//
//
//
using System;
using System.Collections.Generic;
@@ -11,7 +11,7 @@ using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using SharpPcap;
using SharpPcap;
using EQApplicationLayer;
namespace EQExtractor2
@@ -46,16 +46,16 @@ namespace EQExtractor2
Options.ShowTimeStamps.Checked = Properties.Settings.Default.DumpTimeStamps;
}
public void Log(string Message)
{
DebugLog.ConsoleWindow.Items.Add(Message);
DebugLog.ConsoleWindow.SelectedIndex = DebugLog.ConsoleWindow.Items.Count - 1;
Application.DoEvents();
}
private void device_OnPacketArrival(object sender, SharpPcap.CaptureEventArgs e)
{
{
if (e.Packet.LinkLayerType == PacketDotNet.LinkLayers.Ethernet)
{
PacketDotNet.Packet packet;
@@ -65,11 +65,11 @@ namespace EQExtractor2
++PacketsSeen;
if ((PacketsSeen > 0) && ((PacketsSeen % 10000) == 0))
{
{
DebugLog.ConsoleWindow.SelectedIndex = DebugLog.ConsoleWindow.Items.Count - 1;
int Progress = (int)((float)BytesRead / (float)CaptureFileSize * 100);
ProgressBar.Value = Progress;
Application.DoEvents();
}
@@ -91,7 +91,7 @@ namespace EQExtractor2
var ipPacket = (PacketDotNet.IpPacket)udpPacket.ParentPacket;
System.Net.IPAddress srcIp = ipPacket.SourceAddress;
System.Net.IPAddress dstIp = ipPacket.DestinationAddress;
byte[] Payload = udpPacket.PayloadData;
Int32 l = udpPacket.Length - udpPacket.Header.GetLength(0);
@@ -105,7 +105,7 @@ namespace EQExtractor2
}
}
}
public void WriteSQL(string Message)
{
SQLStream.WriteLine(Message);
@@ -121,7 +121,7 @@ namespace EQExtractor2
foreach (Control c in this.Controls)
{
if ((c is Button) || (c is TextBox) || (c is MaskedTextBox) || (c is CheckBox))
c.Enabled = false;
c.Enabled = false;
}
}
@@ -132,17 +132,17 @@ namespace EQExtractor2
c.Enabled = true;
menuGenerateSQL.Enabled = StreamProcessor.StreamRecognised() && StreamProcessor.SupportsSQLGeneration();
menuDumpAAs.Enabled = StreamProcessor.StreamRecognised();
menuDumpAAs.Enabled = StreamProcessor.StreamRecognised();
}
private void menuLoadPCAP_Click(object sender, EventArgs e)
{
if (InputFileOpenDialog.ShowDialog() != DialogResult.OK)
return;
menuGenerateSQL.Enabled = false;
menuGenerateSQL.Enabled = false;
menuPacketDump.Enabled = false;
menuViewPackets.Enabled = false;
menuViewPackets.Enabled = false;
menuDumpAAs.Enabled = false;
SharpPcap.OfflinePcapDevice device;
@@ -183,7 +183,7 @@ namespace EQExtractor2
Log("Failed to open netcode debug file for writing.");
Options.EQPacketDebugFilename.Text = "";
StreamProcessor.Packets.SetDebugLogHandler(null);
}
}
}
else
StreamProcessor.Packets.SetDebugLogHandler(null);
@@ -228,13 +228,13 @@ namespace EQExtractor2
menuPacketDump.Enabled = true;
menuViewPackets.Enabled = true;
Log("Stream recognised as " + StreamProcessor.GetDecoderVersion());
int PPLength = StreamProcessor.VerifyPlayerProfile();
ClientVersionLabel.Text = StreamProcessor.GetDecoderVersion();
if (PPLength == 0)
{
Log("Unable to find player profile packet, or packet not of correct size.");
@@ -252,9 +252,9 @@ namespace EQExtractor2
Log("Found player profile packet of the expected length (" + PPLength + ").");
if(StreamProcessor.SupportsSQLGeneration())
StatusBar.Text = "Client version recognised. Press Ctrl-S to Generate SQL";
StatusBar.Text = "Client version recognised. Press Ctrl-S to Generate SQL";
else
StatusBar.Text = "Client version recognised. *SQL GENERATION NOT SUPPORTED FOR THIS CLIENT*";
StatusBar.Text = "Client version recognised. *SQL GENERATION NOT SUPPORTED FOR THIS CLIENT*";
}
ZoneName = StreamProcessor.GetZoneName();
@@ -266,7 +266,7 @@ namespace EQExtractor2
Log("Zone number is " + ZoneNumber);
ZoneLabel.Text = StreamProcessor.GetZoneLongName() + " [" + StreamProcessor.GetZoneName() + "] (" + ZoneNumber.ToString() + ")";
SQLForm.ZoneIDTextBox.Text = ZoneNumber.ToString();
SQLForm.ZoneIDTextBox.Enabled = true;
SQLForm.DoorsTextBox.Enabled = true;
@@ -283,14 +283,14 @@ namespace EQExtractor2
menuPacketDump.Enabled = true;
menuViewPackets.Enabled = true;
menuDumpAAs.Enabled = true;
SQLForm.RecalculateBaseInsertIDs();
StreamProcessor.GenerateZonePointList();
}
private void menuGenerateSQL_Click(object sender, EventArgs e)
{
{
if (SQLForm.ShowDialog() != DialogResult.OK)
return;
@@ -325,7 +325,7 @@ namespace EQExtractor2
WriteSQL("-- SQL created by " + Version);
WriteSQL("--");
WriteSQL("-- Using Decoder: " + StreamProcessor.GetDecoderVersion());
WriteSQL("--");
WriteSQL("--");
WriteSQL("-- Packets captured on " + StreamProcessor.GetCaptureStartTime().ToString());
WriteSQL("--");
WriteSQL("-- Change these variables if required");
@@ -437,7 +437,7 @@ namespace EQExtractor2
{
menuViewDebugLog.Checked = true;
ShowDebugLog();
}
else
{
@@ -453,7 +453,7 @@ namespace EQExtractor2
Application.DoEvents();
string TextFileViewer = Properties.Settings.Default.TextFileViewer;
string TempFileName = Path.GetTempFileName();
if (StreamProcessor.DumpPackets(TempFileName, Properties.Settings.Default.DumpTimeStamps))
@@ -479,7 +479,7 @@ namespace EQExtractor2
if (Properties.Settings.Default.ShowDebugWindowOnStartup)
{
ShowDebugLog();
}
}
@@ -505,7 +505,7 @@ namespace EQExtractor2
Log("To generate SQL, press Ctrl-S and select the check boxes and set the starting SQL INSERT IDs as required.");
Log("Review the generated SQL before sourcing as DELETEs are auto-generated.");
Log("Press Ctrl-V to view packets, or Ctrl-D to dump them to a text file.");
Log("");
Log("");
}
private void menuOptions_Click(object sender, EventArgs e)
@@ -554,6 +554,6 @@ namespace EQExtractor2
{
menuViewDebugLog.Checked = DebugLog.Visible;
}
}
}
}
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
@@ -26,36 +26,36 @@
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
+35 -35
View File
@@ -1,7 +1,7 @@
//
// Copyright (C) 2001-2010 EQEMu Development Team (http://eqemulator.net). Distributed under GPL version 2.
//
//
//
// This is the netcode for turning SOE protocol packets into EQ Application Packets
//
using System;
@@ -45,20 +45,20 @@ namespace EQPacket
public DateTime PacketTime;
public bool Locked = false;
}
public class PacketManager
{
bool DEBUG = false;
bool DUMPPACKETS = false;
private void Debug(string Message)
{
if (DebugLogger != null)
DebugLogger(Message);
DebugLogger(Message);
}
public bool ErrorsInStream = false;
const UInt32 OP_SessionRequest = 0x0001;
const UInt32 OP_SessionResponse = 0x0002;
const UInt32 OP_Combined = 0x0003;
@@ -74,7 +74,7 @@ namespace EQPacket
private int[] FragmentedPacketSize = {0, 0};
private int[] FragmentedBytesCollected = {0, 0};
private byte[][] Fragments = new byte [2][];
private System.Net.IPAddress ServerIP;
private ushort ServerPort = 0;
@@ -136,7 +136,7 @@ namespace EQPacket
PacketList.Add(Packet);
}
private struct CacheEntry
{
public int Seq;
@@ -152,7 +152,7 @@ namespace EQPacket
Payload = inPayload;
PacketTime = inPacketTime;
SubPacket = inSubPacket;
}
}
}
private List<CacheEntry> Cache = new List<CacheEntry>();
@@ -212,7 +212,7 @@ namespace EQPacket
int CacheElement;
CacheElement = FindCacheEntry(GetExpectedSeq(PacketDirection.ServerToClient), PacketDirection.ServerToClient);
while ( CacheElement >= 0)
{
if (DEBUG)
@@ -267,8 +267,8 @@ namespace EQPacket
++ExpectedClientSEQ;
else if (Direction == PacketDirection.ServerToClient)
++ExpectedServerSEQ;
}
}
public void ProcessPacket(System.Net.IPAddress srcIp, System.Net.IPAddress dstIp, ushort srcPort, ushort dstPort, byte[] Payload, DateTime PacketTime, bool SubPacket, bool Cached)
{
byte Flags = 0x00;
@@ -313,7 +313,7 @@ namespace EQPacket
ServerIP = dstIp;
ServerPort = dstPort;
Log("-- Locked onto EQ Stream. Client IP " + srcIp + ":" + srcPort + " Server IP " + dstIp + ":" + dstPort);
ExpectedClientSEQ = 0;
@@ -321,7 +321,7 @@ namespace EQPacket
ExpectedServerSEQ = 0;
CryptoFlag = 0;
break;
}
@@ -395,7 +395,7 @@ namespace EQPacket
{
if (DEBUG)
Debug("0xa5");
Uncompressed = new byte[Payload.Length - 5];
Array.Copy(Payload, 3, Uncompressed, 0, Payload.Length - 5);
@@ -436,12 +436,12 @@ namespace EQPacket
AdvanceSeq(Direction);
}
}
break;
}
else
AdvanceSeq(Direction);
bool Multi = ((Uncompressed[2] == 0x00) && (Uncompressed[3] == 0x19));
@@ -473,11 +473,11 @@ namespace EQPacket
++BufferPosition;
OpCodeBytes = 3;
}
AppOpCode += (Uncompressed[BufferPosition++] * 256);
ProcessAppPacket(srcIp, dstIp, srcPort, dstPort, AppOpCode, Size - OpCodeBytes, Uncompressed, BufferPosition, Direction, PacketTime);
BufferPosition = BufferPosition + (Size - OpCodeBytes);
}
}
@@ -494,7 +494,7 @@ namespace EQPacket
OpCodeBytes = 3;
}
AppOpCode += (Uncompressed[BufferPosition++] * 256);
AppOpCode += (Uncompressed[BufferPosition++] * 256);
ProcessAppPacket(srcIp, dstIp, srcPort, dstPort, AppOpCode, Uncompressed.Length - (2 + OpCodeBytes), Uncompressed, BufferPosition, Direction, PacketTime);
}
@@ -539,7 +539,7 @@ namespace EQPacket
{
Debug("Uncompressed data.");
Debug(Utils.HexDump(Uncompressed));
}
}
if (FragmentSeq[(int)Direction] == -1)
{
@@ -552,7 +552,7 @@ namespace EQPacket
Debug("FragmentSeq is " + FragmentSeq[(int)Direction] + " Expecting " + GetExpectedSeq(Direction));
if (FragmentSeq[(int)Direction] != GetExpectedSeq(Direction))
{
{
if (FragmentSeq[(int)Direction] > GetExpectedSeq(Direction))
{
if((FragmentSeq[(int)Direction] - GetExpectedSeq(Direction)) < 1000)
@@ -569,7 +569,7 @@ namespace EQPacket
}
}
FragmentSeq[(int)Direction] = -1;
break;
}
else
@@ -636,7 +636,7 @@ namespace EQPacket
FragmentSeq[(int)Direction] = -1;
}
}
}
break;
}
else
@@ -700,7 +700,7 @@ namespace EQPacket
AppOpCode += (Fragments[(int)Direction][BufferPosition++] * 256);
ProcessAppPacket(srcIp, dstIp, srcPort, dstPort, AppOpCode, Size - OpCodeBytes, Fragments[(int)Direction], BufferPosition, Direction, PacketTime);
BufferPosition = BufferPosition + (Size - OpCodeBytes);
}
}
@@ -721,7 +721,7 @@ namespace EQPacket
byte[] NewPacket = new byte[Fragments[(int)Direction].Length - OpCodeBytes];
Array.Copy(Fragments[(int)Direction], BufferPosition, NewPacket, 0, Fragments[(int)Direction].Length - OpCodeBytes);
ProcessAppPacket(srcIp, dstIp, srcPort, dstPort, AppOpCode, NewPacket.Length, NewPacket, 0, Direction, PacketTime);
}
if (DEBUG)
@@ -730,7 +730,7 @@ namespace EQPacket
FragmentSeq[(int)Direction] = -1;
}
}
break;
}
case OP_OutOfOrderAck:
@@ -750,7 +750,7 @@ namespace EQPacket
Seq = Payload[3] * 256 + Payload[4];
else
Seq = Payload[2] * 256 + Payload[3];
string DirectionString;
if(Direction == PacketDirection.ClientToServer)
@@ -763,7 +763,7 @@ namespace EQPacket
Debug("OP_Ack, Seq " + Seq + " " + DirectionString);
Debug(Utils.HexDump(Payload));
}
break;
}
default:
@@ -776,7 +776,7 @@ namespace EQPacket
Debug(Utils.HexDump(Payload));
Debug("-------------------");
}
int AppOpCode;
byte[] NewPacket;
@@ -791,7 +791,7 @@ namespace EQPacket
else
{
// This packet has a flag byte between the first and second bytes of the opcode, and also a CRC
Flags = Payload[1];
if (Flags == 0x5a)
@@ -837,7 +837,7 @@ namespace EQPacket
}
if (!Cached && !CacheEmpty())
ProcessCache();
ProcessCache();
}
public void ProcessAppPacket(System.Net.IPAddress srcIp, System.Net.IPAddress dstIp, ushort srcPort, ushort dstPort, int InOpCode, int BufferSize, byte[] Source, int Offset, PacketDirection Direction, DateTime PacketTime)
@@ -854,7 +854,7 @@ namespace EQPacket
PermaLocked = true;
}
Identified = (TempStatus == IdentificationStatus.Yes);
}
}
AddPacket(app);
}
@@ -885,7 +885,7 @@ namespace EQPacket
UncompressedSize = Payload.Length - (Offset - 1);
}
zs.Close();
zs.Dispose();
@@ -897,6 +897,6 @@ namespace EQPacket
Array.Resize(ref Uncompressed, UncompressedSize);
return Uncompressed;
}
}
}
}
+86 -86
View File
@@ -77,9 +77,9 @@
this.groupBox2.SuspendLayout();
this.MiscOptions.SuspendLayout();
this.SuspendLayout();
//
//
// groupBox1
//
//
this.groupBox1.Controls.Add(this.MerchantTextBox);
this.groupBox1.Controls.Add(this.MerchantLabel);
this.groupBox1.Controls.Add(this.GroundSpawnTextBox);
@@ -108,9 +108,9 @@
this.groupBox1.TabIndex = 0;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "Insert IDs";
//
//
// MerchantTextBox
//
//
this.MerchantTextBox.Enabled = false;
this.MerchantTextBox.HidePromptOnLeave = true;
this.MerchantTextBox.Location = new System.Drawing.Point(107, 302);
@@ -119,18 +119,18 @@
this.MerchantTextBox.PromptChar = ' ';
this.MerchantTextBox.Size = new System.Drawing.Size(61, 20);
this.MerchantTextBox.TabIndex = 34;
//
//
// MerchantLabel
//
//
this.MerchantLabel.AutoSize = true;
this.MerchantLabel.Location = new System.Drawing.Point(14, 306);
this.MerchantLabel.Name = "MerchantLabel";
this.MerchantLabel.Size = new System.Drawing.Size(76, 13);
this.MerchantLabel.TabIndex = 33;
this.MerchantLabel.Text = "Merchant Lists";
//
//
// GroundSpawnTextBox
//
//
this.GroundSpawnTextBox.Enabled = false;
this.GroundSpawnTextBox.HidePromptOnLeave = true;
this.GroundSpawnTextBox.Location = new System.Drawing.Point(107, 274);
@@ -139,18 +139,18 @@
this.GroundSpawnTextBox.PromptChar = ' ';
this.GroundSpawnTextBox.Size = new System.Drawing.Size(61, 20);
this.GroundSpawnTextBox.TabIndex = 32;
//
//
// GroundSpawnLabel
//
//
this.GroundSpawnLabel.AutoSize = true;
this.GroundSpawnLabel.Location = new System.Drawing.Point(7, 278);
this.GroundSpawnLabel.Name = "GroundSpawnLabel";
this.GroundSpawnLabel.Size = new System.Drawing.Size(83, 13);
this.GroundSpawnLabel.TabIndex = 31;
this.GroundSpawnLabel.Text = "Ground Spawns";
//
//
// ObjectTextBox
//
//
this.ObjectTextBox.Enabled = false;
this.ObjectTextBox.HidePromptOnLeave = true;
this.ObjectTextBox.Location = new System.Drawing.Point(107, 246);
@@ -159,18 +159,18 @@
this.ObjectTextBox.PromptChar = ' ';
this.ObjectTextBox.Size = new System.Drawing.Size(61, 20);
this.ObjectTextBox.TabIndex = 30;
//
//
// label1
//
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(47, 250);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(43, 13);
this.label1.TabIndex = 29;
this.label1.Text = "Objects";
//
//
// GridTextBox
//
//
this.GridTextBox.Enabled = false;
this.GridTextBox.HidePromptOnLeave = true;
this.GridTextBox.Location = new System.Drawing.Point(107, 218);
@@ -179,18 +179,18 @@
this.GridTextBox.PromptChar = ' ';
this.GridTextBox.Size = new System.Drawing.Size(61, 20);
this.GridTextBox.TabIndex = 28;
//
//
// GridLabel
//
//
this.GridLabel.AutoSize = true;
this.GridLabel.Location = new System.Drawing.Point(59, 222);
this.GridLabel.Name = "GridLabel";
this.GridLabel.Size = new System.Drawing.Size(31, 13);
this.GridLabel.TabIndex = 27;
this.GridLabel.Text = "Grids";
//
//
// Spawn2TextBox
//
//
this.Spawn2TextBox.Enabled = false;
this.Spawn2TextBox.HidePromptOnLeave = true;
this.Spawn2TextBox.Location = new System.Drawing.Point(107, 190);
@@ -199,18 +199,18 @@
this.Spawn2TextBox.PromptChar = ' ';
this.Spawn2TextBox.Size = new System.Drawing.Size(61, 20);
this.Spawn2TextBox.TabIndex = 26;
//
//
// Spawn2Label
//
//
this.Spawn2Label.AutoSize = true;
this.Spawn2Label.Location = new System.Drawing.Point(44, 194);
this.Spawn2Label.Name = "Spawn2Label";
this.Spawn2Label.Size = new System.Drawing.Size(46, 13);
this.Spawn2Label.TabIndex = 25;
this.Spawn2Label.Text = "Spawn2";
//
//
// SpawnEntryTextBox
//
//
this.SpawnEntryTextBox.Enabled = false;
this.SpawnEntryTextBox.HidePromptOnLeave = true;
this.SpawnEntryTextBox.Location = new System.Drawing.Point(107, 162);
@@ -219,18 +219,18 @@
this.SpawnEntryTextBox.PromptChar = ' ';
this.SpawnEntryTextBox.Size = new System.Drawing.Size(61, 20);
this.SpawnEntryTextBox.TabIndex = 24;
//
//
// SpawnEntryLabel
//
//
this.SpawnEntryLabel.AutoSize = true;
this.SpawnEntryLabel.Location = new System.Drawing.Point(26, 166);
this.SpawnEntryLabel.Name = "SpawnEntryLabel";
this.SpawnEntryLabel.Size = new System.Drawing.Size(64, 13);
this.SpawnEntryLabel.TabIndex = 23;
this.SpawnEntryLabel.Text = "SpawnEntry";
//
//
// SpawnGroupTextBox
//
//
this.SpawnGroupTextBox.Enabled = false;
this.SpawnGroupTextBox.HidePromptOnLeave = true;
this.SpawnGroupTextBox.Location = new System.Drawing.Point(107, 134);
@@ -239,18 +239,18 @@
this.SpawnGroupTextBox.PromptChar = ' ';
this.SpawnGroupTextBox.Size = new System.Drawing.Size(61, 20);
this.SpawnGroupTextBox.TabIndex = 22;
//
//
// SpawnGroupLabel
//
//
this.SpawnGroupLabel.AutoSize = true;
this.SpawnGroupLabel.Location = new System.Drawing.Point(21, 138);
this.SpawnGroupLabel.Name = "SpawnGroupLabel";
this.SpawnGroupLabel.Size = new System.Drawing.Size(69, 13);
this.SpawnGroupLabel.TabIndex = 21;
this.SpawnGroupLabel.Text = "SpawnGroup";
//
//
// NPCTypesTextBox
//
//
this.NPCTypesTextBox.Enabled = false;
this.NPCTypesTextBox.HidePromptOnLeave = true;
this.NPCTypesTextBox.Location = new System.Drawing.Point(107, 106);
@@ -259,18 +259,18 @@
this.NPCTypesTextBox.PromptChar = ' ';
this.NPCTypesTextBox.Size = new System.Drawing.Size(61, 20);
this.NPCTypesTextBox.TabIndex = 20;
//
//
// label3
//
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(32, 110);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(58, 13);
this.label3.TabIndex = 19;
this.label3.Text = "NPCTypes";
//
//
// DoorsTextBox
//
//
this.DoorsTextBox.Enabled = false;
this.DoorsTextBox.HidePromptOnLeave = true;
this.DoorsTextBox.Location = new System.Drawing.Point(107, 78);
@@ -279,18 +279,18 @@
this.DoorsTextBox.PromptChar = ' ';
this.DoorsTextBox.Size = new System.Drawing.Size(61, 20);
this.DoorsTextBox.TabIndex = 18;
//
//
// DoorsLabel
//
//
this.DoorsLabel.AutoSize = true;
this.DoorsLabel.Location = new System.Drawing.Point(55, 82);
this.DoorsLabel.Name = "DoorsLabel";
this.DoorsLabel.Size = new System.Drawing.Size(35, 13);
this.DoorsLabel.TabIndex = 17;
this.DoorsLabel.Text = "Doors";
//
//
// VersionSelector
//
//
this.VersionSelector.Enabled = false;
this.VersionSelector.Location = new System.Drawing.Point(107, 50);
this.VersionSelector.Maximum = new decimal(new int[] {
@@ -303,27 +303,27 @@
this.VersionSelector.TabIndex = 16;
this.VersionSelector.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
this.VersionSelector.ValueChanged += new System.EventHandler(this.VersionSelector_ValueChanged);
//
//
// VersionLabel
//
//
this.VersionLabel.AutoSize = true;
this.VersionLabel.Location = new System.Drawing.Point(48, 54);
this.VersionLabel.Name = "VersionLabel";
this.VersionLabel.Size = new System.Drawing.Size(42, 13);
this.VersionLabel.TabIndex = 15;
this.VersionLabel.Text = "Version";
//
//
// label4
//
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(44, 26);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(46, 13);
this.label4.TabIndex = 14;
this.label4.Text = "ZoneID:";
//
//
// ZoneIDTextBox
//
//
this.ZoneIDTextBox.Enabled = false;
this.ZoneIDTextBox.HidePromptOnLeave = true;
this.ZoneIDTextBox.Location = new System.Drawing.Point(107, 22);
@@ -333,9 +333,9 @@
this.ZoneIDTextBox.Size = new System.Drawing.Size(100, 20);
this.ZoneIDTextBox.TabIndex = 13;
this.ZoneIDTextBox.Validated += new System.EventHandler(this.ZoneIDTextBox_Validated);
//
//
// groupBox2
//
//
this.groupBox2.Controls.Add(this.InvisibleMenCheckBox);
this.groupBox2.Controls.Add(this.NPCTypesTintCheckBox);
this.groupBox2.Controls.Add(this.UpdateExistingNPCTypesCheckbox);
@@ -353,9 +353,9 @@
this.groupBox2.TabIndex = 1;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "Include";
//
//
// NPCTypesTintCheckBox
//
//
this.NPCTypesTintCheckBox.AutoSize = true;
this.NPCTypesTintCheckBox.Location = new System.Drawing.Point(24, 233);
this.NPCTypesTintCheckBox.Name = "NPCTypesTintCheckBox";
@@ -365,9 +365,9 @@
this.toolTip1.SetToolTip(this.NPCTypesTintCheckBox, "Uses the npc_types_tint table instead of the tint columns in the npc_types table." +
"");
this.NPCTypesTintCheckBox.UseVisualStyleBackColor = true;
//
//
// UpdateExistingNPCTypesCheckbox
//
//
this.UpdateExistingNPCTypesCheckbox.AutoSize = true;
this.UpdateExistingNPCTypesCheckbox.Location = new System.Drawing.Point(24, 210);
this.UpdateExistingNPCTypesCheckbox.Name = "UpdateExistingNPCTypesCheckbox";
@@ -376,9 +376,9 @@
this.UpdateExistingNPCTypesCheckbox.Text = "Update existing NPC types";
this.UpdateExistingNPCTypesCheckbox.UseVisualStyleBackColor = true;
this.UpdateExistingNPCTypesCheckbox.CheckedChanged += new System.EventHandler(this.UpdateExistingNPCTypesCheckbox_CheckedChanged);
//
//
// ZonePointCheckBox
//
//
this.ZonePointCheckBox.AutoSize = true;
this.ZonePointCheckBox.Checked = true;
this.ZonePointCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
@@ -388,9 +388,9 @@
this.ZonePointCheckBox.TabIndex = 40;
this.ZonePointCheckBox.Text = "Zone Points";
this.ZonePointCheckBox.UseVisualStyleBackColor = true;
//
//
// ZoneCheckBox
//
//
this.ZoneCheckBox.AutoSize = true;
this.ZoneCheckBox.Checked = true;
this.ZoneCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
@@ -400,9 +400,9 @@
this.ZoneCheckBox.TabIndex = 39;
this.ZoneCheckBox.Text = "Zone Config";
this.ZoneCheckBox.UseVisualStyleBackColor = true;
//
//
// MerchantCheckBox
//
//
this.MerchantCheckBox.AutoSize = true;
this.MerchantCheckBox.Checked = true;
this.MerchantCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
@@ -412,9 +412,9 @@
this.MerchantCheckBox.TabIndex = 38;
this.MerchantCheckBox.Text = "Merchant Lists";
this.MerchantCheckBox.UseVisualStyleBackColor = true;
//
//
// GroundSpawnCheckBox
//
//
this.GroundSpawnCheckBox.AutoSize = true;
this.GroundSpawnCheckBox.Checked = true;
this.GroundSpawnCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
@@ -424,9 +424,9 @@
this.GroundSpawnCheckBox.TabIndex = 9;
this.GroundSpawnCheckBox.Text = "Ground Spawns";
this.GroundSpawnCheckBox.UseVisualStyleBackColor = true;
//
//
// ObjectCheckBox
//
//
this.ObjectCheckBox.AutoSize = true;
this.ObjectCheckBox.Checked = true;
this.ObjectCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
@@ -436,9 +436,9 @@
this.ObjectCheckBox.TabIndex = 8;
this.ObjectCheckBox.Text = "Objects";
this.ObjectCheckBox.UseVisualStyleBackColor = true;
//
//
// GridCheckBox
//
//
this.GridCheckBox.AutoSize = true;
this.GridCheckBox.Checked = true;
this.GridCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
@@ -448,9 +448,9 @@
this.GridCheckBox.TabIndex = 7;
this.GridCheckBox.Text = "Grids";
this.GridCheckBox.UseVisualStyleBackColor = true;
//
//
// SpawnCheckBox
//
//
this.SpawnCheckBox.AutoSize = true;
this.SpawnCheckBox.Checked = true;
this.SpawnCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
@@ -461,9 +461,9 @@
this.SpawnCheckBox.Text = "Spawns";
this.SpawnCheckBox.UseVisualStyleBackColor = true;
this.SpawnCheckBox.CheckedChanged += new System.EventHandler(this.SpawnCheckBox_CheckedChanged);
//
//
// DoorCheckBox
//
//
this.DoorCheckBox.AutoSize = true;
this.DoorCheckBox.Checked = true;
this.DoorCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
@@ -473,14 +473,14 @@
this.DoorCheckBox.TabIndex = 4;
this.DoorCheckBox.Text = "Doors";
this.DoorCheckBox.UseVisualStyleBackColor = true;
//
//
// SQLFileDialog
//
//
this.SQLFileDialog.Filter = "SQL Files (*.sql)|*.sql|Text Files (*.txt)|*.txt|All files (*.*)|*.*";
this.SQLFileDialog.Title = "Generate SQL and Save As";
//
//
// GenerateSQLButton
//
//
this.GenerateSQLButton.Location = new System.Drawing.Point(126, 474);
this.GenerateSQLButton.Name = "GenerateSQLButton";
this.GenerateSQLButton.Size = new System.Drawing.Size(100, 27);
@@ -488,9 +488,9 @@
this.GenerateSQLButton.Text = "Generate SQL";
this.GenerateSQLButton.UseVisualStyleBackColor = true;
this.GenerateSQLButton.Click += new System.EventHandler(this.GenerateSQLButton_Click);
//
//
// SQLCancelButton
//
//
this.SQLCancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.SQLCancelButton.Location = new System.Drawing.Point(305, 474);
this.SQLCancelButton.Name = "SQLCancelButton";
@@ -499,9 +499,9 @@
this.SQLCancelButton.Text = "Cancel";
this.SQLCancelButton.UseVisualStyleBackColor = true;
this.SQLCancelButton.Click += new System.EventHandler(this.SQLCancelButton_Click);
//
//
// MiscOptions
//
//
this.MiscOptions.Controls.Add(this.SpawnNameFilter);
this.MiscOptions.Controls.Add(this.label2);
this.MiscOptions.Controls.Add(this.CoalesceWaypoints);
@@ -511,25 +511,25 @@
this.MiscOptions.TabIndex = 2;
this.MiscOptions.TabStop = false;
this.MiscOptions.Text = "Misc. Options";
//
//
// SpawnNameFilter
//
//
this.SpawnNameFilter.Location = new System.Drawing.Point(229, 46);
this.SpawnNameFilter.Name = "SpawnNameFilter";
this.SpawnNameFilter.Size = new System.Drawing.Size(209, 20);
this.SpawnNameFilter.TabIndex = 5;
//
//
// label2
//
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(14, 49);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(209, 13);
this.label2.TabIndex = 4;
this.label2.Text = "Only include spawns that contain the string";
//
//
// CoalesceWaypoints
//
//
this.CoalesceWaypoints.AutoSize = true;
this.CoalesceWaypoints.Checked = true;
this.CoalesceWaypoints.CheckState = System.Windows.Forms.CheckState.Checked;
@@ -540,9 +540,9 @@
this.CoalesceWaypoints.Text = "Automatically coalesce waypoints";
this.toolTip1.SetToolTip(this.CoalesceWaypoints, "Remove redundant waypoints from generated SQL");
this.CoalesceWaypoints.UseVisualStyleBackColor = true;
//
//
// InvisibleMenCheckBox
//
//
this.InvisibleMenCheckBox.AutoSize = true;
this.InvisibleMenCheckBox.Location = new System.Drawing.Point(24, 256);
this.InvisibleMenCheckBox.Name = "InvisibleMenCheckBox";
@@ -551,9 +551,9 @@
this.InvisibleMenCheckBox.Text = "Include Invisible Men";
this.toolTip1.SetToolTip(this.InvisibleMenCheckBox, "Includes Race 127 NPCs");
this.InvisibleMenCheckBox.UseVisualStyleBackColor = true;
//
//
// GenerateSQLForm
//
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.SQLCancelButton;
@@ -96,8 +96,8 @@ namespace EQExtractor2
this.DialogResult = DialogResult.Cancel;
}
}
}
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
@@ -26,36 +26,36 @@
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
@@ -1,7 +1,7 @@
//
// Copyright (C) 2001-2010 EQEMu Development Team (http://eqemulator.net). Distributed under GPL version 2.
//
//
//
using System;
using System.Collections.Generic;
@@ -21,7 +21,7 @@ namespace EQExtractor2.InternalTypes
public UInt32 DropID;
public string Name;
public UInt16 ZoneID;
public UInt16 InstanceID;
public UInt16 InstanceID;
public float Heading;
public float y;
public float x;
@@ -64,7 +64,7 @@ namespace EQExtractor2.InternalTypes
public UInt16 ZoneID;
public UInt16 InstanceID;
public byte FallDamage;
public float FogDensity;
public float FogDensity;
}
public class ZoneEntryStruct
@@ -76,16 +76,16 @@ namespace EQExtractor2.InternalTypes
}
public string SpawnName;
public UInt32 SpawnID;
public UInt32 SpawnID;
public bool Findable;
public Byte Level;
public Byte IsNPC;
public Byte IsNPC;
public uint Showname;
public uint TargetableWithHotkey;
public uint Targetable;
public uint Targetable;
public uint ShowHelm;
public uint Gender;
public byte OtherData;
public byte OtherData;
public string DestructableString1;
public string DestructableString2;
public string DestructableString3;
@@ -120,21 +120,21 @@ namespace EQExtractor2.InternalTypes
public UInt32 DrakkinTattoo;
public UInt32 DrakkinDetails;
public UInt32 Deity;
public byte Class;
public byte EquipChest2;
public byte Class;
public byte EquipChest2;
public byte Helm;
public string LastName;
public UInt32 PetOwnerID;
public float YPos;
public float Heading;
public float XPos;
public float ZPos;
public float Heading;
public float XPos;
public float ZPos;
public UInt32[] SlotColour;
public byte ArmorTintRed;
public byte ArmorTintGreen;
public byte ArmorTintBlue;
public byte ArmorTintBlue;
public UInt32 MeleeTexture1;
public UInt32 MeleeTexture2;
public UInt32 MeleeTexture2;
public UInt32[] Equipment;
public string Title;
public string Suffix;
@@ -383,7 +383,7 @@ namespace EQExtractor2.InternalTypes
public UInt16 Instance;
public float x;
public float y;
public float z;
public float z;
public float TargetX;
public float TargetY;
public float TargetZ;
@@ -575,7 +575,7 @@ namespace EQExtractor2.InternalTypes
public Position p;
public bool HighRes;
public bool HighRes;
}
public class ExplorerSpawnRecord
@@ -632,7 +632,7 @@ namespace EQExtractor2.InternalTypes
public float DestY;
public float DestZ;
public float DestHeading;
}
class MerchantManager
{
+4 -4
View File
@@ -30,9 +30,9 @@
{
this.ConsoleWindow = new System.Windows.Forms.ListBox();
this.SuspendLayout();
//
//
// ConsoleWindow
//
//
this.ConsoleWindow.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
@@ -44,9 +44,9 @@
this.ConsoleWindow.Name = "ConsoleWindow";
this.ConsoleWindow.Size = new System.Drawing.Size(938, 326);
this.ConsoleWindow.TabIndex = 35;
//
//
// LogForm
//
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(962, 355);
+1 -1
View File
@@ -21,6 +21,6 @@ namespace EQExtractor2
e.Cancel = true;
this.Hide();
}
}
}
+27 -27
View File
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
@@ -26,36 +26,36 @@
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
@@ -1,7 +1,7 @@
//
// Copyright (C) 2001-2010 EQEMu Development Team (http://eqemulator.net). Distributed under GPL version 2.
//
//
//
using System;
using System.IO;
@@ -124,8 +124,8 @@ namespace EQExtractor2.OpCodes
public void ResetCounts()
{
foreach (OpCode oc in OpCodeList)
oc.Count = 0;
foreach (OpCode oc in OpCodeList)
oc.Count = 0;
}
public void RegisterExplorer(string Name, ExplorerMethod Explorer)
@@ -137,7 +137,7 @@ namespace EQExtractor2.OpCodes
oc.Explorer = Explorer;
return;
}
}
}
}
public void UnRegisterExplorer(string Name)
Binary file not shown.
@@ -14,8 +14,8 @@ namespace EQExtractor2.Patches
public PatchApril152013Decoder()
{
Version = "EQ Client Build Date April 15 2013.";
PatchConfFileName = "patch_April15-2013.conf";
PatchConfFileName = "patch_April15-2013.conf";
SupportsSQLGeneration = true;
}
@@ -204,7 +204,7 @@ namespace EQExtractor2.Patches
UInt32 Position4 = Buffer.ReadUInt32();
UInt32 Position5 = Buffer.ReadUInt32();
NewSpawn.YPos = Utils.EQ19ToFloat((Int32)((Position1 >> 12) & 0x7FFFF));
NewSpawn.ZPos = Utils.EQ19ToFloat((Int32)(Position2) & 0x7FFFF);
@@ -13,7 +13,7 @@ namespace EQExtractor2.Patches
public PatchAug042011Decoder()
{
Version = "EQ Client Build Date August 04 2011.";
ExpectedPPLength = 28496;
PPZoneIDOffset = 21164;
@@ -17,7 +17,7 @@ namespace EQExtractor2.Patches
ExpectedPPLength = 33904;
PPZoneIDOffset = 26572;
PatchConfFileName = "patch_August15-2012.conf";
}
@@ -28,10 +28,10 @@ namespace EQExtractor2.Patches
Item NewItem = new Item();
Buffer.SetPosition(30);
NewItem.MerchantSlot = Buffer.ReadByte();
NewItem.Price = Buffer.ReadUInt32();
NewItem.MerchantSlot = Buffer.ReadByte();
NewItem.Price = Buffer.ReadUInt32();
Buffer.SkipBytes(5);
NewItem.Quantity = Buffer.ReadInt32();
NewItem.Quantity = Buffer.ReadInt32();
Buffer.SetPosition(109);
// 109
NewItem.Name = Buffer.ReadString(true);
@@ -15,7 +15,7 @@ namespace EQExtractor2.Patches
Version = "EQ Client Build Date December 7 2010.";
PatchConfFileName = "patch_Dec7-2010.conf";
}
override public IdentificationStatus Identify(int OpCode, int Size, PacketDirection Direction)
{
@@ -31,7 +31,7 @@ namespace EQExtractor2.Patches
public override void RegisterExplorers()
{
//OpManager.RegisterExplorer("OP_ClientUpdate", ExploreClientUpdate);
//OpManager.RegisterExplorer("OP_ClientUpdate", ExploreClientUpdate);
}
public void ExploreClientUpdate(StreamWriter OutputStream, ByteStream Buffer, PacketDirection Direction)
@@ -42,7 +42,7 @@ namespace EQExtractor2.Patches
float y = Buffer.ReadSingle();
Buffer.SkipBytes(12);
float z = Buffer.ReadSingle();
Buffer.SkipBytes(4);
UInt32 Temp = Buffer.ReadUInt32();
Temp = Temp & 0x3FFFFF;
@@ -18,7 +18,7 @@ namespace EQExtractor2.Patches
ExpectedPPLength = -1;
PPZoneIDOffset = -1;
PatchConfFileName = "patch_Dec10-2012.conf";
PacketsToMatch = new PacketToMatch[] {
@@ -31,7 +31,7 @@ namespace EQExtractor2.Patches
}
override public IdentificationStatus Identify(int OpCode, int Size, PacketDirection Direction)
{
{
if ((OpCode == OpManager.OpCodeNameToNumber(PacketsToMatch[WaitingForPacket].OPCodeName)) &&
(Direction == PacketsToMatch[WaitingForPacket].Direction))
{
@@ -42,7 +42,7 @@ namespace EQExtractor2.Patches
return IdentificationStatus.Yes;
WaitingForPacket++;
return IdentificationStatus.Tentative;
}
@@ -119,8 +119,8 @@ namespace EQExtractor2.Patches
ByteStream Buffer = new ByteStream(PlayerProfilePacket[0]);
Buffer.SkipBytes(24);
Buffer.SkipBytes(24);
UInt32 BindCount = Buffer.ReadUInt32();
for (int i = 0; i < BindCount; ++i)
@@ -129,7 +129,7 @@ namespace EQExtractor2.Patches
}
Buffer.SkipBytes(8); // Deity, intoxication
UInt32 SpellRefreshCount = Buffer.ReadUInt32();
UInt32 SpellRefreshCount = Buffer.ReadUInt32();
for (int i = 0; i < SpellRefreshCount; ++i)
{
@@ -137,20 +137,20 @@ namespace EQExtractor2.Patches
}
UInt32 EquipmentCount = Buffer.ReadUInt32();
for (int i = 0; i < EquipmentCount; ++i)
{
Buffer.SkipBytes(20);
}
UInt32 SomethingCount = Buffer.ReadUInt32();
UInt32 SomethingCount = Buffer.ReadUInt32();
for (int i = 0; i < SomethingCount; ++i)
{
Buffer.SkipBytes(20);
}
SomethingCount = Buffer.ReadUInt32();
SomethingCount = Buffer.ReadUInt32();
for (int i = 0; i < SomethingCount; ++i)
{
@@ -158,7 +158,7 @@ namespace EQExtractor2.Patches
}
SomethingCount = Buffer.ReadUInt32();
for (int i = 0; i < SomethingCount; ++i)
{
Buffer.SkipBytes(4);
@@ -169,25 +169,25 @@ namespace EQExtractor2.Patches
UInt32 Points = Buffer.ReadUInt32();
UInt32 Mana = Buffer.ReadUInt32();
UInt32 CurHP = Buffer.ReadUInt32();
Buffer.SkipBytes(28);
Buffer.SkipBytes(28);
UInt32 AACount = Buffer.ReadUInt32();
for (int i = 0; i < AACount; ++i)
{
Buffer.SkipBytes(12);
}
SomethingCount = Buffer.ReadUInt32();
for (int i = 0; i < SomethingCount; ++i)
{
Buffer.SkipBytes(4);
}
SomethingCount = Buffer.ReadUInt32();
for (int i = 0; i < SomethingCount; ++i)
{
Buffer.SkipBytes(4);
@@ -305,7 +305,7 @@ namespace EQExtractor2.Patches
UInt16 ZoneID = Buffer.ReadUInt16();
return ZoneID;
}
override public List<ZoneEntryStruct> GetSpawns()
@@ -335,7 +335,7 @@ namespace EQExtractor2.Patches
UInt32 Bitfield = Buffer.ReadUInt32();
NewSpawn.Gender = (Bitfield & 3);
Byte OtherData = Buffer.ReadByte();
Buffer.SkipBytes(8); // Skip 8 unknown bytes
@@ -367,7 +367,7 @@ namespace EQExtractor2.Patches
NewSpawn.BodyType = Buffer.ReadUInt32();
else
NewSpawn.BodyType = 0;
for (int j = 1; j < NewSpawn.PropCount; ++j)
Buffer.SkipBytes(4);
@@ -399,9 +399,9 @@ namespace EQExtractor2.Patches
NewSpawn.WalkSpeed = Buffer.ReadSingle();
NewSpawn.RunSpeed = Buffer.ReadSingle();
NewSpawn.Race = Buffer.ReadUInt32();
Buffer.SkipBytes(1); // Skip Holding
NewSpawn.Deity = Buffer.ReadUInt32();
@@ -411,9 +411,9 @@ namespace EQExtractor2.Patches
NewSpawn.Class = Buffer.ReadByte();
Buffer.SkipBytes(4); // Skip PVP, Standstate, Light, Flymode
NewSpawn.LastName = Buffer.ReadString(true);
Buffer.SkipBytes(6);
NewSpawn.PetOwnerID = Buffer.ReadUInt32();
@@ -421,7 +421,7 @@ namespace EQExtractor2.Patches
Buffer.SkipBytes(25);
NewSpawn.MeleeTexture1 = 0;
NewSpawn.MeleeTexture2 = 0;
NewSpawn.MeleeTexture2 = 0;
if ( (NewSpawn.IsNPC == 0) || NPCType.IsPlayableRace(NewSpawn.Race))
{
@@ -501,7 +501,7 @@ namespace EQExtractor2.Patches
NewSpawn.Heading = Utils.EQ19ToFloat((Int32)(Position5) & 0x7FFFF);
if ((OtherData & 16) > 0)
@@ -626,7 +626,7 @@ namespace EQExtractor2.Patches
DecodeItemPacket(OutputStream, Buffer, Direction);
}
}
@@ -669,7 +669,7 @@ namespace EQExtractor2.Patches
String Desc = Buffer.ReadString(false);
OutputStream.WriteLine("Duration: {0}, Unk4: {1:X}, StartTime: {2:X}", Duration, Unk4, StartTime);
OutputStream.WriteLine("Desc: {0}", Desc);
@@ -765,7 +765,7 @@ namespace EQExtractor2.Patches
}
OutputStream.WriteLine("");
//OutputStream.WriteLine("Offset is now: {0}", Buffer.GetPosition());
}
}
@@ -803,7 +803,7 @@ namespace EQExtractor2.Patches
//float DeltaHeading = Utils.EQ19ToFloat((int)(Word & 0x3FF));
}
}
@@ -843,11 +843,11 @@ namespace EQExtractor2.Patches
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());
Buffer.GetPosition(), i, Buffer.ReadUInt32(), Buffer.ReadSingle(), Buffer.ReadSingle(),Buffer.ReadSingle(),Buffer.ReadSingle());
}
OutputStream.WriteLine("");
@@ -858,10 +858,10 @@ namespace EQExtractor2.Patches
//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)
{
@@ -872,7 +872,7 @@ namespace EQExtractor2.Patches
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);
@@ -901,7 +901,7 @@ namespace EQExtractor2.Patches
UInt32 TintCount = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: TintCount = {1}", Buffer.GetPosition() - 4, TintCount);
OutputStream.WriteLine("{0, -5}: TintCount = {1}", Buffer.GetPosition() - 4, TintCount);
for (int i = 0; i < TintCount; ++i)
{
@@ -976,8 +976,8 @@ namespace EQExtractor2.Patches
UInt32 AACount = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: AA Count = {1}", Buffer.GetPosition() - 4, AACount);
OutputStream.WriteLine("{0, -5}: AA Count = {1}", Buffer.GetPosition() - 4, AACount);
for (int i = 0; i < AACount; ++i)
{
@@ -988,25 +988,25 @@ namespace EQExtractor2.Patches
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);
OutputStream.WriteLine("{0, -5}: Something Count = {1}", Buffer.GetPosition() - 4, SomethingCount);
for (int i = 0; i < SomethingCount; ++i)
{
Buffer.SkipBytes(4);
}
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);
@@ -1014,12 +1014,12 @@ namespace EQExtractor2.Patches
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);
}
UInt32 RecastCount = Buffer.ReadUInt32();
OutputStream.WriteLine("{0, -5}: Recast Count = {1}", Buffer.GetPosition() - 4, RecastCount);
@@ -1037,11 +1037,11 @@ namespace EQExtractor2.Patches
Buffer.SkipBytes(4);
}
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);
@@ -1050,7 +1050,7 @@ namespace EQExtractor2.Patches
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);
@@ -1059,18 +1059,18 @@ namespace EQExtractor2.Patches
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("{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();
@@ -1104,7 +1104,7 @@ namespace EQExtractor2.Patches
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());
@@ -1118,14 +1118,14 @@ namespace EQExtractor2.Patches
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);
@@ -1146,11 +1146,11 @@ namespace EQExtractor2.Patches
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);
Buffer.SkipBytes(8);
}
OutputStream.WriteLine("{0, -5}: Unknown {1}", Buffer.GetPosition(), Buffer.ReadInt32());
@@ -1186,7 +1186,7 @@ namespace EQExtractor2.Patches
int CurrentPosition = Buffer.GetPosition();
OutputStream.WriteLine("{0, -5}: Name: {1}", Buffer.GetPosition(), Buffer.ReadString(false));
Buffer.SetPosition(CurrentPosition + (int)NameLength);
UInt32 LastNameLength = Buffer.ReadUInt32();
@@ -1209,10 +1209,10 @@ namespace EQExtractor2.Patches
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}",
@@ -1341,7 +1341,7 @@ namespace EQExtractor2.Patches
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());
@@ -1358,7 +1358,7 @@ namespace EQExtractor2.Patches
// Air remaining ?
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
// Next 7 could be PVP stats,
// 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());
@@ -1426,16 +1426,16 @@ namespace EQExtractor2.Patches
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());
}
@@ -1490,12 +1490,12 @@ namespace EQExtractor2.Patches
OutputStream.WriteLine("Properties = {0}, Offset now {1}", Properties, Buffer.GetPosition());
UInt32 BodyType = 0;
if(Properties > 0)
BodyType = Buffer.ReadUInt32();
OutputStream.WriteLine("Bodytype = {0}", BodyType);
if (Properties != 1)
OutputStream.WriteLine("XXXX Properties is {0}", Properties);
@@ -1552,7 +1552,7 @@ namespace EQExtractor2.Patches
{
UInt32 Equip3 = Buffer.ReadUInt32();
UInt32 Equipx = Buffer.ReadUInt32();
UInt32 Equipx = Buffer.ReadUInt32();
UInt32 Equip2 = Buffer.ReadUInt32();
@@ -1560,13 +1560,13 @@ namespace EQExtractor2.Patches
UInt32 Equip0 = Buffer.ReadUInt32();
OutputStream.WriteLine("Equip slot {0}: 0,1,2,x,3 is {1}, {2}, {3}, {4}, {5}", i,
OutputStream.WriteLine("Equip slot {0}: 0,1,2,x,3 is {1}, {2}, {3}, {4}, {5}", i,
Equip0, Equip1, Equip2, Equipx, Equip3);
}
}
else
@@ -1635,7 +1635,7 @@ namespace EQExtractor2.Patches
if (Buffer.Length() != Buffer.GetPosition())
OutputStream.WriteLine("PARSE ERROR");
@@ -44,7 +44,7 @@ namespace EQExtractor2.Patches
ByteStream Buffer = new ByteStream(PacketBuffer);
Item NewItem = new Item();
Buffer.SetPosition(30);
NewItem.MerchantSlot = Buffer.ReadByte(); // 13
NewItem.Price = Buffer.ReadUInt32(); // 14
@@ -14,10 +14,10 @@ namespace EQExtractor2.Patches
public PatchFebruary112013Decoder()
{
Version = "EQ Client Build Date February 11 2013.";
PatchConfFileName = "patch_Feb11-2013.conf";
PacketsToMatch = new PacketToMatch[] {
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 },
};
@@ -691,7 +691,7 @@ namespace EQExtractor2.Patches
// Air remaining ?
OutputStream.WriteLine("{0, -5}: Unknown {1:X}", Buffer.GetPosition(), Buffer.ReadUInt32());
// Next 7 could be PVP stats,
// 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());
@@ -36,7 +36,7 @@ namespace EQExtractor2.Patches
{
return Version;
}
virtual public bool UnsupportedVersion()
{
return ExpectedPPLength == 0;
@@ -70,7 +70,7 @@ namespace EQExtractor2.Patches
{
return 0;
}
virtual public MerchantManager GetMerchantData(NPCSpawnList NPCSL)
{
return null;
@@ -128,7 +128,7 @@ namespace EQExtractor2.Patches
virtual public PositionUpdate Decode_OP_NPCMoveUpdate(byte[] UpdatePacket)
{
PositionUpdate PosUpdate = new PositionUpdate();
PositionUpdate PosUpdate = new PositionUpdate();
return PosUpdate;
}
@@ -165,12 +165,12 @@ namespace EQExtractor2.Patches
{
return "";
}
virtual public bool DumpAAs(string FileName)
{
return false;
}
public void GivePackets(PacketManager pm)
{
Packets = pm;
@@ -281,7 +281,7 @@ namespace EQExtractor2.Patches
return "";
}
protected PacketManager Packets;
public OpCodeManager OpManager;
@@ -14,8 +14,8 @@ namespace EQExtractor2.Patches
public PatchJanuary162013Decoder()
{
Version = "EQ Client Build Date January 16 2013.";
PatchConfFileName = "patch_Jan16-2013.conf";
PatchConfFileName = "patch_Jan16-2013.conf";
}
override public List<ZoneEntryStruct> GetSpawns()
@@ -240,7 +240,7 @@ namespace EQExtractor2.Patches
{
//OpManager.RegisterExplorer("OP_ZoneEntry", ExploreZoneEntry);
//OpManager.RegisterExplorer("OP_NPCMoveUpdate", ExploreNPCMoveUpdate);
//OpManager.RegisterExplorer("OP_MobUpdate", ExploreMobUpdate);
//OpManager.RegisterExplorer("OP_MobUpdate", ExploreMobUpdate);
}
public void ExploreNPCMoveUpdate(StreamWriter OutputStream, ByteStream Buffer, PacketDirection Direction)
@@ -1,7 +1,7 @@
//
// Copyright (C) 2001-2010 EQEMu Development Team (http://eqemulator.net). Distributed under GPL version 2.
//
//
//
using System;
using System.IO;
using System.Collections.Generic;
@@ -45,7 +45,7 @@ namespace EQExtractor2.Patches
OutputStream.WriteLine("Item: {0} at Slot: {1}", Name, Slot);
}
public void ExploreCastSpell(StreamWriter OutputStream, ByteStream Buffer, PacketDirection Direction)
{
@@ -138,6 +138,6 @@ namespace EQExtractor2.Patches
OutputStream.WriteLine("\r\nBuffer position at end is {0}", Buffer.GetPosition());
OutputStream.WriteLine("");
}
}
}
@@ -17,8 +17,8 @@ namespace EQExtractor2.Patches
ExpectedPPLength = 33784;
PPZoneIDOffset = 26452;
PatchConfFileName = "patch_July13-2012.conf";
}
}
}
}
@@ -13,8 +13,8 @@ namespace EQExtractor2.Patches
public PatchJune252012Decoder()
{
Version = "EQ Client Build Date June 25 2012.";
PatchConfFileName = "patch_June25-2012.conf";
}
}
}
}
@@ -22,7 +22,7 @@ namespace EQExtractor2.Patches
}
public override void RegisterExplorers()
{
{
//OpManager.RegisterExplorer("OP_ZoneEntry", ExploreZoneEntry);
}
@@ -32,7 +32,7 @@ namespace EQExtractor2.Patches
return;
string SpawnName = Buffer.ReadString(true);
UInt32 SpawnID = Buffer.ReadUInt32();
byte Level = Buffer.ReadByte();
@@ -102,7 +102,7 @@ namespace EQExtractor2.Patches
Buffer.ReadByte();
}
OutputStream.WriteLine("Size starts at offset {0}", Buffer.GetPosition());
@@ -372,7 +372,7 @@ namespace EQExtractor2.Patches
NewSpawn.XPos = Utils.EQ19ToFloat((Int32)(Position4 >> 12) & 0x7FFFF);
NewSpawn.ZPos = Utils.EQ19ToFloat((Int32)(Position5 & 0x7FFFF));
NewSpawn.MeleeTexture1 = 0;
NewSpawn.MeleeTexture2 = 0;
@@ -14,12 +14,12 @@ namespace EQExtractor2.Patches
public PatchMarch132013Decoder()
{
Version = "EQ Client Build Date March 13 2013.";
PatchConfFileName = "patch_Mar13-2013.conf";
PatchConfFileName = "patch_Mar13-2013.conf";
SupportsSQLGeneration = true;
}
override public List<Door> GetDoors()
{
List<Door> DoorList = new List<Door>();
@@ -18,7 +18,7 @@ namespace EQExtractor2.Patches
ExpectedPPLength = 28536;
PPZoneIDOffset = 21204;
}
PPZoneIDOffset = 21204;
}
}
}
@@ -1,7 +1,7 @@
//
// Copyright (C) 2001-2010 EQEMu Development Team (http://eqemulator.net). Distributed under GPL version 2.
//
//
//
using System;
using System.IO;
@@ -26,14 +26,14 @@ namespace EQExtractor2.Patches
public PatchMay122010Decoder()
{
Version = "EQ Client Build Date May 12 2010. (Valid up to and including Build Date June 8 2010)";
PatchConfFileName = "patch_May12-2010.conf";
ExpectedPPLength = 26632;
PPZoneIDOffset = 19396;
}
override public bool Init(string ConfDirectory, ref string ErrorMessage)
{
OpManager = new OpCodeManager();
@@ -94,7 +94,7 @@ namespace EQExtractor2.Patches
List<byte[]> PlayerProfilePacket = GetPacketsOfType("OP_PlayerProfile", PacketDirection.ServerToClient);
if (PlayerProfilePacket.Count == 0)
{
{
return 0;
}
else
@@ -107,7 +107,7 @@ namespace EQExtractor2.Patches
return BitConverter.ToUInt16(PlayerProfilePacket[0], PPZoneIDOffset);
}
override public List<Door> GetDoors()
{
List<Door> DoorList = new List<Door>();
@@ -159,7 +159,7 @@ namespace EQExtractor2.Patches
DoorParam, DestZone, 0, 0, 0, 0);
DoorList.Add(NewDoor);
}
return DoorList;
}
@@ -221,7 +221,7 @@ namespace EQExtractor2.Patches
{
ByteStream Buffer = new ByteStream(PacketBuffer);
Item NewItem = new Item();
Item NewItem = new Item();
NewItem.StackSize = Buffer.ReadUInt32();
Buffer.SkipBytes(4);
@@ -233,7 +233,7 @@ namespace EQExtractor2.Patches
NewItem.Name = Buffer.ReadString(true);
NewItem.Lore = Buffer.ReadString(true);
NewItem.IDFile = Buffer.ReadString(true);
NewItem.ID = Buffer.ReadUInt32();
NewItem.ID = Buffer.ReadUInt32();
return NewItem;
}
@@ -245,7 +245,7 @@ namespace EQExtractor2.Patches
List<byte[]> ZonePointPackets = GetPacketsOfType("OP_SendZonepoints", PacketDirection.ServerToClient);
if (ZonePointPackets.Count < 1)
{
{
return ZonePointList;
}
@@ -257,7 +257,7 @@ namespace EQExtractor2.Patches
if (Entries == 0)
return ZonePointList;
float x, y, z, Heading;
UInt32 Number;
@@ -284,14 +284,14 @@ namespace EQExtractor2.Patches
ZoneID = Buffer.ReadUInt16();
Instance = Buffer.ReadUInt16();
Buffer.SkipBytes(4); // Skip the last UInt32
ZonePoint NewZonePoint = new ZonePoint(Number, ZoneID, Instance, x, y, z, x, y, z, Heading, ZoneID);
ZonePointList.Add(NewZonePoint);
ZonePointList.Add(NewZonePoint);
}
return ZonePointList;
}
@@ -300,7 +300,7 @@ namespace EQExtractor2.Patches
NewZoneStruct NewZone = new NewZoneStruct();
List<byte[]> ZonePackets = GetPacketsOfType("OP_NewZone", PacketDirection.ServerToClient);
if (ZonePackets.Count < 1)
return NewZone;
@@ -316,7 +316,7 @@ namespace EQExtractor2.Patches
NewZone.LongName = Buffer.ReadFixedLengthString(278, true);
NewZone.Type = Buffer.ReadByte();
NewZone.Type = Buffer.ReadByte();
NewZone.FogRed = Buffer.ReadBytes(4);
@@ -325,7 +325,7 @@ namespace EQExtractor2.Patches
NewZone.FogBlue = Buffer.ReadBytes(4);
Buffer.SkipBytes(1); // Unknown
for (int i = 0; i < 4; ++i)
NewZone.FogMinClip[i] = Buffer.ReadSingle();
@@ -379,7 +379,7 @@ namespace EQExtractor2.Patches
NewZone.FogDensity = Buffer.ReadSingle();
// Everything else after this point in the packet is unknown.
return NewZone;
}
@@ -433,7 +433,7 @@ namespace EQExtractor2.Patches
// Destructable Objects. Not handled yet
//
//SQLOut(String.Format("-- OBJECT FOUND SpawnID {0}", SpawnID.ToString("x")));
NewSpawn.DestructableString1 = Buffer.ReadString(false);
NewSpawn.DestructableString2 = Buffer.ReadString(false);
@@ -524,7 +524,7 @@ namespace EQExtractor2.Patches
NewSpawn.EquipChest2 = Buffer.ReadByte();
bool UseWorn = (NewSpawn.EquipChest2 == 255);
Buffer.SkipBytes(2); // 2 Unknown bytes;
NewSpawn.Helm = Buffer.ReadByte();
@@ -554,7 +554,7 @@ namespace EQExtractor2.Patches
NewSpawn.XPos = Utils.EQ19ToFloat((Int32)(Position4 >> 12) & 0x7FFFF);
NewSpawn.ZPos = Utils.EQ19ToFloat((Int32)(Position5 & 0x7FFFF));
for (int ColourSlot = 0; ColourSlot < 9; ++ColourSlot)
NewSpawn.SlotColour[ColourSlot] = Buffer.ReadUInt32();
@@ -636,9 +636,9 @@ namespace EQExtractor2.Patches
List<byte[]> UpdatePackets = GetPacketsOfType("OP_NPCMoveUpdate", PacketDirection.ServerToClient);
foreach (byte[] UpdatePacket in UpdatePackets)
foreach (byte[] UpdatePacket in UpdatePackets)
Updates.Add(Decode_OP_NPCMoveUpdate(UpdatePacket));
return Updates;
}
@@ -671,9 +671,9 @@ namespace EQExtractor2.Patches
List<byte[]> UpdatePackets = GetPacketsOfType("OP_MobUpdate", PacketDirection.ServerToClient);
foreach (byte[] MobUpdatePacket in UpdatePackets)
foreach (byte[] MobUpdatePacket in UpdatePackets)
Updates.Add(Decode_OP_MobUpdate(MobUpdatePacket));
return Updates;
}
@@ -754,7 +754,7 @@ namespace EQExtractor2.Patches
List<EQApplicationPacket> PacketList = Packets.PacketList;
UInt32 OP_ClientUpdate = OpManager.OpCodeNameToNumber("OP_ClientUpdate");
foreach (EQApplicationPacket UpdatePacket in PacketList)
{
if ((UpdatePacket.OpCode != OP_ClientUpdate) || (UpdatePacket.Direction != PacketDirection.ClientToServer))
@@ -779,7 +779,7 @@ namespace EQExtractor2.Patches
Updates.Add(PosUpdate);
}
}
return Updates;
}
@@ -828,7 +828,7 @@ namespace EQExtractor2.Patches
List<UInt32> FindableSpawnList = new List<UInt32>();
List<byte[]> FindablePackets = GetPacketsOfType("OP_SendFindableNPCs", PacketDirection.ServerToClient);
if (FindablePackets.Count < 1)
return FindableSpawnList;
@@ -837,7 +837,7 @@ namespace EQExtractor2.Patches
if (BitConverter.ToUInt32(Packet, 0) == 0)
FindableSpawnList.Add(BitConverter.ToUInt32(Packet, 4));
}
return FindableSpawnList;
}
@@ -864,7 +864,7 @@ namespace EQExtractor2.Patches
//OpManager.RegisterExplorer("OP_HPUpdate", ExploreHPUpdate);
//OpManager.RegisterExplorer("OP_Animation", ExploreAnimation);
//OpManager.RegisterExplorer("OP_CharInventory", ExploreCharInventoryPacket);
}
public void ExploreZoneEntry(StreamWriter OutputStream, ByteStream Buffer, PacketDirection Direction)
@@ -910,7 +910,7 @@ namespace EQExtractor2.Patches
if ((OtherData & 1) > 0)
{
// Destructable Objects.
DestructableString1 = Buffer.ReadString(false);
DestructableString2 = Buffer.ReadString(false);
@@ -956,9 +956,9 @@ namespace EQExtractor2.Patches
DestructableUnk9, DestructableByte);
}
Buffer.SkipBytes(17);
Buffer.SkipBytes(17);
byte PropCount = Buffer.ReadByte();
byte PropCount = Buffer.ReadByte();
if (PropCount >= 1)
{
@@ -991,8 +991,8 @@ namespace EQExtractor2.Patches
{
UInt32 CurrentHP = Buffer.ReadUInt32();
Int32 MaxHP = Buffer.ReadInt32();
UInt16 SpawnID = Buffer.ReadUInt16();
UInt16 SpawnID = Buffer.ReadUInt16();
string SpawnName = FindExplorerSpawn(SpawnID);
OutputStream.WriteLine("Spawn {0} {1} Current HP: {2} Max HP: {3}", SpawnID, SpawnName, CurrentHP, MaxHP);
@@ -1001,7 +1001,7 @@ namespace EQExtractor2.Patches
}
public void ExploreAnimation(StreamWriter OutputStream, ByteStream Buffer, PacketDirection Direction)
{
{
UInt16 SpawnID = Buffer.ReadUInt16();
byte Action = Buffer.ReadByte();
byte Value = Buffer.ReadByte();
@@ -1324,7 +1324,7 @@ namespace EQExtractor2.Patches
Buffer.SkipBytes(4); // clickunk7
Buffer.SkipBytes(30); // Proc Effect Struct
Buffer.ReadString(true); // Proc Name
Buffer.SkipBytes(4); // unknown5
Buffer.SkipBytes(4); // unknown5
Buffer.SkipBytes(30); // Worn Effect Struct
Buffer.ReadString(true); // Worn Name
Buffer.SkipBytes(4); // unknown6
@@ -1336,7 +1336,7 @@ namespace EQExtractor2.Patches
Buffer.SkipBytes(4); // unknown6
Buffer.SkipBytes(30); // Worn Effect Struct
Buffer.ReadString(true); // Worn Name
Buffer.SkipBytes(4); // unknown6
Buffer.SkipBytes(4); // unknown6
Buffer.SkipBytes(103); // Item Quaternary Body Struct - 4 (we want to read the SubLength field at the end)
//UInt32 SubLengths = Buffer.ReadUInt32();
@@ -18,7 +18,7 @@ namespace EQExtractor2.Patches
ExpectedPPLength = 28536;
PPZoneIDOffset = 21204;
PPZoneIDOffset = 21204;
}
override public PositionUpdate Decode_OP_NPCMoveUpdate(byte[] UpdatePacket)
@@ -42,7 +42,7 @@ namespace EQExtractor2.Patches
PosUpdate.p.heading = (float)bs.readInt(12) / (float)(1 << 3);
PosUpdate.HighRes = true;
return PosUpdate;
}
@@ -245,20 +245,20 @@ namespace EQExtractor2.Patches
//base.RegisterExplorers();
//OpManager.RegisterExplorer("OP_SpawnDoor", ExploreSpawnDoor);
}
public void ExploreSpawnDoor(StreamWriter OutputStream, ByteStream Buffer, PacketDirection Direction)
{
{
uint DoorCount = Buffer.Length() / 96;
OutputStream.WriteLine("Door Count: {0}", DoorCount);
for (int d = 0; d < DoorCount; ++d)
{
string DoorName = Buffer.ReadFixedLengthString(32, false);
float YPos = Buffer.ReadSingle();
float XPos = Buffer.ReadSingle();
@@ -288,9 +288,9 @@ namespace EQExtractor2.Patches
// Skip past the trailing unknowns in the door struct, moving to the next door in the packet.
Buffer.SkipBytes(28);
Buffer.SkipBytes(28);
}
}
}
}
@@ -13,10 +13,10 @@ namespace EQExtractor2.Patches
public PatchMay242011Decoder()
{
Version = "EQ Client Build Date May 24 2011.";
ExpectedPPLength = 28856;
PPZoneIDOffset = 21524;
}
PPZoneIDOffset = 21524;
}
}
}
@@ -274,7 +274,7 @@ namespace EQExtractor2.Patches
//OpManager.RegisterExplorer("OP_NPCMoveUpdate", ExploreNPCMoveUpdate);
//OpManager.RegisterExplorer("OP_MobUpdate", ExploreMobUpdate);
}
public void ExploreNPCMoveUpdate(StreamWriter OutputStream, ByteStream Buffer, PacketDirection Direction)
@@ -365,7 +365,7 @@ namespace EQExtractor2.Patches
UInt32 Cost = Buffer.ReadUInt32();
UInt32 Seq = Buffer.ReadUInt32();
UInt32 CurrentLevel = Buffer.ReadUInt32();
UInt32 PreReqSkillCount = Buffer.ReadUInt32();
UInt32 [] PreReqSkills = new UInt32[PreReqSkillCount];
@@ -416,7 +416,7 @@ namespace EQExtractor2.Patches
OutputFile.Write("{0} ", PreReqMinPoints[i]);
OutputFile.WriteLine("");
OutputFile.WriteLine(" Type:\t\t" + Type);
OutputFile.WriteLine(" SpellID:\t" + SpellID);
OutputFile.WriteLine(" Unknown057:\t" + Unknown057);
+4 -4
View File
@@ -1,7 +1,7 @@
//
// Copyright (C) 2001-2010 EQEMu Development Team (http://eqemulator.net). Distributed under GPL version 2.
//
//
//
//
// IMPORTANT NOTE: This decoder for SoD was developed purely as a cursory test of the multi-patch support and is not guaranteed
// to be 100% correct.
@@ -721,7 +721,7 @@ namespace EQExtractor2.Patches
GroundSpawn.Name = Buffer.ReadFixedLengthString(16, false);
Buffer.SkipBytes(20);
Buffer.SkipBytes(20);
GroundSpawn.ObjectType = Buffer.ReadUInt32();
@@ -760,11 +760,11 @@ namespace EQExtractor2.Patches
public override void RegisterExplorers()
{
OpManager.RegisterExplorer("OP_ZoneEntry", ExploreZoneEntry);
OpManager.RegisterExplorer("OP_ZoneEntry", ExploreZoneEntry);
//OpManager.RegisterExplorer("OP_RespawnWindow", ExploreRespawnWindow);
//OpManager.RegisterExplorer("OP_ZonePlayerToBind", ExploreZonePlayerToBind);
//OpManager.RegisterExplorer("OP_RequestClientZoneChange", ExploreRequestClientZoneChange);
//OpManager.RegisterExplorer("OP_DeleteSpawn", ExploreDeleteSpawn);
//OpManager.RegisterExplorer("OP_DeleteSpawn", ExploreDeleteSpawn);
OpManager.RegisterExplorer("OP_HPUpdate", ExploreHPUpdate);
}
@@ -1,7 +1,7 @@
//
// Copyright (C) 2001-2010 EQEMu Development Team (http://eqemulator.net). Distributed under GPL version 2.
//
//
//
using System;
using System.IO;
using System.Collections.Generic;
@@ -25,15 +25,15 @@ namespace EQExtractor2.Patches
{
if((OpCode == OpManager.OpCodeNameToNumber("OP_ZoneEntry")) && (Direction == PacketDirection.ClientToServer))
return IdentificationStatus.Yes;
return IdentificationStatus.No;
}
}
override public Item DecodeItemPacket(byte[] PacketBuffer)
{
ByteStream Buffer = new ByteStream(PacketBuffer);
Item NewItem = new Item();
Item NewItem = new Item();
NewItem.StackSize = Buffer.ReadUInt32(); // 00
Buffer.SkipBytes(4);
@@ -55,12 +55,12 @@ namespace EQExtractor2.Patches
public override void RegisterExplorers()
{
base.RegisterExplorers();
//OpManager.RegisterExplorer("OP_CharInventory", ExploreCharInventoryPacket);
//OpManager.RegisterExplorer("OP_ItemPacket", ExploreItemPacket);
//OpManager.RegisterExplorer("OP_MercenaryPurchaseWindow", ExploreMercenaryPurchaseWindow);
}
public void ExploreCharInventoryPacket(StreamWriter OutputStream, ByteStream Buffer, PacketDirection Direction)
{
UInt32 ItemCount = Buffer.ReadUInt32();
@@ -69,7 +69,7 @@ namespace EQExtractor2.Patches
for (int i = 0; i < ItemCount; ++i)
{
ExploreSubItem(OutputStream, ref Buffer);
ExploreSubItem(OutputStream, ref Buffer);
}
OutputStream.WriteLine("");
@@ -85,7 +85,7 @@ namespace EQExtractor2.Patches
}
void ExploreSubItem(StreamWriter OutputStream, ref ByteStream Buffer)
{
{
Buffer.SkipBytes(8);
byte Area = Buffer.ReadByte();
@@ -118,14 +118,14 @@ namespace EQExtractor2.Patches
break;
case 8:
AreaName = "Merchant";
break;
break;
}
OutputStream.WriteLine("Area: {0} {1} Main Slot {2,2} Sub Slot {3,3} Name {4}", Area, AreaName.PadRight(20), MainSlot, SubSlot, Name);
Buffer.ReadString(true); // Lore
Buffer.ReadString(true); // IDFile
//Buffer.SkipBytes(236); // Item Body Struct
UInt32 ID = Buffer.ReadUInt32();
@@ -229,7 +229,7 @@ namespace EQExtractor2.Patches
Buffer.SkipBytes(4); // clickunk7
Buffer.SkipBytes(30); // Proc Effect Struct
Buffer.ReadString(true); // Proc Name
Buffer.SkipBytes(4); // unknown5
Buffer.SkipBytes(4); // unknown5
Buffer.SkipBytes(30); // Worn Effect Struct
Buffer.ReadString(true); // Worn Name
Buffer.SkipBytes(4); // unknown6
@@ -241,15 +241,15 @@ namespace EQExtractor2.Patches
Buffer.SkipBytes(4); // unknown6
Buffer.SkipBytes(30); // Worn Effect Struct
Buffer.ReadString(true); // Worn Name
Buffer.SkipBytes(4); // unknown6
Buffer.SkipBytes(4); // unknown6
Buffer.SkipBytes(103); // Item Quaternary Body Struct - 4 (we want to read the SubLength field at the end)
UInt32 SubLengths = Buffer.ReadUInt32();
for (int i = 0; i < SubLengths; ++i)
{
Buffer.SkipBytes(4);
ExploreSubItem(OutputStream, ref Buffer);
ExploreSubItem(OutputStream, ref Buffer);
}
}
@@ -291,7 +291,7 @@ namespace EQExtractor2.Patches
OutputStream.WriteLine("VARSTRUCT_ENCODE_TYPE(uint32, Buffer, {0}); // Unknown", Unknown3);
UInt32 Unknown4 = Buffer.ReadUInt32();
OutputStream.WriteLine("VARSTRUCT_ENCODE_TYPE(uint32, Buffer, {0}); // Unknown", Unknown4);
byte Unknown5 = Buffer.ReadByte();
//OutputStream.WriteLine("VARSTRUCT_ENCODE_TYPE(uint8, Buffer, {0}); // Unknown", Unknown5);
@@ -303,7 +303,7 @@ namespace EQExtractor2.Patches
//OutputStream.WriteLine("VARSTRUCT_ENCODE_TYPE(uint32, Buffer, {0}); // Unknown", Unknown8);
UInt32 StanceCount = Buffer.ReadUInt32();
OutputStream.WriteLine("VARSTRUCT_ENCODE_TYPE(uint32, Buffer, {0}); // Number of Stances for this Merc", StanceCount);
UInt32 Unknown10 = Buffer.ReadUInt32();
@@ -311,8 +311,8 @@ namespace EQExtractor2.Patches
byte Unknown11 = Buffer.ReadByte();
//OutputStream.WriteLine("VARSTRUCT_ENCODE_TYPE(uint8, Buffer, {0}); // Unknown", Unknown11);
//OutputStream.WriteLine(" Offset: {5} Unknown1: {0} DBStrings: {1} {2} Purchase: {3} Upkeep: {4}\r\n", Unknown1, DBStringID1, DBStringID2,
// PurchaseCost, UpkeepCost, Offset);
//OutputStream.WriteLine(" Unknowns: {0} {1} {2} {3} {4} {5} {6} {7} {8}\r\n",
@@ -336,6 +336,6 @@ namespace EQExtractor2.Patches
OutputStream.WriteLine("");
}
}
}
@@ -314,7 +314,7 @@ namespace EQExtractor2.Patches
Buffer.SkipBytes(4); // clickunk7
Buffer.SkipBytes(30); // Proc Effect Struct
Buffer.ReadString(true); // Proc Name
Buffer.SkipBytes(4); // unknown5
Buffer.SkipBytes(4); // unknown5
Buffer.SkipBytes(30); // Worn Effect Struct
Buffer.ReadString(true); // Worn Name
Buffer.SkipBytes(4); // unknown6
@@ -326,15 +326,15 @@ namespace EQExtractor2.Patches
Buffer.SkipBytes(4); // unknown6
Buffer.SkipBytes(30); // Worn Effect Struct
Buffer.ReadString(true); // Worn Name
Buffer.SkipBytes(4); // unknown6
Buffer.SkipBytes(4); // unknown6
Buffer.SkipBytes(103); // Item Quaternary Body Struct - 4 (we want to read the SubLength field at the end)
Buffer.SkipBytes(57); // HoT
OutputStream.WriteLine(" Reading sublengths from offset {0}", Buffer.GetPosition());
UInt32 SubLengths = Buffer.ReadUInt32();
for (int i = 0; i < SubLengths; ++i)
{
@@ -14,10 +14,10 @@ namespace EQExtractor2.Patches
public PatchTestServerFebruary52013Decoder()
{
Version = "EQ Client Build Date Test Server February 5 2013.";
PatchConfFileName = "patch_TestServer-Feb5-2013.conf";
SupportsSQLGeneration = false;
}
}
}
}
@@ -14,10 +14,10 @@ namespace EQExtractor2.Patches
public PatchTestServerJanuary162013Decoder()
{
Version = "EQ Client Build Date Test Server January 16 2013.";
PatchConfFileName = "patch_TestServer-Jan16-2013.conf";
SupportsSQLGeneration = false;
}
}
}
}
@@ -2,7 +2,7 @@
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("EQExtractor2")]
@@ -14,8 +14,8 @@ using System.Runtime.InteropServices;
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
@@ -25,11 +25,11 @@ using System.Runtime.InteropServices;
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.0.0.0")]
@@ -10,8 +10,8 @@
namespace EQExtractor2.Properties {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
@@ -23,15 +23,15 @@ namespace EQExtractor2.Properties {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
@@ -45,7 +45,7 @@ namespace EQExtractor2.Properties {
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
@@ -26,36 +26,36 @@
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
@@ -9,20 +9,20 @@
//------------------------------------------------------------------------------
namespace EQExtractor2.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("notepad.exe")]
@@ -34,7 +34,7 @@ namespace EQExtractor2.Properties {
this["TextFileViewer"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
@@ -46,7 +46,7 @@ namespace EQExtractor2.Properties {
this["ShowDebugWindowOnStartup"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
Binary file not shown.
+18 -18
View File
@@ -39,27 +39,27 @@
this.EQPacketDebugFilename = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
//
// label1
//
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(12, 9);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(107, 13);
this.label1.TabIndex = 0;
this.label1.Text = "Packet Dump Viewer";
//
//
// PacketDumpViewerProgram
//
//
this.PacketDumpViewerProgram.Location = new System.Drawing.Point(125, 6);
this.PacketDumpViewerProgram.Name = "PacketDumpViewerProgram";
this.PacketDumpViewerProgram.Size = new System.Drawing.Size(390, 20);
this.PacketDumpViewerProgram.TabIndex = 1;
this.toolTip1.SetToolTip(this.PacketDumpViewerProgram, "If not using notepad/wordpad include the full path, e.g. C:\\Program Files (x86)\\N" +
"otepad++\\notepad++.exe");
//
//
// ShowDebugWindowOnStartup
//
//
this.ShowDebugWindowOnStartup.AutoSize = true;
this.ShowDebugWindowOnStartup.Location = new System.Drawing.Point(15, 61);
this.ShowDebugWindowOnStartup.Name = "ShowDebugWindowOnStartup";
@@ -67,9 +67,9 @@
this.ShowDebugWindowOnStartup.TabIndex = 2;
this.ShowDebugWindowOnStartup.Text = "Show Debug Window On Startup";
this.ShowDebugWindowOnStartup.UseVisualStyleBackColor = true;
//
//
// ShowTimeStamps
//
//
this.ShowTimeStamps.AutoSize = true;
this.ShowTimeStamps.Location = new System.Drawing.Point(15, 84);
this.ShowTimeStamps.Name = "ShowTimeStamps";
@@ -77,9 +77,9 @@
this.ShowTimeStamps.TabIndex = 3;
this.ShowTimeStamps.Text = "Include Time Stamps In Packet Dump";
this.ShowTimeStamps.UseVisualStyleBackColor = true;
//
//
// OptionsOKButton
//
//
this.OptionsOKButton.Location = new System.Drawing.Point(125, 122);
this.OptionsOKButton.Name = "OptionsOKButton";
this.OptionsOKButton.Size = new System.Drawing.Size(75, 23);
@@ -87,9 +87,9 @@
this.OptionsOKButton.Text = "OK";
this.OptionsOKButton.UseVisualStyleBackColor = true;
this.OptionsOKButton.Click += new System.EventHandler(this.OptionsOKButton_Click);
//
//
// OptionsCancelButton
//
//
this.OptionsCancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.OptionsCancelButton.Location = new System.Drawing.Point(332, 122);
this.OptionsCancelButton.Name = "OptionsCancelButton";
@@ -98,17 +98,17 @@
this.OptionsCancelButton.Text = "Cancel";
this.OptionsCancelButton.UseVisualStyleBackColor = true;
this.OptionsCancelButton.Click += new System.EventHandler(this.OptionsCancelButton_Click);
//
//
// EQPacketDebugFilename
//
//
this.EQPacketDebugFilename.Location = new System.Drawing.Point(125, 32);
this.EQPacketDebugFilename.Name = "EQPacketDebugFilename";
this.EQPacketDebugFilename.Size = new System.Drawing.Size(390, 20);
this.EQPacketDebugFilename.TabIndex = 7;
this.toolTip1.SetToolTip(this.EQPacketDebugFilename, "Output file for low level netcode debugging");
//
//
// label2
//
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(12, 35);
this.label2.Name = "label2";
@@ -116,9 +116,9 @@
this.label2.TabIndex = 6;
this.label2.Text = "Netcode Debug";
this.toolTip1.SetToolTip(this.label2, "Output file for low level netcode debugging");
//
//
// UserOptions
//
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.OptionsCancelButton;
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
@@ -26,36 +26,36 @@
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
+11 -11
View File
@@ -4,7 +4,7 @@
//
// ShowEQ Distributed under GPL
// http://www.sourceforge.net/projects/seq
//
//
// Copyright 2004 Zaphod (dohpaz@users.sourceforge.net).
//
// -----------------------------------------------------------
@@ -13,7 +13,7 @@
//
// Copyright (C) 2001-2010 EQEMu Development Team (http://eqemulator.net). Distributed under GPL version 2.
//
//
//
using System;
@@ -21,7 +21,7 @@ using System.Text;
namespace MyUtils
{
public class ByteStream
public class ByteStream
{
public ByteStream(byte[] NewBuffer)
{
@@ -93,7 +93,7 @@ namespace MyUtils
return Slice;
}
public void SkipBytes(int Count)
{
BufferPointer += Count;
@@ -149,7 +149,7 @@ namespace MyUtils
int BufferPointer;
}
class BitStream
{
public BitStream(byte[] Data, UInt32 Length)
@@ -182,7 +182,7 @@ namespace MyUtils
{
// Lead partial is a byte. So just put it in the middle.
leadPartialBitCount = 0;
}
}
if (leadPartialBitCount > bitCount)
{
@@ -216,7 +216,7 @@ namespace MyUtils
Out = (Out << 8) | m_data[currentByte];
currentByte++;
}
// And the end.
if (tailPartialBitCount > 0)
{
@@ -292,7 +292,7 @@ namespace MyUtils
{
StringBuilder CleanName = new StringBuilder();
foreach(char c in Name)
foreach(char c in Name)
if(!Char.IsDigit(c))
CleanName.Append(c);
@@ -300,15 +300,15 @@ namespace MyUtils
}
public static float EQ19ToFloat(Int32 EQ19Value)
{
{
if ((EQ19Value & 0x40000) > 0)
EQ19Value = -(0x7FFFF - EQ19Value + 1);
return (float)EQ19Value / (float)(1 << 3);
}
}
}
Binary file not shown.
@@ -650,4 +650,4 @@ 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
OP_InitialHPUpdate=0x0000
@@ -13,11 +13,11 @@ OP_Unknown=0x0000
OP_ExploreUnknown=0x0000 # used for unknown explorer
# V = Verified correct
# C = Most likely correct
# C = Most likely correct
# U = Unsure, but should be correct or close
# world packets
# Required to reach Char Select:
# Required to reach Char Select:
OP_SendLoginInfo=0x5d32 #
OP_ApproveWorld=0x1f87 #
OP_LogServer=0x44ae #
@@ -49,33 +49,33 @@ OP_FloatListThing=0x33f2 #
# Reasons for Disconnect:
OP_ZoneUnavail=0x66e4 # This is not the right opcode. Produces a 'Your character is inaccessible' message.
OP_WorldClientReady=0x3f24 #
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 #
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=0x3594 #
OP_ZoneEntry=0x02d6 #
OP_ReqNewZone=0x1c36 #
OP_NewZone=0x0254 #
OP_ZoneSpawns=0x0000 #
OP_ZoneSpawns=0x0000 #
OP_PlayerProfile=0x6022 #
OP_TimeOfDay=0x6015 #
OP_LevelUpdate=0x0000 #
OP_Stamina=0x0000 #
OP_RequestClientZoneChange=0x18ea #
OP_ZoneChange=0x5bd9 #
OP_LockoutTimerInfo=0x0000 #
OP_ZoneServerReady=0x0000 #
OP_ZoneInUnknown=0x0000 #
OP_LogoutReply=0x0000 #
OP_PreLogoutReply=0x0000 #
OP_LockoutTimerInfo=0x0000 #
OP_ZoneServerReady=0x0000 #
OP_ZoneInUnknown=0x0000 #
OP_LogoutReply=0x0000 #
OP_PreLogoutReply=0x0000 #
# Required to fully log in
OP_SpawnAppearance=0x1a58 #
@@ -86,7 +86,7 @@ OP_TaskActivity=0x0000 #
OP_CompletedTasks=0x0000 #
OP_Weather=0x4658 #
OP_SendAATable=0x1d99 #
OP_UpdateAA=0x0000 #
OP_UpdateAA=0x0000 #
OP_RespondAA=0x0000 #
OP_ReqClientSpawn=0x47e7 #
OP_SpawnDoor=0x6cfe #
@@ -132,12 +132,12 @@ OP_GuildManageBanker=0x0000 #
OP_GuildBank=0x0000 #
OP_SetGuildRank=0x0000 #
OP_GuildUpdateURLAndChannel=0x0000 #
OP_GuildMemberLevelUpdate=0x0000 #
OP_ZoneGuildList=0x0000 #
OP_GetGuildsList=0x0000 #
# OP_GuildManageRemove=0x0000 #
# OP_GuildManageAdd=0x0000 #
# OP_GuildManageStatus=0x0000 #
OP_GuildMemberLevelUpdate=0x0000 #
OP_ZoneGuildList=0x0000 #
OP_GetGuildsList=0x0000 #
# OP_GuildManageRemove=0x0000 #
# OP_GuildManageAdd=0x0000 #
# OP_GuildManageStatus=0x0000 #
# GM/guide opcodes
OP_GMServers=0x0000 #
@@ -317,8 +317,8 @@ OP_VetRewardsAvaliable=0x0000 #
OP_VetClaimRequest=0x0000 #
OP_VetClaimReply=0x0000 #
OP_CrystalCountUpdate=0x0000 #
OP_DisciplineUpdate=0x0000 #
OP_BecomeCorpse=0x0000 #
OP_DisciplineUpdate=0x0000 #
OP_BecomeCorpse=0x0000 #
OP_Action2=0x0000 #
OP_MobUpdate=0x4656 #
OP_NPCMoveUpdate=0x38e0 #
@@ -349,7 +349,7 @@ OP_ManaUpdate=0x0ff4 #
OP_EnduranceUpdate=0x0000 #
OP_MobManaUpdate=0x1912 #
OP_MobEnduranceUpdate=0x0000 #
# Looting
OP_LootRequest=0x0000 #
OP_EndLootRequest=0x0000 #
@@ -364,10 +364,10 @@ OP_TraderShop=0x0000 #
OP_Trader=0x0000 #
OP_TraderBuy=0x0000 #
OP_Barter=0x0000 #
OP_ShopItem=0x0000 #
OP_BazaarInspect=0x0000 #
OP_Bazaar=0x0000 #
OP_TraderItemUpdate=0x0000 #
OP_ShopItem=0x0000 #
OP_BazaarInspect=0x0000 #
OP_Bazaar=0x0000 #
OP_TraderItemUpdate=0x0000 #
# pc/npc trading
OP_TradeRequest=0x0000 #
@@ -416,10 +416,10 @@ OP_TributeItem=0x0000 #
OP_TributeMoney=0x0000 #
OP_TributeToggle=0x0000 #
OP_TributePointUpdate=0x0000 #
OP_TributeNPC=0x0000 #
OP_GuildTributeInfo=0x0000 #
OP_OpenTributeReply=0x0000 #
# OP_GuildTributeStatus=0x0000 #
OP_TributeNPC=0x0000 #
OP_GuildTributeInfo=0x0000 #
OP_OpenTributeReply=0x0000 #
# OP_GuildTributeStatus=0x0000 #
# Adventure packets:
OP_LeaveAdventure=0x0000 #
@@ -444,11 +444,11 @@ OP_AdventureLeaderboardReply=0x0000 #
OP_GroupDisband=0x0000 #
OP_GroupInvite=0x0000 #
OP_GroupFollow=0x0000 #
OP_GroupUpdate=0x0000 #
OP_GroupUpdateB=0x0000 #
OP_GroupUpdate=0x0000 #
OP_GroupUpdateB=0x0000 #
OP_GroupCancelInvite=0x0000 #
OP_GroupAcknowledge=0x0000 #
OP_GroupDelete=0x0000 #
OP_GroupDelete=0x0000 #
OP_CancelInvite=0x0000 #
OP_GroupFollow2=0x0000 #
OP_GroupInvite2=0x0000 #
@@ -464,20 +464,20 @@ OP_LFGGetMatchesResponse=0x0000 #
OP_LFPGetMatchesRequest=0x0000 #
OP_LFPGetMatchesResponse=0x0000 #
OP_LFPCommand=0x0000 #
OP_LFGAppearance=0x0000 #
OP_LFGResponse=0x0000 #
OP_LFGAppearance=0x0000 #
OP_LFGResponse=0x0000 #
# Raid Opcodes
OP_RaidInvite=0x0000 #
OP_RaidUpdate=0x0000 #
OP_RaidJoin=0x0000 #
OP_RaidJoin=0x0000 #
# Button-push commands
OP_Taunt=0x0000 #
OP_CombatAbility=0x0000 #
OP_SenseTraps=0x0000 #
OP_PickPocket=0x0000 #
OP_DisarmTraps=0x0000 #
OP_DisarmTraps=0x0000 #
OP_Disarm=0x0000 #
OP_Sneak=0x0000 #
OP_Fishing=0x0000 #
@@ -495,7 +495,7 @@ OP_AcceptNewTask=0x0000 #
OP_TaskHistoryRequest=0x0000 #
OP_TaskHistoryReply=0x0000 #
OP_CancelTask=0x0000 #
OP_DeclineAllTasks=0x0000 #
OP_DeclineAllTasks=0x0000 #
# Title opcodes
OP_NewTitlesAvailable=0x0000 #
@@ -505,53 +505,53 @@ OP_SetTitle=0x0000 #
OP_SetTitleReply=0x0000 #
# mail opcodes
OP_Command=0x0000 #
OP_MailboxHeader=0x0000 #
OP_MailHeader=0x0000 #
OP_MailBody=0x0000 #
OP_NewMail=0x0000 #
OP_SentConfirm=0x0000 #
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 # # # # # # # # # # #
# # # # # # # # # # # 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_IncreaseStats=0x0000 #
OP_ApproveZone=0x0000 #
OP_ZoneComplete=0x0000 #
OP_ClientError=0x0000 #
OP_DumpName=0x0000 #
OP_Heartbeat=0x0000 #
OP_CrashDump=0x0000 #
OP_LoginComplete=0x0000 #
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_IncreaseStats=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_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_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_AnnoyingZoneUnknown=0x0000 #
OP_Some6ByteHPUpdate=0x0000 # seems to happen when you target group members
OP_QueryResponseThing=0x0000 #
OP_QueryResponseThing=0x0000 #
# realityincarnate: these are just here to stop annoying several thousand byte packet dumps
@@ -563,47 +563,47 @@ 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 #
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 #
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 #
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
File diff suppressed because it is too large Load Diff
@@ -648,4 +648,4 @@ 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
OP_InitialHPUpdate=0x0000
@@ -13,11 +13,11 @@ OP_Unknown=0x0000
OP_ExploreUnknown=0x0000 # used for unknown explorer
# V = Verified correct
# C = Most likely correct
# C = Most likely correct
# U = Unsure, but should be correct or close
# world packets
# Required to reach Char Select:
# Required to reach Char Select:
OP_SendLoginInfo=0x6893 # was 0x2683
OP_ApproveWorld=0x115a # was 0x28a7
OP_LogServer=0x701f # was 0x224f
@@ -49,15 +49,15 @@ OP_FloatListThing=0x0000 # V
# Reasons for Disconnect:
OP_ZoneUnavail=0x0000 # C 0x0000
OP_WorldClientReady=0x399b # C 0x0000
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 #
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=0x3594 # was 0x3594
@@ -71,11 +71,11 @@ OP_LevelUpdate=0x0000 # V
OP_Stamina=0x0000 # V
OP_RequestClientZoneChange=0x3fd2 # was 0x4178
OP_ZoneChange=0x0b93 # was 0x4a61
OP_LockoutTimerInfo=0x0000 #
OP_ZoneServerReady=0x0000 #
OP_ZoneInUnknown=0x0000 #
OP_LogoutReply=0x0000 #
OP_PreLogoutReply=0x0000 #
OP_LockoutTimerInfo=0x0000 #
OP_ZoneServerReady=0x0000 #
OP_ZoneInUnknown=0x0000 #
OP_LogoutReply=0x0000 #
OP_PreLogoutReply=0x0000 #
# Required to fully log in
OP_SpawnAppearance=0x7b64 # V
@@ -86,13 +86,13 @@ OP_TaskActivity=0x0000 # C
OP_CompletedTasks=0x0000 # C 0x0000
OP_Weather=0x7ce4 # was 0x0ed5
OP_SendAATable=0x466c #
OP_UpdateAA=0x0000 # V
OP_UpdateAA=0x0000 # V
OP_RespondAA=0x0000 # C 0x0000
OP_ReqClientSpawn=0x54e8 # was 0x6618
OP_SpawnDoor=0x6cfe #
OP_GroundSpawn=0x5f0d # was 0x5f0d
OP_SendZonepoints=0x5f51 # was 0x0ff4
OP_SendAAStats=0x0000 # C
OP_SendAAStats=0x0000 # C
OP_WorldObjectsSent=0x7b73 # was 0x7b73
OP_BlockedBuffs=0x664a # was 0x4027
OP_SendExpZonein=0x2c27 # was 0x1436
@@ -132,12 +132,12 @@ OP_GuildManageBanker=0x0000 # C
OP_GuildBank=0x0000 # C
OP_SetGuildRank=0x0000 # C
OP_GuildUpdateURLAndChannel=0x0000 # C
OP_GuildMemberLevelUpdate=0x0000 #
OP_ZoneGuildList=0x0000 #
OP_GetGuildsList=0x0000 #
# OP_GuildManageRemove=0x0000 #
# OP_GuildManageAdd=0x0000 #
# OP_GuildManageStatus=0x0000 #
OP_GuildMemberLevelUpdate=0x0000 #
OP_ZoneGuildList=0x0000 #
OP_GetGuildsList=0x0000 #
# OP_GuildManageRemove=0x0000 #
# OP_GuildManageAdd=0x0000 #
# OP_GuildManageStatus=0x0000 #
# GM/guide opcodes
OP_GMServers=0x0000 # C
@@ -317,8 +317,8 @@ OP_VetRewardsAvaliable=0x0000 # C Mispelled?
OP_VetClaimRequest=0x0000 # C
OP_VetClaimReply=0x0000 # C
OP_CrystalCountUpdate=0x0000 # C
OP_DisciplineUpdate=0x0000 #
OP_BecomeCorpse=0x0000 #
OP_DisciplineUpdate=0x0000 #
OP_BecomeCorpse=0x0000 #
OP_Action2=0x0000 # C OP_Damage?
OP_MobUpdate=0x4656 # was 0x4656
OP_NPCMoveUpdate=0x5bad #
@@ -349,7 +349,7 @@ OP_ManaUpdate=0x0000 # C
OP_EnduranceUpdate=0x0000 # C
OP_MobManaUpdate=0x0000 # C
OP_MobEnduranceUpdate=0x0000 # C
# Looting
OP_LootRequest=0x0000 # C
OP_EndLootRequest=0x0000 # C
@@ -364,10 +364,10 @@ OP_TraderShop=0x0000 # C
OP_Trader=0x0000 # C
OP_TraderBuy=0x0000 # C
OP_Barter=0x0000 # C
OP_ShopItem=0x0000 #
OP_BazaarInspect=0x0000 #
OP_Bazaar=0x0000 #
OP_TraderItemUpdate=0x0000 #
OP_ShopItem=0x0000 #
OP_BazaarInspect=0x0000 #
OP_Bazaar=0x0000 #
OP_TraderItemUpdate=0x0000 #
# pc/npc trading
OP_TradeRequest=0x0000 # C
@@ -416,10 +416,10 @@ OP_TributeItem=0x0000 # C
OP_TributeMoney=0x0000 # C
OP_TributeToggle=0x0000 # C
OP_TributePointUpdate=0x0000 # C
OP_TributeNPC=0x0000 #
OP_GuildTributeInfo=0x0000 #
OP_OpenTributeReply=0x0000 #
# OP_GuildTributeStatus=0x0000 #
OP_TributeNPC=0x0000 #
OP_GuildTributeInfo=0x0000 #
OP_OpenTributeReply=0x0000 #
# OP_GuildTributeStatus=0x0000 #
# Adventure packets:
OP_LeaveAdventure=0x0000 # C
@@ -444,11 +444,11 @@ OP_AdventureLeaderboardReply=0x0000 # C
OP_GroupDisband=0x0000 # C
OP_GroupInvite=0x0000 # C
OP_GroupFollow=0x0000 # C
OP_GroupUpdate=0x0000 # C
OP_GroupUpdateB=0x0000 # C
OP_GroupUpdate=0x0000 # C
OP_GroupUpdateB=0x0000 # C
OP_GroupCancelInvite=0x0000 # C - Same as OP_CancelInvite?
OP_GroupAcknowledge=0x0000 # C
OP_GroupDelete=0x0000 #
OP_GroupDelete=0x0000 #
OP_CancelInvite=0x0000 # C
OP_GroupFollow2=0x0000 # C
OP_GroupInvite2=0x0000 # C
@@ -464,20 +464,20 @@ OP_LFGGetMatchesResponse=0x0000 # C
OP_LFPGetMatchesRequest=0x0000 # C
OP_LFPGetMatchesResponse=0x0000 # C
OP_LFPCommand=0x0000 # C
OP_LFGAppearance=0x0000 #
OP_LFGResponse=0x0000 #
OP_LFGAppearance=0x0000 #
OP_LFGResponse=0x0000 #
# Raid Opcodes
OP_RaidInvite=0x0000 # C
OP_RaidUpdate=0x0000 # C
OP_RaidJoin=0x0000 #
OP_RaidJoin=0x0000 #
# Button-push commands
OP_Taunt=0x0000 # C
OP_CombatAbility=0x0000 # C
OP_SenseTraps=0x0000 # C
OP_PickPocket=0x0000 # C
OP_DisarmTraps=0x0000 #
OP_DisarmTraps=0x0000 #
OP_Disarm=0x0000 # C
OP_Sneak=0x0000 # C
OP_Fishing=0x0000 # C
@@ -495,7 +495,7 @@ OP_AcceptNewTask=0x0000 # C
OP_TaskHistoryRequest=0x0000 # C
OP_TaskHistoryReply=0x0000 # C
OP_CancelTask=0x0000 # C
OP_DeclineAllTasks=0x0000 #
OP_DeclineAllTasks=0x0000 #
# Title opcodes
OP_NewTitlesAvailable=0x0000 # C
@@ -505,53 +505,53 @@ OP_SetTitle=0x0000 # C
OP_SetTitleReply=0x0000 # C
# mail opcodes
OP_Command=0x0000 #
OP_MailboxHeader=0x0000 #
OP_MailHeader=0x0000 #
OP_MailBody=0x0000 #
OP_NewMail=0x0000 #
OP_SentConfirm=0x0000 #
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 # # # # # # # # # # #
# # # # # # # # # # # 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_IncreaseStats=0x0000 #
OP_ApproveZone=0x0000 #
OP_ZoneComplete=0x0000 #
OP_ClientError=0x0000 #
OP_DumpName=0x0000 #
OP_Heartbeat=0x0000 #
OP_CrashDump=0x0000 #
OP_LoginComplete=0x0000 #
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_IncreaseStats=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_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_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_AnnoyingZoneUnknown=0x0000 #
OP_Some6ByteHPUpdate=0x0000 # seems to happen when you target group members
OP_QueryResponseThing=0x0000 #
OP_QueryResponseThing=0x0000 #
# realityincarnate: these are just here to stop annoying several thousand byte packet dumps
@@ -563,47 +563,47 @@ 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 #
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 #
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 #
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
@@ -650,4 +650,4 @@ 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
OP_InitialHPUpdate=0x0000
@@ -13,11 +13,11 @@ OP_Unknown=0x0000
OP_ExploreUnknown=0x0000 # used for unknown explorer
# V = Verified correct
# C = Most likely correct
# C = Most likely correct
# U = Unsure, but should be correct or close
# world packets
# Required to reach Char Select:
# Required to reach Char Select:
OP_SendLoginInfo=0x6893 # was 0x2683
OP_ApproveWorld=0x115a # was 0x28a7
OP_LogServer=0x701f # was 0x224f
@@ -49,15 +49,15 @@ OP_FloatListThing=0x0000 # V
# Reasons for Disconnect:
OP_ZoneUnavail=0x0000 # C 0x0000
OP_WorldClientReady=0x399b # C 0x0000
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 #
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=0x3594 # was 0x3594
@@ -71,11 +71,11 @@ OP_LevelUpdate=0x0000 # V
OP_Stamina=0x0000 # V
OP_RequestClientZoneChange=0x3fd2 # was 0x4178
OP_ZoneChange=0x0b93 # was 0x4a61
OP_LockoutTimerInfo=0x0000 #
OP_ZoneServerReady=0x0000 #
OP_ZoneInUnknown=0x0000 #
OP_LogoutReply=0x0000 #
OP_PreLogoutReply=0x0000 #
OP_LockoutTimerInfo=0x0000 #
OP_ZoneServerReady=0x0000 #
OP_ZoneInUnknown=0x0000 #
OP_LogoutReply=0x0000 #
OP_PreLogoutReply=0x0000 #
# Required to fully log in
OP_SpawnAppearance=0x7b64 # V
@@ -86,13 +86,13 @@ OP_TaskActivity=0x0000 # C
OP_CompletedTasks=0x0000 # C 0x0000
OP_Weather=0x7ce4 # was 0x0ed5
OP_SendAATable=0x1b26 #
OP_UpdateAA=0x0000 # V
OP_UpdateAA=0x0000 # V
OP_RespondAA=0x0000 # C 0x0000
OP_ReqClientSpawn=0x54e8 # was 0x6618
OP_SpawnDoor=0x4849 #
OP_GroundSpawn=0x5f0d # was 0x5f0d
OP_SendZonepoints=0x5f51 # was 0x0ff4
OP_SendAAStats=0x0000 # C
OP_SendAAStats=0x0000 # C
OP_WorldObjectsSent=0x7b73 # was 0x7b73
OP_BlockedBuffs=0x664a # was 0x4027
OP_SendExpZonein=0x2c27 # was 0x1436
@@ -132,12 +132,12 @@ OP_GuildManageBanker=0x0000 # C
OP_GuildBank=0x0000 # C
OP_SetGuildRank=0x0000 # C
OP_GuildUpdateURLAndChannel=0x0000 # C
OP_GuildMemberLevelUpdate=0x0000 #
OP_ZoneGuildList=0x0000 #
OP_GetGuildsList=0x0000 #
# OP_GuildManageRemove=0x0000 #
# OP_GuildManageAdd=0x0000 #
# OP_GuildManageStatus=0x0000 #
OP_GuildMemberLevelUpdate=0x0000 #
OP_ZoneGuildList=0x0000 #
OP_GetGuildsList=0x0000 #
# OP_GuildManageRemove=0x0000 #
# OP_GuildManageAdd=0x0000 #
# OP_GuildManageStatus=0x0000 #
# GM/guide opcodes
OP_GMServers=0x0000 # C
@@ -317,8 +317,8 @@ OP_VetRewardsAvaliable=0x0000 # C Mispelled?
OP_VetClaimRequest=0x0000 # C
OP_VetClaimReply=0x0000 # C
OP_CrystalCountUpdate=0x0000 # C
OP_DisciplineUpdate=0x0000 #
OP_BecomeCorpse=0x0000 #
OP_DisciplineUpdate=0x0000 #
OP_BecomeCorpse=0x0000 #
OP_Action2=0x0000 # C OP_Damage?
OP_MobUpdate=0x4656 # was 0x4656
OP_NPCMoveUpdate=0x5d24 #
@@ -349,7 +349,7 @@ OP_ManaUpdate=0x0000 # C
OP_EnduranceUpdate=0x0000 # C
OP_MobManaUpdate=0x0000 # C
OP_MobEnduranceUpdate=0x0000 # C
# Looting
OP_LootRequest=0x0000 # C
OP_EndLootRequest=0x0000 # C
@@ -364,10 +364,10 @@ OP_TraderShop=0x0000 # C
OP_Trader=0x0000 # C
OP_TraderBuy=0x0000 # C
OP_Barter=0x0000 # C
OP_ShopItem=0x0000 #
OP_BazaarInspect=0x0000 #
OP_Bazaar=0x0000 #
OP_TraderItemUpdate=0x0000 #
OP_ShopItem=0x0000 #
OP_BazaarInspect=0x0000 #
OP_Bazaar=0x0000 #
OP_TraderItemUpdate=0x0000 #
# pc/npc trading
OP_TradeRequest=0x0000 # C
@@ -416,10 +416,10 @@ OP_TributeItem=0x0000 # C
OP_TributeMoney=0x0000 # C
OP_TributeToggle=0x0000 # C
OP_TributePointUpdate=0x0000 # C
OP_TributeNPC=0x0000 #
OP_GuildTributeInfo=0x0000 #
OP_OpenTributeReply=0x0000 #
# OP_GuildTributeStatus=0x0000 #
OP_TributeNPC=0x0000 #
OP_GuildTributeInfo=0x0000 #
OP_OpenTributeReply=0x0000 #
# OP_GuildTributeStatus=0x0000 #
# Adventure packets:
OP_LeaveAdventure=0x0000 # C
@@ -444,11 +444,11 @@ OP_AdventureLeaderboardReply=0x0000 # C
OP_GroupDisband=0x0000 # C
OP_GroupInvite=0x0000 # C
OP_GroupFollow=0x0000 # C
OP_GroupUpdate=0x0000 # C
OP_GroupUpdateB=0x0000 # C
OP_GroupUpdate=0x0000 # C
OP_GroupUpdateB=0x0000 # C
OP_GroupCancelInvite=0x0000 # C - Same as OP_CancelInvite?
OP_GroupAcknowledge=0x0000 # C
OP_GroupDelete=0x0000 #
OP_GroupDelete=0x0000 #
OP_CancelInvite=0x0000 # C
OP_GroupFollow2=0x0000 # C
OP_GroupInvite2=0x0000 # C
@@ -464,20 +464,20 @@ OP_LFGGetMatchesResponse=0x0000 # C
OP_LFPGetMatchesRequest=0x0000 # C
OP_LFPGetMatchesResponse=0x0000 # C
OP_LFPCommand=0x0000 # C
OP_LFGAppearance=0x0000 #
OP_LFGResponse=0x0000 #
OP_LFGAppearance=0x0000 #
OP_LFGResponse=0x0000 #
# Raid Opcodes
OP_RaidInvite=0x0000 # C
OP_RaidUpdate=0x0000 # C
OP_RaidJoin=0x0000 #
OP_RaidJoin=0x0000 #
# Button-push commands
OP_Taunt=0x0000 # C
OP_CombatAbility=0x0000 # C
OP_SenseTraps=0x0000 # C
OP_PickPocket=0x0000 # C
OP_DisarmTraps=0x0000 #
OP_DisarmTraps=0x0000 #
OP_Disarm=0x0000 # C
OP_Sneak=0x0000 # C
OP_Fishing=0x0000 # C
@@ -495,7 +495,7 @@ OP_AcceptNewTask=0x0000 # C
OP_TaskHistoryRequest=0x0000 # C
OP_TaskHistoryReply=0x0000 # C
OP_CancelTask=0x0000 # C
OP_DeclineAllTasks=0x0000 #
OP_DeclineAllTasks=0x0000 #
# Title opcodes
OP_NewTitlesAvailable=0x0000 # C
@@ -505,53 +505,53 @@ OP_SetTitle=0x0000 # C
OP_SetTitleReply=0x0000 # C
# mail opcodes
OP_Command=0x0000 #
OP_MailboxHeader=0x0000 #
OP_MailHeader=0x0000 #
OP_MailBody=0x0000 #
OP_NewMail=0x0000 #
OP_SentConfirm=0x0000 #
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 # # # # # # # # # # #
# # # # # # # # # # # 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_IncreaseStats=0x0000 #
OP_ApproveZone=0x0000 #
OP_ZoneComplete=0x0000 #
OP_ClientError=0x0000 #
OP_DumpName=0x0000 #
OP_Heartbeat=0x0000 #
OP_CrashDump=0x0000 #
OP_LoginComplete=0x0000 #
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_IncreaseStats=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_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_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_AnnoyingZoneUnknown=0x0000 #
OP_Some6ByteHPUpdate=0x0000 # seems to happen when you target group members
OP_QueryResponseThing=0x0000 #
OP_QueryResponseThing=0x0000 #
# realityincarnate: these are just here to stop annoying several thousand byte packet dumps
@@ -563,47 +563,47 @@ 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 #
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 #
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 #
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
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -650,4 +650,4 @@ 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
OP_InitialHPUpdate=0x0000
File diff suppressed because it is too large Load Diff
@@ -13,11 +13,11 @@ OP_Unknown=0x0000
OP_ExploreUnknown=0x0000 # used for unknown explorer
# V = Verified correct
# C = Most likely correct
# C = Most likely correct
# U = Unsure, but should be correct or close
# world packets
# Required to reach Char Select:
# Required to reach Char Select:
OP_SendLoginInfo=0x6893 # was 0x2683
OP_ApproveWorld=0x115a # was 0x28a7
OP_LogServer=0x701f # was 0x224f
@@ -49,15 +49,15 @@ OP_FloatListThing=0x0000 # V
# Reasons for Disconnect:
OP_ZoneUnavail=0x0000 # C 0x0000
OP_WorldClientReady=0x399b # C 0x0000
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 #
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=0x3594 # was 0x3594
@@ -71,11 +71,11 @@ OP_LevelUpdate=0x0000 # V
OP_Stamina=0x0000 # V
OP_RequestClientZoneChange=0x3fd2 # was 0x4178
OP_ZoneChange=0x0b93 # was 0x4a61
OP_LockoutTimerInfo=0x0000 #
OP_ZoneServerReady=0x0000 #
OP_ZoneInUnknown=0x0000 #
OP_LogoutReply=0x0000 #
OP_PreLogoutReply=0x0000 #
OP_LockoutTimerInfo=0x0000 #
OP_ZoneServerReady=0x0000 #
OP_ZoneInUnknown=0x0000 #
OP_LogoutReply=0x0000 #
OP_PreLogoutReply=0x0000 #
# Required to fully log in
OP_SpawnAppearance=0x7b64 # V
@@ -86,13 +86,13 @@ OP_TaskActivity=0x0000 # C
OP_CompletedTasks=0x0000 # C 0x0000
OP_Weather=0x7ce4 # was 0x0ed5
OP_SendAATable=0x1b26 #
OP_UpdateAA=0x0000 # V
OP_UpdateAA=0x0000 # V
OP_RespondAA=0x0000 # C 0x0000
OP_ReqClientSpawn=0x54e8 # was 0x6618
OP_SpawnDoor=0x4849 #
OP_GroundSpawn=0x5f0d # was 0x5f0d
OP_SendZonepoints=0x5f51 # was 0x0ff4
OP_SendAAStats=0x0000 # C
OP_SendAAStats=0x0000 # C
OP_WorldObjectsSent=0x7b73 # was 0x7b73
OP_BlockedBuffs=0x664a # was 0x4027
OP_SendExpZonein=0x2c27 # was 0x1436
@@ -132,12 +132,12 @@ OP_GuildManageBanker=0x0000 # C
OP_GuildBank=0x0000 # C
OP_SetGuildRank=0x0000 # C
OP_GuildUpdateURLAndChannel=0x0000 # C
OP_GuildMemberLevelUpdate=0x0000 #
OP_ZoneGuildList=0x0000 #
OP_GetGuildsList=0x0000 #
# OP_GuildManageRemove=0x0000 #
# OP_GuildManageAdd=0x0000 #
# OP_GuildManageStatus=0x0000 #
OP_GuildMemberLevelUpdate=0x0000 #
OP_ZoneGuildList=0x0000 #
OP_GetGuildsList=0x0000 #
# OP_GuildManageRemove=0x0000 #
# OP_GuildManageAdd=0x0000 #
# OP_GuildManageStatus=0x0000 #
# GM/guide opcodes
OP_GMServers=0x0000 # C
@@ -317,8 +317,8 @@ OP_VetRewardsAvaliable=0x0000 # C Mispelled?
OP_VetClaimRequest=0x0000 # C
OP_VetClaimReply=0x0000 # C
OP_CrystalCountUpdate=0x0000 # C
OP_DisciplineUpdate=0x0000 #
OP_BecomeCorpse=0x0000 #
OP_DisciplineUpdate=0x0000 #
OP_BecomeCorpse=0x0000 #
OP_Action2=0x0000 # C OP_Damage?
OP_MobUpdate=0x4656 # was 0x4656
OP_NPCMoveUpdate=0x3278 #
@@ -349,7 +349,7 @@ OP_ManaUpdate=0x0000 # C
OP_EnduranceUpdate=0x0000 # C
OP_MobManaUpdate=0x0000 # C
OP_MobEnduranceUpdate=0x0000 # C
# Looting
OP_LootRequest=0x0000 # C
OP_EndLootRequest=0x0000 # C
@@ -364,10 +364,10 @@ OP_TraderShop=0x0000 # C
OP_Trader=0x0000 # C
OP_TraderBuy=0x0000 # C
OP_Barter=0x0000 # C
OP_ShopItem=0x0000 #
OP_BazaarInspect=0x0000 #
OP_Bazaar=0x0000 #
OP_TraderItemUpdate=0x0000 #
OP_ShopItem=0x0000 #
OP_BazaarInspect=0x0000 #
OP_Bazaar=0x0000 #
OP_TraderItemUpdate=0x0000 #
# pc/npc trading
OP_TradeRequest=0x0000 # C
@@ -416,10 +416,10 @@ OP_TributeItem=0x0000 # C
OP_TributeMoney=0x0000 # C
OP_TributeToggle=0x0000 # C
OP_TributePointUpdate=0x0000 # C
OP_TributeNPC=0x0000 #
OP_GuildTributeInfo=0x0000 #
OP_OpenTributeReply=0x0000 #
# OP_GuildTributeStatus=0x0000 #
OP_TributeNPC=0x0000 #
OP_GuildTributeInfo=0x0000 #
OP_OpenTributeReply=0x0000 #
# OP_GuildTributeStatus=0x0000 #
# Adventure packets:
OP_LeaveAdventure=0x0000 # C
@@ -444,11 +444,11 @@ OP_AdventureLeaderboardReply=0x0000 # C
OP_GroupDisband=0x0000 # C
OP_GroupInvite=0x0000 # C
OP_GroupFollow=0x0000 # C
OP_GroupUpdate=0x0000 # C
OP_GroupUpdateB=0x0000 # C
OP_GroupUpdate=0x0000 # C
OP_GroupUpdateB=0x0000 # C
OP_GroupCancelInvite=0x0000 # C - Same as OP_CancelInvite?
OP_GroupAcknowledge=0x0000 # C
OP_GroupDelete=0x0000 #
OP_GroupDelete=0x0000 #
OP_CancelInvite=0x0000 # C
OP_GroupFollow2=0x0000 # C
OP_GroupInvite2=0x0000 # C
@@ -464,20 +464,20 @@ OP_LFGGetMatchesResponse=0x0000 # C
OP_LFPGetMatchesRequest=0x0000 # C
OP_LFPGetMatchesResponse=0x0000 # C
OP_LFPCommand=0x0000 # C
OP_LFGAppearance=0x0000 #
OP_LFGResponse=0x0000 #
OP_LFGAppearance=0x0000 #
OP_LFGResponse=0x0000 #
# Raid Opcodes
OP_RaidInvite=0x0000 # C
OP_RaidUpdate=0x0000 # C
OP_RaidJoin=0x0000 #
OP_RaidJoin=0x0000 #
# Button-push commands
OP_Taunt=0x0000 # C
OP_CombatAbility=0x0000 # C
OP_SenseTraps=0x0000 # C
OP_PickPocket=0x0000 # C
OP_DisarmTraps=0x0000 #
OP_DisarmTraps=0x0000 #
OP_Disarm=0x0000 # C
OP_Sneak=0x0000 # C
OP_Fishing=0x0000 # C
@@ -495,7 +495,7 @@ OP_AcceptNewTask=0x0000 # C
OP_TaskHistoryRequest=0x0000 # C
OP_TaskHistoryReply=0x0000 # C
OP_CancelTask=0x0000 # C
OP_DeclineAllTasks=0x0000 #
OP_DeclineAllTasks=0x0000 #
# Title opcodes
OP_NewTitlesAvailable=0x0000 # C
@@ -505,53 +505,53 @@ OP_SetTitle=0x0000 # C
OP_SetTitleReply=0x0000 # C
# mail opcodes
OP_Command=0x0000 #
OP_MailboxHeader=0x0000 #
OP_MailHeader=0x0000 #
OP_MailBody=0x0000 #
OP_NewMail=0x0000 #
OP_SentConfirm=0x0000 #
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 # # # # # # # # # # #
# # # # # # # # # # # 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_IncreaseStats=0x0000 #
OP_ApproveZone=0x0000 #
OP_ZoneComplete=0x0000 #
OP_ClientError=0x0000 #
OP_DumpName=0x0000 #
OP_Heartbeat=0x0000 #
OP_CrashDump=0x0000 #
OP_LoginComplete=0x0000 #
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_IncreaseStats=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_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_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_AnnoyingZoneUnknown=0x0000 #
OP_Some6ByteHPUpdate=0x0000 # seems to happen when you target group members
OP_QueryResponseThing=0x0000 #
OP_QueryResponseThing=0x0000 #
# realityincarnate: these are just here to stop annoying several thousand byte packet dumps
@@ -563,47 +563,47 @@ 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 #
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 #
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 #
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
@@ -13,11 +13,11 @@ OP_Unknown=0x0000
OP_ExploreUnknown=0x0000 # used for unknown explorer
# V = Verified correct
# C = Most likely correct
# C = Most likely correct
# U = Unsure, but should be correct or close
# world packets
# Required to reach Char Select:
# Required to reach Char Select:
OP_SendLoginInfo=0x13da # V
OP_ApproveWorld=0x86c7 # C
OP_LogServer=0x6f79 # C
@@ -49,15 +49,15 @@ OP_FloatListThing=0x61ba # V
# Reasons for Disconnect:
OP_ZoneUnavail=0x3288 # C 0x1190
OP_WorldClientReady=0x7d05 # C 0x4786
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 #
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=0x3594 # V
@@ -72,11 +72,11 @@ OP_Stamina=0x3d86 # V
OP_RequestClientZoneChange=0x18ea # C
OP_ZoneChange=0x6d37 # C
OP_LockoutTimerInfo=0x0000 #
OP_ZoneServerReady=0x0000 #
OP_ZoneInUnknown=0x0000 #
OP_LogoutReply=0x0000 #
OP_PreLogoutReply=0x0000 #
OP_LockoutTimerInfo=0x0000 #
OP_ZoneServerReady=0x0000 #
OP_ZoneInUnknown=0x0000 #
OP_LogoutReply=0x0000 #
OP_PreLogoutReply=0x0000 #
# Required to fully log in
OP_SpawnAppearance=0x3e17 # V
@@ -86,14 +86,14 @@ OP_TaskDescription=0x156c # C
OP_TaskActivity=0x31f3 # C
OP_CompletedTasks=0x82d7 # C 0x6d27
OP_Weather=0x4658 # V
OP_SendAATable=0x6ef9 # V
OP_UpdateAA=0x7bf6 # V
OP_SendAATable=0x6ef9 # V
OP_UpdateAA=0x7bf6 # V
OP_RespondAA=0x1fbd # C 0x2bad
OP_ReqClientSpawn=0x69cd # V
OP_SpawnDoor=0x6f2b # V
OP_GroundSpawn=0x5c85 # V
OP_SendZonepoints=0x2370 # V
OP_SendAAStats=0x78b9 # C
OP_SendAAStats=0x78b9 # C
OP_WorldObjectsSent=0x7b73 # V
OP_BlockedBuffs=0x05d5 # V
OP_SendExpZonein=0x47e7 # V
@@ -133,12 +133,12 @@ OP_GuildManageBanker=0x1e4c # C
OP_GuildBank=0x0d8a # C
OP_SetGuildRank=0x4ffe # C
OP_GuildUpdateURLAndChannel=0x5232 # C
OP_GuildMemberLevelUpdate=0x0000 #
OP_ZoneGuildList=0x0000 #
OP_GetGuildsList=0x0000 #
# OP_GuildManageRemove=0x0000 #
# OP_GuildManageAdd=0x0000 #
# OP_GuildManageStatus=0x0000 #
OP_GuildMemberLevelUpdate=0x0000 #
OP_ZoneGuildList=0x0000 #
OP_GetGuildsList=0x0000 #
# OP_GuildManageRemove=0x0000 #
# OP_GuildManageAdd=0x0000 #
# OP_GuildManageStatus=0x0000 #
# GM/guide opcodes
OP_GMServers=0x6989 # C
@@ -317,8 +317,8 @@ OP_VetRewardsAvaliable=0x0baa # C Mispelled?
OP_VetClaimRequest=0x34f8 # C
OP_VetClaimReply=0x6a5d # C
OP_CrystalCountUpdate=0x3fc8 # C
OP_DisciplineUpdate=0x0000 #
OP_BecomeCorpse=0x0000 #
OP_DisciplineUpdate=0x0000 #
OP_BecomeCorpse=0x0000 #
OP_Action2=0x0000 # C OP_Damage?
OP_MobUpdate=0x4656 # Same as OP_SpawnPositionUpdate
OP_NPCMoveUpdate=0x0f3e #
@@ -349,7 +349,7 @@ OP_ManaUpdate=0x0433 # C
OP_EnduranceUpdate=0x6b76 # C
OP_MobManaUpdate=0x7901 # C
OP_MobEnduranceUpdate=0x6c5f # C
# Looting
OP_LootRequest=0x6ad7 # C
OP_EndLootRequest=0x6546 # C
@@ -364,10 +364,10 @@ OP_TraderShop=0x2881 # C
OP_Trader=0x0c08 # C
OP_TraderBuy=0x3672 # C
OP_Barter=0x6db5 # C
OP_ShopItem=0x0000 #
OP_BazaarInspect=0x0000 #
OP_Bazaar=0x0000 #
OP_TraderItemUpdate=0x0000 #
OP_ShopItem=0x0000 #
OP_BazaarInspect=0x0000 #
OP_Bazaar=0x0000 #
OP_TraderItemUpdate=0x0000 #
# pc/npc trading
OP_TradeRequest=0x7113 # C
@@ -416,10 +416,10 @@ OP_TributeItem=0x0b89 # C
OP_TributeMoney=0x314f # C
OP_TributeToggle=0x6dc3 # C
OP_TributePointUpdate=0x15a7 # C
OP_TributeNPC=0x0000 #
OP_GuildTributeInfo=0x0000 #
OP_OpenTributeReply=0x0000 #
# OP_GuildTributeStatus=0x0000 #
OP_TributeNPC=0x0000 #
OP_GuildTributeInfo=0x0000 #
OP_OpenTributeReply=0x0000 #
# OP_GuildTributeStatus=0x0000 #
# Adventure packets:
OP_LeaveAdventure=0x3ed4 # C
@@ -444,11 +444,11 @@ OP_AdventureLeaderboardReply=0x4423 # C
OP_GroupDisband=0x54e8 # C
OP_GroupInvite=0x4f60 # C
OP_GroupFollow=0x7f2b # C
OP_GroupUpdate=0x5331 # C
OP_GroupUpdateB=0x0786 # C
OP_GroupUpdate=0x5331 # C
OP_GroupUpdateB=0x0786 # C
OP_GroupCancelInvite=0x2736 # C - Same as OP_CancelInvite?
OP_GroupAcknowledge=0x3e22 # C
OP_GroupDelete=0x58e6 #
OP_GroupDelete=0x58e6 #
OP_CancelInvite=0x2736 # C
OP_GroupFollow2=0x6c16 # C
OP_GroupInvite2=0x5251 # C
@@ -464,20 +464,20 @@ OP_LFGGetMatchesResponse=0x7a16 # C
OP_LFPGetMatchesRequest=0x189e # C
OP_LFPGetMatchesResponse=0x589f # C
OP_LFPCommand=0x7429 # C
OP_LFGAppearance=0x0000 #
OP_LFGResponse=0x0000 #
OP_LFGAppearance=0x0000 #
OP_LFGResponse=0x0000 #
# Raid Opcodes
OP_RaidInvite=0x60b5 # C
OP_RaidUpdate=0x4d8b # C
OP_RaidJoin=0x0000 #
OP_RaidJoin=0x0000 #
# Button-push commands
OP_Taunt=0x30e2 # C
OP_CombatAbility=0x36f8 # C
OP_SenseTraps=0x7e45 # C
OP_PickPocket=0x5821 # C
OP_DisarmTraps=0x0000 #
OP_DisarmTraps=0x0000 #
OP_Disarm=0x6def # C
OP_Sneak=0x1d22 # C
OP_Fishing=0x7093 # C
@@ -495,7 +495,7 @@ OP_AcceptNewTask=0x17d5 # C
OP_TaskHistoryRequest=0x547c # C
OP_TaskHistoryReply=0x4524 # C
OP_CancelTask=0x3bf5 # C
OP_DeclineAllTasks=0x0000 #
OP_DeclineAllTasks=0x0000 #
# Title opcodes
OP_NewTitlesAvailable=0x4b49 # C
@@ -505,53 +505,53 @@ OP_SetTitle=0x675c # C
OP_SetTitleReply=0x75f5 # C
# mail opcodes
OP_Command=0x0000 #
OP_MailboxHeader=0x0000 #
OP_MailHeader=0x0000 #
OP_MailBody=0x0000 #
OP_NewMail=0x0000 #
OP_SentConfirm=0x0000 #
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 # # # # # # # # # # #
# # # # # # # # # # # 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_IncreaseStats=0x0000 #
OP_ApproveZone=0x0000 #
OP_ZoneComplete=0x0000 #
OP_ClientError=0x0000 #
OP_DumpName=0x0000 #
OP_Heartbeat=0x0000 #
OP_CrashDump=0x0000 #
OP_LoginComplete=0x0000 #
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_IncreaseStats=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_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_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_AnnoyingZoneUnknown=0x0000 #
OP_Some6ByteHPUpdate=0x0000 # seems to happen when you target group members
OP_QueryResponseThing=0x0000 #
OP_QueryResponseThing=0x0000 #
# realityincarnate: these are just here to stop annoying several thousand byte packet dumps
@@ -563,49 +563,49 @@ 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 #
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=0x0001 #
OP_Login=0x0002 #
OP_ServerListRequest=0x0004 #
OP_PlayEverquestRequest=0x000d #
OP_PlayEverquestResponse=0x0021 #
OP_ChatMessage=0x0016 #
OP_LoginAccepted=0x0017 #
OP_ServerListResponse=0x0018 #
OP_Poll=0x0029 #
OP_EnterChat=0x000f #
OP_PollResponse=0x0011 #
OP_SessionReady=0x0001 #
OP_Login=0x0002 #
OP_ServerListRequest=0x0004 #
OP_PlayEverquestRequest=0x000d #
OP_PlayEverquestResponse=0x0021 #
OP_ChatMessage=0x0016 #
OP_LoginAccepted=0x0017 #
OP_ServerListResponse=0x0018 #
OP_Poll=0x0029 #
OP_EnterChat=0x000f #
OP_PollResponse=0x0011 #
# 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 #
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
@@ -13,11 +13,11 @@ OP_Unknown=0x0000
OP_ExploreUnknown=0x0000 # used for unknown explorer
# V = Verified correct
# C = Most likely correct
# C = Most likely correct
# U = Unsure, but should be correct or close
# world packets
# Required to reach Char Select:
# Required to reach Char Select:
OP_SendLoginInfo=0x6893 # was 0x2683
OP_ApproveWorld=0x115a # was 0x28a7
OP_LogServer=0x701f # was 0x224f
@@ -49,15 +49,15 @@ OP_FloatListThing=0x0000 # V
# Reasons for Disconnect:
OP_ZoneUnavail=0x0000 # C 0x0000
OP_WorldClientReady=0x399b # C 0x0000
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 #
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=0x3594 # was 0x3594
@@ -71,11 +71,11 @@ OP_LevelUpdate=0x0000 # V
OP_Stamina=0x0000 # V
OP_RequestClientZoneChange=0x3fd2 # was 0x4178
OP_ZoneChange=0x0b93 # was 0x4a61
OP_LockoutTimerInfo=0x0000 #
OP_ZoneServerReady=0x0000 #
OP_ZoneInUnknown=0x0000 #
OP_LogoutReply=0x0000 #
OP_PreLogoutReply=0x0000 #
OP_LockoutTimerInfo=0x0000 #
OP_ZoneServerReady=0x0000 #
OP_ZoneInUnknown=0x0000 #
OP_LogoutReply=0x0000 #
OP_PreLogoutReply=0x0000 #
# Required to fully log in
OP_SpawnAppearance=0x7b64 # V
@@ -86,13 +86,13 @@ OP_TaskActivity=0x0000 # C
OP_CompletedTasks=0x0000 # C 0x0000
OP_Weather=0x7ce4 # was 0x0ed5
OP_SendAATable=0x1d99 #
OP_UpdateAA=0x0000 # V
OP_UpdateAA=0x0000 # V
OP_RespondAA=0x0000 # C 0x0000
OP_ReqClientSpawn=0x54e8 # was 0x6618
OP_SpawnDoor=0x6cfe #
OP_GroundSpawn=0x442a # was 0x5f0d
OP_SendZonepoints=0x5851 # was 0x0ff4
OP_SendAAStats=0x0000 # C
OP_SendAAStats=0x0000 # C
OP_WorldObjectsSent=0x7b73 # was 0x7b73
OP_BlockedBuffs=0x664a # was 0x4027
OP_SendExpZonein=0x2c27 # was 0x1436
@@ -132,12 +132,12 @@ OP_GuildManageBanker=0x0000 # C
OP_GuildBank=0x0000 # C
OP_SetGuildRank=0x0000 # C
OP_GuildUpdateURLAndChannel=0x0000 # C
OP_GuildMemberLevelUpdate=0x0000 #
OP_ZoneGuildList=0x0000 #
OP_GetGuildsList=0x0000 #
# OP_GuildManageRemove=0x0000 #
# OP_GuildManageAdd=0x0000 #
# OP_GuildManageStatus=0x0000 #
OP_GuildMemberLevelUpdate=0x0000 #
OP_ZoneGuildList=0x0000 #
OP_GetGuildsList=0x0000 #
# OP_GuildManageRemove=0x0000 #
# OP_GuildManageAdd=0x0000 #
# OP_GuildManageStatus=0x0000 #
# GM/guide opcodes
OP_GMServers=0x0000 # C
@@ -317,8 +317,8 @@ OP_VetRewardsAvaliable=0x0000 # C Mispelled?
OP_VetClaimRequest=0x0000 # C
OP_VetClaimReply=0x0000 # C
OP_CrystalCountUpdate=0x0000 # C
OP_DisciplineUpdate=0x0000 #
OP_BecomeCorpse=0x0000 #
OP_DisciplineUpdate=0x0000 #
OP_BecomeCorpse=0x0000 #
OP_Action2=0x0000 # C OP_Damage?
OP_MobUpdate=0x4656 # was 0x4656
OP_NPCMoveUpdate=0x38e0 #
@@ -349,7 +349,7 @@ OP_ManaUpdate=0x0000 # C
OP_EnduranceUpdate=0x0000 # C
OP_MobManaUpdate=0x0000 # C
OP_MobEnduranceUpdate=0x0000 # C
# Looting
OP_LootRequest=0x0000 # C
OP_EndLootRequest=0x0000 # C
@@ -364,10 +364,10 @@ OP_TraderShop=0x0000 # C
OP_Trader=0x0000 # C
OP_TraderBuy=0x0000 # C
OP_Barter=0x0000 # C
OP_ShopItem=0x0000 #
OP_BazaarInspect=0x0000 #
OP_Bazaar=0x0000 #
OP_TraderItemUpdate=0x0000 #
OP_ShopItem=0x0000 #
OP_BazaarInspect=0x0000 #
OP_Bazaar=0x0000 #
OP_TraderItemUpdate=0x0000 #
# pc/npc trading
OP_TradeRequest=0x0000 # C
@@ -416,10 +416,10 @@ OP_TributeItem=0x0000 # C
OP_TributeMoney=0x0000 # C
OP_TributeToggle=0x0000 # C
OP_TributePointUpdate=0x0000 # C
OP_TributeNPC=0x0000 #
OP_GuildTributeInfo=0x0000 #
OP_OpenTributeReply=0x0000 #
# OP_GuildTributeStatus=0x0000 #
OP_TributeNPC=0x0000 #
OP_GuildTributeInfo=0x0000 #
OP_OpenTributeReply=0x0000 #
# OP_GuildTributeStatus=0x0000 #
# Adventure packets:
OP_LeaveAdventure=0x0000 # C
@@ -444,11 +444,11 @@ OP_AdventureLeaderboardReply=0x0000 # C
OP_GroupDisband=0x0000 # C
OP_GroupInvite=0x0000 # C
OP_GroupFollow=0x0000 # C
OP_GroupUpdate=0x0000 # C
OP_GroupUpdateB=0x0000 # C
OP_GroupUpdate=0x0000 # C
OP_GroupUpdateB=0x0000 # C
OP_GroupCancelInvite=0x0000 # C - Same as OP_CancelInvite?
OP_GroupAcknowledge=0x0000 # C
OP_GroupDelete=0x0000 #
OP_GroupDelete=0x0000 #
OP_CancelInvite=0x0000 # C
OP_GroupFollow2=0x0000 # C
OP_GroupInvite2=0x0000 # C
@@ -464,20 +464,20 @@ OP_LFGGetMatchesResponse=0x0000 # C
OP_LFPGetMatchesRequest=0x0000 # C
OP_LFPGetMatchesResponse=0x0000 # C
OP_LFPCommand=0x0000 # C
OP_LFGAppearance=0x0000 #
OP_LFGResponse=0x0000 #
OP_LFGAppearance=0x0000 #
OP_LFGResponse=0x0000 #
# Raid Opcodes
OP_RaidInvite=0x0000 # C
OP_RaidUpdate=0x0000 # C
OP_RaidJoin=0x0000 #
OP_RaidJoin=0x0000 #
# Button-push commands
OP_Taunt=0x0000 # C
OP_CombatAbility=0x0000 # C
OP_SenseTraps=0x0000 # C
OP_PickPocket=0x0000 # C
OP_DisarmTraps=0x0000 #
OP_DisarmTraps=0x0000 #
OP_Disarm=0x0000 # C
OP_Sneak=0x0000 # C
OP_Fishing=0x0000 # C
@@ -495,7 +495,7 @@ OP_AcceptNewTask=0x0000 # C
OP_TaskHistoryRequest=0x0000 # C
OP_TaskHistoryReply=0x0000 # C
OP_CancelTask=0x0000 # C
OP_DeclineAllTasks=0x0000 #
OP_DeclineAllTasks=0x0000 #
# Title opcodes
OP_NewTitlesAvailable=0x0000 # C
@@ -505,53 +505,53 @@ OP_SetTitle=0x0000 # C
OP_SetTitleReply=0x0000 # C
# mail opcodes
OP_Command=0x0000 #
OP_MailboxHeader=0x0000 #
OP_MailHeader=0x0000 #
OP_MailBody=0x0000 #
OP_NewMail=0x0000 #
OP_SentConfirm=0x0000 #
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 # # # # # # # # # # #
# # # # # # # # # # # 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_IncreaseStats=0x0000 #
OP_ApproveZone=0x0000 #
OP_ZoneComplete=0x0000 #
OP_ClientError=0x0000 #
OP_DumpName=0x0000 #
OP_Heartbeat=0x0000 #
OP_CrashDump=0x0000 #
OP_LoginComplete=0x0000 #
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_IncreaseStats=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_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_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_AnnoyingZoneUnknown=0x0000 #
OP_Some6ByteHPUpdate=0x0000 # seems to happen when you target group members
OP_QueryResponseThing=0x0000 #
OP_QueryResponseThing=0x0000 #
# realityincarnate: these are just here to stop annoying several thousand byte packet dumps
@@ -563,47 +563,47 @@ 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 #
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 #
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 #
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
@@ -4,11 +4,11 @@ OP_Unknown=0x0000
OP_ExploreUnknown=0x0000 # used for unknown explorer
# V = Verified correct
# C = Most likely correct
# C = Most likely correct
# U = Unsure, but should be correct or close
# world packets
# Required to reach Char Select:
# Required to reach Char Select:
OP_SendLoginInfo=0x4d5c #c
OP_ApproveWorld=0x655c #c
OP_LogServer=0x1497 #c
@@ -40,33 +40,33 @@ OP_FloatListThing=0x45d7 #
# Reasons for Disconnect:
OP_ZoneUnavail=0x66e4 # This is not the right opcode. Produces a 'Your character is inaccessible' message.
OP_WorldClientReady=0x3f24 #
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 #
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=0x3594 #
OP_ZoneEntry=0x5821 #
OP_ReqNewZone=0x1c36 #
OP_NewZone=0x4118 #
OP_ZoneSpawns=0x0000 #
OP_ZoneSpawns=0x0000 #
OP_PlayerProfile=0x6afd #c
OP_TimeOfDay=0x6015 #
OP_LevelUpdate=0x0000 #
OP_Stamina=0x0000 #
OP_RequestClientZoneChange=0x18ea #
OP_ZoneChange=0x0000 #
OP_LockoutTimerInfo=0x0000 #
OP_ZoneServerReady=0x0000 #
OP_ZoneInUnknown=0x0000 #
OP_LogoutReply=0x0000 #
OP_PreLogoutReply=0x0000 #
OP_LockoutTimerInfo=0x0000 #
OP_ZoneServerReady=0x0000 #
OP_ZoneInUnknown=0x0000 #
OP_LogoutReply=0x0000 #
OP_PreLogoutReply=0x0000 #
# Required to fully log in
OP_SpawnAppearance=0x3f55 #c
@@ -77,7 +77,7 @@ OP_TaskActivity=0x0000 #
OP_CompletedTasks=0x6d1f #c
OP_Weather=0x4658 #
OP_SendAATable=0x72f3 #
OP_UpdateAA=0x0000 #
OP_UpdateAA=0x0000 #
OP_RespondAA=0x0000 #
OP_ReqClientSpawn=0x47e7 #
OP_SpawnDoor=0x0e24 #
@@ -123,12 +123,12 @@ OP_GuildManageBanker=0x0000 #
OP_GuildBank=0x0000 #
OP_SetGuildRank=0x0000 #
OP_GuildUpdateURLAndChannel=0x0000 #
OP_GuildMemberLevelUpdate=0x0000 #
OP_ZoneGuildList=0x0000 #
OP_GetGuildsList=0x0000 #
# OP_GuildManageRemove=0x0000 #
# OP_GuildManageAdd=0x0000 #
# OP_GuildManageStatus=0x0000 #
OP_GuildMemberLevelUpdate=0x0000 #
OP_ZoneGuildList=0x0000 #
OP_GetGuildsList=0x0000 #
# OP_GuildManageRemove=0x0000 #
# OP_GuildManageAdd=0x0000 #
# OP_GuildManageStatus=0x0000 #
# GM/guide opcodes
OP_GMServers=0x0000 #
@@ -308,8 +308,8 @@ OP_VetRewardsAvaliable=0x0000 #
OP_VetClaimRequest=0x0000 #
OP_VetClaimReply=0x0000 #
OP_CrystalCountUpdate=0x0000 #
OP_DisciplineUpdate=0x0000 #
OP_BecomeCorpse=0x0000 #
OP_DisciplineUpdate=0x0000 #
OP_BecomeCorpse=0x0000 #
OP_Action2=0x0000 #
OP_MobUpdate=0x4656 #
OP_NPCMoveUpdate=0x2339 #
@@ -340,7 +340,7 @@ OP_ManaUpdate=0x7c94 #c
OP_EnduranceUpdate=0x5851 #c
OP_MobManaUpdate=0x190c #c
OP_MobEnduranceUpdate=0x4d27 #c
# Looting
OP_LootRequest=0x0000 #
OP_EndLootRequest=0x0000 #
@@ -355,10 +355,10 @@ OP_TraderShop=0x0000 #
OP_Trader=0x0000 #
OP_TraderBuy=0x0000 #
OP_Barter=0x0000 #
OP_ShopItem=0x0000 #
OP_BazaarInspect=0x0000 #
OP_Bazaar=0x0000 #
OP_TraderItemUpdate=0x0000 #
OP_ShopItem=0x0000 #
OP_BazaarInspect=0x0000 #
OP_Bazaar=0x0000 #
OP_TraderItemUpdate=0x0000 #
# pc/npc trading
OP_TradeRequest=0x0000 #
@@ -407,10 +407,10 @@ OP_TributeItem=0x0000 #
OP_TributeMoney=0x0000 #
OP_TributeToggle=0x0000 #
OP_TributePointUpdate=0x0000 #
OP_TributeNPC=0x0000 #
OP_GuildTributeInfo=0x0000 #
OP_OpenTributeReply=0x0000 #
# OP_GuildTributeStatus=0x0000 #
OP_TributeNPC=0x0000 #
OP_GuildTributeInfo=0x0000 #
OP_OpenTributeReply=0x0000 #
# OP_GuildTributeStatus=0x0000 #
# Adventure packets:
OP_LeaveAdventure=0x0000 #
@@ -435,11 +435,11 @@ OP_AdventureLeaderboardReply=0x0000 #
OP_GroupDisband=0x0000 #
OP_GroupInvite=0x3671 #c
OP_GroupFollow=0x0000 #
OP_GroupUpdate=0x4b82 #c
OP_GroupUpdateB=0x44c2 #c
OP_GroupUpdate=0x4b82 #c
OP_GroupUpdateB=0x44c2 #c
OP_GroupCancelInvite=0x0000 #
OP_GroupAcknowledge=0x0000 #
OP_GroupDelete=0x0000 #
OP_GroupDelete=0x0000 #
OP_CancelInvite=0x0000 #
OP_GroupFollow2=0x0000 #
OP_GroupInvite2=0x0000 #
@@ -455,20 +455,20 @@ OP_LFGGetMatchesResponse=0x0000 #
OP_LFPGetMatchesRequest=0x0000 #
OP_LFPGetMatchesResponse=0x0000 #
OP_LFPCommand=0x0000 #
OP_LFGAppearance=0x0000 #
OP_LFGResponse=0x0000 #
OP_LFGAppearance=0x0000 #
OP_LFGResponse=0x0000 #
# Raid Opcodes
OP_RaidInvite=0x0000 #
OP_RaidUpdate=0x0c08 #
OP_RaidJoin=0x0000 #
OP_RaidJoin=0x0000 #
# Button-push commands
OP_Taunt=0x0000 #
OP_CombatAbility=0x0000 #
OP_SenseTraps=0x0000 #
OP_PickPocket=0x0000 #
OP_DisarmTraps=0x0000 #
OP_DisarmTraps=0x0000 #
OP_Disarm=0x0000 #
OP_Sneak=0x0000 #
OP_Fishing=0x0000 #
@@ -486,7 +486,7 @@ OP_AcceptNewTask=0x0000 #
OP_TaskHistoryRequest=0x0000 #
OP_TaskHistoryReply=0x0000 #
OP_CancelTask=0x0000 #
OP_DeclineAllTasks=0x0000 #
OP_DeclineAllTasks=0x0000 #
# Title opcodes
OP_NewTitlesAvailable=0x0000 #
@@ -496,53 +496,53 @@ OP_SetTitle=0x0000 #
OP_SetTitleReply=0x0000 #
# mail opcodes
OP_Command=0x0000 #
OP_MailboxHeader=0x0000 #
OP_MailHeader=0x0000 #
OP_MailBody=0x0000 #
OP_NewMail=0x0000 #
OP_SentConfirm=0x0000 #
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 # # # # # # # # # # #
# # # # # # # # # # # 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_IncreaseStats=0x0000 #
OP_ApproveZone=0x0000 #
OP_ZoneComplete=0x0000 #
OP_ClientError=0x0000 #
OP_DumpName=0x0000 #
OP_Heartbeat=0x0000 #
OP_CrashDump=0x0000 #
OP_LoginComplete=0x0000 #
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_IncreaseStats=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_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_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_AnnoyingZoneUnknown=0x0000 #
OP_Some6ByteHPUpdate=0x0000 # seems to happen when you target group members
OP_QueryResponseThing=0x0000 #
OP_QueryResponseThing=0x0000 #
# realityincarnate: these are just here to stop annoying several thousand byte packet dumps
@@ -554,47 +554,47 @@ 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 #
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 #
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 #
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
@@ -13,11 +13,11 @@ OP_Unknown=0x0000
OP_ExploreUnknown=0x0000 # used for unknown explorer
# V = Verified correct
# C = Most likely correct
# C = Most likely correct
# U = Unsure, but should be correct or close
# world packets
# Required to reach Char Select:
# Required to reach Char Select:
OP_SendLoginInfo=0x2683 # V
OP_ApproveWorld=0x28a7 # C
OP_LogServer=0x224f # C
@@ -49,15 +49,15 @@ OP_FloatListThing=0x0000 # V
# Reasons for Disconnect:
OP_ZoneUnavail=0x0000 # C 0x0000
OP_WorldClientReady=0x399b # C 0x0000
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 #
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=0x3594 # V
@@ -72,11 +72,11 @@ OP_Stamina=0x0000 # V
OP_RequestClientZoneChange=0x4178 # C
OP_ZoneChange=0x4a61 # C
OP_LockoutTimerInfo=0x0000 #
OP_ZoneServerReady=0x0000 #
OP_ZoneInUnknown=0x0000 #
OP_LogoutReply=0x0000 #
OP_PreLogoutReply=0x0000 #
OP_LockoutTimerInfo=0x0000 #
OP_ZoneServerReady=0x0000 #
OP_ZoneInUnknown=0x0000 #
OP_LogoutReply=0x0000 #
OP_PreLogoutReply=0x0000 #
# Required to fully log in
OP_SpawnAppearance=0x0000 # V
@@ -86,14 +86,14 @@ OP_TaskDescription=0x0000 # C
OP_TaskActivity=0x0000 # C
OP_CompletedTasks=0x0000 # C 0x0000
OP_Weather=0x0ed5 # V
OP_SendAATable=0x6dc3 # V
OP_UpdateAA=0x0000 # V
OP_SendAATable=0x6dc3 # V
OP_UpdateAA=0x0000 # V
OP_RespondAA=0x0000 # C 0x0000
OP_ReqClientSpawn=0x6618 # V
OP_SpawnDoor=0x47ae # V
OP_GroundSpawn=0x5f0d # V
OP_SendZonepoints=0x0ff4 # V
OP_SendAAStats=0x0000 # C
OP_SendAAStats=0x0000 # C
OP_WorldObjectsSent=0x7b73 # V
OP_BlockedBuffs=0x4027 # V
OP_SendExpZonein=0x1436 # V
@@ -133,12 +133,12 @@ OP_GuildManageBanker=0x0000 # C
OP_GuildBank=0x0000 # C
OP_SetGuildRank=0x0000 # C
OP_GuildUpdateURLAndChannel=0x0000 # C
OP_GuildMemberLevelUpdate=0x0000 #
OP_ZoneGuildList=0x0000 #
OP_GetGuildsList=0x0000 #
# OP_GuildManageRemove=0x0000 #
# OP_GuildManageAdd=0x0000 #
# OP_GuildManageStatus=0x0000 #
OP_GuildMemberLevelUpdate=0x0000 #
OP_ZoneGuildList=0x0000 #
OP_GetGuildsList=0x0000 #
# OP_GuildManageRemove=0x0000 #
# OP_GuildManageAdd=0x0000 #
# OP_GuildManageStatus=0x0000 #
# GM/guide opcodes
OP_GMServers=0x0000 # C
@@ -317,8 +317,8 @@ OP_VetRewardsAvaliable=0x0000 # C Mispelled?
OP_VetClaimRequest=0x0000 # C
OP_VetClaimReply=0x0000 # C
OP_CrystalCountUpdate=0x0000 # C
OP_DisciplineUpdate=0x0000 #
OP_BecomeCorpse=0x0000 #
OP_DisciplineUpdate=0x0000 #
OP_BecomeCorpse=0x0000 #
OP_Action2=0x0000 # C OP_Damage?
OP_MobUpdate=0x4656 # Same as OP_SpawnPositionUpdate
OP_NPCMoveUpdate=0x7adb #
@@ -349,7 +349,7 @@ OP_ManaUpdate=0x0000 # C
OP_EnduranceUpdate=0x0000 # C
OP_MobManaUpdate=0x0000 # C
OP_MobEnduranceUpdate=0x0000 # C
# Looting
OP_LootRequest=0x0000 # C
OP_EndLootRequest=0x0000 # C
@@ -364,10 +364,10 @@ OP_TraderShop=0x0000 # C
OP_Trader=0x0000 # C
OP_TraderBuy=0x0000 # C
OP_Barter=0x0000 # C
OP_ShopItem=0x0000 #
OP_BazaarInspect=0x0000 #
OP_Bazaar=0x0000 #
OP_TraderItemUpdate=0x0000 #
OP_ShopItem=0x0000 #
OP_BazaarInspect=0x0000 #
OP_Bazaar=0x0000 #
OP_TraderItemUpdate=0x0000 #
# pc/npc trading
OP_TradeRequest=0x0000 # C
@@ -416,10 +416,10 @@ OP_TributeItem=0x0000 # C
OP_TributeMoney=0x0000 # C
OP_TributeToggle=0x0000 # C
OP_TributePointUpdate=0x0000 # C
OP_TributeNPC=0x0000 #
OP_GuildTributeInfo=0x0000 #
OP_OpenTributeReply=0x0000 #
# OP_GuildTributeStatus=0x0000 #
OP_TributeNPC=0x0000 #
OP_GuildTributeInfo=0x0000 #
OP_OpenTributeReply=0x0000 #
# OP_GuildTributeStatus=0x0000 #
# Adventure packets:
OP_LeaveAdventure=0x0000 # C
@@ -444,11 +444,11 @@ OP_AdventureLeaderboardReply=0x0000 # C
OP_GroupDisband=0x0000 # C
OP_GroupInvite=0x0000 # C
OP_GroupFollow=0x0000 # C
OP_GroupUpdate=0x0000 # C
OP_GroupUpdateB=0x0000 # C
OP_GroupUpdate=0x0000 # C
OP_GroupUpdateB=0x0000 # C
OP_GroupCancelInvite=0x0000 # C - Same as OP_CancelInvite?
OP_GroupAcknowledge=0x0000 # C
OP_GroupDelete=0x0000 #
OP_GroupDelete=0x0000 #
OP_CancelInvite=0x0000 # C
OP_GroupFollow2=0x0000 # C
OP_GroupInvite2=0x0000 # C
@@ -464,20 +464,20 @@ OP_LFGGetMatchesResponse=0x0000 # C
OP_LFPGetMatchesRequest=0x0000 # C
OP_LFPGetMatchesResponse=0x0000 # C
OP_LFPCommand=0x0000 # C
OP_LFGAppearance=0x0000 #
OP_LFGResponse=0x0000 #
OP_LFGAppearance=0x0000 #
OP_LFGResponse=0x0000 #
# Raid Opcodes
OP_RaidInvite=0x0000 # C
OP_RaidUpdate=0x0000 # C
OP_RaidJoin=0x0000 #
OP_RaidJoin=0x0000 #
# Button-push commands
OP_Taunt=0x0000 # C
OP_CombatAbility=0x0000 # C
OP_SenseTraps=0x0000 # C
OP_PickPocket=0x0000 # C
OP_DisarmTraps=0x0000 #
OP_DisarmTraps=0x0000 #
OP_Disarm=0x0000 # C
OP_Sneak=0x0000 # C
OP_Fishing=0x0000 # C
@@ -495,7 +495,7 @@ OP_AcceptNewTask=0x0000 # C
OP_TaskHistoryRequest=0x0000 # C
OP_TaskHistoryReply=0x0000 # C
OP_CancelTask=0x0000 # C
OP_DeclineAllTasks=0x0000 #
OP_DeclineAllTasks=0x0000 #
# Title opcodes
OP_NewTitlesAvailable=0x0000 # C
@@ -505,53 +505,53 @@ OP_SetTitle=0x0000 # C
OP_SetTitleReply=0x0000 # C
# mail opcodes
OP_Command=0x0000 #
OP_MailboxHeader=0x0000 #
OP_MailHeader=0x0000 #
OP_MailBody=0x0000 #
OP_NewMail=0x0000 #
OP_SentConfirm=0x0000 #
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 # # # # # # # # # # #
# # # # # # # # # # # 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_IncreaseStats=0x0000 #
OP_ApproveZone=0x0000 #
OP_ZoneComplete=0x0000 #
OP_ClientError=0x0000 #
OP_DumpName=0x0000 #
OP_Heartbeat=0x0000 #
OP_CrashDump=0x0000 #
OP_LoginComplete=0x0000 #
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_IncreaseStats=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_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_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_AnnoyingZoneUnknown=0x0000 #
OP_Some6ByteHPUpdate=0x0000 # seems to happen when you target group members
OP_QueryResponseThing=0x0000 #
OP_QueryResponseThing=0x0000 #
# realityincarnate: these are just here to stop annoying several thousand byte packet dumps
@@ -563,47 +563,47 @@ 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 #
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 #
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 #
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
@@ -13,11 +13,11 @@ OP_Unknown=0x0000
OP_ExploreUnknown=0x0000 # used for unknown explorer
# V = Verified correct
# C = Most likely correct
# C = Most likely correct
# U = Unsure, but should be correct or close
# world packets
# Required to reach Char Select:
# Required to reach Char Select:
OP_SendLoginInfo=0x6893 # was 0x2683
OP_ApproveWorld=0x115a # was 0x28a7
OP_LogServer=0x701f # was 0x224f
@@ -49,15 +49,15 @@ OP_FloatListThing=0x0000 # V
# Reasons for Disconnect:
OP_ZoneUnavail=0x0000 # C 0x0000
OP_WorldClientReady=0x399b # C 0x0000
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 #
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=0x3594 # was 0x3594
@@ -72,11 +72,11 @@ OP_Stamina=0x0000 # V
OP_RequestClientZoneChange=0x3fd2 # was 0x4178
OP_ZoneChange=0x0b93 # was 0x4a61
OP_LockoutTimerInfo=0x0000 #
OP_ZoneServerReady=0x0000 #
OP_ZoneInUnknown=0x0000 #
OP_LogoutReply=0x0000 #
OP_PreLogoutReply=0x0000 #
OP_LockoutTimerInfo=0x0000 #
OP_ZoneServerReady=0x0000 #
OP_ZoneInUnknown=0x0000 #
OP_LogoutReply=0x0000 #
OP_PreLogoutReply=0x0000 #
# Required to fully log in
OP_SpawnAppearance=0x7b64 # V
@@ -87,13 +87,13 @@ OP_TaskActivity=0x0000 # C
OP_CompletedTasks=0x0000 # C 0x0000
OP_Weather=0x7ce4 # was 0x0ed5
OP_SendAATable=0x1bd4 # was 0x6dc3
OP_UpdateAA=0x0000 # V
OP_UpdateAA=0x0000 # V
OP_RespondAA=0x0000 # C 0x0000
OP_ReqClientSpawn=0x54e8 # was 0x6618
OP_SpawnDoor=0x465e # was 0x47ae Need an Encode
OP_GroundSpawn=0x5f0d # was 0x5f0d
OP_SendZonepoints=0x5f51 # was 0x0ff4
OP_SendAAStats=0x0000 # C
OP_SendAAStats=0x0000 # C
OP_WorldObjectsSent=0x7b73 # was 0x7b73
OP_BlockedBuffs=0x664a # was 0x4027
OP_SendExpZonein=0x2c27 # was 0x1436
@@ -133,12 +133,12 @@ OP_GuildManageBanker=0x0000 # C
OP_GuildBank=0x0000 # C
OP_SetGuildRank=0x0000 # C
OP_GuildUpdateURLAndChannel=0x0000 # C
OP_GuildMemberLevelUpdate=0x0000 #
OP_ZoneGuildList=0x0000 #
OP_GetGuildsList=0x0000 #
# OP_GuildManageRemove=0x0000 #
# OP_GuildManageAdd=0x0000 #
# OP_GuildManageStatus=0x0000 #
OP_GuildMemberLevelUpdate=0x0000 #
OP_ZoneGuildList=0x0000 #
OP_GetGuildsList=0x0000 #
# OP_GuildManageRemove=0x0000 #
# OP_GuildManageAdd=0x0000 #
# OP_GuildManageStatus=0x0000 #
# GM/guide opcodes
OP_GMServers=0x0000 # C
@@ -317,8 +317,8 @@ OP_VetRewardsAvaliable=0x0000 # C Mispelled?
OP_VetClaimRequest=0x0000 # C
OP_VetClaimReply=0x0000 # C
OP_CrystalCountUpdate=0x0000 # C
OP_DisciplineUpdate=0x0000 #
OP_BecomeCorpse=0x0000 #
OP_DisciplineUpdate=0x0000 #
OP_BecomeCorpse=0x0000 #
OP_Action2=0x0000 # C OP_Damage?
OP_MobUpdate=0x4656 # was 0x4656
OP_NPCMoveUpdate=0x38f9 # was 0x7adb
@@ -349,7 +349,7 @@ OP_ManaUpdate=0x0000 # C
OP_EnduranceUpdate=0x0000 # C
OP_MobManaUpdate=0x0000 # C
OP_MobEnduranceUpdate=0x0000 # C
# Looting
OP_LootRequest=0x0000 # C
OP_EndLootRequest=0x0000 # C
@@ -364,10 +364,10 @@ OP_TraderShop=0x0000 # C
OP_Trader=0x0000 # C
OP_TraderBuy=0x0000 # C
OP_Barter=0x0000 # C
OP_ShopItem=0x0000 #
OP_BazaarInspect=0x0000 #
OP_Bazaar=0x0000 #
OP_TraderItemUpdate=0x0000 #
OP_ShopItem=0x0000 #
OP_BazaarInspect=0x0000 #
OP_Bazaar=0x0000 #
OP_TraderItemUpdate=0x0000 #
# pc/npc trading
OP_TradeRequest=0x0000 # C
@@ -418,10 +418,10 @@ OP_TributeItem=0x0000 # C
OP_TributeMoney=0x0000 # C
OP_TributeToggle=0x0000 # C
OP_TributePointUpdate=0x0000 # C
OP_TributeNPC=0x0000 #
OP_GuildTributeInfo=0x0000 #
OP_OpenTributeReply=0x0000 #
# OP_GuildTributeStatus=0x0000 #
OP_TributeNPC=0x0000 #
OP_GuildTributeInfo=0x0000 #
OP_OpenTributeReply=0x0000 #
# OP_GuildTributeStatus=0x0000 #
# Adventure packets:
OP_LeaveAdventure=0x0000 # C
@@ -446,11 +446,11 @@ OP_AdventureLeaderboardReply=0x0000 # C
OP_GroupDisband=0x0000 # C
OP_GroupInvite=0x0000 # C
OP_GroupFollow=0x0000 # C
OP_GroupUpdate=0x0000 # C
OP_GroupUpdateB=0x0000 # C
OP_GroupUpdate=0x0000 # C
OP_GroupUpdateB=0x0000 # C
OP_GroupCancelInvite=0x0000 # C - Same as OP_CancelInvite?
OP_GroupAcknowledge=0x0000 # C
OP_GroupDelete=0x0000 #
OP_GroupDelete=0x0000 #
OP_CancelInvite=0x0000 # C
OP_GroupFollow2=0x0000 # C
OP_GroupInvite2=0x0000 # C
@@ -466,20 +466,20 @@ OP_LFGGetMatchesResponse=0x0000 # C
OP_LFPGetMatchesRequest=0x0000 # C
OP_LFPGetMatchesResponse=0x0000 # C
OP_LFPCommand=0x0000 # C
OP_LFGAppearance=0x0000 #
OP_LFGResponse=0x0000 #
OP_LFGAppearance=0x0000 #
OP_LFGResponse=0x0000 #
# Raid Opcodes
OP_RaidInvite=0x0000 # C
OP_RaidUpdate=0x0000 # C
OP_RaidJoin=0x0000 #
OP_RaidJoin=0x0000 #
# Button-push commands
OP_Taunt=0x0000 # C
OP_CombatAbility=0x0000 # C
OP_SenseTraps=0x0000 # C
OP_PickPocket=0x0000 # C
OP_DisarmTraps=0x0000 #
OP_DisarmTraps=0x0000 #
OP_Disarm=0x0000 # C
OP_Sneak=0x0000 # C
OP_Fishing=0x0000 # C
@@ -497,7 +497,7 @@ OP_AcceptNewTask=0x0000 # C
OP_TaskHistoryRequest=0x0000 # C
OP_TaskHistoryReply=0x0000 # C
OP_CancelTask=0x0000 # C
OP_DeclineAllTasks=0x0000 #
OP_DeclineAllTasks=0x0000 #
# Title opcodes
OP_NewTitlesAvailable=0x0000 # C
@@ -507,53 +507,53 @@ OP_SetTitle=0x0000 # C
OP_SetTitleReply=0x0000 # C
# mail opcodes
OP_Command=0x0000 #
OP_MailboxHeader=0x0000 #
OP_MailHeader=0x0000 #
OP_MailBody=0x0000 #
OP_NewMail=0x0000 #
OP_SentConfirm=0x0000 #
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 # # # # # # # # # # #
# # # # # # # # # # # 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_IncreaseStats=0x0000 #
OP_ApproveZone=0x0000 #
OP_ZoneComplete=0x0000 #
OP_ClientError=0x0000 #
OP_DumpName=0x0000 #
OP_Heartbeat=0x0000 #
OP_CrashDump=0x0000 #
OP_LoginComplete=0x0000 #
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_IncreaseStats=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_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_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_AnnoyingZoneUnknown=0x0000 #
OP_Some6ByteHPUpdate=0x0000 # seems to happen when you target group members
OP_QueryResponseThing=0x0000 #
OP_QueryResponseThing=0x0000 #
# realityincarnate: these are just here to stop annoying several thousand byte packet dumps
@@ -565,47 +565,47 @@ 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 #
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 #
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 #
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
+118 -118
View File
@@ -13,11 +13,11 @@ OP_Unknown=0x0000
OP_ExploreUnknown=0x0000 # used for unknown explorer
# V = Verified correct
# C = Most likely correct
# C = Most likely correct
# U = Unsure, but should be correct or close
# world packets
# Required to reach Char Select:
# Required to reach Char Select:
OP_SendLoginInfo=0x0ff4 # C
OP_ApproveWorld=0x701f # C
OP_LogServer=0x4762 # C
@@ -49,15 +49,15 @@ OP_FloatListThing=0x10b5 # C
# Reasons for Disconnect:
OP_ZoneUnavail=0x7930 # C
OP_WorldClientReady=0x1a84 # C
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 #
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=0x3594 # C
@@ -69,15 +69,15 @@ OP_PlayerProfile=0x6022 # C
OP_TimeOfDay=0x6015 # C
OP_LevelUpdate=0x6a99 # C
OP_Stamina=0x3e50 # C
OP_LockoutTimerInfo=0x0000 #
OP_ZoneServerReady=0x0000 #
OP_LockoutTimerInfo=0x0000 #
OP_ZoneServerReady=0x0000 #
OP_RequestClientZoneChange=0x4885 # C
OP_ZoneChange=0x051b # C
OP_ZoneInUnknown=0x0000 #
OP_LogoutReply=0x0000 #
OP_PreLogoutReply=0x0000 #
OP_ZoneInUnknown=0x0000 #
OP_LogoutReply=0x0000 #
OP_PreLogoutReply=0x0000 #
# Required to fully log in
OP_SpawnAppearance=0x10b7 # C
@@ -87,14 +87,14 @@ OP_TaskDescription=0x7b77 # C
OP_TaskActivity=0x0525 # C
OP_CompletedTasks=0x5412 # C
OP_Weather=0x2641 # C
OP_SendAATable=0x322f # C
OP_UpdateAA=0x466c # C
OP_RespondAA=0x0142 # C
OP_SendAATable=0x322f # C
OP_UpdateAA=0x466c # C
OP_RespondAA=0x0142 # C
OP_ReqClientSpawn=0x1436 # C
OP_SpawnDoor=0x102f # C
OP_GroundSpawn=0x33e5 # C
OP_SendZonepoints=0x5821 # C
OP_SendAAStats=0x57a3 # C
OP_SendAAStats=0x57a3 # C
OP_WorldObjectsSent=0x7b73 # C
OP_BlockedBuffs=0x0baa # C
OP_SendExpZonein=0x69cd # C
@@ -134,12 +134,12 @@ OP_GuildManageBanker=0x11bc # C
OP_GuildBank=0x0fce # C
OP_SetGuildRank=0x4ffe # C
OP_GuildUpdateURLAndChannel=0x5422
OP_GuildMemberLevelUpdate=0x0000 #
OP_ZoneGuildList=0x0000 #
OP_GetGuildsList=0x0000 #
# OP_GuildManageRemove=0x0000 #
# OP_GuildManageAdd=0x0000 #
# OP_GuildManageStatus=0x0000 #
OP_GuildMemberLevelUpdate=0x0000 #
OP_ZoneGuildList=0x0000 #
OP_GetGuildsList=0x0000 #
# OP_GuildManageRemove=0x0000 #
# OP_GuildManageAdd=0x0000 #
# OP_GuildManageStatus=0x0000 #
# GM/guide opcodes
OP_GMServers=0x6989 # C
@@ -319,18 +319,18 @@ OP_VetRewardsAvaliable=0x4e4e # C
OP_VetClaimRequest=0x771f # C
OP_VetClaimReply=0x2f95 # C
OP_CrystalCountUpdate=0x2d0e # C
OP_DisciplineUpdate=0x0000 #
OP_BecomeCorpse=0x0000 #
OP_DisciplineUpdate=0x0000 #
OP_BecomeCorpse=0x0000 #
OP_MobUpdate=0x4656 # Unused?
OP_NPCMoveUpdate=0x22a7 #
# New Opcodes
OP_SpawnPositionUpdate=0x4656 #
OP_SpawnPositionUpdate=0x4656 #
OP_ManaUpdate=0x4b61 #
OP_EnduranceUpdate=0x02d6 #
OP_EnduranceUpdate=0x02d6 #
OP_MobManaUpdate=0x2ac1 #
OP_MobEnduranceUpdate=0x6c5f #
# Looting
OP_LootRequest=0x2701 # C
@@ -343,13 +343,13 @@ OP_BazaarSearch=0x4675 # C
OP_TraderDelItem=0x63c8 # C
OP_BecomeTrader=0x528f # C
OP_TraderShop=0x7598 # C
OP_TraderItemUpdate=0x0000 #
OP_TraderItemUpdate=0x0000 #
OP_Trader=0x7092 # C
OP_ShopItem=0x0000 #
OP_ShopItem=0x0000 #
OP_TraderBuy=0x053a # C
OP_Barter=0x4b49 #
OP_BazaarInspect=0x0000 #
OP_Bazaar=0x0000 #
OP_BazaarInspect=0x0000 #
OP_Bazaar=0x0000 #
OP_MarketPlace1=0x367b
OP_MarketPlace2=0x0e1d
@@ -400,10 +400,10 @@ OP_TributeItem=0x416b # C
OP_TributeMoney=0x0b89 # C
OP_TributeToggle=0x45b3 # C
OP_TributePointUpdate=0x7d05 # C
OP_TributeNPC=0x0000 #
OP_GuildTributeInfo=0x0000 #
OP_OpenTributeReply=0x0000 #
# OP_GuildTributeStatus=0x0000 #
OP_TributeNPC=0x0000 #
OP_GuildTributeInfo=0x0000 #
OP_OpenTributeReply=0x0000 #
# OP_GuildTributeStatus=0x0000 #
# Adventure packets:
OP_LeaveAdventure=0x2ab6 # C
@@ -432,7 +432,7 @@ OP_GroupUpdate=0x21be
OP_GroupUpdateB=0x7351
OP_GroupCancelInvite=0x5251 # C - Same as OP_CancelInvite?
OP_GroupAcknowledge=0x3e22 # C
OP_GroupDelete=0x58e6 #
OP_GroupDelete=0x58e6 #
OP_CancelInvite=0x5251 # C
OP_GroupFollow2=0x2736 # C
OP_GroupInvite2=0x548c # C
@@ -447,20 +447,20 @@ OP_LFGGetMatchesResponse=0x7d90 # C
OP_LFPGetMatchesRequest=0x0479 # C
OP_LFPGetMatchesResponse=0x16f5 # C
OP_LFPCommand=0x710e # C
OP_LFGAppearance=0x0000 #
OP_LFGResponse=0x0000 #
OP_LFGAppearance=0x0000 #
OP_LFGResponse=0x0000 #
# Raid Opcodes
OP_RaidInvite=0x3b52 # C
OP_RaidUpdate=0x32c6 # C
OP_RaidJoin=0x0000 #
OP_RaidJoin=0x0000 #
# Button-push commands
OP_Taunt=0x1418 # C
OP_CombatAbility=0x24c5 # C
OP_SenseTraps=0x1e04 # C
OP_PickPocket=0x25f0 # C
OP_DisarmTraps=0x0000 #
OP_DisarmTraps=0x0000 #
OP_Disarm=0x6def # C
OP_Sneak=0x03e7 # C
OP_Fishing=0x7093 # C
@@ -478,7 +478,7 @@ OP_AcceptNewTask=0x5832 # C
OP_TaskHistoryRequest=0x29d7 # C
OP_TaskHistoryReply=0x3d2a # C
OP_CancelTask=0x726b # C
OP_DeclineAllTasks=0x0000 #
OP_DeclineAllTasks=0x0000 #
OP_Shroud=0x6d1f
OP_ShroudRemove=0x17f6
OP_ShroudUnknown1=0x169a
@@ -496,53 +496,53 @@ OP_SetTitle=0x698a # C
OP_SetTitleReply=0x4d3e # C
# mail opcodes
OP_Command=0x0000 #
OP_MailboxHeader=0x0000 #
OP_MailHeader=0x0000 #
OP_MailBody=0x0000 #
OP_NewMail=0x0000 #
OP_SentConfirm=0x0000 #
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 # # # # # # # # # # #
# # # # # # # # # # # 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_IncreaseStats=0x0000 #
OP_ApproveZone=0x0000 #
OP_ZoneComplete=0x0000 #
OP_ClientError=0x0000 #
OP_DumpName=0x0000 #
OP_Heartbeat=0x0000 #
OP_CrashDump=0x0000 #
OP_LoginComplete=0x0000 #
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_IncreaseStats=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_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_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_AnnoyingZoneUnknown=0x0000 #
OP_Some6ByteHPUpdate=0x0000 # seems to happen when you target group members
OP_QueryResponseThing=0x0000 #
OP_QueryResponseThing=0x0000 #
# realityincarnate: these are just here to stop annoying several thousand byte packet dumps
@@ -554,47 +554,47 @@ 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 #
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=0x0001 #
OP_Login=0x0002 #
OP_ServerListRequest=0x0004 #
OP_PlayEverquestRequest=0x000d #
OP_PlayEverquestResponse=0x0021 #
OP_ChatMessage=0x0016 #
OP_LoginAccepted=0x0017 #
OP_ServerListResponse=0x0018 #
OP_Poll=0x0029 #
OP_EnterChat=0x000f #
OP_PollResponse=0x0011 #
OP_SessionReady=0x0001 #
OP_Login=0x0002 #
OP_ServerListRequest=0x0004 #
OP_PlayEverquestRequest=0x000d #
OP_PlayEverquestResponse=0x0021 #
OP_ChatMessage=0x0016 #
OP_LoginAccepted=0x0017 #
OP_ServerListResponse=0x0018 #
OP_Poll=0x0029 #
OP_EnterChat=0x000f #
OP_PollResponse=0x0011 #
# 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 #
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
Binary file not shown.