# Forum > World of Warcraft > World of Warcraft Bots and Programs > WoW Memory Editing >  PPather and fences - did it ever work?

## Hawker

The babbot team have released a working version of the ppather nav system. I've implemented it today and it works pretty well.

SourceForge.net Repository - [babbot] Index of /trunk/Caronte

One thing I've noticed is that it can navigate buildings, stairs, etc. easily but the fence around the church in Deathknell traps it every time.

Does anyone know if this is a limitation of the reader itself? Or is it just an error in the update for wotlk that I need to track down and fix?

----------


## naa

As long as i have been using PPather it has always gotten stuck on the fence in AB.

----------


## Hawker

> As long as i have been using PPather it has always gotten stuck on the fence in AB.


Ha! Mine preferred to swim under the BS bridges.

I often went to bed, letting the Undead 1-20 task run and I'd wake up with a toon in the teens. So I assume the stuck detector was a way to deal with this? Or can you enlighten me more?

----------


## Ugge

It has always been that way. M2 models are misrotated. 

I took a quick look just now. I think line 610 in MPQTriangleSupplier.cs:
float dir_y = mi.dir.y - 90;
is supposed to be:
float dir_y = mi.dir.y + 90;

I havent tested it though, it an educated guess. Because thats the value i used in my mpq renderer.

----------


## Hawker

> It has always been that way. M2 models are misrotated. 
> 
> I took a quick look just now. I think line 610 in MPQTriangleSupplier.cs:
> float dir_y = mi.dir.y - 90;
> is supposed to be:
> float dir_y = mi.dir.y + 90;
> 
> I havent tested it though, it an educated guess. Because thats the value i used in my mpq renderer.



Tested it and it did the same fence running exercise. Do you have a URL on how to render the M2 correctly?

----------


## barthen

> The babbot team have released a working version of the ppather nav system.


Mmm, Caronte... Looks familiar:
my crappy ppather patch

GPL rulez  :Smile: 

Anyway, if any of the babbot developers is reading this post, I'd like to point that:
You can safely delete the "Helpers" folder as it isn't used anywhere in the codeThere are newer betas of PPather which are fasterI think you're better off throwing this code away. Really, I'm talking from experience. In the open it works fine, but in complicated environments it sucks really hard :yuck:


And good luck with babbot, the code looks pretty well done.

----------


## Hawker

> Mmm, Caronte... Looks familiar:
> my crappy ppather patch
> 
> GPL rulez 
> 
> Anyway, if any of the babbot developers is reading this post, I'd like to point that:
> You can safely delete the "Helpers" folder as it isn't used anywhere in the codeThere are newer betas of PPather which are fasterI think you're better off throwing this code away. Really, I'm talking from experience. In the open it works fine, but in complicated environments it sucks really hard :yuck:
> 
> 
> And good luck with babbot, the code looks pretty well done.


Well as I have it working, I have to ask, where are these new faster versions please?

Also, as you say GPL rules. Many thanks for your contribution - even if you think its crappy I've enjoyed watching it work.  :Smile:

----------


## barthen

> Well as I have it working, I have to ask, where are these new faster versions please?
> 
> Also, as you say GPL rules. Many thanks for your contribution - even if you think its crappy I've enjoyed watching it work.


You can download them here:
Files Section - Pather

----------


## Hawker

> You can download them here:
> Files Section - Pather





> Instructions
> 
> 1. Download or update Glider to 1.8.0


Looks like your "crappy" patch is the bleeding edge release!

Thanks anyway.

----------


## Ugge

Hawker: Did you delete the bin-files in between tests?
Info is available here: WoW.Dev Wiki:Community Portal - WoW.Dev Wiki

----------


## Hawker

> Hawker: Did you delete the bin-files in between tests?
> Info is available here: WoW.Dev Wiki:Community Portal - WoW.Dev Wiki


I deleted the pathinfo folder and still the toon ran precisely at the fence between Shallow Grave and Shadow Priest Sarvis in the Deathknell church.

I've something like 5 different ppather code bases and in all of them its + 90. If you are right, this is an old bug and there may well be more like it.

Thanks anyway - at least it does generate a path and I can force it to use certain spots.



