Go Back   EQEmulator Home > EQEmulator Forums > Support > Support::Windows Servers

Support::Windows Servers Support forum for Windows EQEMu users.

Reply
 
Thread Tools Display Modes
  #1  
Old 09-13-2015, 04:26 AM
AdrianD
Discordant
 
Join Date: Dec 2013
Posts: 297
Default

Hello,

I'm trying to understand the nuances of the #path tool and, specifically, what corrupts the file. I've found whenever I #path remove with a target node selected, it corrupts the file. I don't know why this happens. I wish I did.

This is what the log file reads after #zoneshutdown <short_name> or rebooting the server:
Code:
[09-13-2015 :: 02:33:10] [Status] Path File Header: Version 2, PathNodes 1518
[09-13-2015 :: 02:33:10] [Error] Path Node 296, Neighbour 16 (1523) out of range.
[09-13-2015 :: 02:33:10] [Error] Path Node 296, Neighbour 17 (1524) out of range.
[09-13-2015 :: 02:33:10] [Error] Path Node 297, Neighbour 17 (1523) out of range.
[09-13-2015 :: 02:33:10] [Error] Path Node 297, Neighbour 18 (1524) out of range.
[09-13-2015 :: 02:33:10] [Error] Path Node 307, Neighbour 14 (1523) out of range.
[09-13-2015 :: 02:33:10] [Error] Path Node 307, Neighbour 15 (1524) out of range.
[09-13-2015 :: 02:33:10] [Error] Path Node 308, Neighbour 14 (1523) out of range.
[09-13-2015 :: 02:33:10] [Error] Path Node 308, Neighbour 15 (1524) out of range.
[09-13-2015 :: 02:33:10] [Error] Path Node 309, Neighbour 14 (1523) out of range.
[09-13-2015 :: 02:33:10] [Error] Path Node 309, Neighbour 15 (1524) out of range.
[09-13-2015 :: 02:33:10] [Error] Path Node 312, Neighbour 16 (1524) out of range.
[09-13-2015 :: 02:33:10] [Error] Path Node 313, Neighbour 16 (1524) out of range.
[09-13-2015 :: 02:33:10] [Error] Path Node 314, Neighbour 16 (1524) out of range.
[09-13-2015 :: 02:33:10] [Error] Path Node 315, Neighbour 10 (1524) out of range.
[09-13-2015 :: 02:33:10] [Error] Path Node 320, Neighbour 9 (1519) out of range.
[09-13-2015 :: 02:33:10] [Error] Path Node 320, Neighbour 10 (1520) out of range.
[09-13-2015 :: 02:33:10] [Error] Path Node 323, Neighbour 10 (1520) out of range.
[09-13-2015 :: 02:33:10] [Error] Path Node 1514, Neighbour 0 (1524) out of range.
[09-13-2015 :: 02:33:10] [Error] Path Node 1515, Neighbour 5 (1524) out of range.
[09-13-2015 :: 02:33:10] [Error] Path Node 1516, Neighbour 9 (1522) out of range.
[09-13-2015 :: 02:33:10] [Error] Path Node 1516, Neighbour 10 (1523) out of range.
[09-13-2015 :: 02:33:10] [Error] Path File ./Maps/gukbottom.path failed to load.
You can see the file has <PathNodes 1518> and the nodes seem to be numbered up to 1524. I must have taken out six although there is no instance of 1521 in the error log (1521 was not removed).

I went through the same process in a different zone with far fewer nodes and the same thing happened. To test this I removed a single node, processed and repopped to verify. Then, I left the zone, #zoneshutdown <short_name>, renentered the zone and #path shownodes at which point they would not appear. At this point I would overwrite the file with a saved non-corrupt copy.

Is there a way to re-number the nodes (not manually) or make the program work with the actual <count> of nodes? Maybe something else is happening. Am I doing something wrong? I am only a couple days (hours) into this although not having this function to clean up some zones would be unfortunate.

Thanks

EDIT: Image, what I am gathering from dump/process is the moment you need to use dump instead of process, you can't go back to process. This means if dump was needed and more nodes need to be added, they will need to be connected manually. Just horrible. Better plan my silly pathing endeavors. Does this sound right?
Reply With Quote
  #2  
Old 09-13-2015, 08:24 AM
image
Demi-God
 
Join Date: Jan 2002
Posts: 1,290
Default

Kind of hard to answer this all via my cellphone.. But looking at the code:

