PDA

View Full Version : EQ Patch 6-10-09



uRit1u2CBBA=
06-10-2009, 12:45 PM
Looks like this patch increased the size of PlayerStruct again, and perhaps moved opcodes around, too.

I've still not been able to get a proxy working well to trace the URL of the patcher server . if someone's got the base URL, I'll see if I can update my icons script so I can build an updated icons archive to go with the up-to-70 icon files.

thanks

sammie
06-10-2009, 05:16 PM
The following works on Test server. It may or may not work on Live. I haven't tested it on production code.

src/everquest.h:
playerProfileStruct


/*04181*/ uint8_t unknown04181[175];
/*04356*/ int32_t sSpellBook[720]; // List of the Spells in spellbook
/*07236*/ uint8_t unknown5956[8]; // all 0xff after last spell
/*07244*/ int32_t sMemSpells[MAX_SPELL_SLOTS]; // List of spells memorized
/*07284*/ uint8_t unknown06444[28];
/*07312*/ uint32_t platinum; // Platinum Pieces on player
/*07316*/ uint32_t gold; // Gold Pieces on player
/*07320*/ uint32_t silver; // Silver Pieces on player
/*07324*/ uint32_t copper; // Copper Pieces on player
/*07328*/ uint32_t platinum_cursor; // Platinum Pieces on cursor
/*07332*/ uint32_t gold_cursor; // Gold Pieces on cursor
/*07336*/ uint32_t silver_cursor; // Silver Pieces on cursor
/*07340*/ uint32_t copper_cursor; // Copper Pieces on cursor
/*07344*/ uint32_t skills[MAX_KNOWN_SKILLS]; // List of skills
/*07644*/ uint8_t unknown06804[236];
/*07880*/ uint32_t toxicity; // Potion Toxicity (15=too toxic, each potion adds 3)
/*07884*/ uint32_t thirst; // Drink (ticks till next drink)
/*07888*/ uint32_t hunger; // Food (ticks till next eat)
/*07892*/ spellBuff buffs[MAX_BUFFS]; // Buffs currently on the player
/*08492*/ uint32_t disciplines[MAX_DISCIPLINES]; // Known disciplines
/*08892*/ uint8_t unknown08052[680];
/*09572*/ uint32_t recastTimers[MAX_RECAST_TYPES]; // Timers (GMT of last use)
/*09652*/ uint32_t endurance; // Current endurance
/*09656*/ uint32_t aa_spent; // Number of spent AA points
/*09660*/ uint32_t aa_unspent; // Unspent AA points
/*09664*/ uint8_t unknown08304[4];
/*09668*/ BandolierStruct bandoliers[MAX_BANDOLIERS]; // bandolier contents
/*16068*/ InlineItem potionBelt[MAX_POTIONS_IN_BELT]; // potion belt
/*16428*/ uint8_t unknown15068[92];
/*16520*/
opcodes:


<opcode id="4036" name="OP_DeleteSpawn" updated="05/14/09">
<comment>old DeleteSpawnCode</comment>
<payload dir="both" typename="deleteSpawnStruct" sizechecktype="match"/>
</opcode>


<opcode id="2018" name="OP_ZoneEntry" updated="05/14/09">
<comment>old ZoneEntryCode</comment>
<payload dir="client" typename="ClientZoneEntryStruct" sizechecktype="match"/>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>


<opcode id="66C5" name="OP_Consider" updated="01/17/08">
<comment>old ConsiderCode</comment>
<payload dir="both" typename="considerStruct" sizechecktype="match"/>
</opcode>


<opcode id="6D5D" name="OP_RandomReply" updated="01/17/08">
<comment>old RandomCode</comment>
<payload dir="server" typename="randomStruct" sizechecktype="match"/>
</opcode>

sammie
06-10-2009, 05:20 PM
You'll have to forgive me for not updating the comments, I just wanted to get the fixes that are working for me out to give others something to go on to get operational again.

BlueAdept
06-10-2009, 06:51 PM
NP. I probably wont have time to test this for a couple days. Hope someone else can verify that it does correct the problems from the patch. Thanks for helping.

rogues
06-10-2009, 08:06 PM
Unless I'm doing something wrong, it's not working for me on live. I get:

"Warning: OP_PlayerProfile (0x6022) (dataLen:24848) doesn't match: sizeof(charProfileStruct):24856"

ieatacid
06-10-2009, 10:16 PM
A bunch of opcodes changed. I'll go through the whole list again when I get a chance.

tarwyn
06-11-2009, 01:08 AM
Don't know if this helps at all, but SOE has added 5 buff slots for: player buffs, player short duration buffs and pet buffs. This could account for the increase in the player struct somewhat I suppose.
-T

sammie
06-11-2009, 05:10 AM
Seems there is still a 1 octet difference in the structure size between live and test. Bummer.

It looks to me like MAX_SPELL_SLOTS went from 10 to 12, the spell book went from 400 slots to 720 slots (50 pages to 90 pages), MAX_BUFFS from 25 to 30, and 400 octets was added around the disciplines or recastTimers area. I can only guess that either a lot of space has been added to recast types, MAX_DISCIPLINES has been doubled in size, or room for another feature roughly the size of disciplines has been added for the next expansion.

I just padded all the unknowns until things I could easily verify like platinum and AA fell into the proper places so I could get running again. I'm not going to put much more effort into it since this patch is getting patched soon to fix all the major bugs it introduced.

tarwyn
06-11-2009, 10:34 AM
I've seemingly got it to run on live for now.

I've applied sammie's changes from his previous posted, and commented out the 8 unknown bytes that were still there:



/*04181*/ uint8_t unknown04181[175];
/*04356*/ int32_t sSpellBook[720]; // List of the Spells in spellbook
/*07236*/ //uint8_t unknown5956[8]; // all 0xff after last spell
/*07244*/ int32_t sMemSpells[MAX_SPELL_SLOTS]; // List of spells memorized
/*07284*/ uint8_t unknown06444[28];
This appears to get me all the vital data right (money is right).

I then had to remap Opcode 783C (FormattedMessage) because it was crashing ShowEQ with a 12 byte long eq-packet. Not knowing anything better, I've commented out "FormattedMessage" and mapped 783C to "SimpleMessage", which seems to work:



<!--
<opcode id="783C" name="OP_FormattedMessage" updated="05/14/09">
<comment>old FormattedMessageCode</comment>
<payload dir="server" typename="formattedMessageStruct" sizechecktype="
</opcode>
-->


<opcode id="783C" name="OP_SimpleMessage" updated="05/14/09">
<comment>old SimpleMessageCode</comment>
<payload dir="server" typename="simpleMessageStruct" sizechecktype="mat
</opcode>
That's obviously not the way to do it proper, but at least it let's me run ShowEQ in a reasonably stable manner, until those who know how to figure out opcodes can provide the new ones.

-T

ieatacid
06-11-2009, 04:28 PM
These are correct.



<opcode id="0507" name="OP_FormattedMessage" updated="06/10/09">
<comment>old FormattedMessageCode</comment>
<payload dir="server" typename="formattedMessageStruct" sizechecktype="none"/>
</opcode>

<opcode id="783C" name="OP_SimpleMessage" updated="06/10/09">
<comment>old SimpleMessageCode</comment>
<payload dir="server" typename="simpleMessageStruct" sizechecktype="match"/>
</opcode>

tarwyn
06-11-2009, 11:44 PM
You're the best! :D

-T

pita
06-12-2009, 06:05 AM
Its probably broken now, by the new patch. But mobs weren't showing as corpses after dead.

Also, I agree, you guys are the best.

sammie
06-12-2009, 05:25 PM
Here are some more opcodes, working on Test server. Should work on Live as of 6/12/09.

Still outstanding are:
OP_Stamina
OP_DzSwitchInfo

and any others i haven't come across while playing yet.



<opcode id="03D1" name="OP_NpcMoveUpdate" updated="06/10/09">
<comment>Position updates</comment>
<payload dir="server" typename="uint8_t" sizechecktype="none"/>
</opcode>

<opcode id="4A83" name="OP_MoneyOnCorpse" updated="06/10/09">
<comment>old MoneyOnCorpseCode</comment>
<payload dir="server" typename="moneyOnCorpseStruct" sizechecktype="match"/>
</opcode>

<opcode id="4348" name="OP_CorpseLocResponse" updated="06/10/09">
<comment>old CorpseLocCode:</comment>
<payload dir="server" typename="corpseLocStruct" sizechecktype="match"/>
</opcode>

<opcode id="6145" name="OP_InspectAnswer" updated="06/10/09">
<comment>old InspectDataCode</comment>
<payload dir="both" typename="inspectDataStruct" sizechecktype="match"/>
</opcode>

<opcode id="5C85" name="OP_GroundSpawn" updated="06/10/09">
<comment>old MakeDropCode</comment>
<payload dir="server" typename="makeDropStruct" sizechecktype="match"/>
<payload dir="client" typename="uint8_t" sizechecktype="none"/>
</opcode>

<opcode id="58C5" name="OP_RemoveSpawn" updated="06/10/09">
<comment>Remove spawn from zone</comment>
<payload dir="both" typename="removeSpawnStruct" sizechecktype="none"/>
</opcode>

<opcode id="3969" name="OP_WearChange" updated="06/10/09">
<comment>old SpawnUpdateCode</comment>
<payload dir="both" typename="SpawnUpdateStruct" sizechecktype="match"/>
</opcode>

<opcode id="33E5" name="OP_ClickObject" updated="06/10/09">
<comment>old RemDropCode</comment>
<payload dir="both" typename="remDropStruct" sizechecktype="match"/>
</opcode>

<opcode id="0F14" name="OP_Action" updated="06/10/09">
<comment></comment>
<payload dir="both" typename="actionStruct" sizechecktype="match"/>
<payload dir="both" typename="actionAltStruct" sizechecktype="match"/>
</opcode>

<opcode id="66C5" name="OP_Consider" updated="06/10/09">
<comment>old ConsiderCode</comment>
<payload dir="both" typename="considerStruct" sizechecktype="match"/>
</opcode>

<opcode id="231F" name="OP_Illusion" updated="06/10/09">
<comment>Spawn being illusioned (changing forms)</comment>
<payload dir="both" typename="spawnIllusionStruct" sizechecktype="match"/>
</opcode>

