-
Re: 4/13/11 patch
Nice timing. OP_NpcMoveUpdate is definitely 38E0. Packet changed as well, following code fixes it.
in spawnshell.cpp, function void SpawnShell::npcMoveUpdate(const uint8_t* data, size_t len, uint8_t dir):
Code:
// spawnId.
uint16_t spawnId = stream.readUInt(16);
// 13 Apr 2011 -- 2 bytes of null data added into packet.
uint16_t unk1 = stream.readUInt(16);
// 6 bit field specifier.
uint8_t fieldSpecifier = stream.readUInt(6);
Edit 1: OP_Death is 49B6, OP_DeleteSpawn is 0BD0. Still not sure what packet belongs to 2370, though it can't be many choices since it always seems to be 10 bytes long.
-
Re: 4/13/11 patch
OP_RemoveSpawn seems to be 725A
Edit: and OP_GroupInvited seems to be 03CC
Edit 2: OP_FormattedMessage seems to segfault showeq when fighting mobs, i comment it out form zoneopcodes.xml and seems to be running stable after that
Edit 3: OP_InspectAnswer seems to be 3365
-
Re: 4/13/11 patch
Thanks for helping and posting these. I will be out of the country starting sunday to sunday so if you can get everything working and send me the changes, I will make up a new tarball for everyone when I get back.
-
Re: 4/13/11 patch
Kala & Rail's fixes above are working so far.
-
Re: 4/13/11 patch
Hello, I am a long time user (since 2000) - and I have a renewed interested in EQ Progression server. Thank you guys for your work and I hope this will continue for a longer time. I wish I know how to look for the opcode so I could help out.
The Kala & Rail's fixes are working fine so far.
-
Re: 4/13/11 patch
I must have screwed something up. Followed the changes posted in this thread.
Still seeing the following:
Warning: OP_ZoneEntry (0x2d6) (dataLen: 76) doesn't match: sizeof(ClientZoneEntryStruct):68
Warning: OP_ClickObject (0x442a) (dataLen: 65) doesn't match: sizeof(remDropStruct):8
Debug: SpawnShell::fillSpawnStruct - expected length: 371, read: 356 for spawn ' *******' I removed the spawn name.
Seg fault, shortly after I get Your Player's ID is
Edit: fixed the ZoneEntry error by adding 8 bytes to the placeholder at the end of the struct.
-
Re: 4/13/11 patch
Are you sure you're running the latest tarball and made the changes in http://www.showeq.net/forums/showthr...Server-Updates before adding in these changes?
-
Re: 4/13/11 patch
Ok, it seems I was still using a modified 5.13.10.2 source, and was functional, until this latest patch. I've run through it 3 times now, using the official 5.13.10.3 tarball as a starting point. Not having much luck. Can anyone see what I am missing. I wasn't clear on playerSpawnStruct change, as there doesn't seem to be that struct. I applied it to playerSpawnPosStruct.
Thanks in advance!
Here are the diff's of the 3 files, starting from the original.
everquest.h.diff:
Code:
*** showeq-5.13.10.3-orig/src/everquest.h 2011-01-01 17:08:56.000000000 -0
500
--- showeq-5.13.10.3/src/everquest.h 2011-04-16 21:57:55.000000000 -0400
***************
*** 563,569 ****
/*0000*/ uint32_t unknown0000; // ***Placeholder
/*0004*/ char name[32]; // Player firstname
/*0036*/ uint8_t unknown0036[28]; // ***Placeholder
! /*0064*/ uint32_t unknown0064; // unknown
};
--- 563,569 ----
/*0000*/ uint32_t unknown0000; // ***Placeholder
/*0004*/ char name[32]; // Player firstname
/*0036*/ uint8_t unknown0036[28]; // ***Placeholder
! /*0064*/ uint32_t unknown0064[3]; // unknown
};
***************
*** 714,720 ****
/*07872*/ uint8_t unknown07872[20];
/*07892*/ spellBuff buffs[MAX_BUFFS]; // Buffs currently on the player
/*10172*/ uint32_t disciplines[MAX_DISCIPLINES]; // Known disciplines
! /*10572*/ uint8_t unknown10572[560];
/*11132*/ uint32_t recastTimers[MAX_RECAST_TYPES]; // Timers (GMT of last use)
/*11212*/ uint32_t endurance; // Current endurance
/*11216*/ uint32_t aa_spent; // Number of spent AA points (includin
g glyphs)
--- 714,720 ----
/*07872*/ uint8_t unknown07872[20];
/*07892*/ spellBuff buffs[MAX_BUFFS]; // Buffs currently on the player
/*10172*/ uint32_t disciplines[MAX_DISCIPLINES]; // Known disciplines
! /*10572*/ uint8_t unknown10572[1280];
/*11132*/ uint32_t recastTimers[MAX_RECAST_TYPES]; // Timers (GMT of last use)
/*11212*/ uint32_t endurance; // Current endurance
/*11216*/ uint32_t aa_spent; // Number of spent AA points (includin
g glyphs)
***************
*** 1416,1421 ****
--- 1416,1422 ----
struct spawnPositionUpdate
{
/*0000*/ int16_t spawnId;
+ uint8_t unk1[2];
/*0002*/ int64_t y:19, z:19, x:19, u3:7;
unsigned heading:12;
signed unused2:4;
***************
*** 2187,2192 ****
--- 2188,2194 ----
struct SpawnUpdateStruct
{
/*0000*/ uint16_t spawnId; // Id of spawn to update
+ uint8_t unk1[2];
/*0002*/ uint16_t subcommand; // some sort of subcommand type
/*0004*/ int16_t arg1; // first option
/*0006*/ int16_t arg2; // second option
***************
*** 2284,2289 ****
--- 2286,2292 ----
struct playerSpawnPosStruct
{
/*0000*/ uint16_t spawnId;
+ uint8_t unk[2];
/*0002*/ signed padding0000:12; // ***Placeholder
signed deltaX:13; // change in x
signed padding0005:7; // ***Placeholder
***************
*** 2311,2317 ****
{
/*0000*/ uint16_t spawnId; // Player's spawn id
/*0002*/ uint8_t unknown0002[2]; // ***Placeholder (update time counter?)
! /*0004*/ uint8_t unknown0004[4]; // ***Placeholder
/*0008*/ float x; // x coord (2nd loc value)
/*0012*/ float y; // y coord (1st loc value)
/*0016*/ signed deltaHeading:10; // change in heading
--- 2314,2320 ----
{
/*0000*/ uint16_t spawnId; // Player's spawn id
/*0002*/ uint8_t unknown0002[2]; // ***Placeholder (update time counter?)
! /*0004*/ uint8_t unknown0004[6]; // ***Placeholder
/*0008*/ float x; // x coord (2nd loc value)
/*0012*/ float y; // y coord (1st loc value)
/*0016*/ signed deltaHeading:10; // change in heading
zoneopcodes.xml.diff
Code:
*** showeq-5.13.10.3-orig/conf/zoneopcodes.xml 2011-01-01 13:30:45.000000000 -0500
--- showeq-5.13.10.3/conf/zoneopcodes.xml 2011-04-16 21:44:02.000000000 -0400
***************
*** 5,11 ****
<!--
Critical opcodes used directly by ShowEQ
-->
! <opcode id="5BAD" name="OP_NpcMoveUpdate" updated="12/08/10">
<comment>Position updates</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
--- 5,11 ----
<!--
Critical opcodes used directly by ShowEQ
-->
! <opcode id="3278" name="OP_NpcMoveUpdate" updated="12/08/10">
<comment>Position updates</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
***************
*** 13,32 ****
<comment></comment>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
! <opcode id="220C" name="OP_DeleteSpawn" updated="12/08/10">
<comment>old DeleteSpawnCode</comment>
<payload dir="both" typename="deleteSpawnStruct" sizechecktype="match"/>
</opcode>
! <opcode id="002B" name="OP_ZoneEntry" updated="10/15/10">
<comment>old ZoneEntryCode</comment>
<payload dir="client" typename="ClientZoneEntryStruct" sizechecktype="match"/>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
! <opcode id="5F85" name="OP_GuildMOTD" updated="10/15/10">
<comment>GuildMOTD</comment>
<payload dir="server" typename="guildMOTDStruct" sizechecktype="none"/>
</opcode>
! <opcode id="2370" name="OP_InspectAnswer" updated="10/15/10">
<comment>old InspectDataCode</comment>
<payload dir="both" typename="inspectDataStruct" sizechecktype="match"/>
</opcode>
--- 13,32 ----
<comment></comment>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>
! <opcode id="0BD0" name="OP_DeleteSpawn" updated="12/08/10">
<comment>old DeleteSpawnCode</comment>
<payload dir="both" typename="deleteSpawnStruct" sizechecktype="match"/>
</opcode>
! <opcode id="02D6" name="OP_ZoneEntry" updated="10/15/10">
<comment>old ZoneEntryCode</comment>
<payload dir="client" typename="ClientZoneEntryStruct" sizechecktype="match"/>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>
! <opcode id="71D1" name="OP_GuildMOTD" updated="10/15/10">
<comment>GuildMOTD</comment>
<payload dir="server" typename="guildMOTDStruct" sizechecktype="none"/>
</opcode>
! <opcode id="3365" name="OP_InspectAnswer" updated="10/15/10">
<comment>old InspectDataCode</comment>
<payload dir="both" typename="inspectDataStruct" sizechecktype="match"/>
</opcode>
***************
*** 34,40 ****
<comment>Coords in a zone that will port you to another zone</comment>
<payload dir="server" typename="zonePointsStruct" sizechecktype="none"/>
</opcode>
! <opcode id="2257" name="OP_TargetMouse" updated="10/15/10">
<comment>Targeting a person - old ClientTargetCode</comment>
<payload dir="both" typename="clientTargetStruct" sizechecktype="match"/>
</opcode>
--- 34,40 ----
<comment>Coords in a zone that will port you to another zone</comment>
<payload dir="server" typename="zonePointsStruct" sizechecktype="none"/>
</opcode>
! <opcode id="5F5E" name="OP_TargetMouse" updated="10/15/10">
<comment>Targeting a person - old ClientTargetCode</comment>
<payload dir="both" typename="clientTargetStruct" sizechecktype="match"/>
</opcode>
***************
*** 74,84 ****
<comment></comment>
<payload dir="server" typename="dzInfo" sizechecktype="match"/>
</opcode>
! <opcode id="3B52" name="OP_FormattedMessage" updated="10/21/09">
<comment>old FormattedMessageCode</comment>
<payload dir="server" typename="formattedMessageStruct" sizechecktype="none"/>
</opcode>
! <opcode id="6CFE" name="OP_SpawnDoor" updated="12/08/10">
<comment>old DoorSpawnsCode</comment>
<payload dir="server" typename="doorStruct" sizechecktype="modulus"/>
</opcode>
--- 74,85 ----
<comment></comment>
<payload dir="server" typename="dzInfo" sizechecktype="match"/>
</opcode>
! /* <opcode id="3B52" name="OP_FormattedMessage" updated="10/21/09">
<comment>old FormattedMessageCode</comment>
<payload dir="server" typename="formattedMessageStruct" sizechecktype="none"/>
</opcode>
! */
! <opcode id="6CFE" name="OP_SpawnDoor" updated="12/08/10">
<comment>old DoorSpawnsCode</comment>
<payload dir="server" typename="doorStruct" sizechecktype="modulus"/>
</opcode>
***************
*** 102,108 ****
<payload dir="server" typename="groupInviteStruct" sizechecktype="match"/>
<comment>You got invited to a group</comment>
</opcode>-->
! <opcode id="5251" name="OP_GroupInvite" updated="10/21/09">
<payload dir="both" typename="groupInviteStruct" sizechecktype="none"/>
<comment>You invite or get invited</comment>
</opcode>
--- 103,109 ----
<payload dir="server" typename="groupInviteStruct" sizechecktype="match"/>
<comment>You got invited to a group</comment>
</opcode>-->
! <opcode id="03CC" name="OP_GroupInvite" updated="10/21/09">
<payload dir="both" typename="groupInviteStruct" sizechecktype="none"/>
<comment>You invite or get invited</comment>
</opcode>
***************
*** 148,154 ****
<comment>Server updating on hunger/thirst</comment>
<payload dir="server" typename="staminaStruct" sizechecktype="match"/>
</opcode>
! <opcode id="3E50" name="OP_Consider" updated="10/21/09">
<comment>old ConsiderCode</comment>
</opcode>
***************
*** 148,154 ****
<comment>Server updating on hunger/thirst</comment>
<payload dir="server" typename="staminaStruct" sizechecktype="match"/>
</opcode>
! <opcode id="3E50" name="OP_Consider" updated="10/21/09">
<comment>old ConsiderCode</comment>
<payload dir="both" typename="considerStruct" sizechecktype="match"/>
</opcode>
--- 149,155 ----
<comment>Server updating on hunger/thirst</comment>
<payload dir="server" typename="staminaStruct" sizechecktype="match"/>
</opcode>
! <opcode id="3C2D" name="OP_Consider" updated="10/21/09">
<comment>old ConsiderCode</comment>
<payload dir="both" typename="considerStruct" sizechecktype="match"/>
</opcode>
***************
*** 186,196 ****
<comment>old ExpUpdateCode</comment>
<payload dir="server" typename="expUpdateStruct" sizechecktype="match"/>
</opcode>
! <opcode id="7434" name="OP_RemoveSpawn" updated="06/12/09">
<comment>Remove spawn from zone</comment>
<payload dir="both" typename="removeSpawnStruct" sizechecktype="none"/>
</opcode>
! <opcode id="3237" name="OP_Death" updated="09/07/10">
<comment>old NewCorpseCode</comment>
<payload dir="server" typename="newCorpseStruct" sizechecktype="match"/>
</opcode>
--- 187,197 ----
<comment>old ExpUpdateCode</comment>
<payload dir="server" typename="expUpdateStruct" sizechecktype="match"/>
</opcode>
! <opcode id="725A" name="OP_RemoveSpawn" updated="06/12/09">
<comment>Remove spawn from zone</comment>
<payload dir="both" typename="removeSpawnStruct" sizechecktype="none"/>
</opcode>
! <opcode id="49B6" name="OP_Death" updated="09/07/10">
<comment>old NewCorpseCode</comment>
<payload dir="server" typename="newCorpseStruct" sizechecktype="match"/>
</opcode>
spawnshell.cpp.diff
Code:
*** showeq-5.13.10.3-orig/src/spawnshell.cpp 2011-01-01 17:10:22.000000000 -0500
--- showeq-5.13.10.3/src/spawnshell.cpp 2011-04-16 21:45:13.000000000 -0400
***************
*** 947,952 ****
--- 947,955 ----
// spawnId.
uint16_t spawnId = stream.readUInt(16);
+ // 13 Apr 2011 -- 2 bytes of null data added into packet.
+ uint16_t unk1 = stream.readUInt(16);
+
// 6 bit field specifier.
uint8_t fieldSpecifier = stream.readUInt(6);
***************
*** 1357,1362 ****
--- 1360,1369 ----
if(len==sizeof(removeSpawnStruct))
{
+ // Hack to fix corpse clean-up change
+ deleteItem(tSpawn, rmSpawn->spawnId);
+ // End Hack
+
if(!rmSpawn->removeSpawn)
{
// Remove a spawn from outside the update radius
-
Re: 4/13/11 patch
OP_GroundSpawn is 442A
EDIT: sorry i was way of here, see kala's post futher down
Old not relevant text: "OP_ClickObject seems to be 7C87 but the struct do not match so ground spawns never gets removed, and changeing struct is beyond me at the moment."
-
Re: 4/13/11 patch
I am in the same boat as pita. Several times starting over from 5.13.10.2 making the above changes and changes from http://www.showeq.net/forums/showthr...Server-Updates and still no success. Everything looks like it is working while my character is still loading, but once the character gets into game, seg fault. It looks like there are just 3 files changing. Everquest.h, spawnshell.cpp, and zoneopcodes.xml. Would it be possible for someone who has this working to paste those three files?
-
Re: 4/13/11 patch
I got annoyed with builds taking 20 minutes on my old AMD 1400+ linux box, so I threw together a "new" P4 3.0gig box, with 2gig ram, Ubuntu 11.04 beta. (Yeah, I know, living on the wild side.)
Copied the exact same showeq folder from the old box, recompiled, now I am getting an OP_GroupDisband size mismatch. Sigh!!!
Can anyone post a working diff against 5.13.10.3 tarball?
On a completely different note, I really really really don't like the new Unity desktop. I reverted back to Gnome within about 10 minutes.
-
Re: 4/13/11 patch
Pita I looked at your DIFF and you are missing the change to OP_GroupUpdate in zoneoppcodes.xml. This needs to be commented out.
-
Re: 4/13/11 patch
ok, commented out OP_GroupUdate, and I can get into game, have a map, and some skittles, but it crashes soon after.
-
Re: 4/13/11 patch
Another update, sorry for the delay but I was dealing with RL things. OP_GroundSpawn is definitely 0x442A, OP_ClickObject is definitely 0x4194, OP_HPUpdate is definitely 0x2370, and OP_InspectAnswer is definitely 0x3365.
I did find a packet and opcode (0x0FF4) that ShowEQ doesn't handled. It's a mana related packet structured exactly like the one attached to OP_HPUpdate, but it is NOT OP_ManaChange. It's 10 bytes long, 4 bytes of mana, then 4 bytes of mana, and finishes itself off with 2 bytes of spawnID.
Edit 1: I ended up commenting out all the group related opcodes as I'm not sure what ShowEQ would process them for, nor am I really sure I care about that data. I know that's probably not the best way to handle it, but whatever for now. lol I'm also not sure what purpose OP_RemoveSpawn has, or how to tell if it really is working, since corpse rotting is handled by DeleteSpawn, and picking up ground spawn items is handled by ClickObject. I've got it in my codes as 725A as per previous post, but other than that I've no idea what to do with it.
Edit 2: Updated ClientZoneEntryStruct to match client sent 02D6 packet, change
Code:
/*0064*/ uint32_t unknown0064;
to this:
Code:
/*0064*/ uint32_t unknown0064[3];
Edit #3: Found some guild related opcodes 7429 which is 76 bytes long, and 4D4E which is 72 bytes long, doesn't look like anything useful, but I offer the data for those that are curious.
Edit #4: OP_SimpleMessage is now 3B52 which was the old OP_FormattedMessage opcode. No idea what the new OP_FormattedMessage opcode is as of yet, not sure what a formatted message would look like on my screen anyway. That will at least stop crashes related to this opcode.
Edit #5: 5D0F is the contents of the veteran reward claim window.
-
Re: 4/13/11 patch
Well, that did the trick. Did what Kalastrom did and commented out all group OP codes. I get skittles and movements. Zoned to several instances and no crashes yet.