PDA

View Full Version : Latest Patch



oakley
06-11-2003, 07:43 PM
Anybody get ShowEQ to work correctly with the new patch? It has been seg'in for me since the patch, anway, just curious. So if ya could post what was changed, would help a lot. :)

Zoolander
06-11-2003, 09:06 PM
These structs are working for me on live now. I had a mistake in the one I posted a couple of days ago that made it too big. This is the right size. I found where the aaxp was stored too now that I could check with a char that had some.

You'll have to fix a couple of compile errors due to missing fields in this struct that I couldn't identify. I just replaced the instances in player.cpp with 0 and commented out the lines in logger.cpp



struct spellBuff
{
/*0000*/ int8_t unknown0000; //
/*0001*/ int8_t level; // Level of person who casted buff
/*0002*/ int8_t unknown0002[2]; //
/*0004*/ int32_t spell; // Spell
/*0008*/ int32_t duration; // Duration in ticks
/*0012*/ int32_t unknown0012; //
/*0016*/
};

struct charProfileStruct
{
/*0000*/ uint8_t opCode; // 0x6b
/*0001*/ uint8_t version; // 0x00
/*0002*/ uint8_t unknown0002[4]; //
/*0006*/ char name[64]; // Name of player sizes not right
/*0070*/ char lastName[32]; // Last name of player sizes not right
/*0102*/ uint32_t gender; // Player Gender - 0 Male, 1 Female
/*0106*/ uint32_t race; // Player race
/*0110*/ uint32_t class_; // Player class
/*0114*/ uint32_t unknown0114; //
/*0118*/ uint32_t level; // Level of player (might be one byte)
/*0122*/ uint8_t unknown0122[20]; //
/*0142*/ uint32_t deity; // deity
/*0146*/ uint8_t unknown0146[12]; //
/*0158*/ uint32_t altexp; // aaxp
/*0162*/ uint8_t unknown0162[428]; //
/*0590*/ char servername[64]; // length probably not right
/*0654*/ uint8_t unknown0654[4]; //
/*0658*/ uint32_t exp; // Current Experience
/*0662*/ uint32_t points; // Unspent Practice points
/*0666*/ uint32_t MANA; // MANA
/*0670*/ uint32_t curHp; // current hp
/*0674*/ uint32_t unknown0674; // 0x05
/*0678*/ uint32_t STR; // Strength
/*0682*/ uint32_t STA; // Stamina
/*0686*/ uint32_t CHA; // Charisma
/*0690*/ uint32_t DEX; // Dexterity
/*0694*/ uint32_t INT; // Intelligence
/*0698*/ uint32_t AGI; // Agility
/*0702*/ uint32_t WIS; // Wisdom
/*0706*/ uint8_t unknown0706[48]; //
/*0754*/ uint8_t languages[28]; // List of languages (MAX_KNOWN_LANGS)
/*0782*/ uint8_t unknown0782[4]; // All 0x00
/*0786*/ int32_t sSpellBook[400]; // List of the Spells in spellbook
/*2386*/ uint8_t unknown2386[448]; // all 0xff after last spell
/*2834*/ int32_t sMemSpells[8]; // List of spells memorized
/*2866*/ uint8_t unknown2866[56]; //
/*2922*/ uint32_t platinum; // Platinum Pieces on player
/*2926*/ uint32_t gold; // Gold Pieces on player
/*2930*/ uint32_t silver; // Silver Pieces on player
/*2934*/ uint32_t copper; // Copper Pieces on player
/*2938*/ uint32_t platinumBank; // Platinum Pieces in Bank
/*2942*/ uint32_t goldBank; // Gold Pieces in Bank
/*2946*/ uint32_t silverBank; // Silver Pieces in Bank
/*2950*/ uint32_t copperBank; // Copper Pieces in Bank
/*2954*/ uint8_t unknown2954[16]; // Unknown - all zero
/*2970*/ uint32_t skills[74]; // List of skills (MAX_KNOWN_SKILLS)
/*3266*/ uint8_t unknown3266[412]; //
/*3678*/ uint32_t zoneId; // see zones.h
/*3682*/ spellBuff buffs[15]; // Buffs currently on the player
/*3922*/ uint8_t unknown3922[4]; // Always - 0xaa 0x4a 0x45 0x00
/*3926*/
};

oakley
06-11-2003, 09:17 PM
hmm, what file does that go into? I might find it before I get a reply, but hey, lol.

oakley
06-11-2003, 10:05 PM
ok, I found it. bleh, <slaps self upside the head>

ackkca
06-11-2003, 10:40 PM
Thanks man, the new structs and suggested changes to player.cpp and logger.cpp now have me up and running.

Keep up the great work

oakley
06-11-2003, 11:36 PM
yup its working for me as well, I just commented the lines out on logger.cpp and player.cpp and it runs great.

Archaeopteryx
06-12-2003, 01:17 AM
explain this to me if you would please ... these changes are to player.cpp or loger.cpp ? or both or neither ? what are we commenting out ? instances of what ?

--> just replaced the instances in player.cpp with 0 and commented out the lines in logger.cpp

instances of what ?
and what file do the stuct changes go to ?

Edit:

ok struct changes ---> everquest.h (per searching "struct")

now instances of what are you talking about in player.cpp and logger.cpp?

oakley
06-12-2003, 02:36 AM
ok, when you get errors in compiling logger.cpp and player.cpp, just go to the lines it says it had errors on and comment it out or delete it, and type make again. and move on to the next errors and comment them out and or delete them, your choice. :)

Thom_Merrilin
06-12-2003, 06:08 AM
It's amazing... I was actually able to understand and make the changes needed...


But for those who have slower systems, or don't quite understand it... here ya go.


Don't ask me how to apply the .diff, cause I don't know... I only know how to make em.

[Please, may this attatchment work]

Alfred
06-12-2003, 06:32 AM
1) Save the file to src

2) cd src

3) patch < quickpatch.diff

3) rm *.o
(Just to be on the safe side)

4) cd ..

5) make

6) make install


Currently on step 5 but I'm certain everything will be fine. Great work everyone :)

mudtoe
06-12-2003, 09:52 AM
I was having the seq fault problem yesterday after the 6/11 update. I applied the quickpatch.diff posted here and it corrected the problem. Good job guys!

mudtoe

Ratt
06-12-2003, 10:07 AM
I don't like what this patch is doing...

It's just blowing out some of the settings and making them 0. It's not harmful if you apply the patch, but I don't think I want to include that in CVS at this point, just because it would be a pain to track them down later and fix them.

Rhonwyn
06-12-2003, 11:20 AM
It shouldn't be added to cvs. It's a hack, not a fix. No offence to the guy who coded it, a lot of people just want seq to work, regardless of how it gets fixed.

Considering how fast the patch came out, it shouldn't take too much longer to actually fix this hack into a real patch.

Thom_Merrilin
06-12-2003, 11:28 AM
Agreed...

I just threw it up in the patch section as an alternate way for people to find it. Some people might actually look for patches, afterall.

It was just a quick and dirty way to get people up and running again.
Lets not taint the CVS with it, but if someone can get a note on the main page, or the status section explaining it, it would be great.

Or we can just let it hang until we find out the missing items.

AlphaBeta
06-12-2003, 11:37 AM
Funny thing to me is I was using a CVS from before the patch and it seemed to work fine. I downloaded the CVS post patch and thats when SEQ went to hell with seg faults.

trustno1
06-12-2003, 12:27 PM
The diff patch didn't work on everquest.h, but did on logger.cpp and player.cpp, so I manually changed everquest.h and now it works great. Last night every zone I went to would generate a seg fault. Thanks for this quick and dirty hack!

uRit1u2CBBA=
06-12-2003, 12:40 PM
I was given a message stating that everquest.h didn't work, but when I manually inspected the file, it looked like it did.

I started compiling it (P233, so it takes a while) but had to go to work before it was finished.

When I get home from work, I'll find out if it worked or not -- if not, I'll have to wait for an official CVS patch.

Thom_Merrilin
06-12-2003, 01:03 PM
If you are getting that kind of error, then your everquest.h file is probably earlier than the revision 1.65(last updated 4 days ago in CVS)

