Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Development

Development::Development Forum for development topics and for those interested in EQEMu development. (Not a support forum)

Reply
 
Thread Tools Display Modes
  #46  
Old 03-28-2010, 09:53 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Here is a list of packets seen from a collect around Feb 2009 to show the order of packets between the client and the server when logging in. Adding this here for reference in case we want to investigate any of the unknowns.

Code:
[OPCode: 0x3594] [Decoded] [Client->Server] [Size: 4] - OP_AckPacket
[OPCode: 0x5a6b] [Decoded] [Client->Server] [Size: 68] - OP_ZoneEntry
[OPCode: 0x1af0] [Decoded] [Server->Client] [Size: 12] - Unknown/New???
[OPCode: 0x3bef] [Decoded] [Server->Client] [Size: 0] -  OP_RespondAA
[OPCode: 0x322f] [Decoded] [Server->Client] [Size: 120] - OP_SendAATable

[OPCode: 0x6022] [Decoded] [Server->Client] [Size: 23488] - OP_PlayerProfile
[OPCode: 0x5a6b] [Decoded] [Server->Client] [Size: 334] - OP_ZoneEntry
[OPCode: 0x6015] [Decoded] [Server->Client] [Size: 8] - OP_TimeOfDay
[OPCode: 0x399b] [Decoded] [Server->Client] [Size: 48] -  OP_TributeUpdate

[OPCode: 0x4036] [Decoded] [Client->Server] [Size: 4] - Unknown/New???
[OPCode: 0x3594] [Decoded] [Client->Server] [Size: 4] - OP_AckPacket
[OPCode: 0x709d] [Decoded] [Server->Client] [Size: 205802] - OP_CharInventory
[OPCode: 0x5412] [Decoded] [Server->Client] [Size: 4] - OP_CompletedTasks
[OPCode: 0x2641] [Decoded] [Server->Client] [Size: 12] - OP_Weather
[OPCode: 0x4292] [Decoded] [Server->Client] [Size: 4] - OP_DeleteSpawn or Unknown/New???
[OPCode: 0x6c26] [Decoded] [Server->Client] [Size: 4] - Unknown/New???
[OPCode: 0x2c4c] [Decoded] [Server->Client] [Size: 24] - OP_WorldUnknown001

[OPCode: 0x0924] [Decoded] [Client->Server] [Size: 1] - Unknown/New???
[OPCode: 0x43ac] [Decoded] [Client->Server] [Size: 0] - OP_ReqNewZone
[OPCode: 0x466c] [Decoded] [Client->Server] [Size: 0] - OP_UpdateAA
[OPCode: 0x116d] [Decoded] [Server->Client] [Size: 20] - Unknown/New???
[OPCode: 0x5ca5] [Decoded] [Server->Client] [Size: 932] - OP_NewZone
[OPCode: 0x1b26] [Decoded] [Server->Client] [Size: 921] - OP_CustomTitles

[OPCode: 0x7bbb] [Decoded] [Client->Server] [Size: 4] - OP_TargetMouse
[OPCode: 0x3594] [Decoded] [Client->Server] [Size: 4] - OP_AckPacket
[OPCode: 0x1436] [Decoded] [Client->Server] [Size: 0] - OP_ReqClientSpawn
[OPCode: 0x102f] [Decoded] [Server->Client] [Size: 184] - OP_SpawnDoor
[OPCode: 0x5821] [Decoded] [Server->Client] [Size: 484] - OP_SendZonePoints
[OPCode: 0x69cd] [Decoded] [Server->Client] [Size: 0] - New OP_WorldObjectsSent (Replaced OP_SendExpZonein here)

[OPCode: 0x0baa] [Decoded] [Client->Server] [Size: 88] - OP_BlockedSpells
[OPCode: 0x7b73] [Decoded] [Client->Server] [Size: 0] - OP_WorldObjectSent
[OPCode: 0x10b7] [Decoded] [Server->Client] [Size: 8] - OP_SpawnAppearance
[OPCode: 0x3088] [Decoded] [Server->Client] [Size: 12] - OP_AAExpUpdate
[OPCode: 0x0e98] [Decoded] [Server->Client] [Size: 8] - OP_ExpUpdate
[OPCode: 0x50d0] [Decoded] [Server->Client] [Size: 12] - OP_AAAction
[OPCode: 0x7b73] [Decoded] [Server->Client] [Size: 0] - OP_WorldObjectSent