```
            if (!Equals(null, path) &&
                    path.locations.Count > 0)
            {
                int a = 0;

                foreach (Pather.Graph.Location loc in path.locations)
                {

                    if (a % 3 == 0 &&
                        a < path.locations.Count)
                    {
                        ClickToMove(path.locations[a]);
                        Thread.Sleep(1300);
                        // crude stuck management
                        Pather.Graph.Location mySpot = new Pather.Graph.Location(Me.Location);
                        if (mySpot.GetDistanceTo(path.locations[a]) > 5)
                        {
                            ClickToMove(path.locations[a - 2]);
                            Thread.Sleep(505);
                            ClickToMove(path.locations[a - 1]);
                            Thread.Sleep(505);
                            ClickToMove(path.locations[a]);
                            Thread.Sleep(505);
                        }
                    }
                    ++a;
                }
            }
```

Note: the modulus 3 is an attempt to reduce the number of clicks. I can't get ppather to deliver less waypoints yet.

----------


## risyer

Pather doesn't load most of the M2 models post 3.0.9 since blizzard fixed the ADTs and corrected the file names. In 3.0.9 they where all ending with .mdx. Now most of the ADTs are fixed and the model file names have the correct .m2 ending.

change:


```
// change .mdx to .m2
string file=path.Substring(0, path.Length-4)+".m2";
```

to (also import System.IO):


```
// Change .mdx to .m2 if needed
string file = path;
if (Path.GetExtension(path).Equals(".mdx"))
{
  file = Path.ChangeExtension(path, ".m2");
}
```

I have no idea if it's +90 or -90. In my code base it's -90. Can someone confirm +90 is correct?

----------


## Ugge

risyer: nice find. that might be whats causing hawkers problems too. (maybe even a combination)

The rotation being wrong is indeed an old bug. Afaik its been there since pontus originally made pather. Im gonna try to confirm it tomorrow.

----------


## risyer

> The rotation being wrong is indeed an old bug. Afaik its been there since pontus originally made pather. Im gonna try to confirm it tomorrow.


Hmm. But then the Wow.Dev Wiki would be false. See ADT - WoW.Dev Wiki. The WMOs would be rotated wrong also. Plus the svn - Revision 15: /MPQNav/MPQNav/MPQ implementation would be faulty. I can't imagine they all use false rotation. So I guess -90 is correct. But maybe I find some time to visually confirm it.

----------


## Hawker

With +90 I saw no improvement.

With risyer's change, the bot actually came close to making it from Mordo to Shadow Priest Sarvis but sometimes gets caught in the gate to Deathknell and it cannot get past the steps into the church.

I think its an interesting tool and useful for navigating to and from mobs on patrol. But to use in cities, you need to specify waypoints it must use. For example, doorways need 3 spots to ensure the bot will go in front of building and walk straight through. I'd see this as something that a bot user should do - we need only make sure the bot has a button to record waypoints.

I've done a quick code comparison with Barthens version and the "official" versions from the ppather site. His are marked with copyright of Pontus Borg. The official ones are marked with GPL. If you delete the copyright notices, the line counts are the same. 

In the absence of an open source navmesh, this is a nice tool. If there are more bugs that need fixing, please let me know and I'll fix it and host the project on sourceforge.net

----------


## Ugge

okay, M2s might not even be misrotated. Ryan said they were and it made alot of sense due to the way pather acts.

----------


## darrensmith0125

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

----------


## Hawker

> Pather only checks whether it can stand at each place it steps to. 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 only 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


Very interesting.

I don't understand the code that implements the A* algorithm probably as I don't understand the underlying data. Are road tiles visible to the code as it stands now? And if so, could I add a weighting system?

----------


## testout

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

----------


## Hawker

> 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


Very nice. That has to be a whole new codebase?

----------


## testout

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.

----------


## Hawker

> 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.


In your opinion, can the existing ppather be tweaked to score road tiles higher than fence tiles?

----------


## blamani

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.

----------


## Apoc

> In your opinion, can the existing ppather be tweaked to score road tiles higher than fence tiles?


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;



```
    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;
            }
        }
    }
```

Obviously, I only dump 1 ADT file at a time, or I run into some wicked memory issues.

----------


## Hawker

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.

----------


## testout

I think the ppather sources are ugly... just my 2 cents.

----------


## darrensmith0125

> Pather doesn't load most of the M2 models post 3.0.9 since blizzard fixed the ADTs and corrected the file names. In 3.0.9 they where all ending with .mdx. Now most of the ADTs are fixed and the model file names have the correct .m2 ending.
> 
> change:
> 
> 
> ```
> // change .mdx to .m2
> string file=path.Substring(0, path.Length-4)+".m2";
> ```
> ...