The quick and dirty patch should install without errors on the latest CVS.

As for previous versions, it might work... but I don't know enough about this stuff to know either way.

So for those of you reading this... Be sure to get the latest CVS, then apply the patch.

(Disclaimer) If the latest CVS has files newer than this post, then do not apply the patch. It will prolly screw things up.

Zoolander
06-12-2003, 03:21 PM
Sorry for the sketchy instructions. My logger.cpp and player.cpp files aren't the same as what's in CVS so I can't really provide a patch. I don't have any characters that are guilded or with AA points to spend so I can't track down those last 2 fields in the struct. Maybe someone else can and then provide a struct suitable for properly patching against.

cheese_poker
06-12-2003, 04:08 PM
Man, you guys are just too good. Thanks a ton for your continued efforts.

exslam
06-12-2003, 11:27 PM
took me a second to figure it out, but thanks to the info in this post worked great!

Great Job guys ^_^

Alwayslost
06-13-2003, 01:30 AM
did this a few times, fixes the problem for 15-20 min then Seg's out again... Maybe I'm missing something.. getting some sleep, maybe that's it. ;)

jesterbam
06-13-2003, 03:52 AM
Yep same here. I downlaoded a fresh CVS did the patch all with no errors and I last a few mins more in the zone then Seg Fault.

uRit1u2CBBA=
06-13-2003, 06:43 AM
Strange - works fine for me, I was running it for about 4 hours last night.

QuerySEQ
06-13-2003, 10:48 AM
Okay.. reading and reading.. I noticed varying degrees of this seg fault.