[OPCode: 0x7312] [Decoded] [Client->Server] [Size: 128] - OP_SetServerFilter
[OPCode: 0x4e4e] [Decoded] [Server->Client] [Size: 4704] - OP_VetRewardsAvailable
[OPCode: 0x5448] [Decoded] [Server->Client] [Size: 12] - OP_SimpleMessage
[OPCode: 0x435b] [Decoded] [Server->Client] [Size: 4] - Unknown/New???
[OPCode: 0x0296] [Decoded] [Server->Client] [Size: 4] - Unknown/New???
[OPCode: 0x5a6b] [Decoded] [Server->Client] [Size: 326] - OP_ZoneEntry
[OPCode: 0x3164] [Decoded] [Server->Client] [Size: 5] - OP_DeleteSpawn
[OPCode: 0x5ebc] [Decoded] [Server->Client] [Size: 12] - Unknown/New???

[OPCode: 0x2d17] [Decoded] [Client->Server] [Size: 8] - Unknown/New???
[OPCode: 0x6759] [Decoded] [Client->Server] [Size: 0] -  OP_ClientReady
[OPCode: 0x7b6e] [Decoded] [Client->Server] [Size: 8] - OP_WeaponEquip2
[OPCode: 0x231f] [Decoded] [Client->Server] [Size: 19] - OP_WearChange
[OPCode: 0x4675] [Decoded] [Client->Server] [Size: 20] - OP_BazaarSearch
[OPCode: 0x19d2] [Decoded] [Client->Server] [Size: 0] - Unknown/New???
[OPCode: 0x4b49] [Decoded] [Client->Server] [Size: 4] - OP_Barter??? 0x6b0e?
[OPCode: 0x7eac] [Decoded] [Client->Server] [Size: 12] - Unknown/New???
[OPCode: 0x365d] [Decoded] [Client->Server] [Size: 4] - Unknown/New???
[OPCode: 0x266e] [Decoded] [Client->Server] [Size: 4] - Unknown/New???
[OPCode: 0x7eeb] [Decoded] [Client->Server] [Size: 0] - Unknown/New???
[OPCode: 0x27bf] [Decoded] [Client->Server] [Size: 8] - Unknown/New???
[OPCode: 0x7e31] [Decoded] [Client->Server] [Size: 4] - Unknown/New???
[OPCode: 0x2d37] [Decoded] [Client->Server] [Size: 4] - Unknown/New???
[OPCode: 0x32c6] [Decoded] [Server->Client] [Size: 140] - OP_RaidUpdate
[OPCode: 0xd677] [Decoded] [Server->Client] [Size: 648] - OP_GuildMOTD
[OPCode: 0x35d3] [Decoded] [Server->Client] [Size: 8] - Unknown/New???
[OPCode: 0x7b6e] [Decoded] [Server->Client] [Size: 8] - OP_WeaponEquip2

[OPCode: 0x7062] [Decoded] [Client->Server] [Size: 40] - OP_ClientUpdate
[OPCode: 0x7eeb] [Decoded] [Server->Client] [Size: 62] - Unknown/New??? - Looks like the EQPlayers update
[OPCode: 0x538f] [Decoded] [Server->Client] [Size: 10] - OP_HPUpdate
[OPCode: 0x4b61] [Decoded] [Server->Client] [Size: 10] - Unknown/New??? - Maybe new Mana Update
[OPCode: 0x02d6] [Decoded] [Server->Client] [Size: 10] - Unknown/New??? - Maybe new Endurance Update
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #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
  #48  
Old 03-29-2010, 04:25 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Well, I think I know why NPC HPs aren't updating in the target window for SoD. It seems they added new HP/Mana/Endurance packets that give the spawn ID and a percentage value to keep the client current with it's target's health and such.

So, we will need to add in new code to support these new packets. The main priority is the health update, but the others can go in as well.

Code:
Feb 18 2009 01:00:21:741 [Decoded] [Server->Client] [Size: 3] - OP_MobHealth
[OPCode: 0x47ea]
000 | da 0f 64                                         | ..d 

Feb 18 2009 01:00:21:742 [Decoded] [Server->Client] [Size: 3] - OP_MobMana?
[OPCode: 0x2ac1]
000 | da 0f 00                                         | ... 

Feb 18 2009 01:00:21:742 [Decoded] [Server->Client] [Size: 3] - OP_MobEndurance?
[OPCode: 0x6c5f]
000 | da 0f 00                                         | ...

These structures should work for the above packets. We will just need to add in handling for them and set places in the code to know when to send them out. Why they didn't combine these 3 into a single 5 byte packet, I don't know (LOL), but this is how it looks now. At least it is still less than what we previously sent I think.

Code:
struct MobHealth_Struct
{
/* 00 */	int16	SpawnID;
/* 02 */	int8	HpPercent;
/* 03 */
};

struct MobMana_Struct
{
/* 00 */	int16	SpawnID;
/* 02 */	int8	ManaPercent;
/* 03 */
};

struct MobEndurance_Struct
{
/* 00 */	int16	SpawnID;
/* 02 */	int8	EndurancePercent;
/* 03 */
};
Other than the addition of these for the target HP/Mana/End updates, there will still need to be some more targeting work done. I am still trying to figure out what else has been changed with targeting.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #49  
Old 03-29-2010, 05:25 AM
Noport
Opcode Ninja
 
Join Date: Mar 2009
Location: San francisco
Posts: 426
Default

you are correct it's called the Targets/Target's Window , example you pull the boss he grabs five other to help him fight they all now appear in your targets/target's window. the bots have hp/mana/end as well as the player. you have to account for six total targets/target's. another example you click on a player it now shows 30+ buffs on player.
Reply With Quote
  #50  
Old 03-30-2010, 03:05 AM
ptarp
Fire Beetle
 
Join Date: Jan 2010
Location: Idaho
Posts: 27
Default

Noport, are you sure you aren't talking about the extended targets window? That came about after UF and isn't included in starting SoD client. group Target-Of-Target leader AA is in SoD and has the same single target window only showing the single target of the mob or pc you have targeted.
The target window shows buffs on NPCs but I think 'Inspect Buffs' group leader AA was required for that, though you didn't have to have a group for it to work.
The group and target windows do show health, mana, and endurance, and the old ones didn't, though I can't remember them showing endurance and mana for npcs that weren't in your group. PC and mercenary only I thought, which might be a good reason for seperate structs.
Reply With Quote
  #51  
Old 03-30-2010, 05:50 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Well, I figured out why NPC HPs weren't updating properly. It was just that the incorrect opcode was set. I corrected it and they work just fine now.

Also, I found out that targeting works just fine as it is. Turned out that I was casting an AE spell, which is why it wasn't hitting my target. I never knew wizards got an AE spell at level 1, or I would have thought to check that *blushes* LOL

So, as far as I know, that mainly leaves grouping as the big thing that needs to be done to get SoD just about fully functional. We still have some minor things to adjust in the spawn struct and there is something wrong with items that make them no drop, but those 2 things shouldn't be too hard to finalize.

Keep an eye out for any other bugs with the client that haven't been documented yet and post them in the SoD bug thread in the bug reports section of the forums.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #52  
Old 03-30-2010, 07:59 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

I started doing some research to try to figure out the new formula for HP/Mana/Endurance. I think I will start with HP, since that is the most important to have, and figure out the others later.

So far, I have checked a Ranger and tested by equiping an item that adds 100 STA to show how much HP it adds per point of STA. This is what I have for now:

Ranger:
Code:
LVL - HP Per STA - Base HP w/ 75 STA
1 - .08 - 33
2 - .15 - 62
3 - .23 - 91
4 - .30 - 120
5 - .39 - 148
6 - .46 - 177
7 - .53 - 206
8 - .62 - 234
9 - .69 - 263
10 - .77 - 292
11 - .84 - 321
20 - 1.54 - 579
30 - 2.30 - 867
40 - 3.06 - 1155
50 - 4.60 - 1729
60 - 6.14 - 2304
65 - 6.90 - 2592
70 - 7.66 - 2880
75 - 8.43 - 3167
80 - 9.20 - 3454
85 - 9.20 - 3594
I am guessing that most archetypes use the same formulas, but only testing will tell for sure. Hopefully we won't need to check each class individually or that would take forever. There definitely seems to be a pattern here with HPs gained per STA point. I am sure this will be a long and tedious process to get all classes figured out as close as possible.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #53  
Old 04-01-2010, 01:00 AM
Vampire1212
Sarnak
 
Join Date: May 2009
Location: MI
Posts: 58
Thumbs up Great work (:

I just wanted to give thanks to all those who are working hard on this. I love what eqemulator.org is doing for SoD. It seems everyone is getting somewhat caught up to live.

Keep up the good work!

- Steven
Reply With Quote
  #54  
Old 04-01-2010, 01:57 AM
blackdragonsdg
Dragon
 
Join Date: Dec 2008
Location: Tennessee
Posts: 654
Default

I got bored so I started trying to figure out what race number went with what race. It is a bit messy but this is what I found so far

Code:
Race 591 - Crystal

Race 594 - Worg Mount

Race 597 - Lizard Mount

Race 598 - Spectral Worg Mount

Race 607 - mph.eqg - a Vekerchiki infiltrator - http://eqbeastiary.allakhazam.com/search.shtml?id=31802

Race 608 - mud.eqg - New Golem

Race 614 - bal.eqg - Overlord Gevalark the Dread - http://eqbeastiary.allakhazam.com/search.shtml?id=31992

Race 615 - a crystalline trichordont - http://eqbeastiary.allakhazam.com/search.shtml?id=31785

Race 616 - cry.eqg - Floating Transparent Globe

Race 617 - Gnoll - http://eqbeastiary.allakhazam.com/search.shtml?id=31951

Race 620 - dvl.eqg - a vitrik towerguard - http://eqbeastiary.allakhazam.com/search.shtml?id=33667

Race 622 - god.eqg - Lord Brekt, Rider of Discord - http://eqbeastiary.allakhazam.com/search.shtml?id=32645

Race 623 - New Feran

Race 624, texture 2, gender 0 - a Rallosian seer - http://eqbeastiary.allakhazam.com/search.shtml?id=31657

Race 625 - Winged Lizard

Race 626 - gra.eqg - Giant -
Process of elimination takes a while so if anyone knows a faster way to get that information I am up for trying it.
Reply With Quote
  #55  
Old 04-02-2010, 04:44 PM
cubber
Discordant
 
Join Date: Apr 2006
Posts: 374
Default

Came across a weird bug with bots and SoD:

I installed SoD, updated my server to svn rev 1340 and logged in. Spawned my cleric and shamy bots then zoneed to hateplaneb on my GM monk character.

Went to attack the first NPC I saw and the bots took off, and all animation stopped. I was able to see the NPC's health bar drop, but was unable to hit any hotkeys (every attempt said you cannot do that right now) or do anything besides toggle auto attack, (which did nothing to my characters animation). The only other thing I could do was use /q to exit the game. When I came back in the NPC's were dead and I was in the spot I was when I /q'd.

The best way to describe it is it was like I was going LD, but I was not LD...

A few notes after duplicating the issue.

- The issue only happens in SoD not SoF

- The issue only happens when I zone into hateplaneb with a group of bots then attack something.

- The issue DOES NOT happen when I log into hateplaneb from scratch, spawn bots, then attack.

I then tested zoning into kurns tower with a group of bots and all was fine. So it may be on a per zone basis. I have not had time to test any further.
Reply With Quote
  #56  
Old 04-02-2010, 06:32 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Yeah, I have seen 2 types of client bugs so far that seem to be caused by various things. I am pretty sure that in both cases, they should be possible to resolve by sending the client what it is expecting.

1. The Mouselook Bug - There are a couple of odd scenarios that can cause the mouse to get stuck in mouselook mode for about 2 minutes. I think this is just because the client is expecting something it isn't getting. It is better than just crashing when it doesn't get it, at least. At least it eventually recovers on it's own. I think we just need to identify each thing that can cause this and fix them one by one. One of the things I know can cause it is trying to unmem a spell that is higher than your current level, and I think another might be related to the server removing buffs from your character.

2. The Attack/Cast Bug - This bug reminds me of the bug we used to see a lot on previous clients where the client would sometimes get out of order packets and cause itself to be unable to cast or attack or do most things until using /quit or /camp and logging back in. This bug does not seem to recover on it's own from what I have seen so far. So, I think we will need to find the exact cause of this bug and resolve it. It could be something as simple as a missing or bad opcode, or it may be something new to the client all-together.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #57  
Old 04-03-2010, 02:02 AM
TheTrilobyte
Fire Beetle
 
Join Date: Dec 2008
Location: Britannia
Posts: 8
Default

I'm excited about SoD personally, it may be time limited (possibly, I mean the SoD DL also gives you an SoF client), but at least it is actually commercially available to buy brand new.

I wonder what Congdar's thoughts on the merc system are hehe.
Reply With Quote
  #58  
Old 04-03-2010, 12:28 PM
Congdar
Developer
 
Join Date: Jul 2007
Location: my own little world
Posts: 751
Default

I've never seen the merc system, but Trev said there were some ui windows that might be useful.
Reply With Quote
  #59  
Old 04-03-2010, 01:06 PM
cavedude's Avatar
cavedude
The PEQ Dude
 
Join Date: Apr 2003
Location: -
Posts: 1,988
Default

Quote:
Originally Posted by Congdar View Post
I've never seen the merc system, but Trev said there were some ui windows that might be useful.
Yes, absolutely. I betcha if you ask nicely, Derision could get you the opcodes and structs you'll need to tie bots into the window. Now that, would be really cool.
Reply With Quote
  #60  
Old 04-03-2010, 09:24 PM
Ansley1
Sarnak
 
Join Date: Mar 2009
Posts: 78
Default

I Downloaded it.. how long until I can connect to the LS with it? Just wondering
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 04:01 AM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3