If your pather version does not include this fix then the trees and various other models are invisible to pather. To illustrate this see the image below which is what pather sees before and after the fix at the Tauren starter area "Camp Narache".

----------


## Hawker

> I think the ppather sources are ugly... just my 2 cents.


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. 




> If your pather version does not include this fix then the trees and various other models are invisible to pather. To illustrate this see the image below which is what pather sees before and after the fix at the Tauren starter area "Camp Narache".


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.

----------


## ynoorb

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

----------


## blamani

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.

----------


## Hawker

> 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.


You are totally free to write a dummy human interface device driver that cannot be detected by Warden. I doubt it will take more than a few months. I leave the choice to you.

----------


## Robske

> 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.



Just out of curiosity, why are you so scared of "injection"...

----------


## Cypher

> Just out of curiosity, why are you so scared of "injection"...



Injektunz iz skary.  :Frown:

----------


## blamani

Im not scared, i just think people that dont want to should have the possibility to use it as well. Just a small missunderstanding on your side it seems

----------


## aaró

Sorry is this pather working with wow? or am I just dreamiing?

----------


## miceiken

If you fix it, it will work.
Fantastic?

----------


## klufas

> Im not scared, i just think people that dont want to should have the possibility to use it as well. Just a small missunderstanding on your side it seems


I don't believe he had any misunderstanding, if you want to change things go ahead, don't expect him to cater to your tastes when you're not giving him anything.

----------


## tanis2000

Here I am!  :Smile:  

@barthen: your adapted PPather code has been invaluable.. god bless GPL!  :Smile: 

As far as I have been able to work with it, it looks like there are plenty of variations of PPather around. One of the guys working on BabBot pointed to me this one: https://openwow.net/svn/pather-lite/
which seems to be a very stripped down version of PPather. Basicly just the pathing code and nothing else. But I couldn't understand from which version of PPather it was taken.

It would be cool if someone took over the PPather code, stripped it of all the unnecessary fuss and fixed the outstanding bugs like those pointed out in this post and released it to the public. I have a member of the team currently working on nav meshes but having just one project that does it all would really be the best choice. 

btw I'm still stuck with detecting on which continent the player.. as far as I could see, PPather needs to know which continent to work from in order to extract the data from the correct MPQ file. And again.. having something that does the extraction of all the needed stuff once and for all the first time you run your bot would really make things faster for those that have the hdd space to invest on (almost anyone)

----------


## Gorzul

> btw I'm still stuck with detecting on which continent the player.. as far as I could see, PPather needs to know which continent to work from in order to extract the data from the correct MPQ file. ...


Read the "RealZoneText" from memory or via GetRealZoneText() and get the "ContinentID" from DBFilesClient\AreaTable.dbc.



```
Field ID 	 Type 	         Description
0 	         uint 	         AreaID
1 	         uint 	         Continent (refers to a WorldID)
2 	         uint 	         Region (refers to an AreaID)
3 	         bitfield 	 Flags
11 	         string 	 Name
```

----------


## BoogieManTM

> Here I am!  
> 
> @barthen: your adapted PPather code has been invaluable.. god bless GPL! 
> 
> As far as I have been able to work with it, it looks like there are plenty of variations of PPather around. One of the guys working on BabBot pointed to me this one: https://openwow.net/svn/pather-lite/
> which seems to be a very stripped down version of PPather. Basicly just the pathing code and nothing else. But I couldn't understand from which version of PPather it was taken.
> 
> It would be cool if someone took over the PPather code, stripped it of all the unnecessary fuss and fixed the outstanding bugs like those pointed out in this post and released it to the public. I have a member of the team currently working on nav meshes but having just one project that does it all would really be the best choice. 
> 
> btw I'm still stuck with detecting on which continent the player.. as far as I could see, PPather needs to know which continent to work from in order to extract the data from the correct MPQ file. And again.. having something that does the extraction of all the needed stuff once and for all the first time you run your bot would really make things faster for those that have the hdd space to invest on (almost anyone)


That's my branch, and i'll be doing the m2 fix on it today hopefully. It's based on 1.0.4d, not that much changed in that code in any of the versions of pather ever to be released to the public.

----------


## Hawker

> ...
> 
> btw I'm still stuck with detecting on which continent the player.. as far as I could see, PPather needs to know which continent to work from in order to extract the data from the correct MPQ file. And again.. having something that does the extraction of all the needed stuff once and for all the first time you run your bot would really make things faster for those that have the hdd space to invest on (almost anyone)