ieatacid
06-12-2009, 10:14 PM
zoneopcodes.xml (http://www.ieatacid.com/zoneopcodes.xml)

ieatacid
06-12-2009, 10:57 PM
/**
* Player Profile. Common part of charProfileStruct shared between
* shrouding and zoning profiles.
*
* NOTE: Offsets are kept in here relative to OP_PlayerProfile to ease in
* diagnosing changes in that struct.
*/
struct playerProfileStruct
{
/*00004*/ uint32_t gender; // Player Gender - 0 Male, 1 Female
/*00008*/ uint32_t race; // Player race
/*00012*/ uint32_t class_; // Player class
/*00016*/ uint8_t unknown00016[40]; // ***Placeholder
/*00056*/ uint8_t level; // Level of player
/*00057*/ uint8_t level1; // Level of player (again?)
/*00058*/ uint8_t unknown00058[2]; // ***Placeholder
/*00060*/ BindStruct binds[5]; // Bind points (primary is first)
/*00160*/ uint32_t deity; // deity
/*00164*/ uint32_t intoxication; // Alcohol level (in ticks till sober?)
/*00168*/ uint32_t spellSlotRefresh[MAX_SPELL_SLOTS]; // Refresh time (millis)
/*00208*/ uint8_t unknown0208[4];
/*00212*/ uint8_t haircolor; // Player hair color
/*00213*/ uint8_t beardcolor; // Player beard color
/*00214*/ uint8_t unknown00214[6];
/*00220*/ uint8_t eyecolor1; // Player left eye color
/*00221*/ uint8_t eyecolor2; // Player right eye color
/*00222*/ uint8_t hairstyle; // Player hair style
/*00223*/ uint8_t beard; // Player beard type
/*00224*/ uint8_t unknown00224[12];
/*00236*/ uint32_t item_material[9]; // Item texture/material of worn items
/*00272*/ uint8_t unknown00272[232];
/*00504*/ Color_Struct item_tint[9]; // RR GG BB 00
/*00540*/ AA_Array aa_array[MAX_AA]; // AAs
/*04140*/ uint32_t points; // Unspent Practice points
/*04144*/ uint32_t MANA; // Current MANA
/*04148*/ uint32_t curHp; // Current HP without +HP equipment
/*04152*/ uint32_t STR; // Strength
/*04156*/ uint32_t STA; // Stamina
/*04160*/ uint32_t CHA; // Charisma
/*04164*/ uint32_t DEX; // Dexterity
/*04168*/ uint32_t INT; // Intelligence
/*04172*/ uint32_t AGI; // Agility
/*04176*/ uint32_t WIS; // Wisdom
/*04180*/ uint8_t face; // Player face
/*04181*/ uint8_t unknown04181[175];
/*04356*/ int32_t sSpellBook[720]; // List of the Spells in spellbook
/*07236*/ int32_t sMemSpells[MAX_SPELL_SLOTS]; // List of spells memorized
/*07276*/ uint8_t unknown07276[28];
/*07304*/ uint32_t platinum; // Platinum Pieces on player
/*07308*/ uint32_t gold; // Gold Pieces on player
/*07312*/ uint32_t silver; // Silver Pieces on player
/*07316*/ uint32_t copper; // Copper Pieces on player
/*07320*/ uint32_t platinum_cursor; // Platinum Pieces on cursor
/*07324*/ uint32_t gold_cursor; // Gold Pieces on cursor
/*07328*/ uint32_t silver_cursor; // Silver Pieces on cursor
/*07332*/ uint32_t copper_cursor; // Copper Pieces on cursor
/*07336*/ uint32_t skills[MAX_KNOWN_SKILLS]; // List of skills
/*07736*/ uint32_t innateSkills[25];
/*07836*/ uint8_t unknown07836[36];
/*07872*/ uint32_t toxicity; // Potion Toxicity (15=too toxic, each potion adds 3)
/*07876*/ uint32_t thirst; // Drink (ticks till next drink)
/*07880*/ uint32_t hunger; // Food (ticks till next eat)
/*07884*/ spellBuff buffs[MAX_BUFFS]; // Buffs currently on the player
/*08604*/ uint32_t disciplines[MAX_DISCIPLINES]; // Known disciplines
/*09004*/ uint8_t unknown09004[560];
/*09564*/ uint32_t recastTimers[MAX_RECAST_TYPES]; // Timers (GMT of last use)
/*09644*/ uint32_t endurance; // Current endurance
/*09648*/ uint32_t aa_spent; // Number of spent AA points
/*09652*/ uint32_t aa_unspent; // Unspent AA points
/*09656*/ uint8_t unknown09656[4];
/*09660*/ BandolierStruct bandoliers[MAX_BANDOLIERS]; // bandolier contents
/*16060*/ InlineItem potionBelt[MAX_POTIONS_IN_BELT]; // potion belt
/*16420*/ uint8_t unknown16420[92];
/*16512*/
};

/*
** Player Profile
** Length: 24848 Octets
** OpCode: CharProfileCode
*/
struct charProfileStruct
{
/*00000*/ uint32_t checksum; //
/*00004*/ playerProfileStruct profile; // Profile
/*16512*/ char name[64]; // Name of player
/*16576*/ char lastName[32]; // Last name of player
/*16608*/ uint8_t unknown16608[12]; //***Placeholder (1/18/2006)
/*16620*/ int32_t guildID; // guildID
/*16624*/ uint32_t birthdayTime; // character birthday
/*16628*/ uint32_t lastSaveTime; // character last save time
/*16632*/ uint32_t timePlayedMin; // time character played
/*16636*/ uint8_t unknown16636[4];
/*16640*/ uint8_t pvp; // 1=pvp, 0=not pvp
/*16641*/ uint8_t anon; // 2=roleplay, 1=anon, 0=not anon
/*16642*/ uint8_t gm; // 0=no, 1=yes (guessing!)
/*16643*/ int8_t guildstatus; // 0=member, 1=officer, 2=guildleader
/*16644*/ uint8_t unknown16644[8];
/*16652*/ uint32_t exp; // Current Experience
/*16656*/ uint8_t unknown16656[12];
/*16668*/ uint8_t languages[MAX_KNOWN_LANGS]; // List of languages
/*16693*/ uint8_t unknown16693[7]; // All 0x00 (language buffer?)
/*16700*/ float y; // Players y position
/*16704*/ float x; // Players x position
/*16708*/ float z; // Players z position
/*16712*/ float heading; // Players heading
/*16716*/ uint32_t standState; // 0x64 = stand
/*16720*/ uint32_t platinum_bank; // Platinum Pieces in Bank
/*16724*/ uint32_t gold_bank; // Gold Pieces in Bank
/*16728*/ uint32_t silver_bank; // Silver Pieces in Bank
/*16732*/ uint32_t copper_bank; // Copper Pieces in Bank
/*16736*/ uint32_t platinum_shared; // Shared platinum pieces
/*16740*/ uint8_t unknown16740[1036];
/*17776*/ uint32_t expansions; // Bitmask for expansions
/*17780*/ uint8_t unknown17780[12];
/*17792*/ uint32_t autosplit; // 0 = off, 1 = on
/*17796*/ uint8_t unknown17796[16];
/*17812*/ uint16_t zoneId; // see zones.h
/*17814*/ uint16_t zoneInstance; // Instance id
/*17816*/ uint8_t unknown17816[800];
/*18616*/ uint32_t leadAAActive; // 0 = leader AA off, 1 = leader AA on
/*18620*/ uint8_t unknown18620[4];
/*18624*/ uint32_t ldon_guk_points; // Earned GUK points
/*18628*/ uint32_t ldon_mir_points; // Earned MIR points
/*18632*/ uint32_t ldon_mmc_points; // Earned MMC points
/*18636*/ uint32_t ldon_ruj_points; // Earned RUJ points
/*18640*/ uint32_t ldon_tak_points; // Earned TAK points
/*18644*/ uint32_t ldon_avail_points; // Available LDON points
/*18648*/ uint8_t unknown18648[136];
/*18784*/ uint32_t tributeTime; // Time remaining on tribute (millisecs)
/*18788*/ uint32_t careerTribute; // Total favor points for this char
/*18792*/ uint32_t unknown18792; // *** Placeholder
/*18796*/ uint32_t currentTribute; // Current tribute points
/*18800*/ uint32_t unknown18800; // *** Placeholder
/*18804*/ uint32_t tributeActive; // 0 = off, 1=on
/*18808*/ TributeStruct tributes[MAX_TRIBUTES]; // Current tribute loadout
/*18848*/ uint8_t unknown18848[4];
/*18852*/ float expGroupLeadAA; // Current group lead exp points
/*18856*/ uint32_t unknown18856;
/*18860*/ float expRaidLeadAA; // Current raid lead AA exp points
/*18864*/ uint32_t unknown18864;
/*18868*/ uint32_t groupLeadAAUnspent; // Unspent group lead AA points
/*18872*/ uint32_t raidLeadAAUnspent; // Unspent raid lead AA points
/*18876*/ uint32_t leadershipAAs[MAX_LEAD_AA]; // Leader AA ranks
/*19004*/ uint8_t unknown19004[128];
/*19132*/ uint32_t airRemaining; // Air supply (seconds)
/*19136*/ uint8_t unknown19136[4608];
/*23744*/ uint32_t expAA; // Exp earned in current AA point
/*23748*/ uint8_t unknown23748[40];
/*23788*/ uint32_t currentRadCrystals; // Current count of radiant crystals
/*23792*/ uint32_t careerRadCrystals; // Total count of radiant crystals ever
/*23796*/ uint32_t currentEbonCrystals;// Current count of ebon crystals
/*23800*/ uint32_t careerEbonCrystals; // Total count of ebon crystals ever
/*23804*/ uint8_t groupAutoconsent; // 0=off, 1=on
/*23805*/ uint8_t raidAutoconsent; // 0=off, 1=on
/*23806*/ uint8_t guildAutoconsent; // 0=off, 1=on
/*23807*/ uint8_t unknown23807[5]; // ***Placeholder (6/29/2005)
/*23812*/ uint32_t showhelm; // 0=no, 1=yes
/*23816*/ uint8_t unknown23816[1032]; // ***Placeholder (2/13/2007)
/*24848*/
};

rogues
06-13-2009, 12:58 PM
Not sure what I'm doing wrong with that, ieat. Saved your zoneopcodes.xml (to /usr/local/share/showeq/) and replaced the playerProfileStruct and charProfileStruct in everquest.h and it's crashed on zoning - "Warning: OP_PlayerProfile (0x6022) (dataLen: 24848) doesn't match: sizeof(charProfileStruct):23900

It's likely that I'm doing something wrong but I figured I'd post in case I wasn't.

I had been running fairly fine using the modifications posted prior, going to back out to those for now.

Thanks everybody for all their work!!!

purple
06-13-2009, 04:04 PM
Did you make install after updating everquest.h?

make install will clobber zoneopcodes.xml unless you put it in your source tree too or copy it again after you make install.

fransick
06-13-2009, 05:14 PM
Did you make install after updating everquest.h?

make install will clobber zoneopcodes.xml unless you put it in your source tree too or copy it again after you make install.

I get the same message and seg fault as Rogues after ensuring I wasn't clobbering zoneopcodes.xml

twizzlerz
06-13-2009, 05:16 PM
I just hit the bump so did make/make install and then copied zoneopcodes.xml back into the directory. splat.

This is frustrating. I made all the changes manually until it compiled finally. splat. Then Sir Acid made it easier so I c/p his changes in case I fucked up. splat.

Redid it all and took Purple's instruction. splat.

Guess I'll hang tight for pros.

I got better at search though!

EDIT: Let me clarify my last splat. It compiled w/o errors, I see my wedge but no skittles or anything. I had to manually load the map and it can be used. So I'm kind of there. Just need some skittles. =)

rogues
06-13-2009, 05:35 PM
Did you make install after updating everquest.h?

make install will clobber zoneopcodes.xml unless you put it in your source tree too or copy it again after you make install.

Yup, I did a make install and then re-copied in ieatacid's zoneopcodes.xml and verified that it matched.

I backed out the everquest.h changes that ieatacid posted (re-downloaded 5.13.4.1) and went back to the initial changes that sammie initially posted, with the commented out portion that tarwyn posted. Did a new make && make install, and re-copied ieatacid's zoneopcodes.xml and it works. So the zoneopcodes.xml seems ok, but there's something not quite right with the everquest.h posted (at least that's how I read it).

twizzlerz
06-13-2009, 07:20 PM
I followed Rogue's method. I redownloaded 5.13.4.1 and made Sammie's everquest.h/playerProfileStruct changes (not the opcode ones)

make && make install

... replaced original zoneopcodes.xml (http://www.ieatacid.com/zoneopcodes.xml) with ieatacid's zoneopcodes.xml (http://www.ieatacid.com/zoneopcodes.xml)

ran it.

I have skittles, map and everything. I haven't started killing yet but it all seems to work doing just this. I'll report back as I'm ready to play.

EDIT: All is good. As always, thanks guys. (or gals I guess!)

Sp0nge
06-14-2009, 04:10 AM
Yup, I did a make install and then re-copied in ieatacid's zoneopcodes.xml and verified that it matched.

I backed out the everquest.h changes that ieatacid posted (re-downloaded 5.13.4.1) and went back to the initial changes that sammie initially posted, with the commented out portion that tarwyn posted. Did a new make && make install, and re-copied ieatacid's zoneopcodes.xml and it works. So the zoneopcodes.xml seems ok, but there's something not quite right with the everquest.h posted (at least that's how I read it).


Sweet, thanks to everyone, that sorted me too!

tarwyn
06-14-2009, 07:33 AM
Seems like Acid is working on some other parts of the code. I managed to get a functional amalgamate of sammie's + Acids changes as follows:

everquest.h:


//Maximum limits of certain types of data
#define MAX_KNOWN_SKILLS 75
#define MAX_SPELL_SLOTS 10
#define MAX_KNOWN_LANGS 25
#define MAX_SPELLBOOK_SLOTS 720
#define MAX_GROUP_MEMBERS 6
#define MAX_BUFFS 30
#define MAX_GUILDS 1500
#define MAX_AA 359
#define MAX_BANDOLIERS 20
#define MAX_POTIONS_IN_BELT 5
#define MAX_TRIBUTES 5
#define MAX_DISCIPLINES 100
everquest.h:


struct playerProfileStruct
{
/*00004*/ uint32_t gender; // Player Gender - 0 Male, 1 Female
/*00008*/ uint32_t race; // Player race
/*00012*/ uint32_t class_; // Player class
/*00016*/ uint8_t unknown00016[40]; // ***Placeholder
/*00056*/ uint8_t level; // Level of player
/*00057*/ uint8_t level1; // Level of player (again?)
/*00058*/ uint8_t unknown00058[2]; // ***Placeholder
/*00060*/ BindStruct binds[5]; // Bind points (primary is first)
/*00160*/ uint32_t deity; // deity
/*00164*/ uint32_t intoxication; // Alcohol level (in ticks till sober?)
/*00168*/ uint32_t spellSlotRefresh[MAX_SPELL_SLOTS]; // Refresh time (millis)
/*00208*/ uint8_t unknown0208[4];
/*00212*/ uint8_t haircolor; // Player hair color
/*00213*/ uint8_t beardcolor; // Player beard color
/*00214*/ uint8_t unknown00214[6];
/*00220*/ uint8_t eyecolor1; // Player left eye color
/*00221*/ uint8_t eyecolor2; // Player right eye color
/*00222*/ uint8_t hairstyle; // Player hair style
/*00223*/ uint8_t beard; // Player beard type
/*00224*/ uint8_t unknown00218[12];
/*00236*/ uint32_t item_material[9]; // Item texture/material of worn items
/*00272*/ uint8_t unknown00272[232];
/*00504*/ Color_Struct item_tint[9]; // RR GG BB 00
/*00540*/ AA_Array aa_array[MAX_AA]; // AAs
/*03412*/ uint8_t unknown03400[728]; // ***** this may be wrong or aa_array might be wrong (10/21/07)
/*04140*/ uint32_t points; // Unspent Practice points
/*04144*/ uint32_t MANA; // Current MANA
/*04148*/ uint32_t curHp; // Current HP without +HP equipment
/*04152*/ uint32_t STR; // Strength
/*04156*/ uint32_t STA; // Stamina
/*04160*/ uint32_t CHA; // Charisma
/*04164*/ uint32_t DEX; // Dexterity
/*04168*/ uint32_t INT; // Intelligence
/*04172*/ uint32_t AGI; // Agility
/*04176*/ uint32_t WIS; // Wisdom
/*04180*/ uint8_t face; // Player face
/*04181*/ uint8_t unknown04181[175];
/*04356*/ int32_t sSpellBook[MAX_SPELLBOOK_SLOTS]; // List of the Spells in spellbook
/*06404*/ int32_t sMemSpells[MAX_SPELL_SLOTS]; // List of spells memorized
/*06444*/ uint8_t unknown06444[28];
/*06472*/ uint32_t platinum; // Platinum Pieces on player
/*06476*/ uint32_t gold; // Gold Pieces on player
/*06480*/ uint32_t silver; // Silver Pieces on player
/*06484*/ uint32_t copper; // Copper Pieces on player
/*06488*/ uint32_t platinum_cursor; // Platinum Pieces on cursor
/*06492*/ uint32_t gold_cursor; // Gold Pieces on cursor
/*06496*/ uint32_t silver_cursor; // Silver Pieces on cursor
/*06500*/ uint32_t copper_cursor; // Copper Pieces on cursor
/*06504*/ uint32_t skills[MAX_KNOWN_SKILLS]; // List of skills
/* */ uint32_t innateSkills[25];
/*06804*/ uint8_t unknown06804[136];
/*07040*/ uint32_t toxicity; // Potion Toxicity (15=too toxic, each potion adds 3)
/*07044*/ uint32_t thirst; // Drink (ticks till next drink)
/*07048*/ uint32_t hunger; // Food (ticks till next eat)
/*07052*/ spellBuff buffs[MAX_BUFFS]; // Buffs currently on the player
/*07652*/ uint32_t disciplines[MAX_DISCIPLINES]; // Known disciplines
/*08052*/ uint8_t unknown08052[560];
/*08212*/ uint32_t recastTimers[MAX_RECAST_TYPES]; // Timers (GMT of last use)
/*08292*/ uint32_t endurance; // Current endurance
/*08296*/ uint32_t aa_spent; // Number of spent AA points
/*08300*/ uint32_t aa_unspent; // Unspent AA points
/*08304*/ uint8_t unknown08304[4];
/*08308*/ BandolierStruct bandoliers[MAX_BANDOLIERS]; // bandolier contents
/*14708*/ InlineItem potionBelt[MAX_POTIONS_IN_BELT]; // potion belt
/*15068*/ uint8_t unknown15068[92];
/*15160*/
};
Note: I didn't renumber the structure, since it's a WIP.

Works great with the posted opcodes.

-T

ieatacid
06-14-2009, 01:41 PM
The playerProfile and charProfile structs I posted are correct (verified in eqgame.exe). I just forgot to post the macro changes that affect them.


#define MAX_KNOWN_SKILLS 100
#define MAX_SPELL_SLOTS 10
#define MAX_KNOWN_LANGS 25
#define MAX_SPELLBOOK_SLOTS 400
#define MAX_GROUP_MEMBERS 6
#define MAX_BUFFS 30
#define MAX_GUILDS 1500
#define MAX_AA 300
#define MAX_BANDOLIERS 20
#define MAX_POTIONS_IN_BELT 5
#define MAX_TRIBUTES 5
#define MAX_DISCIPLINES 100

ieatacid
06-14-2009, 03:26 PM
Also, rather than rewriting the struct to try and figure this out, one could just take, for example, this


/*07336*/ uint32_t skills[MAX_KNOWN_SKILLS]; // List of skills
/*07736*/ uint32_t innateSkills[25];


And to find the new value for MAX_KNOWN_SKILLS:
07736 - 07336 = 400
400 / 4 = 100

ieatacid
06-14-2009, 03:41 PM
Not critical, but I forgot this one


<opcode id="7705" name="OP_Logout" updated="06/12/09">
<comment></comment>
<payload dir="server" typename="none" sizechecktype="match"/>
</opcode>

tano
06-14-2009, 03:50 PM
I think I cut'n'paste your everquest.h struct changes + MAX_KNOWN_SKILLS etc. exactly and copied in the zoneopcodes.h posted (copy in /usr/local/share/showeq is showing the correct date) and I'm still getting:

Zone: EntryCode: Client
Warning: OP_PlayerProfile (0x6022) (dataLen: 24848) doesn't match: sizeof(charProfileStruct):23648
Segmentation fault

when I zone. Any hints as to where I might have gone wrong?

ieatacid
06-14-2009, 04:01 PM
See post #24.

tano
06-14-2009, 04:07 PM
I changed the section at the top of everquest.h which starts //Maximum limits of certain types of data to match post #24 - is that the wrong place to make the changes?

ieatacid
06-14-2009, 04:09 PM
Did you "make && make install" again after doing so?


Also, here's a diff of everquest.h (http://www.ieatacid.com/20090612.diff).

ieatacid
06-14-2009, 04:24 PM
Looks like this patch increased the size of PlayerStruct again, and perhaps moved opcodes around, too.

I've still not been able to get a proxy working well to trace the URL of the patcher server . if someone's got the base URL, I'll see if I can update my icons script so I can build an updated icons archive to go with the up-to-70 icon files.

thanks


GET /patch/everquest/en/patch1/main/uifiles/default/dragitem69.tga.gz HTTP/1.1
User-Agent: SOEPatcher/curl
Host: patch.everquest.com:7000

tano
06-14-2009, 05:01 PM
God knows what I was doing.

I deleted my showeq-5.13.4.1 directory, re-extracted, downloaded your diff to my new showeq-5.13.4.1 directory, ran patch -p0 < 20090612.diff, downloaded your zoneopcodes.xml to the conf directory under showeq-5.13.4.1 directory, then ran the usual configure and make etc. and bob's your uncle!

Thanks Acid and hope this helps someone else.

ieatacid
06-15-2009, 02:03 PM
So do these changes fix everything? It seems fine to me, but feedback from some who play regularly would be great :)

rogues
06-15-2009, 03:27 PM
I'll try to put these in place tonight and see how they work on our raid.

Thanks for all your work on this!

ieatacid
06-15-2009, 04:51 PM
Just so there's no more confusion, all the changes are here:

zoneopcodes.xml (http://www.ieatacid.com/zoneopcodes.xml)

diff for everquest.h (http://www.ieatacid.com/20090612.diff)

rogues
06-16-2009, 05:32 AM
Everything looks great, I redownloaded, applied the patch, did a new make && make install and copied in your zoneopcodes.xml and it's working like a charm.

Thanks!

rogues
06-16-2009, 03:49 PM
Patch tomorrow, btw, so probably not worth packaging all this up at this point until we see the impact.

twizzlerz
06-17-2009, 01:25 PM
I'm still up and running as of this morning. Shamefully I'm at a camp where I don't really use it. But it is indeed still working with these fixes.

Hidron
06-17-2009, 01:46 PM
Likely due to the fact the patch was postponed until tomorrow.
http://eqplayers.station.sony.com/news_article.vm?id=51518
http://forums.station.sony.com/eq/posts/list.m?topic_id=152202


The Game Update scheduled for Wednesday, June 17, 2009 has been postponed. We will most likely reschedule this update for Thursday, June 18, 2009 instead. We'll update this status on Wednesday. We apologize for any inconvenience.

sammie
06-17-2009, 05:32 PM
The patch on test that had changes to vivox voice chat on the 15th and 16th didn't break it for me, but I am now getting debug warning messages about SpawnShell::fillSpawnStruct getting improper data lengths passed to it. And it does seem that some mob updates aren't 100% kosher.

Haven't really had the time to sit down and look at what changed.

uRit1u2CBBA=
06-17-2009, 10:24 PM
I hope the fix they do to the chat system prevents my game from crashing all the time. I get "eqgame.exe has crashed" messages, but as long as I don't click OK, the game still runs, I just can't use voice chat.

Sp0nge
06-18-2009, 12:34 PM
Well I think something has b0rked it :


Info: Loaded 0 message strings from '/usr/local/share/showeq/eqstr_us.txt' maxFormat=0
Debug: PCAP Filter Set: (udp[0:2] = 9000 or udp[2:2] = 9000 or udp[0:2] = 9876 or udp[0:2] = 1137 or udp[2:2] = 1137) and host 10.100.20.99 and ether proto 0x0800
Info: EQPacket: SessionRequest detected, pcap filter: EQ Client 10.100.20.99, Client port 1137. Server port 1381
Zone: EntryCode: Client
Warning: OP_PlayerProfile (0x6022) (dataLen: 24856) doesn't match: sizeof(charProfileStruct):24848
Segmentation fault
Any info I can provide to assist (this is a fresh build from today with the diff and zoneopcodes as provided by ieatacid above)

Cheers!

sammie
06-18-2009, 06:29 PM
I can't log in to check at the moment, but if you are feeling adventurous, try changing the max spell slots constant from 10 to 12 to account for the 8 extra octets in the player profile that I was seeing all week on test server. My SEQ was still working last night on test with that larger playerprofilestruct. Recompile and let us know if that corrects the problem. It's just a hunch and I can't verify at the moment, so I could certainly be mistaken.

everquest.h


#define MAX_SPELL_SLOTS 12

ieatacid
06-18-2009, 07:09 PM
I can't log in to check at the moment, but if you are feeling adventurous, try changing the max spell slots constant from 10 to 12 to account for the 8 extra octets in the player profile that I was seeing all week on test server. My SEQ was still working last night on test with that larger playerprofilestruct. Recompile and let us know if that corrects the problem. It's just a hunch and I can't verify at the moment, so I could certainly be mistaken.

everquest.h


#define MAX_SPELL_SLOTS 12


With two members of playerProfile using that constant, it'll make it too large. I had it wrong anyway. The spellSlotRefresh array size should've been 11 and is now 13.


This should be right

struct playerProfileStruct
{
/*00004*/ uint32_t gender; // Player Gender - 0 Male, 1 Female
/*00008*/ uint32_t race; // Player race
/*00012*/ uint32_t class_; // Player class
/*00016*/ uint8_t unknown00016[40]; // ***Placeholder
/*00056*/ uint8_t level; // Level of player
/*00057*/ uint8_t level1; // Level of player (again?)
/*00058*/ uint8_t unknown00058[2]; // ***Placeholder
/*00060*/ BindStruct binds[5]; // Bind points (primary is first)
/*00160*/ uint32_t deity; // deity
/*00164*/ uint32_t intoxication; // Alcohol level (in ticks till sober?)
/*00168*/ uint32_t spellSlotRefresh[13]; // Refresh time (millis)
/*00220*/ uint8_t haircolor; // Player hair color
/*00221*/ uint8_t beardcolor; // Player beard color
/*00222*/ uint8_t unknown00222[6];
/*00228*/ uint8_t eyecolor1; // Player left eye color
/*00229*/ uint8_t eyecolor2; // Player right eye color
/*00230*/ uint8_t hairstyle; // Player hair style
/*00231*/ uint8_t beard; // Player beard type
/*00232*/ uint8_t unknown00232[22];
/*00254*/ uint32_t item_material[9]; // Item texture/material of worn items
/*00290*/ uint8_t unknown00290[222];
/*00512*/ Color_Struct item_tint[9]; // RR GG BB 00
/*00548*/ AA_Array aa_array[MAX_AA]; // AAs
/*04148*/ uint32_t points; // Unspent Practice points
/*04152*/ uint32_t MANA; // Current MANA
/*04156*/ uint32_t curHp; // Current HP without +HP equipment
/*04160*/ uint32_t STR; // Strength
/*04164*/ uint32_t STA; // Stamina
/*04168*/ uint32_t CHA; // Charisma
/*04172*/ uint32_t DEX; // Dexterity
/*04176*/ uint32_t INT; // Intelligence
/*04180*/ uint32_t AGI; // Agility
/*04184*/ uint32_t WIS; // Wisdom
/*04188*/ uint8_t face; // Player face
/*04189*/ uint8_t unknown04189[175];
/*04364*/ int32_t sSpellBook[720]; // List of the Spells in spellbook
/*07244*/ int32_t sMemSpells[MAX_SPELL_SLOTS]; // List of spells memorized
/*07284*/ uint8_t unknown07284[28];
/*07312*/ uint32_t platinum; // Platinum Pieces on player
/*07316*/ uint32_t gold; // Gold Pieces on player
/*07320*/ uint32_t silver; // Silver Pieces on player
/*07324*/ uint32_t copper; // Copper Pieces on player
/*07328*/ uint32_t platinum_cursor; // Platinum Pieces on cursor
/*07332*/ uint32_t gold_cursor; // Gold Pieces on cursor
/*07336*/ uint32_t silver_cursor; // Silver Pieces on cursor
/*07340*/ uint32_t copper_cursor; // Copper Pieces on cursor
/*07344*/ uint32_t skills[MAX_KNOWN_SKILLS]; // List of skills
/*07744*/ uint32_t innateSkills[25];
/*07844*/ uint8_t unknown07844[36];
/*07880*/ uint32_t toxicity; // Potion Toxicity (15=too toxic, each potion adds 3)
/*07884*/ uint32_t thirst; // Drink (ticks till next drink)
/*07888*/ uint32_t hunger; // Food (ticks till next eat)
/*07892*/ spellBuff buffs[MAX_BUFFS]; // Buffs currently on the player
/*08612*/ uint32_t disciplines[MAX_DISCIPLINES]; // Known disciplines
/*09012*/ uint8_t unknown09012[560];
/*09572*/ uint32_t recastTimers[MAX_RECAST_TYPES]; // Timers (GMT of last use)
/*09652*/ uint32_t endurance; // Current endurance
/*09656*/ uint32_t aa_spent; // Number of spent AA points
/*09660*/ uint32_t aa_unspent; // Unspent AA points
/*09664*/ uint8_t unknown09664[4];
/*09668*/ BandolierStruct bandoliers[MAX_BANDOLIERS]; // bandolier contents
/*16068*/ InlineItem potionBelt[MAX_POTIONS_IN_BELT]; // potion belt
/*16428*/ uint8_t unknown16428[92];
/*16520*/
};

darkassassin
06-18-2009, 10:06 PM
Hi all,

Ieatacid's playerProfileStruct seemed to do the trick for me.

Thank you.

-da

rogues
06-19-2009, 05:29 AM
Working like a champ, thanks!

Backspace
06-20-2009, 05:42 AM
Everything looks good so far. Will stress test it more later this weekend.

mastercard
06-20-2009, 01:30 PM
Not sure where im going wrong. Still getting the segment fault.

Warning: OP_PlayerProfile (0x6022) (dataLen: 24856) doesn't match: sizeof(charProfileStruct):24864

Downloaded 5.13.4.1
Deleted /conf/zoneopcodes
download the opcodes from Post 35 into /conf
download the diff from post 35 into /src
applied diff
patch -p0 ./everquest.h ./20090612.diff
Changed the max spell spot from Post 44
replaced the playerProfileStruct from post 44
ran configure

ieatacid
06-20-2009, 02:29 PM
Not sure where im going wrong. Still getting the segment fault.

Warning: OP_PlayerProfile (0x6022) (dataLen: 24856) doesn't match: sizeof(charProfileStruct):24864

Downloaded 5.13.4.1
Deleted /conf/zoneopcodes
download the opcodes from Post 35 into /conf
download the diff from post 35 into /src
applied diff
patch -p0 ./everquest.h ./20090612.diff
Changed the max spell spot from Post 44
replaced the playerProfileStruct from post 44
ran configure

Post #44 says not to change MAX_SPELL_SLOTS, that doing so will mess up the size.

The constants at the top of everquest.h should look like they do in this post:

http://www.showeq.net/forums/showpost.php?p=44831&postcount=24

I'll be putting up a new tarball in a little bit anyway, after I rename the rest of charProfile so that it matches up with its new size.

mastercard
06-20-2009, 03:54 PM
My bad. Thanks
Went to public schools. All is good