I was able to get SEQ semi-functional on Beta. Quite a few issues, but I'm still working on it. The biggest outstanding issue so far is that mobs are only decoding inside a small update radius. I ran out of time to work on it last night but I will try to determine in the next few days if this is a change to how mob data is delivered to the client or not. There are still lots of bugs and many many outstanding opcode changes. Any help finding and/or verifying opcodes is appreciated.
Using a fresh copy of SEQ 5.13.10.2:
spawnshell.cpp:
Code:
// unknowns
netStream.skipBytes(8);
spawn->isMercenary = netStream.readUInt8();
// unknowns -- changed from 28 to 53 for HoT Beta
netStream.skipBytes(53);
// now we're at the end
retVal = netStream.pos() - netStream.data();
everquest.h
Code:
/*
** Type: Zone Change Request (before hand)
** Length: 92 Octets
** OpCode: ZoneChangeCode
*/
struct zoneChangeStruct
{
/*0000*/ char name[64]; // Character Name
/*0064*/ uint16_t zoneId; // zone Id
/*0066*/ uint16_t zoneInstance; // zone Instance
/*0068*/ uint8_t unknown0068[8]; // unknown
/*0076*/ uint8_t unknown0076[12]; // ***Placeholder (6/29/2005)
/*0088*/ uint8_t unknown0088[4]; // HoT Beta (9/7/2010)
/*0092*/
};
Code:
/*20584*/ TributeStruct tributes[MAX_TRIBUTES]; // Current tribute loadout
/*20624*/ uint8_t unknown20624[212]; // Added 208 bytes for HoT BETA
/*20628*/ float expGroupLeadAA; // Current group lead exp points
Code:
/*
** Info sent when you start to cast a spell
** Length: 44 Octets
** OpCode: StartCastCode
*/
struct startCastStruct
{
/*0000*/ int32_t slot; // ***Placeholder
/*0004*/ uint32_t spellId; // Spell ID
/*0008*/ int32_t inventorySlot; // ***Placeholder
/*0012*/ uint8_t unknown0012[8]; // ***Placeholder (9/1/2010)
/*0020*/ uint32_t targetId; // The current selected target
/*0024*/ uint8_t unknown0024[4]; // ***Placeholder
/*0028*/ uint8_t unknown0028[16]; // ***Placeholder (4/7/2009)
/*0044*/
};
zoneopcodes.xml
Code:
<opcode id="4540" name="OP_NpcMoveUpdate" updated="09/07/10">
<comment>Position updates</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="7EEB" name="OP_DeleteSpawn" updated="09/07/10">
<comment>old DeleteSpawnCode</comment>
<payload dir="both" typename="deleteSpawnStruct" sizechecktype="match"/>
</opcode>
<opcode id="002B" name="OP_ZoneEntry" updated="09/07/10">
<comment>old ZoneEntryCode</comment>
<payload dir="client" typename="ClientZoneEntryStruct" sizechecktype="match"/>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
<opcode id="0B93" name="OP_ZoneChange" updated="09/07/10">
<comment>old ZoneChangeCode</comment>
<payload dir="both" typename="zoneChangeStruct" sizechecktype="match"/>
</opcode>
<opcode id="3237" name="OP_Death" updated="09/07/10">
<comment>old NewCorpseCode</comment>
<payload dir="server" typename="newCorpseStruct" sizechecktype="match"/>
</opcode>
<opcode id="5DBC" name="OP_ItemPlayerPacket" updated="09/07/10">
<comment>Inventory/bank items coming over during zone</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>