```
       public Mover(LocalPlayer Me)
        {
            const uint GetContinentName = 0x010A51F8;
            string contintentName = Game.wow.ReadUTF8String(GetContinentName, 40);
            ppather.Init(contintentName);
            this.Me = Me;
            mySpot.Update(Me.Location);
            Logger.logToFile("PPather started on " + contintentName + ".");
        }
```

Problem solved.

In my copy, the offset lives in Offsets.cs but its simpler to illustrate like this.

----------


## tanis2000

> Read the "RealZoneText" from memory or via GetRealZoneText() and get the "ContinentID" from DBFilesClient\AreaTable.dbc.


I went for the code-injected way of doing it. I'm calling DoString with the following code: "SetMapToCurrentZone(); continent = GetCurrentMapContinent();"

And I read the continent variable and go through a switch as it's only 6 possible values apparently (not including battlegrounds / instances as I'm not really interested in them at the moment).

I could as well just dump the content of AreaTable.dbc and get a list in the bot code but I'm too lazy to do that atm  :Smile: 

On the other hand, did anyone figure out if models are actually being misrotated along the Y axis or not?

----------


## barthen

> And I read the continent variable and go through a switch as it's only 6 possible values apparently (not including battlegrounds / instances as I'm not really interested in them at the moment).


Hey Tanis, yesterday I checked out the babbot source code and I think I found a bug in the wowplayer.cs file (in the function returning the continent name). You're returning "Outland" but I think the continent name should be "Expansion01". 

I can't test it right now so maybe I'm mistaken.

By the way, has babbot a forum of its own?

----------


## blamani

https://apps.sourceforge.net/phpbb/babbot/index.php? , yes it has

----------


## tanis2000

> Hey Tanis, yesterday I checked out the babbot source code and I think I found a bug in the wowplayer.cs file (in the function returning the continent name). You're returning "Outland" but I think the continent name should be "Expansion01".


Yeah you're right. I'm going to fix it right now. Thank you mate!

----------


## Gorzul

> On the other hand, did anyone figure out if models are actually being misrotated along the Y axis or not?


If you use ""float dir_y = wi.dir.y - 90;" in your ppather-code the orientation of the models is ok. Small example:



"float dir_y = wi.dir.y + 90;":


"float dir_y = wi.dir.y - 90;":

----------


## tanis2000

Awesome Gorzul! Thanks for checking it out!

----------


## Millionarie

> Pather doesn't load most of the M2 models post 3.0.9 since blizzard fixed the ADTs and corrected the file names. In 3.0.9 they where all ending with .mdx. Now most of the ADTs are fixed and the model file names have the correct .m2 ending.
> 
> change:
> 
> 
> ```
> // change .mdx to .m2
> string file=path.Substring(0, path.Length-4)+".m2";
> ```
> ...


To be 100% sure that all the models are loaded right we should take care about ".mdl" files:



```
            //Change .mdl & .mdx to .m2
            string file = path;
            if (Path.GetExtension(path).Equals(".mdx"))
            {
                file = Path.ChangeExtension(path, ".m2");
            }
            else if (Path.GetExtension(path).Equals(".mdl"))
            {
                file = Path.ChangeExtension(path, ".m2");
            }
```

Anyway sometimes ppather tries to butt some objects like trees, fences etc (error in collision detection code?)

btw Have anybody integrated liquidvision into ppather?

----------


## Hawker

Millionarie - liquidvision is closed source and not cheap.

Can you explain or verify the mdl change please? I'm trying to incorporate all improvements possible.

----------


## Millionarie

"LiquidVision will ALWAYS be free!" (c) Welcome to the Frontpage start page,
however it isn't opensource.
You can verify mdl change by adding debug output in the WmoFile.cs:


```
	public override Model Load(String path)
           {

            			// Change .mdx to .m2 if needed
            			string file = path;
            			if (Path.GetExtension(path).Equals(".mdx"))
            			{
                			    file = Path.ChangeExtension(path, ".m2");
            			}

			//Console.WriteLine("Load model " + path);
			string localPath="PPather\\model.tmp";
			if(set.ExtractFile(file, localPath))
			{
				Model w=new Model();
				w.fileName=file;
				ModelFile wrf=new ModelFile(localPath, w);
				return w;
			}
			Console.WriteLine("!!! Can't load " + path); //DEBUG OUTPUT!!!
			return null;
		}
	}
```