https://github.com/EQEmu/Server/blob...ne/pathing.cpp
Code:
	int MaxNodeID = Head.PathNodeCount - 1;

	bool PathFileValid = true;

	for(uint32 i = 0; i < Head.PathNodeCount; ++i)
	{
		for(uint32 j = 0; j < PATHNODENEIGHBOURS; ++j)
		{
			if(PathNodes[i].Neighbours[j].id > MaxNodeID)
			{
				Log.Out(Logs::General, Logs::Error, "Path Node %i, Neighbour %i (%i) out of range.", i, j, PathNodes[i].Neighbours[j].id);
So if you look at your log errors the number at the end (just before out of range) should be less than the version header count which is 1518 nodes.. I am not fully sure how you pulled this off did you start your own path file or use mine?? Cause I haven't seen these errors before

Pathing files do require lots of planning or at least getting the full set of nodes up you think you need, process however many times to save during that endeavor after you can load the nodes up and if you need to add one here and there manually to make pathing more smooth I add and connect additional nodes manually.


Honestly I never removed nodes so maybe that has a bug..? I always add nodes I plan to keep and disconnect to other nodes I don't like them making

Also yes nodes don't have to be connected to be used individually but it can definitely make them prefer a path by connecting the nodes.
__________________
www.eq2emu.com
EQ2Emu Developer
Former EQEMu Developer / GuildWars / Zek Seasons Servers
Member of the "I hate devn00b" club.
Reply With Quote
  #3  
Old 09-13-2015, 10:12 AM
provocating's Avatar
provocating
Demi-God
 
Join Date: Nov 2007
Posts: 2,175
Default

I have a rule that I follow. I never, ever remove nodes. Removing nodes always seem to corrupt the path file for me, almost every time. If I have to remove a node I just start over again. So this makes me be very careful when doing my path files.
Reply With Quote
  #4  
Old 09-13-2015, 11:31 AM
AdrianD
Discordant
 
Join Date: Dec 2013
Posts: 297
Default

Thanks for the responses.

The specific path file from gukbottom was kindly given to me by Mr. provocating. It was the first zone I utilized this tool in a couple days ago.

It looks like the maxnodeid is being set at nodecount - 1 like your code quote says but, that is not the real maxnodeid. I don't know how it is supposed to work but, setting the maxnodeid = nodecount -1 is obviously incorrect if a functional #path remove option exists. Maybe resetting the nodeids is an easier solution than correcting the counting function. I don't know.

Corrupted .path files have been around a while I imagine. As long as I have been around here. I know this much.

I can't say using #path remove is the only thing that could corrupt a .path file but, it seems apparent it does. I haven't heard of this issue in the few threads I've searched. I think it's possible people have just accepted this as "working as intended" to not stir any pots.

I was watching the memory/cpu usage as various zones were being loaded and #showpathnode -ed. I understand some zones are more complex than others. Point being, the potential efficiency gain is present and may be worth looking into.

Thanks
Reply With Quote
  #5  
Old 09-16-2015, 02:10 AM
AdrianD
Discordant
 
Join Date: Dec 2013
Posts: 297
Default

I found this: (it wasn't hard to find)
Code:
#path sconnect [connectid] - Requires target, connects the pathing NPC node id to the provided node id (connectid), but not the other way.
I had only skimmed over the descriptions previous and dismissed this command. The description could be better. Just call it a one-way connection.

This is an excellent command and glad it works.

Some clarification and proper use of a couple commands would be appreciated, the descriptions, well, the descriptions. I've messed around with the two commands below only a small amount and noticed nothing different.

Code:
#path qconnect [set] - Requires target, short cut connect, to the previously targeted [set] (?).
#path resort [nodes] - resorts connections/nodes after they have been manually altered.
................
Quote:
It looks like the maxnodeid is being set at nodecount - 1 like your code quote says but, that is not the real maxnodeid. I don't know how it is supposed to work but, setting the maxnodeid = nodecount -1 is obviously incorrect if a functional #path remove option exists. Maybe resetting the nodeids is an easier solution than correcting the counting function. I don't know.
I'm not the only one with corrupted .path files from using this command. Can others replicate this issue? I get that the code would probably need to be changed and I don't expect anyone to jump up and do it just because I said so. If I could code it would either be done or in progress but, this is currently my issue. Any insight on this? Please correct me if anything I deduce is incorrect.

While I am not ungrateful that #path exists, the process, as it functions now, seems like a house of cards and jenga combined. A little dramatic maybe but, this issue reduces functionality significantly, for me at least.

I've put most of this project on hold until I'm given some insight on more of this. I'd like to clean up a bunch of zones and knowing whether I need to start over on the zone or not would be helpful.

Thanks
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 09:58 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