Jump to content

Recommended Posts

What is tolerance for Z coordinate inside pathfinder for each type of TypeArea ?

In my experiments POLYAREA_BIGDANGER has not infinite height of cylinder, so I forced to play with Z on Blackspots for make Pathfinder avoid it in mountains or oceans

Link to comment
https://wrobot.eu/forums/topic/14787-pathfinder-z-coordinate-tolerance/
Share on other sites

  • 1 month later...

Can't understand why pathfinder goes through blacklisted by POLYAREA_BIGDANGER zones.

For sure Z tolerance I'm testing by folowing code:

bool result;
var path = PathFinder.FindPath(new Vector3(4674.098, 3099.332, 352.9073), out result);


var miniMapLandmarkName = "m";
wManager.Wow.Forms.UserControlMiniMap.LandmarksMiniMap.Remove(miniMapLandmarkName);
if (path.Count > 0)
     wManager.Wow.Forms.UserControlMiniMap.LandmarksMiniMap.Add(path[0], miniMapLandmarkName, System.Drawing.Color.Aquamarine, 10, miniMapLandmarkName, true);
foreach (var vector3 in path)
{
    if (wManager.wManagerSetting.IsBlackListedZone(vector3))
    wManager.Wow.Forms.UserControlMiniMap.LandmarksMiniMap.Add(vector3, miniMapLandmarkName, System.Drawing.Color.Blue, 10, "", true);
    else
    wManager.Wow.Forms.UserControlMiniMap.LandmarksMiniMap.Add(vector3, miniMapLandmarkName, System.Drawing.Color.Aquamarine, 10, "", true);
}

And i get image.png.95f438ff3d8722bbdea728e4d23e5c3f.png

Zone is too big to find 100% alternative path.

So what should I do to avoid blacklisted zone?

In POLYAREA_BIGDANGER cost is 500 yards by yard.

If crossing the BigDanger zone has a lower total cost than going around it, the bot will cross the zone.

		m_filter->setAreaCost((int)PolyArea::POLYAREA_GROUND, 10.0f);
		m_filter->setAreaCost((int)PolyArea::POLYAREA_WATER, 120.0f);
		m_filter->setAreaCost((int)PolyArea::POLYAREA_ROAD, 1.0f);
		m_filter->setAreaCost((int)PolyArea::POLYAREA_DOOR, 1.0f);
		m_filter->setAreaCost((int)PolyArea::POLYAREA_GRASS, 20.0f);
		m_filter->setAreaCost((int)PolyArea::POLYAREA_JUMP, 15.0f);
		m_filter->setAreaCost((int)PolyArea::POLYAREA_DANGER, 40.0f);
		m_filter->setAreaCost((int)PolyArea::POLYAREA_BIGDANGER, 500.0f);

You can try to bypass the area (BigDanger area) with "ROAD" type.

By default, "Ground" type is used (with cost of 10)

The fact that the zones overlap does not change anything.

 

1 - If to reach the destination, the character must do 50 yards in normal areas (ground) and 15 yards in bigdanger areas, then the total cost will be 50*10+15*500 = 8000
2
- If to reach the destination, the character must do 850 yards in normal areas (ground) (to  cross the bigdanger zones), then the total cost will be 850*10 = 8500

The bot will choose option 1 (less costs).

This system is not 100% reliable, especially if you are close (flight distance) to the destination

 

Well it seems to be a good new feature - to test not just whether a coordinate belongs to an blacklisted areas as sum of all.

But new difficulty appears: path will more complex to avoid overlaps :-) So.. maybe add custom zone with overlayed AreaCost property in new versions?

what means your's "yes" ? I mean POLYAREA_AVOID is good enough for avoid. But wManagerSetting.IsBlackListed() method doesn't take new POLYAREA_AVOID enum.

btw little bit more respect for author! take back your "fucks" and describe detailed your repeatable bug

wManager.wManagerSetting.ClearBlacklist();
wManager.wManagerSetting.AddBlackListZone(new Vector3(3437.02344, -2807.998, 231.762161), 100, ContinentId.Northrend, RDManaged.RD.PolyArea.POLYAREA_BIGDANGER, true);
wManager.wManagerSetting.CurrentSetting.AvoidBlacklistedZonesPathFinder = false;

bool result;
var path = PathFinder.FindPath(new Vector3(3215.589, -2845.045, 146.3819), new Vector3(3583.113, -2798.588, 175.9346), out result);

var m = "m";
wManager.Wow.Forms.UserControlMiniMap.LandmarksMiniMap.Remove(m);
wManager.Wow.Forms.UserControlMiniMap.LandmarksMiniMap.Add(path[0], m, System.Drawing.Color.Aquamarine, 10, m, true);
foreach (var vector3 in path)
{
    var color = wManager.wManagerSetting.IsBlackListedZone(vector3) ? System.Drawing.Color.Red : System.Drawing.Color.Aquamarine;
    wManager.Wow.Forms.UserControlMiniMap.LandmarksMiniMap.Add(vector3, m, color, 10, "", true);
}

image.png.b2c87a5dfe592cf563c76987ac751971.png

@Droidz test it please, smth broke

Here is POLYAREA_AVOID result:

image.png.6c9f48ac7e25ae65f3073d8c85973d37.png

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...