I have SEQ running and monitoring 2 EQ games at once. (Just puting SEQ into 2 different workspaces and having it monitor through 2 network cards to 2 different PC's)

Just to explain what I am doing... I have Dual Monitors and can split the work spaces between the two sessions.

The seg fault happens are different times, more in higher traffic zones.

I went to Plane of Storms, and on zoning in.. BOOM.. session "A" went down with a seg fault, but session "B" stayed up. I camped the char that session "A" was monitoring and logged back in. Session "B" stayed up on zoning.. At the EXACT moment session "A" character spawned in game. Session "B" went down with a seg fault, and not more than 10 seconds later, Session "A" went down with a Seg Fault again.

Soo.. I moved over to Tenebrous Mountains with both chars.. and stayed fine and no Seg Faults, for about an hour.. then.. Zoned to Katta.. BOOM! both sessions seg faulted.

The randomness and sometimes "patterned" seg faults got me to thinking. COULD it be possible that mob location/player location structs are varying coming from the game? or possible spawn location? To me it seems more like a change in a variable from time to time.. something non-sequential.

Also.. I use a modified skin.. and my Spell Book "magically" closes or opens on 4 occasions.. when that occurred.. BOOM, Seg fault..

I mainly use SEQ to locate corpses and for mapping.. hardly ever to locate mobs or such because I have been playing soo long I know where the mobs are.

Well.. I hope this helps some.. not sure if any of this is related, just throwing a few observations out that may spark a light somewhere.

Wois
06-13-2003, 03:23 PM
giving "behaviors" of showeq is not really useful. if you want to help put

printf("OPCODE: %d",opCode);

before the switch(opCode) line in packet.cpp and recompile (i know it IS crude :) at least knowing which opcode it crashes on can be a HUGE help (i know about the size check, but i if they just shuffled it and kept the same size you're out of luck)

beware the console spam :P

tristanbfg
06-13-2003, 04:18 PM
printf("OPCODE: %d",opCode);

Don't forget fflush(stdout);

:D

I've done that on more then one occasion....

Anything new on this btw?

QuerySEQ
06-13-2003, 04:39 PM
Okay.. I would LOVE to help.



printf("OPCODE: %d",opCode);
before the switch(opCode) line in packet.cpp and recompile



Okay.. I see where that goes.. but then tristanbfg states:


Don't forget fflush(stdout);

could you tell me where this part goes.. or at least the whole thing I need to put in. That way I can SEE what it is everyone is looking for.

Thank you for the advice..

Wois
06-13-2003, 06:47 PM
fflush(stdout);

that forces stdout to be written, which is a GOOD idea considering it'll be crashing soon after :P thanks, didnt think of this one

so this should go before switch

printf("OPCODE: %d\n",opCode);
fflush(stdout);

(notice the missing \n before)

just saying this as a hint to the "newcomers", they might as well help with the data if they cant fix it :P

Wois
06-13-2003, 07:42 PM
another FYI if anyone wants to take a look, the opcode that seems broken atm is 0x0115
(newCorpseCode/newCorpseStruct). don't have the time to look at it atm so i'm posting it here

ah yeah, don't ask where i come from, just a returning user from a LONG time ago :)

Zoolander
06-13-2003, 08:19 PM
newCorpseCode has been broken a while. It's intermittent enough that I've just been ignoring it. Of course, YMMV.

mucktail
06-14-2003, 09:20 AM
Can anyone who know how to apply the patch post the instructions line by line!

I know that this patch works, I've read about more then 10 times now, but Because I'm a newbie, what folder am i suppose to go to and how do i apply the patch!

please help!

guice
06-14-2003, 11:05 AM
Originally posted by mucktail
Can anyone who know how to apply the patch post the instructions line by line!

I know that this patch works, I've read about more then 10 times now, but Because I'm a newbie, what folder am i suppose to go to and how do i apply the patch!

please help!

Then Mr. Newbie - Please read the thread AGAIN. Cause it's already posted.

(Tip, it's on the first page...)

Alwayslost
06-14-2003, 12:15 PM
I'm stuck, seems that no matter how many times I download everquest.h, player.cpp, logger.cpp, then apply the patch, and then recompile, I STILL seg out within 15 min.

Just to clarify what I'm doing:

I delete the current:
everquest.h
everquest.h.orig
everquest.h.rej
logger.cpp
logger.cpp.orig
logger.cpp.rej
player.cpp
player.cpp.orig
player.cpp.rej

Then I go to CVS web and download:

everquest.h 1.65 (latest and greatest)
logger.cpp 1.25
player.cpp 1.36

(OK... While typing out this post I think I found my problem. I was saving the Web CVS files incorrectly and getting HTML code added in. :rolleyes: Amazing how slowing down and explaining what you are doing allows you to see your own errors )

Saved them correctly this time.

This is now the first time I have applied the patch with no errors, it's compiling now. ;)

For the record, I know that starting off a post saying "I can't make this work" and then halfway through saying "all is good now" is a post that will probably collect some ridicule, but if my realization and disclosure helps just one other person, then I will bear it. :)

Good Luck All!!

user387
06-15-2003, 04:02 AM
/*0654*/ uint8_t unknown0654[4]; //

should be

/*0654*/ uint32_t guildID; //

zagnut
06-15-2003, 12:03 PM
The range of NPCs that will be "blue" to a level 65 character has been increased as far as level 50, with the "light blue" range extending to level 45.
Just want to confirm that this part of the patch message is accurate, at least for my level 65 character. Mobs level 44 and below are green to 65's, 45-49 are light blue, 50-64 are blue.

Zoolander
06-15-2003, 08:19 PM
Originally posted by user387
/*0654*/ uint8_t unknown0654[4]; //

should be

/*0654*/ uint32_t guildID; //

Cool, just need to find unspent aaxp points and the edits to other files can go away.

altexp is not right. I think it's at 3593 but that seems like a weird offset. Gotta get some more exp and see what keeps changing.

jesterbam
06-17-2003, 03:39 AM
Alwaylost, I had the same problem finally delected everything assocated with SEQ.

Grabed a fresh CVS.

compiled it completely


grabed patch

applied it ..anwsered yes to all the rm.o 's


recompiled


Works great now.

user387
06-17-2003, 05:18 AM
Originally posted by Zoolander
Cool, just need to find unspent aaxp points and the edits to other files can go away.

altexp is not right. I think it's at 3593 but that seems like a weird offset. Gotta get some more exp and see what keeps changing.

actually....

guildID is at 146

fester
06-17-2003, 01:20 PM
I think Zoolander was referring to Altexp at 3593.

Zoolander
06-17-2003, 02:14 PM
I think user387 was saying guildID is at 146 and not 654 as previously reported.

I haven't had any luck tracking down the aaxp value. I have a few chars with varying levels of aaxp and I can't find a value in the right range for all of them. It seems either the amount for a point isn't 15 million anymore, the value isn't an int32, or it's not in the charProfile packet. Of course, the 4th option of "I'm an idiot" also is possible. :)

darkangelx
06-17-2003, 05:48 PM
Originally posted by Alfred
1) Save the file to src

2) cd src

