Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Database/World Building

Development::Database/World Building World Building forum, dedicated to the EQEmu MySQL Database. Post partial/complete databases for spawns, items, etc.

Reply
 
Thread Tools Display Modes
  #1  
Old 12-09-2006, 04:10 PM
WildcardX
Developer
 
Join Date: Apr 2003
Posts: 589
Default Infinite Zoning Loop

FNW,

There is a problem at the zone in of Vex Thal that causes a player to go into an infinite loop zoning. I use to think it was a problem in the database, but after an exhaustive search, I have been able to rule this out as a possibility based on 2 facts.

1. This bug will happen in a naked vex thal zone (ie no mobs, no doors, no traps, etc).

2. This bug is random. I have seen this bug happen on the same database with the exact same datasets and then after a reboot of the client, I have seen the bug not appear and I am able to walk into vex thal from the zone in.

I noticed messages in my debug log that records an "Unsolicited zone request..." and after looking into the source code, I can see the logic where the client sends an UnsolicatedZone message to the server, the server is unable to determine the nearest zone point to send me out of (vex thal has no zone points records) so the server then attempts to send me right back to where the client was sending me from (vex thal) and then the client sends me back out again as an UnsolicatedZone message and the whole thing just keeps on repeating.

The question here is why is the client just deciding at random to send me out via an UnsolicatedZone request? I hope it's not anything funny hardcoded into the client that is specific to this zone.

I'd appreciate any thought you may have on this matter. Thank you in advance!
__________________
Read my developer notes at my blog.

Quote:
If it's not on IRC, it ain't l33t!
Reply With Quote
  #2  
Old 12-09-2006, 04:52 PM
WildcardX
Developer
 
Join Date: Apr 2003
Posts: 589
Default

A little more info about this bug...

Until now I thought the zone the client wanted to zone me to was just random, but I have noticed that it isn't random at all. In fact, I think it is the result of the servers Zone::GetClosestZonePoint() method. I'm not sure I completely understand the details of the mechanics involved here, but I know when I zone into VexThal and the last zone I was in was Misty (I was in Misty on a #zone command so I was standing by the newbie guards on the far side of the zone near Clan Runnyeye (however it is spelled... I hate goblins), when I try to walk into vexthal from the zonein, the client at random will decide to zone me out and in this case it will say I am zoning to Clan Runnyeye... If I was in UP and standing near the Maidens Eye zone when I #zone to Vex Thal, then it will say I am being zones to Maidens Eye... I think this might be signficant only because the object used to by the server to calculate a place to send me to cancel the unsolicated zone request I believe has data from when I was in Misty even though when the client tried to unsolicate zone me out, I was in Vex Thal, not Misty.

Sorry if this sounds confusing and if I can clear any of this up better for you, please let me know.
__________________
Read my developer notes at my blog.

Quote:
If it's not on IRC, it ain't l33t!

Last edited by WildcardX; 12-10-2006 at 12:57 AM..
Reply With Quote
  #3  
Old 12-09-2006, 05:20 PM
WildcardX
Developer
 
Join Date: Apr 2003
Posts: 589
Default

Even a little more info...

Once a player gets caught in this infinite zoning loop in vex thal, the player has no choice but to kill their client and restart EQ and log back in. Once they log back in, if they just keep going deeper into Vex Thal, they can, in effect, "camp out past" whatever the point is in the client that wants to send the unsolicited zone request.

And I can confirm the physical point in the zone where the client wants to send the Unsolicated Zone message is ALWAYS the same loc.
__________________
Read my developer notes at my blog.

Quote:
If it's not on IRC, it ain't l33t!
Reply With Quote
  #4  
Old 12-09-2006, 05:36 PM
John Adams
Demi-God
 
Join Date: Jul 2006
Posts: 1,552
Default

Fwiw, I was poking around The Nest one day and stepped off a cliff, and got into the same zone loop, had to kill the client to escape. Tried to make it happen again, and the second time I just fell to my death as expected. Couldn't reproduce, and didn't think to check logs at the time.

Letting you know I've seen it other than VT.
Reply With Quote
  #5  
Old 12-10-2006, 01:53 AM
bufferofnewbies
Hill Giant
 
Join Date: Dec 2005
Location: Lurking in KY
Posts: 239
Default

It's my weak theory that:

the error in VT is that most of the zoneins (default is at least) actually sets you behind their 'built-in' zoneline. so even when you are technically 'in ' the zone, movement still puts you into the space that the client tells the server you are attempting to zone. They might have specifically put 0, 0 location there to prevent anyone from useing the old zone viewer program to spoil the effects of the new 'big zone'.

Just in this case you are 'attempting' to zone into vex thal, and for some reason.. since you are already there, it errors out and cycles you over and over. I believe it is something about the code that requests current position vs. intended position. And since it is the same zone, it errors out for location.

But, thats just my weak theory with no support.
I wouldn't try to buy a newspaper with it.
Reply With Quote
  #6  
Old 12-10-2006, 01:38 PM
wraithlord98
Sarnak
 
Join Date: Oct 2002
Posts: 53
Default

That's most likely the problem.. question is - has anyone tried "tweaking" the zone in point to see if it corrects 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 08:43 PM.


 

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