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
  #1  
Old 05-22-2009, 05:45 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default Respawn Window

I think I have the respawn window structure figured out for SoF at least. I also think I figured out why people get disconnected if they die in the zone they are bound in on SoF clients. I will try to get the disconnect issue fixed tonight and on the SVN, but to get the code to support the respawn window might take longer if I can even figure it out myself. Here is the structure I have for it from Live anyway:

Code:
typedef struct {
/*000*/	uint32	bind_number;		// Number of this bind in the iteration
/*004*/	uint32	bind_zone_id;		// ID of the zone for this bind point or resurect point
/*008*/	float	x;					// X loc for this bind point
/*012*/	float	y;					// Y loc for this bind point
/*016*/	float	z;					// Z loc for this bind point
/*020*/	float	heading;			// Heading for this bind point
/*024*/	char	bind_zone_name[14];	// Or "Bind Location" or "Resurrect"
/*000*/	uint8	validity;		// 0 = valid choice, 1 = not a valid choice at this time (resurrection)
} RespawnOptions_Struct;

struct RespawnWindow_Struct {
/*000*/	uint32	unknown000;		// Seen 0
/*004*/	uint32	time_remaining;	// Total time before respawn in milliseconds
/*008*/	uint32	unknown008;		// Seen 0
/*012*/	uint32	total_binds;	// Total Bind Point Options? - Seen 2
/*016*/ RespawnOptions_Struct bind_points;
// First bind point is "Bind Location" and the last one is "Ressurect"
};
EDIT:
Nope, I guess I was wrong about why they get disconnected. I thought maybe it was because the zoneplayertobind structure was not being encoded and had changed (it did change on live). But, it looks like we send the death packet and wait for the client to send the zone request. In Titanium, I think it will send that automatically, so we know to zone them. But, in SoF, it looks like the client is waiting for the OP_RespawnWindow packet and we aren't sending that yet. Hopefully, I can figure out what is needed to get that working soon.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!

Last edited by trevius; 05-23-2009 at 01:12 PM..
Reply With Quote
  #2  
Old 05-22-2009, 05:20 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

So, I have the basic code in to kinda hack the Respawn Window to work now. Now the window will pop up when you die, but either something is wrong with the struct or something is wrong with how I am sending something, because it still disconnects after a couple seconds when dieing in the same zone you are bound in.

Once I can get the Respawn Window to work without the disconnects, I might try to see if I can get it to work the actual way it is supposed to, but I am not sure if that is something I can do or not. Basically, the idea is to get it working for now so that it will just give you 1 choice and that is to respawn at your bind point. Ideally, it should at least give you the option of resurrecting as well and maybe other options (I haven't played Live since it was put in other than to collect data).
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #3  
Old 05-23-2009, 04:21 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Well, I got a hacked version of the Respawn Window working. It isn't coded properly the way it should be, but it sends the packet the same way that Live does. I figure that once I get it working, I can either start trying to get it working the correct way, or see if someone else might be able to finish that part of the coding of it. Mostly, I just want to get it in to stop the disconnects when you die in the zone you are bound in on SoF.

I am still getting disconnected even with the Respawn Window seeming to work as it should. I am starting to think that we do a forced session disconnect somewhere in the death code since that is basically what happens when Titanium clients die. They get disconnected and build a new connection to the zone they are zoning to.

One reason I think it is the server disconnecting us is what the EQ debug says:
Code:
[Sat May 23 02:59:48 2009]00731:I died.

[Sat May 23 02:59:48 2009]00326:D3DXCreateTextureFromFileEx()	failed to create texture dust_02.dds	for	particle system.

[Sat May 23 02:59:53 2009]00732:Networking: connection terminated [client:DisconnectReasonOtherSideTerminated,server:DisconnectReasonNone]
[Sat May 23 02:59:53 2009]00733:disconnected at C:\p4\EverQuest\live\EverQuest\EverQuest.cpp:18773 (char. select) DisconnectReasonOtherSideTerminated,DisconnectReasonNone

[Sat May 23 02:59:53 2009]00734:Character is Bluie.

[Sat May 23 02:59:53 2009]00735:YOU HAVE BEEN DISCONNECTED.
[Sat May 23 02:59:53 2009]00736:
end of DisplayScreen

[Sat May 23 03:00:12 2009]00737:Networking: Connection Closed [0] with 0 pending bytes.
I just haven't been able to find the code that is sending that disconnect yet.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #4  
Old 05-27-2009, 05:48 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

I added most of the code for the Respawn Window to the SVN. It isn't completed yet and is also not actually being used on death yet, but it is there. If I am able to get it figured out at some point, I will try to finish it. Until I can figure out why the server is disconnecting the player when they die instead of giving them the respawn window option, there is no reason to send the Respawn Window packet to them.

As it is, I have a temp hack in to let it send the Respawn Window packet if it is added to the death code. The code that handles it will need to be adjusted to do it the proper way, but until it stops disconnecting the character, it doesn't matter that much. At least the base code is there for it if someone else wants to pick it up and finish it at some point.

I think Derision mentioned that the Respawn Window also exists in Titanium, so if we can get it working in SoF, it shouldn't be hard to get it going in Titanium as well.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
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 11:24 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 - 2025, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3