Without mdl change you'll get something like this:
01:08:02.3593 [Debug] [PPather] !!! Can't load world\azeroth\duskwood\passivedoodads\webs\webdangle01.mdl
01:08:02.3593 [Debug] [PPather] !!! Can't load world\azeroth\duskwood\passivedoodads\webs\webstretch01.mdl
01:08:02.3593 [Debug] [PPather] !!! Can't load world\azeroth\duskwood\passivedoodads\webs\webdangle01.mdl
01:08:02.3593 [Debug] [PPather] !!! Can't load world\azeroth\duskwood\passivedoodads\webs\webdangle01.mdl
01:08:02.3593 [Debug] [PPather] !!! Can't load world\azeroth\duskwood\passivedoodads\webs\webdangle01.mdl
01:08:02.3593 [Debug] [PPather] !!! Can't load world\azeroth\duskwood\passivedoodads\webs\webdangle01.mdl
01:08:02.3593 [Debug] [PPather] !!! Can't load world\azeroth\duskwood\passivedoodads\webs\webdangle01.mdl
01:08:02.3593 [Debug] [PPather] !!! Can't load world\azeroth\duskwood\passivedoodads\webs\webstretch01.mdl
01:08:02.3593 [Debug] [PPather] !!! Can't load world\azeroth\duskwood\passivedoodads\webs\webdangle01.mdl
01:08:02.3593 [Debug] [PPather] !!! Can't load world\generic\human\passive doodads\lanterns\generallantern02.mdl
01:08:02.3593 [Debug] [PPather] !!! Can't load world\generic\human\passive doodads\lanterns\generallantern03.mdl
01:08:02.3593 [Debug] [PPather] !!! Can't load world\generic\human\passive doodads\crates\stormwindcrate01.mdl
01:08:02.3593 [Debug] [PPather] !!! Can't load world\generic\human\passive doodads\lanterns\generallantern02.mdl
01:08:02.3593 [Debug] [PPather] !!! Can't load world\generic\passivedoodads\misc\minecars\caveminecarwrecked02.mdl
01:08:02.3593 [Debug] [PPather] !!! Can't load world\generic\human\passive doodads\lanterns\generallantern03.mdl
01:08:02.3593 [Debug] [PPather] !!! Can't load world\generic\human\passive doodads\crates\stormwindcrate01.mdl
01:08:02.3593 [Debug] [PPather] !!! Can't load world\generic\human\passive doodads\buckets\cavekoboldbucket.mdl
01:08:02.3593 [Debug] [PPather] !!! Can't load world\azeroth\elwynn\passivedoodads\shovel\shovel.mdl
01:08:02.3593 [Debug] [PPather] !!! Can't load world\azeroth\westfall\passivedoodads\crate\westfallcrate.mdl
01:08:02.3593 [Debug] [PPather] !!! Can't load world\azeroth\westfall\passivedoodads\barrel\westfallbarrel01.mdl
01:08:02.3593 [Debug] [PPather] !!! Can't load world\generic\human\passive doodads\ropes\cavekoboldropecoil.mdl
01:08:02.3593 [Debug] [PPather] !!! Can't load world\generic\human\passive doodads\lanterns\generallantern03.mdl
01:08:02.3593 [Debug] [PPather] !!! Can't load world\generic\human\passive doodads\crates\stormwindcrate01.mdl
01:08:02.3593 [Debug] [PPather] !!! Can't load world\azeroth\elwynn\passivedoodads\shovel\shovel.mdl
01:08:02.3593 [Debug] [PPather] !!! Can't load world\generic\passivedoodads\well\well.mdl
01:08:02.3593 [Debug] [PPather] !!! Can't load world\generic\human\passive doodads\lanterns\generallantern03.mdl
01:08:02.3593 [Debug] [PPather] !!! Can't load world\generic\human\passive doodads\lanterns\generallantern03.mdl
01:08:02.3593 [Debug] [PPather] !!! Can't load world\azeroth\westfall\passivedoodads\barrel\westfallbarrel01.mdl
01:08:02.3593 [Debug] [PPather] !!! Can't load world\generic\passivedoodads\misc\wheelbarrow\caveminewheelbarrow01.mdl
01:08:02.3593 [Debug] [PPather] !!! Can't load world\generic\human\passive doodads\crates\stormwindcrate01.mdl

----------


## miceiken

Some nice research here guys, thanks alot  :Smile:

----------

