okay, M2s might not even be misrotated. Ryan said they were and it made alot of sense due to the way pather acts.
okay, M2s might not even be misrotated. Ryan said they were and it made alot of sense due to the way pather acts.
Pather only checks whether it can stand at each place it steps to (while planning a route and executing it). If between the last step and the current one there is an obstacle it doesn't see it. A fence is slim so its likely that it is not stepping on it. If it gets stuck (when it runs into it) it will blacklist that step.
e.g. below are two obstacles in a path, one is large 'a house' and would be stepped on, the other the fence is between two steps (running perpendicular to the path). Each step is shown as an 'x'.
x x [house x x ] x
x x x x [Fence] x x x
Last edited by darrensmith0125; 06-01-2009 at 07:32 AM.
My pather learns about new obsticles:
http://www.mmowned.com/forums/wow-me...ng-worlds.html
Although it doesnt really need to now as I precalculate 99% of them
Yes. It is based on a 2d Map - so it can have difficulty in 3d enviroments like undercity - the process of mining the data from the adt/wmo/m2 files takes a few minutes, and produces the 2d map seen in the video.
A* is the applied to find paths. When the path is blocked the map is updated and a new route planned.
MPQ access and ADT/M2/WMO parsing written in C#. No need for storm.
i think it would be great to enhance it into the third dimension, and i think the reason for ppather was to get rid of waypoints, so it should path correctly through towns as well.
Yes, but you'll need to add the extra code to determine the tile's texture, and store it somewhere. For my nav dumper, I use something similar to the following;
Obviously, I only dump 1 ADT file at a time, or I run into some wicked memory issues.Code:struct NavRegion { public Vector3D[] Vertices; // Determined from the tiles texture. public bool IsRoadOrPath; public bool IsWater; public bool IsLava; public int BaseScore { get { int ret = 10; if (IsLava) ret -= 5; if (IsWater) ret -= 2; if (IsRoadOrPath) ret += 5; return ret; } } }
I've made a dummy glider base to run ppather 1.04d. So far the main thing I am noticing it that the Glider API is all based on strings instead of the wowhead entryId. Assuming I get the thing to work at all, I'll use click to move, dostring and injected interact instead of the fussy keys of the Glider API. Then I'll move it to comparing numbers to improve performance. In the exceedingly unlikely event I get that far, I'll post back asking for help with mapping.
ppather is open source, my base is all on black magic so this will be something anyone can use.
Thanks all.
I think the ppather sources are ugly... just my 2 cents.
Last edited by darrensmith0125; 06-02-2009 at 04:24 PM.
PPather 1.04d was used by 10s of 1000s for almost 9 months. Software with that degree of usage will rarely be pretty.
I've got it compiling and moving with my base now. Tomorrow I'll add dostring to replace the GInterface stuff.
As far as I know, there is no public version of PPather with that fix. I'm planning to tinker with the code base to make it use wowhead/entryid and player GUID instead of strings for all its radar. I've kept the pather code separate and unchanged until now but I'll definitely make the improved code code available when I have it working.
I've found I had to be REALLY patient with pather when it came to fence's around the place. Some it would habdle fine, others it just plain didnt. Still love the way it works over all, after using it I just couldnt go back to waypoint botting
H4wker , not everyone wants to use injection, so you should leave the choice to the user which "method" they want to have in their program , if you make the changed pather available to the public.