3) patch < quickpatch.diff

3) rm *.o
(Just to be on the safe side)

4) cd ..

5) make

6) make install


Currently on step 5 but I'm certain everything will be fine. Great work everyone :)

Thanks for the no brainer here made it much easier.

fester
06-17-2003, 11:08 PM
Originally posted by Zoolander
It seems either the amount for a point isn't 15 million anymore, the value isn't an int32, or it's not in the charProfile packet. Of course, the 4th option of "I'm an idiot" also is possible. :)

I posted some code in another thread to pretty print structs. Grab it and use a diff from before and after gaining aaexp. Also, it ceased to be 15 million SOME time ago (a year?) and is now from 0 to 330. You may be overlooking the spot because you may have ignored the value because it is too small (instead of 0 to 15 million.)

Tucc
06-19-2003, 09:22 PM
Thanks for the patch file, compiling it now.

Zoolander
06-19-2003, 10:46 PM
Originally posted by fester
I posted some code in another thread to pretty print structs. Grab it and use a diff from before and after gaining aaexp. Also, it ceased to be 15 million SOME time ago (a year?) and is now from 0 to 330. You may be overlooking the spot because you may have ignored the value because it is too small (instead of 0 to 15 million.)

Well, the raw exp value is still sent. According to the everquest.h in CVS the aaxp has always been sent in the charInfoStruct as a value from 0 to 15,000,000.

/*10513*/ uint32_t altexp; // alternate exp pool 0 - ~15,000,000
/*10517*/ uint8_t unknown10517[428];
/*10945*/ uint32_t aapoints; // number of unspent ability points

I have some pretty printing/diff code too, and there are some candidates that may be the x/330 value but I was waiting til I dinged again so I could find the unspent points too.

fester
06-20-2003, 03:45 AM
Originally posted by Zoolander
[B]Well, the raw exp value is still sent. According to the everquest.h in CVS the aaxp has always been sent in the charInfoStruct as a value from 0 to 15,000,000.


I don't doubt that, but I do doubt that SoE would reverse themselves on this issue. The altexp member was changed from a range of 0 to 15mill to 0 to 330 (or was it 329?) over a year ago. If the comment isn't changed in CVS, that is because a comment didn't make the program fail to work thus it was never a requirement to change it.

Shakar
06-20-2003, 07:28 AM
Is anybody else still getting Seg Faults? Me and a friend have been getting constant segfaults on our casters while zoning meanwhile my melee hasn't had any problems at all... backtraces look like its some kind of error in the QT map painting process.. perhaps some of the spawn data coming in is bad? But youd think if that was the case that Melee's would have the same problems... *shrug*.

icyman
06-20-2003, 07:59 AM
According to the output in my console, I am seeing (paraphrased):

sizeof(beginCastStruct)==14 != sizeof(packet from EQ of opcode 0x0017)==10

Looks like we've got 4 extra bytes in the beginCastStruct now.



/*
** Spell Action Struct
** Length: 10 Octets
** OpCode: BeginCastCode
*/
struct beginCastStruct
{
/*0000*/ uint8_t opCode; // 0x82
/*0001*/ uint8_t version; // 0x21
/*0002*/ uint32_t spawnId; // Id of who is casting
/*0004*/ uint32_t spellId; // Id of spell
/*0006*/ int16_t param1; // Paramater 1
/*0008*/ int16_t param2; // Paramater 2
};


I haven't had time to look at this yet, RL work tieing me up pretty badly. If anyone happens to 'fix' this, I'd be all ears, though. :)


][cyman

uRit1u2CBBA=
06-20-2003, 08:19 AM
The 2 fields that are marked as 4-byte fields (uint32_t) should be 2-byte fields (uint16_t).

(search is your friend)