Jump to content

ToPositionAndInteractWithNpc without pathfinding


craine

Recommended Posts

Hello,

i started looking at the classes/method list with a decompiler like DroidZ recomend in this post,

 

To find if there was a way to go on a specific position and interact with npc without using the pathfinder and, i haven't find anything (maybe i'm just blind).

Does something like,

MovementManager.GoAndInteractWithNpc(Path, 33759, 2, true);

exist ? It could be useful for taking quest when the pathfinder dosen't work correctly or just to follow a path and interact with npc in a scenario (or something like that).

If nothing like that has been created, do you know a way to interact with an npc without moving ? Something like:

wManager.wow.task.NPC.InteractWithNpc(33759, 3, false);

(with gossip options or not ~)

I realise now that it's a bit hard to explain in english, tell me if anything is not understandable

Link to comment
Share on other sites

you can't go to somewhere and interact with the npc without pathfinder :/

with this you can move without pathfinder:

MovementManager.MoveTo(new Vector3(123, 321, 1));

or

wManager.Wow.Helpers.TraceLine.TraceLineGo(new Vector3(123, 321, 1));

Right now i can't even find how to interact with NPC outside of pathfinder... Back to sleep

Link to comment
Share on other sites

Hello, Not tested, but like this:

        int entryIdNpc = 123456;
        var path = new List<Vector3>(); // your path
        MovementManager.Go(path);
        while (MovementManager.InMovement &&
               Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause &&
               !Conditions.IsAttackedAndCannotIgnore)
        {
            // Wait follow path
            Thread.Sleep(100);
        }
        MovementManager.StopMove();
        if (path[path.Count - 1].DistanceTo(ObjectManager.Me.Position) < 10)
        {
            // easy way:
            GoToTask.ToPositionAndIntecractWithNpc(path[path.Count - 1], entryIdNpc); 

            // no easy:
            /*var u = ObjectManager.GetNearestWoWUnit(ObjectManager.GetWoWUnitByEntry(entryIdNpc));
            if (u.IsValid)
            {
                // can need to go to but I'll not implement it
                Interact.InteractGameObject(u.GetBaseAddress);
            }*/
        }

 

Link to comment
Share on other sites

So, i took a break and i'm back !

On 01/09/2016 at 4:50 PM, Droidz said:

Hello, Not tested, but like this:


        int entryIdNpc = 123456;
        var path = new List<Vector3>(); // your path
        MovementManager.Go(path);
        while (MovementManager.InMovement &&
               Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause &&
               !Conditions.IsAttackedAndCannotIgnore)
        {
            // Wait follow path
            Thread.Sleep(100);
        }
        MovementManager.StopMove();
        if (path[path.Count - 1].DistanceTo(ObjectManager.Me.Position) < 10)
        {
            // easy way:
            GoToTask.ToPositionAndIntecractWithNpc(path[path.Count - 1], entryIdNpc); 

            // no easy:
            /*var u = ObjectManager.GetNearestWoWUnit(ObjectManager.GetWoWUnitByEntry(entryIdNpc));
            if (u.IsValid)
            {
                // can need to go to but I'll not implement it
                Interact.InteractGameObject(u.GetBaseAddress);
            }*/
        }

 

Well, it's not what i was expected but since it work i have to tell that you are a genius !

For futur user, i just add the 

wManager.Wow.Bot.Tasks.

Here is the one i used:

int entryIdNpc = 33759;
        var path = new List<Vector3>() {
new Vector3(8451.504f, 1074.231f, 554.4833f, "None"),
new Vector3(8449.256f, 1067.841f, 554.4672f, "None"),
new Vector3(8447.452f, 1061.072f, 554.3987f, "None"),
}; //path
        MovementManager.Go(path);
        while (MovementManager.InMovement &&
               Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause &&
               !Conditions.IsAttackedAndCannotIgnore)
        {
            // Wait follow path
            Thread.Sleep(100);
        }
        MovementManager.StopMove();
        if (path[path.Count - 1].DistanceTo(ObjectManager.Me.Position) < 10)
        {
            // easy way:
            wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(path[path.Count - 1], entryIdNpc); 

        }

 

If somebody is interested, here is a quick quest file that show differences between the pathfinder method and the droidz one. 

I realy suggest you to take a look at it because the way the bot react is realy interesting 

(Btw: the bot will go to the silver turnament on this NPC so, don't be too far

Pathfinder vs DroidZ.xml

Let the quester do all until the end message open up

Link to comment
Share on other sites

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