PDA

View Full Version : 11 Nov 09 Patch



Backspace
11-11-2009, 05:38 PM
At least for me, 11 Nov patch has broken SEQ. When I zone SEQ crashes with the following:
Zone: EntryCode: Client
Warning: OP_PlayerProfile (0x6022) (dataLen: 24976) doesn't match: sizeof(charProfileStruct):24856
Segmentation fault

ieatacid
11-11-2009, 06:04 PM
It looks like opcodes changed too :o

sammie
11-13-2009, 03:47 AM
Here's what I changed to make it work with the 11/04 patch on Test Server:

everquest.h

#define MAX_DISCIPLINES 130

and in struct newZoneStruct

/*0928*/ uint8_t unknown0928[4]; // *** Placeholder (10/07/2008)
/*0932*/ uint8_t unknown0932[8]; // *** Placeholder (11/04/2009)
/*0940*/

Recompile and it worked just fine with no new opcodes or code changes needed. This was test server only and is untested on Live, but may work if people are still broken. Adding 30 to MAX_DISCIPLINES fixes the mismatched size of playerProfile. If you get mismatch for OP_NewZone you can try adding the placeholder to that struct as well.

Backspace
11-13-2009, 07:53 PM
Sammie, your changes seem to work very nicely. Thanks.

Vinney
11-14-2009, 08:14 AM
Works on reg servers, Thank you very much

Backspace
11-16-2009, 07:07 PM
Getting this but doesnt seem to break seq:
Warning: OP_Buff (0xd1d) (dataLen: 40) doesn't match: sizeof(buffStruct):36

uRit1u2CBBA=
11-17-2009, 09:22 PM
I've not compiled it yet, but we can try changing the end of the buffStruct structure in everquest.h to be:


/*0032*/ uint32_t changetype; // 1=buff fading,2=buff duration
/*0036*/ uint8_t unknown0036[4];
/*0040*/

I'll be trying it shortly, myself.

EDIT: ok - doesn't quite work . maybe the extra 4 bytes are somewhere else I'll have to play with it to see if I can tell where it should go.

EDIT2: ok - I removed my changes, and I didn't see the message that you're seeing. Though I am seeing strange information in the buff window. So I'm not sure. We'll have to wait until those who knows what they're doing can fix this.

sammie
11-18-2009, 03:00 PM
The stuff I posted was only a hack to get skittles working again. I suspect it wasn't a proper fix at all. Buff info is stored in playerProfile right next to the discipline info. I imagine a small change to, or expansion of the buff structures was what really changed.

I don't have time this week, but an enterprising person might look closely at struct spellBuff, make sure all of the elements line up, make sure it is getting stuffed into playerProfile exactly MAX_BUFFS amount of times, etc.

I would be willing to bet that struct spellBuff was expanded by 4 bytes somewhere, and since MAX_BUFFS is currently 30, it would exactly account for the 120 byte increase in playerProfile. Now if someone with time to examine the logs could find out where that 4 bytes was added to that struct, we'd be in business. Don't forget to roll back MAX_DISCIPLINES to 100 if you tinker with this.

Unfortunately I need to get back to my real job.

ieatacid
11-18-2009, 04:21 PM
--- src/everquest.h (revision 742)
+++ src/everquest.h (working copy)
@@ -425,7 +425,7 @@

/*
** Buffs
-** Length: 24 Octets
+** Length: 28 Octets
** Used in:
** charProfileStruct(07012)
*/
@@ -440,7 +440,8 @@
/*0012*/ int32_t effect; // holds the dmg absorb amount on runes
/*0016*/ uint8_t unknown0016[4]; // *** this might need to be swapped with playerId
/*0020*/ uint32_t playerId; // Global id of caster (for wear off)
-/*0024*/
+/*0024*/ uint8_t unknown0024[4];
+/*0028*/
};


@@ -606,7 +607,8 @@
/*0920*/ uint8_t unknown0920[4]; // *** Placeholder (01/17/2008)
/*0924*/ uint8_t unknown0924[4]; // *** Placeholder (09/03/2008)
/*0928*/ uint8_t unknown0928[4]; // *** Placeholder (10/07/2008)
-/*0932*/
+/*0932*/ uint8_t unknown0932[8]; // *** Placeholder (11/04/2009)
+/*0940*/
};


I'll get a new tarball out soon. Work has been real busy lately and I spent a lot of time working on MQ2 last week for this patch.

uRit1u2CBBA=
11-18-2009, 08:41 PM
Thanks, those changes worked for me.