View Single Post
  #47  
Old 03-29-2010, 12:01 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Here are what appear to be 3 new server->client updates for spawn position and mana/endurance. Instead of using OP_ManaChange as the only way to update Mana and Endurance, they are not both split into separate packets that update regularly like OP_HPUpdate. It looks like OP_ManaChange is still used as well for reducing mana when a spell is cast.

Code:
struct SpawnPositionUpdate_Struct
{
/*0000*/ int16  spawnId;
/*0002*/ int64  ypos:19, zpos:19, xpos:19, u3:7;
/*0010*/ unsigned heading:12;
         signed unused2:4;
/*0012*/
};

struct ManaUpdate_Struct
{
/*0000*/ int32  curMana;
/*0004*/ int32  maxMana;
/*0008*/ uint16 spawnId;
/*0010*/
};

struct EnduranceUpdate_Struct
{
/*0000*/ int32  curEnd;
/*0004*/ int32  maxEnd;
/*0008*/ uint16 spawnId;
/*0010*/
};
I see all 3 of those packets from Live collects of SoD, so they are probably going to be needed to get the correct updates. The position update one may not be required, but it may be useful if we want to cut down server traffic and send minimal info on spawns that are out of range or are not moving.

Here are some examples for those 3 structs (note this char is a rogue, so there is no mana):

Code:
Feb 14 2009 02:43:42:054 [Decoded] [Server->Client] [Size: 12]
[OPCode: 0x4656]
[Name: OP_MobUpdate][Updated: 01/17/08][Type: spawnPositionUpdate (12) ==]
000 | 12 12 27 10 08 00 c0 51 fb 01 cc 02              | ..'....Q.... 

Feb 14 2009 02:43:42:054 [Decoded] [Server->Client] [Size: 12]
[OPCode: 0x4656]
[Name: OP_MobUpdate][Updated: 01/17/08][Type: spawnPositionUpdate (12) ==]
000 | 5f 2a ba 03 e0 00 40 4f fc 01 02 00              | _*....@O.... 

Feb 14 2009 02:43:42:054 [Decoded] [Server->Client] [Size: 12]
[OPCode: 0x4656]
[Name: OP_MobUpdate][Updated: 01/17/08][Type: spawnPositionUpdate (12) ==]
000 | c7 29 df 02 c0 01 40 80 fd 01 fc 01              | .)....@..... 


Feb 14 2009 02:43:42:124 [Decoded] [Server->Client] [Size: 10]
[OPCode: 0x538f]
[Name: OP_HPUpdate][Updated: 10/21/08][Type: hpNpcUpdateStruct (10) ==]
000 | 47 12 00 00 79 1c 00 00 0c 12                    | G...y..... 

Feb 14 2009 02:43:42:124 [Decoded] [Server->Client] [Size: 10]
[OPCode: 0x4b61]
[Name: OP_ManaChange][Updated: 01/17/08]
000 | 00 00 00 00 00 00 00 00 0c 12                    | .......... 

Feb 14 2009 02:43:42:124 [Decoded] [Server->Client] [Size: 10]
[OPCode: 0x02d6]
[Name: OP_Stamina][Updated: 10/21/08]
000 | b3 1b 00 00 b3 1b 00 00 0c 12                    | ..........
Here is another struct I see new to SoD from the ShowEQ structs, but I am not sure what it is for at all, if anything, yet:

Code:
struct SpawnUpdate_Struct
{
/*0000*/ uint16 spawnId;                // Id of spawn to update
/*0002*/ uint16 subcommand;             // some sort of subcommand type
/*0004*/ int16  arg1;                   // first option
/*0006*/ int16  arg2;                   // second option
/*0008*/ uint8  arg3;                   // third option?
/*0009*/ uint8  unknown0009[10];
/*0019*/
};
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote