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

03-28-2010, 09:53 PM
|
 |
Developer
|
|
Join Date: Aug 2006
Location: USA
Posts: 5,946
|
|
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
|
 |
|
 |
 |
|
 |

03-29-2010, 12:01 AM
|
 |
Developer
|
|
Join Date: Aug 2006
Location: USA
Posts: 5,946
|
|
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*/
};
|
 |
|
 |
 |
|
 |

03-29-2010, 04:25 AM
|
 |
Developer
|
|
Join Date: Aug 2006
Location: USA
Posts: 5,946
|
|
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.
|
 |
|
 |

03-29-2010, 05:25 AM
|
Opcode Ninja
|
|
Join Date: Mar 2009
Location: San francisco
Posts: 426
|
|
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.
|

03-30-2010, 03:05 AM
|
Fire Beetle
|
|
Join Date: Jan 2010
Location: Idaho
Posts: 27
|
|
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.
|

03-30-2010, 05:50 AM
|
 |
Developer
|
|
Join Date: Aug 2006
Location: USA
Posts: 5,946
|
|
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.
|
 |
|
 |
 |
|
 |

03-30-2010, 07:59 AM
|
 |
Developer
|
|
Join Date: Aug 2006
Location: USA
Posts: 5,946
|
|
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.
|
 |
|
 |

04-01-2010, 01:00 AM
|
Sarnak
|
|
Join Date: May 2009
Location: MI
Posts: 58
|
|
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
|
 |
|
 |

04-01-2010, 01:57 AM
|
Dragon
|
|
Join Date: Dec 2008
Location: Tennessee
Posts: 656
|
|
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.
|
 |
|
 |
 |
|
 |

04-02-2010, 04:44 PM
|
Discordant
|
|
Join Date: Apr 2006
Posts: 374
|
|
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.
|
 |
|
 |
 |
|
 |

04-02-2010, 06:32 PM
|
 |
Developer
|
|
Join Date: Aug 2006
Location: USA
Posts: 5,946
|
|
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.
|
 |
|
 |

04-03-2010, 02:02 AM
|
Fire Beetle
|
|
Join Date: Dec 2008
Location: Britannia
Posts: 8
|
|
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.
|

04-03-2010, 12:28 PM
|
Developer
|
|
Join Date: Jul 2007
Location: my own little world
Posts: 751
|
|
I've never seen the merc system, but Trev said there were some ui windows that might be useful.
|

04-03-2010, 01:06 PM
|
 |
The PEQ Dude
|
|
Join Date: Apr 2003
Location: -
Posts: 1,988
|
|
Quote:
Originally Posted by Congdar
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.
|

04-03-2010, 09:24 PM
|
Sarnak
|
|
Join Date: Mar 2009
Posts: 78
|
|
I Downloaded it.. how long until I can connect to the LS with it? Just wondering 
|
Thread Tools |
|
Display Modes |
Linear Mode
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -4. The time now is 06:56 PM.
|
|
 |
|
 |
|
|
|
 |
|
 |
|
 |