Jump to content

C# Stopfollowing Path [Gathering]


Recommended Posts

Hello @Droidz

I have do some C# code in a pluggin for check distance farming and stop go to the node by his ground Vector3 but.

But when i use my plugin i have a problem : The bot try to go the node AND to follow the path with gathering in the same time. You know how i can stop the following path, clean the node and restart the following path by the pluggin ?

 

Thx ?

 

 

Link to comment
Share on other sites

Thanks for this reply, but ... Thread is an object ?  this line don"t compile, i need to create a object thread and .abort after ?

public void GoToFarm()
    {
        _isLaunched = true;
        wManager.Wow.Helpers.Chat.SendChatMessage("Initialize", wManager.Wow.Enums.ChatTypeId.SAY);
        glaurierId = 181279;
        var glaurierObject =  ObjectManager.GetNearestWoWGameObject(ObjectManager.GetWoWGameObjectByEntry(glaurierId)) ;
        while (_isLaunched)
        {
            try
                {
                    var distance = ObjectManager.GetNearestWoWGameObject(ObjectManager.GetWoWGameObjectByEntry(glaurierId)).GetDistance;
                    if (ObjectManager.GetNearestWoWGameObject(ObjectManager.GetWoWGameObjectByEntry(glaurierId)).GetDistance < 200)
                    {
                        robotManager.Events.FiniteStateMachineEvents.OnBeforeCheckIfNeedToRunState += (engine, state, cancelable) =>
                            {
                                if (state is wManager.Wow.Bot.States.Farming && !state.NeedToRun)
                                {
                                    wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithGameObject(ObjectManager.GetNearestWoWGameObject(ObjectManager.GetWoWGameObjectByEntry(glaurierId)).Position, ObjectManager.GetNearestWoWGameObject(ObjectManager.GetWoWGameObjectByEntry(glaurierId)).Entry);             
                                    Thread.Sleep(5000);
                                    wManager.Wow.Helpers.Chat.SendChatMessage("In the new thread", wManager.Wow.Enums.ChatTypeId.SAY);
                                   
                                }
                            
                            };
                          
                    }
                   
                     
                //wManager.Wow.Helpers.Chat.SendChatMessage("Je suis sorti", wManager.Wow.Enums.ChatTypeId.SAY);
                }
                    
                //wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithGameObject(ObjectManager.GetNearestWoWGameObject(ObjectManager.GetWoWGameObjectByEntry(glaurierId)).Position, ObjectManager.GetNearestWoWGameObject(ObjectManager.GetWoWGameObjectByEntry(glaurierId)).Entry);
                
                
                
                catch (Exception e)
                {
                    Logging.WriteError("[GatheringHelp]: " + e);
                }
        }    

    }


	public void Initialize()
	{
        Thread newThread = new Thread(new ThreadStart(GoToFarm));  
      
    }

 

Link to comment
Share on other sites

Try with.....

 

GoToFarm(){

new Thread(() =>

// Your code here

}).Start();

}

 

And in initialize just do GoToFarm()

Edited by Inaru
Link to comment
Share on other sites

I do like this : @Droidz

public void Initialize()
	{
        _isLaunched = true;
        wManager.Wow.Helpers.Chat.SendChatMessage("Initialize", wManager.Wow.Enums.ChatTypeId.SAY);
        glaurierId = 181279;
        var glaurierObject =  ObjectManager.GetNearestWoWGameObject(ObjectManager.GetWoWGameObjectByEntry(glaurierId)) ;
        
        GoToFarm(glaurierId);
    }

    public void GoToFarm(int glaurierId)
    {
        try
                {
                    var distance = ObjectManager.GetNearestWoWGameObject(ObjectManager.GetWoWGameObjectByEntry(glaurierId)).GetDistance;
                    if (ObjectManager.GetNearestWoWGameObject(ObjectManager.GetWoWGameObjectByEntry(glaurierId)).GetDistance < 200)
                    {
                        robotManager.Events.FiniteStateMachineEvents.OnBeforeCheckIfNeedToRunState += (engine, state, cancelable) =>
                            {
                                if (state is wManager.Wow.Bot.States.Farming && !state.NeedToRun)
                                {
                                    wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithGameObject(ObjectManager.GetNearestWoWGameObject(ObjectManager.GetWoWGameObjectByEntry(glaurierId)).Position, ObjectManager.GetNearestWoWGameObject(ObjectManager.GetWoWGameObjectByEntry(glaurierId)).Entry);             
                                    Thread.Sleep(5000);
                                    wManager.Wow.Helpers.Chat.SendChatMessage("In the new thread", wManager.Wow.Enums.ChatTypeId.SAY);
                                   
                                }
                            
                            };
                          
                    } 
                }       
                catch (Exception e)
                {
                    Logging.WriteError("[GatheringHelp]: " + e);
                }

    }

He do as well but stay in "In the new thread" (say in chat).

I try this now @Inaru !!

Link to comment
Share on other sites

Thx @Inaru and @Droidz

I set some recusivity in my thread and it's working just fine as well ?

public void Initialize()
	{
        _isLaunched = true;
        wManager.Wow.Helpers.Chat.SendChatMessage("Initialize", wManager.Wow.Enums.ChatTypeId.SAY);
        glaurierId = 181279;
        var glaurierObject =  ObjectManager.GetNearestWoWGameObject(ObjectManager.GetWoWGameObjectByEntry(glaurierId)) ;
        
        GoToFarm(glaurierId);
    }

    public void GoToFarm(int glaurierId)
    {
        robotManager.Events.FiniteStateMachineEvents.OnBeforeCheckIfNeedToRunState += (engine, state, cancelable) =>
        {
         try
                {
                    var distance = ObjectManager.GetNearestWoWGameObject(ObjectManager.GetWoWGameObjectByEntry(glaurierId)).GetDistance;
                    if (ObjectManager.GetNearestWoWGameObject(ObjectManager.GetWoWGameObjectByEntry(glaurierId)).GetDistance < 200)
                    
                        if (state is wManager.Wow.Bot.States.Farming && !state.NeedToRun)
                        {
                            glaurierId = 181279;
                            wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithGameObject(ObjectManager.GetNearestWoWGameObject(ObjectManager.GetWoWGameObjectByEntry(glaurierId)).Position, ObjectManager.GetNearestWoWGameObject(ObjectManager.GetWoWGameObjectByEntry(glaurierId)).Entry);             
                            Thread.Sleep(5000);
                            wManager.Wow.Helpers.Chat.SendChatMessage("In the new thread", wManager.Wow.Enums.ChatTypeId.SAY);
                            GoToFarm(glaurierId);       
                        }     
                } 
                     
                catch (Exception e)
                {
                    Logging.WriteError("[GatheringHelp]: " + e);
                }

            };

 

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