Jump to content

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
https://wrobot.eu/forums/topic/11244-c-stopfollowing-path-gathering/
Share on other sites

Sure,

I use Gathering profile "Néantine.xml" with.

The bot go to the node, but when he start to gather, he start to follow path at the same time...

Maybie do some event in a while for stay in .. But i don"t know how to do that ?

GatheringHelp.cs Néantine.xml

It is same problem like here: https://wrobot.eu/bugtracker/battleground-debuff-r1251/?do=findComment&comment=5834

Your plugin run code not on the same thread that your current product thread, in your code at the same time you do 2 tasks

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

 

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

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

            };

 

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