May 17, 20196 yr 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 ?
May 17, 20196 yr Author Well in fact with juste a while it's done .. ^^" Edit : Well in fact no ... xD @Droidz
May 18, 20196 yr Author 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
May 18, 20196 yr 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
May 18, 20196 yr Author Working like a charm, just need to see how go out the thread ? Thanks a lot !
May 18, 20196 yr I think its : Thread.Abort() Buut.... Read this just in case: https://stackoverflow.com/questions/14131608/how-to-terminate-a-thread-in-c Good luck. Edited May 18, 20196 yr by Inaru
May 18, 20196 yr Author 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)); }
May 18, 20196 yr Author @Inaru Only an assignation, a call or an increment in wait and expressions of object "new" can be use like an instruction @Droidz nothing change well i delete the while(_islaunched) {} , he skipp all the node ?
May 18, 20196 yr I think it is problem with "new ThreadStart" but you don't need to create new thread you can call "GoToFarm()" directly
May 18, 20196 yr Try with..... GoToFarm(){ new Thread(() => // Your code here }).Start(); } And in initialize just do GoToFarm() Edited May 18, 20196 yr by Inaru
May 18, 20196 yr Author 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 !!
May 19, 20196 yr Author 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