Jump to content

MrCeeJ

Elite user
  • Posts

    16
  • Joined

  • Last visited

Everything posted by MrCeeJ

  1. Icy Veins is a talent, but if you don't have it it shouldn't be casting it. can you send some logs over on discord?
  2. I'll take a look at this, we are currently redoing all the classes and settings to make them easier to use and clearer, so when we do the Paladin ones we will be updating these to be spec-specific, and so if there is an issue with the setting being ignored that will fix it.
  3. I have refactored it a little, to suit my preferred 'functional' style. Not sure if it is everyone's cup of tea so I'll leave the original, but I do enjoy being able to chain functions with simple boolean return values, and it makes it very easy to compose and modify things like dps rotations that can form very complex decision trees. I am curious what other devs think, it is full of side-effects and empty statements, which are normally considered smells as they can make the code hard to understand and work with, but since the purpose of the refactoring is to make it easier to understand and work with I don't think they are necessarily valid objections here. Finally, I am sorry the capitalisation is all over the place, coming from a Java / Python / Prolog background the .net capitalisation always confuses me.. using System; using System.Collections.Generic; using System.ComponentModel; using System.Configuration; using System.IO; using System.Linq; using System.Reflection; using System.Threading; using robotManager.Helpful; using robotManager.FiniteStateMachine; using robotManager.Products; using wManager.Plugin; using wManager.Wow.Helpers; using wManager.Wow.Bot.States; using wManager.Wow.Enums; using wManager.Wow.ObjectManager; using wManager.Wow.Class; public class Main : wManager.Plugin.IPlugin { public void Initialize() { Logging.Write("JCToken: Started."); int count = 0; while (TurnIn() || Repair() || GetQuest()){} Logging.Write("JCToken: Finished"); } private bool TurnIn() { return HaveRepairedItem() && CompleteQuest(); } private bool Repair() { return HaveQuest() && RepairItem(); } private bool GetQuest() { return HaveItems() && AcceptQuest(); } private bool HaveRepairedItem() { return HaveItemId(43298); } private void CompleteQuest() { wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(ObjectManager.Me.Position, 28701); System.Threading.Thread.Sleep(128); Quest.SelectGossipActiveQuest(1); System.Threading.Thread.Sleep(128); Quest.CompleteQuest(); System.Threading.Thread.Sleep(256); return true; } private bool HaveQuest() { return HaveItemId(43299); } private bool RepairItem() { foreach (WoWItem item in Bag.GetBagItem()) { ItemInfo info = item.GetItemInfo; int itemId = GetId(info.ItemLink); if (itemId == 43299) { List<int> bagAndSlot = Bag.GetItemContainerBagIdAndSlot(info.ItemName); Lua.LuaDoString("UseContainerItem(" + bagAndSlot[0] + "," + bagAndSlot[1] + ")"); System.Threading.Thread.Sleep(12500); return true; } } return false; } private bool HaveItems() { return HaveItemId(43297) && HaveItemId(36923); } private bool AcceptQuest() { foreach (WoWItem item in Bag.GetBagItem()) { ItemInfo info = item.GetItemInfo; int itemId = GetId(info.ItemLink); if (itemId == 43297) { List<int> bagAndSlot = Bag.GetItemContainerBagIdAndSlot(info.ItemName); Lua.LuaDoString("UseContainerItem(" + bagAndSlot[0] + "," + bagAndSlot[1] + ")"); Lua.LuaDoString("AcceptQuest()"); return true; } } return false; } private bool HaveItemId(int Id) { foreach (WoWItem item in Bag.GetBagItem()) { ItemInfo info = item.GetItemInfo; int itemId = GetId(info.ItemLink); if (itemId == Id) { return true; } } return false; } private int GetId(String itemLink) { String pattern = "Hitem:"; int index = itemLink.IndexOf(pattern); return Int32.Parse(itemLink.Substring(index + 6).Split(':')[0]); } public void Settings(){} public void Dispose() { Logging.Write("JCToken: Stopped."); } }
  4. So after grinding for a while in northrend you will probably have hundreds of these, if you actually want to turn them in yourself it can take a long time, so I wrote a little plugin to do it for you. You need the Damaged Necklaces and Gems in your inventory, and need to be near the Grand Master trainer in Dalaran in order to spam turn them in. To use the plugin just save it in your plugins folder, turn on WRotation and hit go. Some plugins can interfere with it (when they pause the bot) but it should be ok, you can always turn them off while running it. Finally here is the source code, feel free to give me suggestions to make it better, I just hacked away using the API until it worked, so I am sure there are better ways of doing things, so happy to take suggestions and improve it (which is really why I'm posting it here). The source is also attached for easy downloading. Have fun ๐Ÿ™‚ using System; using robotManager.Helpful; using wManager.Wow.Helpers; using System.Collections.Generic; using System.ComponentModel; using System.Configuration; using System.IO; using System.Linq; using System.Reflection; using System.Threading; using robotManager.FiniteStateMachine; using robotManager.Products; using Timer = robotManager.Helpful.Timer; using wManager.Plugin; using wManager.Wow.Bot.States; using wManager.Wow.Enums; using wManager.Wow.ObjectManager; using wManager.Wow.Class; public class Main : wManager.Plugin.IPlugin { public void Initialize() { Logging.Write("JCTokenTurnIn: Started."); MakeAllTokens(); } private void MakeAllTokens(){ bool crafting = true; int count = 0; while(crafting) { if (HaveRepairedItem()) { TurnIn(); count++; } else if (HaveQuest()){ RepairItem(); } else if (HaveItems()) { AcceptQuest(); } else { crafting = false; } } Logging.Write("JCTokenTurnIn: Finished, tokens made: "+count); } private bool HaveRepairedItem() { return HaveItemId(43298); } private void TurnIn() { wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(wManager.Wow.ObjectManager.ObjectManager.Me.Position, 28701); System.Threading.Thread.Sleep(128); Quest.SelectGossipActiveQuest(1); System.Threading.Thread.Sleep(128); Quest.CompleteQuest(); System.Threading.Thread.Sleep(256); } private bool HaveQuest() { return HaveItemId(43299); } private void RepairItem() { foreach (WoWItem item in Bag.GetBagItem()) { ItemInfo info = item.GetItemInfo; int ItemId = getId(info.ItemLink); if (ItemId == 43299) { List<int> bagAndSlot = Bag.GetItemContainerBagIdAndSlot(info.ItemName); Lua.LuaDoString("UseContainerItem(" + bagAndSlot[0] + "," + bagAndSlot[1] + ")"); System.Threading.Thread.Sleep(12500); return; } } } private bool HaveItems() { return HaveItemId(43297) && HaveItemId(36923); } private void AcceptQuest() { foreach (WoWItem item in Bag.GetBagItem()) { ItemInfo info = item.GetItemInfo; int ItemId = getId(info.ItemLink); if (ItemId == 43297) { List<int> bagAndSlot = Bag.GetItemContainerBagIdAndSlot(info.ItemName); Lua.LuaDoString("UseContainerItem(" + bagAndSlot[0] + "," + bagAndSlot[1] + ")"); Lua.LuaDoString("AcceptQuest()"); } } } private bool HaveItemId(int Id) { foreach (WoWItem item in Bag.GetBagItem()) { ItemInfo info = item.GetItemInfo; int ItemId = getId(info.ItemLink); if (ItemId == Id) { return true; } } return false; } private int getId(String itemLink){ String pattern = "Hitem:"; int index = itemLink.IndexOf(pattern); return Int32.Parse(itemLink.Substring(index+6).Split(':')[0]); } public void Settings() {} public void Dispose() { Logging.Write("JCTokenTurnIn: Stopped."); } } JCTokenTurnIn.cs
  5. There are some good blog posts about minimising the graphics settings, there is a lot you can do both ingame and in the config.xml file to reduce the CPU usage. Some of the FCs are not very efficient, and without caching and sensible use of memory they can actually be very CPU intensive, even if the actual code is very simple, so depending what you are doing that can also be an issue. I have no problem running 5-10 bots on a single (good) PC, along with the wow clients and servers, so depending on how old the laptop is it should be able to handle one, epsecially if it can run wow fine on its own.
  6. The Wholsome team are working on a Dungeon Crawler, which is designed for 5 bots to run dungeons via the LFG tool, and there are some other Products that do solo dungeons etc, if you browse the fourms and downloads you will find them
  7. If you want to change which installed version of wow to use, the value is in Settings/WRobotGeneralSetting.xml, but as Droidz mentioned, it is unlikely to work if the client has been modified.
  8. There is a feral tank profile included in the AIO (It is currently beta, but is working well so far)
  9. One thing, the logging into the server is taking a long time (10s+), I don't know if you have changed how it works or if there is a built in delay / timeout or something. It makes testing code a pain as everytime I stop and restart the bot it now takes twice as long for it to load up and start running my code.
  10. Thanks for the update, good luck getting the new server built! Lets hope the new place has a better plumbing๐Ÿ™‚
  11. 7 hours later any news? how long does it take to re-deploy a server?
  12. Are there any updates? Is there a feed or something we can follow to know when it will be back up?
  13. Awesome work! This plus the dungonsuite from nudl just got me up and running 5 mans in no time at all ๐Ÿ™‚ The low level profiles are a bit shakey (prot pally and shadow priest are very oom) but super excited to get this working right away with no issues, and I can edit the source and produce smother runs myself ๐Ÿ™‚ Thanks again!
ร—
ร—
  • Create New...