Jump to content

duthibaut

Members
  • Posts

    49
  • Joined

  • Last visited

Reputation Activity

  1. Like
    duthibaut reacted to Droidz in C# Stopfollowing Path [Gathering]   
    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
  2. Like
    duthibaut reacted to Droidz in Is Lua.LuaDoString using a lock?   
    Hello,
    (when you don't use lock frame) Lua is slow because WRobot need to inject code in wow (that run in next frame refresh). If you call 5 times lua (on 1 thread) you need to wait ~5 wow frames, ~80ms with 60 fps.
    You can:
    - lockframe (it is a easier way, and in some case better)
    - avoid to use lua (but a lot of wrobot api methods use lua it is hard to know what methods you can use or not)
    - try to avoid useless lua call (by sample if you use "if (lua.do("is ok") && me.health < 10 && me.havetarget)" replace it by "if (me.havetarget && me.health < 10 && lua.do("is ok"))"
    - combine your lua scripts (if you use several lua calls in one condition try to combine it to one call)
  3. Like
    duthibaut reacted to Andoido in Quest Profile - Code Snippets Part 3 - UPDATED! 7.28.19   
    Added a huge update from the last version , Added quite a bit more code's
  4. Like
    duthibaut reacted to Andoido in Quest Profile - Code Snippets Part 3 - UPDATED! 7.28.19   
    HUGE UPDATE!!!
     
     
    So this is my new updated version.
    Add everything in this code box to a Notepad++ ffile or in Visual Studio. and done! Hope you guys benefit from it all.
    I used  // Comments to add important information so, be sure to check it out.
    I hope this helps!
     
    With the release of my new HORDE REMAKE
    I have decided to release ALL of my codes i have made over time, all the codes i have found by other users, modified, edited, you name it.
    With this any new profile creator should have all the tools necessary to begin writing a script!!
     
     
    // TBC USe Item On Dead Mob ( Make Interact Quest Helper (dead mobs checked) wManager.Events.InteractEvents.OnInteractPulse += (target, cancelable) => { var t = wManager.Wow.ObjectManager.ObjectManager.GetObjectByGuid(target); if (!t.IsValid) return; var e = t.Entry; if (e == 21859 || e == 21846) { System.Threading.Tasks.Task.Run(delegate { System.Threading.Thread.Sleep(wManager.Wow.Helpers.Usefuls.Latency + 100); wManager.Wow.Helpers.ClickOnTerrain.Item(31769, t.Position); }); } }; _____________________________________________________________________________________________________________________________________ // RunCode - Interact with ObjectID - Gather Object RunCode FNV var pos = new Vector3(199.9151f, 3472.976f, 63.24443f); int objectId = 184115 ; wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithGameObject(pos, objectId); Thread.Sleep(Usefuls.Latency + 10000); if(ItemsManager.GetItemCountById(23339) < 1) { wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithGameObject(pos, objectId); Thread.Sleep(Usefuls.Latency + 10000); } _____________________________________________________________________________________________________________________________________ // Interact with game object RunCode (Not by me) - https://wrobot.eu/forums/topic/11371-game-object/?tab=comments#comment-54611 var Object = ObjectManager.GetNearestWoWGameObject(ObjectManager.GetWoWGameObjectByEntry(1234)); // or var Object = ObjectManager.GetObjectWoWGameObject().Where(o => o.IsValid && o.Entry == 1234).OrderBy(o => o.GetDistance).FirstOrDefault(); if (GoToTask.ToPosition(new Vector3(1, 2, 3, "None"))) // replace "flying" with "None" to ground move { if (Object != null) { Interact.InteractGameObject(Object.GetBaseAddress); Usefuls.WaitIsCasting(); } } _____________________________________________________________________________________________________________________________________ // Droidz Code from "Code Snipets - Use Item on Hostile or Weakend Mob" // Add step type "PickUp" (put quest name in parameter) // Add step type "RunCode", in parameter put this code: Thread t = new Thread(() => { uint itemId = 62899; int questId = 28000; while (robotManager.Products.Products.IsStarted) { if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause) { if (!Quest.HasQuest(questId)) break; if (ObjectManager.Target.IsValid && ObjectManager.Target.IsAlive && ObjectManager.Target.HealthPercent <= 25) { ItemsManager.UseItem(itemId); } } Thread.Sleep(500); } }); t.Start(); //(you need to have quest in your questlog, you can replace "62899" but the item id, "28000" by the quest id and "25" by the max target health) //Add step type "Pulse" (put quest name in parameter) (use quest type kill or interact) //Add step type "TurnIn" (put quest name in parameter) _____________________________________________________________________________________________________________________________________ // Use item on Hostile or Weakend Mob -- VERSIOn 2.0 (Channeling Version) // Use item on Weakend Mob - Have quest + item ID) (Use Kill and Loot, or Interact with NPC..) - Channeling Version - if you need to channel the Item on the // mob This is a crazy fucking code but it worked great. // RunCode - Andoido. Thread t = new Thread(() => { uint itemId = 6436; int questId = 1435; while (robotManager.Products.Products.IsStarted) { if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause) { if (!Quest.HasQuest(questId)) break; if (ObjectManager.Target.IsValid && ObjectManager.Target.IsAlive && ObjectManager.Target.HealthPercent <= 35 ) { Fight.StopFight(); System.Threading.Thread.Sleep(100); ItemsManager.UseItem(itemId); Usefuls.WaitIsCasting(); } if (ObjectManager.Target.IsValid && ObjectManager.Target.IsAlive && ObjectManager.Target.HealthPercent <= 35 ) { ItemsManager.UseItem(itemId); Usefuls.WaitIsCastingAndLooting(); ItemsManager.UseItem(itemId); } if (ObjectManager.Target.IsValid && ObjectManager.Target.IsAlive && ObjectManager.Target.HealthPercent <= 35 ) { ItemsManager.UseItem(itemId); Usefuls.WaitIsCastingAndLooting(); ItemsManager.UseItem(itemId); ItemsManager.UseItem(itemId); } } Thread.Sleep(200); } }); t.Start(); _____________________________________________________________________________________________________________________________________ // has quest, and has item go gather, harvest, useitem Thread t = new Thread(() => { uint itemId = 62899; int questId = 28000; while (robotManager.Products.Products.IsStarted) { if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause) { if (!Quest.HasQuest(questId)) break; if (ObjectManager.Target.IsValid && ObjectManager.Target.IsAlive && ObjectManager.Target.HealthPercent <= 25) { ItemsManager.UseItem(itemId); wManager.wManagerSetting.CurrentSetting.ListHarvest.Add(183933); } } Thread.Sleep(500); } }); t.Start(); _____________________________________________________________________________________________________________________________________ // Has Quest go Harvest Thread t = new Thread(() => { int questId = 28000; while (robotManager.Products.Products.IsStarted) { if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause) { if (!Quest.HasQuest(questId)) break; if (ObjectManager.Target.IsValid && ObjectManager.Target.IsAlive && ObjectManager.Target.HealthPercent <= 25) { wManager.wManagerSetting.CurrentSetting.ListHarvest.Add(183933); } } Thread.Sleep(500); } }); t.Start(); _____________________________________________________________________________________________________________________________________ // BOP Pickup BOP Items non loop, loot bop, no loop - RunCode - me Thread t = new Thread(() => { uint itemId = 16305; int questId = 2; while (robotManager.Products.Products.IsStarted && ItemsManager.GetItemCountById(16305) == 0) { if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause) { if (ObjectManager.Target.IsValid && ObjectManager.Target.IsDead) { Lua.LuaDoString("StaticPopup1Button1:Click();"); } } Thread.Sleep(100); } }); t.Start(); // Part 2 - 2ndary Version - BOP Pickup Items -itemId + questID - Doesnt Have Quest and Item ID == 0 - RuNCode - ME Thread t = new Thread(() => { uint itemId = 16305; int questId = 2; while (robotManager.Products.Products.IsStarted && (itemId == 0) && !Quest.HasQuest(questId)) { if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause) { if (ObjectManager.Target.IsValid && ObjectManager.Target.IsDead) { Lua.LuaDoString("StaticPopup1Button1:Click();"); } } Thread.Sleep(100); } }); t.Start(); _____________________________________________________________________________________________________________________________________ // Auto Delete items from inventory as you farm (requires delete Custom Script in this post..) - Add any item! Every 10 Seconds, it will Auto Delete - When farming, delte thoes pesky, non // valuable items that piss you off. Best combined with opening Clams (delete the zesty meat!) // Auto use Scrolls once looted - RunCode // Mass throw away, mass delete Thread t = new Thread(() => { uint itemId = 7974; while (robotManager.Products.Products.IsStarted && (itemId >= 0)) { if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause) { if (ObjectManager.Target.IsValid && ObjectManager.Target.IsAlive) { throwAway.DeleteItems("Zesty Clam Meat", 0); throwAway.DeleteItems("Zesty", 0); throwAway.DeleteItems("Raw Spinefin Halibut", 0); throwAway.DeleteItems("Halibut", 0) throwAway.DeleteItems("Halibut", 0); throwAway.DeleteItems("Morning Glory Dew", 0); } } Thread.Sleep(10000); } }); t.Start(); // Mass Delete Version 2 - Multiple Items, Mass throw away - RunCode - Andoido Thread t = new Thread(() => { uint itemId = 7974; uint itemId1 = 4602; uint itemId2 = 3927; uint itemId3 = 4601; uint itemId4 = 4599; uint itemId5 = 4608; uint itemId6 = 1645; uint itemId7 = 8167; while (robotManager.Products.Products.IsStarted && Quest.HasQuest(2980) && (itemId >= 0 || itemId2 >= 0 || itemId3 >= 0 || itemId4 >= 0 || itemId5 >= 0 || itemId6 >= 0 || itemId7 >= 0)) { if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause) { if (ObjectManager.Target.IsValid && ObjectManager.Target.IsAlive) { throwAway.DeleteItems("Zesty Clam Meat", 0); throwAway.DeleteItems("Zesty", 0); throwAway.DeleteItems("Raw Spinefin Halibut", 0); throwAway.DeleteItems("Halibut", 0); throwAway.DeleteItems("Moon Harvest Pumpkin", 0); throwAway.DeleteItems("Morning Glory Dew", 0); throwAway.DeleteItems("Fine Aged Cheddar", 0); throwAway.DeleteItems("Soft Banana Bread", 0); throwAway.DeleteItems("Cured Ham Steak", 0); throwAway.DeleteItems("Raw Black Truffle", 0); throwAway.DeleteItems("Moonberry Juice", 0); throwAway.DeleteItems("Turtle Scale", 0); } } Thread.Sleep(10000); } }); t.Start(); _____________________________________________________________________________________________________________________________________ // Use item thread (Continuous) - Use Scrolls - Set a timmmer (60 minutes, and it will cast an elixir, etc etc.) make an IF statment, then RUNCODE, then pulse your grind, then ENDIF - RUNCODE - Andoido Thread t = new Thread(() => { uint itemId = 4425; uint itemId2 = 4419; uint itemId3 = 4421; uint itemId4 = 4424; uint itemId5 = 4422; uint itemId6 = 4426; while (robotManager.Products.Products.IsStarted && (itemId >= 0 || itemId2 >= 0 || itemId3 >= 0 || itemId4 >= 0 || itemId5 >= 0)) { if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause) { if (ObjectManager.Target.IsValid && ObjectManager.Target.IsAlive) { ItemsManager.UseItem(itemId); ItemsManager.UseItem(itemId2); ItemsManager.UseItem(itemId3); ItemsManager.UseItem(itemId4); ItemsManager.UseItem(itemId5); } } Thread.Sleep(5000); } }); t.Start(); _____________________________________________________________________________________________________________________________________ // Go to specific location, and Useitem on Object and Harvest + Quest required (RunCode) - me var pos = new Vector3(-2496.714f, -1632.943f, 91.73521f); uint itemId = 15710; int objectId = 177644; int questId = 6002; wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithGameObject(pos, objectId); Thread.Sleep(Usefuls.Latency + 10000); if (Quest.HasQuest(questId)) { ItemsManager.UseItem(itemId); wManager.wManagerSetting.CurrentSetting.ListHarvest.Add(177644); } var pos = new Vector3(-2496.714f, -1632.943f, 91.73521f); uint itemId = 15710; int objectId = 177644; int questId = 6002; wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithGameObject(pos, objectId); Thread.Sleep(Usefuls.Latency + 5000); if (Quest.HasQuest(questId)) { ItemsManager.UseItem(itemId); } _____________________________________________________________________________________________________________________________________ // RunCode - If has item, use item - Helboar Quest TBC int questId = 9361; if (wManager.Wow.Helpers.Quest.HasQuest(questId)) { wManager.Events.LootingEvents.OnLootSuccessful += unit => { if (wManager.Wow.Helpers.Quest.HasQuest(questId)) { if (wManager.Wow.Helpers.Conditions.InGameAndConnectedAndAliveAndProductStarted && !wManager.Wow.Helpers.Conditions.IsAttackedAndCannotIgnore) { if (wManager.Wow.Helpers.ItemsManager.GetItemCountById(23248) > 0) // Purified Helboar Meat { wManager.Wow.Helpers.ItemsManager.UseItem(23268); // Purification Mixture wManager.Wow.Helpers.Usefuls.WaitIsCasting(); } } } }; } _____________________________________________________________________________________________________________________________________ // Go to Specific Position and Target NPC - UseItem at/on the location - Runcode - Andoido var position = new Vector3(7848.3f, -2216.35f, 470.8041f); int npcEntryId = 11832; uint itemId = 15877; { if (!Quest.IsObjectiveComplete(1, 28)) { wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(position, npcEntryId); wManager.Wow.Helpers.ItemsManager.UseItem(15877); wManager.Wow.Helpers.Usefuls.WaitIsCasting(); } } _____________________________________________________________________________________________________________________________________ // Go to Location, Target NPC , Turn Quest In. RunCode --- Manually Complete Quest - force complete, forcecomplete, Runcode if (Quest.GetQuestCompleted(3561)) { wManager.Wow.Bot.Tasks.GoToTask.ToPosition(new Vector3(3777.06f, -4619.17f, 227.3226f)); } var u = ObjectManager.GetNearestWoWUnit(ObjectManager.GetWoWUnitByEntry(8399)); if (u.IsValid) { Interact.InteractGameObject(u.GetBaseAddress); Lua.LuaDoString("QuestFrameCompleteQuestButton:Click();"); } _____________________________________________________________________________________________________________________________________ // Cast spell on target Thread t = new Thread(() => { uint itemId = 62899; uint spellId = 62899; int questId = 28000; while (robotManager.Products.Products.IsStarted) { if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause) { if (!Quest.HasQuest(questId)) break; if (ObjectManager.Target.IsValid && ObjectManager.Target.IsAlive) { if (itemId > 0) ItemsManager.UseItem(itemId); // if it is item if (spellId > 0) SpellManager.CastSpellByIdLUA(spellId); // if it is spell ClickOnTerrain.Pulse(new Vector3(ObjectManager.Target.Position)); // for AOE spell/item } } Thread.Sleep(500); } }); t.Start(); _____________________________________________________________________________________________________________________________________ // Stop fight at specific perceent, StopFight - make "Interact with npc" Quest Profile, and run this code before it! Thread t = new Thread(() => { int questId = 9889; while (robotManager.Products.Products.IsStarted) { if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause) { if (!Quest.HasQuest(questId)) break; if (ObjectManager.Target.IsAlive && ObjectManager.Target.HealthPercent <= 30) { wManager.Wow.Helpers.Fight.StopFight(); } } Thread.Sleep(500); } }); t.Start(); _____________________________________________________________________________________________________________________________________ // UseItem - DOESNT have Quest, and DOESNT have Buff - Use item if we dont have buff (RunCode) - before you "pulse" Thread t = new Thread(() => { uint itemId = 62899; int questId = 93351; uint buffId = 135855; while (robotManager.Products.Products.IsStarted) { if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause) { if (!Quest.HasQuest(questId)) break; if (!ObjectManager.Me.HaveBuff(buffId)) { ItemsManager.UseItem(itemId); } } Thread.Sleep(500); } }); t.Start(); _____________________________________________________________________________________________________________________________________ // Check objective, go to location. If Objective NOT complete go to goto location if (!Quest.IsObjectiveComplete(2, 9999)) { wManager.Wow.Bot.Tasks.GoToTask.ToPosition(new Vector3(9999.262f, -9999.587f, 999.8167f)); } _____________________________________________________________________________________________________________________________________ // Click BOP Item - BOP Continuous Loop - RuNCode Thread t = new Thread(() => { uint itemId = 9618; int questId = 25336; while (robotManager.Products.Products.IsStarted) { if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause) { if (ObjectManager.Target.IsValid && ObjectManager.Target.IsDead) { Lua.LuaDoString("StaticPopup1Button1:Click();"); } } Thread.Sleep(100); } }); t.Start(); _____________________________________________________________________________________________________________________________________ // Force character to MOVE strafe if you get a debuff or buff - runcode wManager.Events.FightEvents.OnFightLoop += (unit, cancelable) => { var me = wManager.Wow.ObjectManager.ObjectManager.Me; var target = wManager.Wow.ObjectManager.ObjectManager.Target; if (me.IsAlive && target.IsAlive && !me.IsCast && me.HaveBuff("Buff name")) { wManager.Wow.Helpers.Keybindings.PressKeybindings(wManager.Wow.Enums.Keybindings.STRAFELEFT, 1000 * 3); // strage left during 3 secondes } }; // You can force the bot to move to a new position , by replacing presskey wManager.Wow.Helpers.MovementManager.MoveTo(1, 2, 3); _____________________________________________________________________________________________________________________________________ // use as overridepulse with complete condition. // Force check iscomplete for quests. // Force turn in, force turnin , force pickup, force accept queest, acceptquest. if (!Quest.HasQuest(Quest ID) && !(ObjectManager.Me.Position.DistanceTo2D(new Vector3(x, y, z)) < 20)) { wManager.Wow.Bot.Tasks.GoToTask.ToPosition(new Vector3(x, y, z)); wManager.Wow.Helpers.Interact.InteractGameObject(ObjectManager.GetWoWGameObjectByEntry(Object ID).FirstOrDefault().GetBaseAddress); Thread.sleep(100); wManager.Wow.Helpers.Lua.RunMacroText("/script AcceptQuest();"); } return; // complete condition : return (Quest.HasQuest(Quest ID) && !Quest.GetQuestCompleted(Quest ID)); // turn in code wManager.Wow.Helpers.Lua.RunMacroText("/click QuestFrameCompleteQuestButton"); _____________________________________________________________________________________________________________________________________ // Force pickup of quest - Runcode int npcEntryId = 4961; var position = new Vector3(-8681.93f, 432.901f, 99.0906f); if(!Quest.HasQuest(1247) && !Quest.GetQuestCompleted(1247)) { while(!Quest.HasQuest(1247)) { wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithGameObject(position, npcEntryId); Thread.Sleep(Usefuls.Latency * 5); Lua.LuaDoString("AcceptQuest()"); Thread.Sleep(Usefuls.Latency * 5); } } _____________________________________________________________________________________________________________________________________ // RunCode - Used to check an items cooldown remaining time - by droidz - https://wrobot.eu/bugtracker/useitemon-doesnt-work-because-of-item-cooldown-r594/ robotManager.Events.FiniteStateMachineEvents.OnRunState += (engine, state, cancelable) => { int itemId = 18904; int questId = 7003; if (!wManager.Wow.Helpers.Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause) return; if (wManager.Wow.Helpers.Conditions.IsAttackedAndCannotIgnore) return; if (state.DisplayName == "Quester") { if (wManager.Wow.Helpers.Quest.HasQuest(questId) && wManager.Wow.Helpers.Lua.LuaDoString<bool>("local start, duration, enable = GetItemCooldown("+ itemId + "); return enable;")) { cancelable.Cancel = true; } } }; _____________________________________________________________________________________________________________________________________ // How to let this code run once and how to let it move to a position xyz? - by imod // Position we want to move to Vector3 position = new Vector3(1, 1, 1); // Move to the given position MovementManager.Go(PathFinder.FindPath(position), false); // Wait while (MovementManager.InMovement && Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause && ObjectManager.Me.HaveBuff(new Spell("NameOfTheSpell").Ids) { // Wait follow path Thread.Sleep(100); } // Another example of moving your character to a new position during fight or getting debuff wManager.Events.FightEvents.OnFightLoop += (unit, cancelable) => { var pos = 1; var me = wManager.Wow.ObjectManager.ObjectManager.Me; var target = wManager.Wow.ObjectManager.ObjectManager.Target; if (me.IsAlive && target.IsAlive && pos == 1) { Vector3 position = new Vector3(3073.848f, -3116.693f, 294.0692f); // Move to the given position MovementManager.Go(PathFinder.FindPath(position), false); // Wait while (MovementManager.InMovement && Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause) { // Wait follow path Thread.Sleep(3000); pos = 0; } } }; _____________________________________________________________________________________________________________________________________ // Keep from Drowning - Swimming, Drowning, JUMP, Breath, - Runcode -- Change "while" statment to whatever the quest demands (objective wise) Thread t = new Thread(() => { while (robotManager.Products.Products.IsStarted && ItemsManager.GetItemCountById(15874) != 10) { if (ObjectManager.Me.BreathTimerLeft < 10000) { if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause) { wManager.Wow.Helpers.Keybindings.PressKeybindings(wManager.Wow.Enums.Keybindings.JUMP); wManager.Wow.Helpers.Keybindings.PressKeybindings(wManager.Wow.Enums.Keybindings.JUMP); wManager.Wow.Helpers.Keybindings.PressKeybindings(wManager.Wow.Enums.Keybindings.JUMP); wManager.Wow.Helpers.Keybindings.PressKeybindings(wManager.Wow.Enums.Keybindings.JUMP); wManager.Wow.Helpers.Keybindings.PressKeybindings(wManager.Wow.Enums.Keybindings.JUMP); wManager.Wow.Helpers.Keybindings.PressKeybindings(wManager.Wow.Enums.Keybindings.JUMP); wManager.Wow.Helpers.Keybindings.PressKeybindings(wManager.Wow.Enums.Keybindings.JUMP); wManager.Wow.Helpers.Keybindings.PressKeybindings(wManager.Wow.Enums.Keybindings.JUMP); } wManager.Wow.Helpers.Fight.StopFight(); } Thread.Sleep(10000); } }); t.Start(); _____________________________________________________________________________________________________________________________________ // Under Water Holding Breath - Swimming - fatigue - make into runcode if (isneedActionbecausebreath()) { robotManager.Helpful.Keyboard.PressKey(wManager.Wow.Memory.WowMemory.Memory.WindowHandle," "); } internal bool isneedActionbecausebreath() { if (ObjectManager.Me.BreathActive) { Logging.WriteFight("isneedActionbecausebreath: "+ObjectManager.Me.BreathTimerLeft); if (ObjectManager.Me.BreathTimerLeft < 10000) { return true; } } return false;  }  // force bot to click Space button robotManager.Helpful.Keyboard.PressKey(wManager.Wow.Memory.WowMemory.Memory.WindowHandle, System.Windows.Forms.Keys.F1);  _____________________________________________________________________________________________________________________________________ // Swimming code wManager.Events.MovementEvents.OnMoveToLoop += () => { if (wManager.Wow.ObjectManager.ObjectManager.Me.IsSwimming) wManager.wManagerSetting.CurrentSetting.UseCTM = true; else wManager.wManagerSetting.CurrentSetting.UseCTM = false; }; // Hunter Tame Pet FNV - OverridePulseCSharpCode // is complete -- (not required in quest log) return ObjectManager.Pet.IsValid; var pos = new Vector3(-5421f, -581f, 396f); int npc = 1126; if(!ObjectManager.Pet.IsValid) { wManager.Wow.Bot.Tasks.GoToTask.ToPosition(pos); wManager.wManagerSetting.CurrentSetting.MaxUnitsNear = 100; var target = ObjectManager.GetObjectWoWUnit().FirstOrDefault(o => o.Entry == npc && o.Position.DistanceTo(ObjectManager.Me.Position) < 50 && o.IsAlive); if(target != null && target.IsAlive) { ObjectManager.Me.Target = target.Guid; if(ObjectManager.Me.Position.DistanceTo(target.Position) >= 30) MovementManager.MoveTo(target.Position); Thread.Sleep(Usefuls.Latency + 250); SpellManager.CastSpellByNameLUA("Tame Beast"); } if(ObjectManager.Pet.IsValid) return true; } else { return true; } return false; _____________________________________________________________________________________________________________________________________ // Schakas Use Script On - TBC Gathering items (New Life Q example) ItemsManager.UseItem(22955); Thread.Sleep(1000); Interact.InteractGameObject(ObjectManager.GetWoWGameObjectByEntry(181433).First().GetBaseAddress); Usefuls.WaitIsCastingAndLooting(); // Schakas Use Script On - For NPC's (didnt work for me) ItemsManager.UseItem(22955); Thread.Sleep(1000); Interact.InteractGameObject(ObjectManager.GetWoWUnitByEntry(123, true).First().GetBaseAddress); Usefuls.WaitIsCastingAndLooting(); _____________________________________________________________________________________________________________________________________ // Use inventory Solot Items UseInventoryItem( 13 ); UseInventoryItem( 14 ); ____________________________________________________________________________________________________________________________________ // Set chat text in game DEFAULT_CHAT_FRAME:AddMessage("|cFFFFCE2ETramBot|r Zangermarsh Elevator - Go TO and wait") _____________________________________________________________________________________________________________________________________ // Abandon Remove Quests (RuNCode) QuestHelper.AbandonQuest("Terokk's Legacy"); _____________________________________________________________________________________________________________________________________ // Has key / Have Key / Key Custom Script - RuNCode int keyId = 4882; Logging.Write("Have Key ID (" + keyId + "): " + Key.haveKey(keyId)); _____________________________________________________________________________________________________________________________________ // Is Complete Condition for Items xIsCompletex iscomplete - RunCode return ItemsManager.GetItemCountById(28513) >= 1; //is complete - quest compolete or less than x ft - FNV IsComplete return (Quest.GetQuestCompleted(187) || new Vector3(-11327.88f, -204.1989f, 75.34803f).DistanceTo(ObjectManager.Me.Position) < 10); // Is Complete Distance to Object, iscomplete, distance - is complete quester code return ObjectManager.Me.Position.DistanceTo2D(new Vector3(1822.23f, 1416.56f, -7.84571f)) <8; // If you want complete quest when you don't have item in bag (1234 is item id): return wManager.Wow.Helpers.ItemsManager.GetItemCountByIdLUA(1234) <= 0;e // Or if you want complete quest when you have item in bag (1234 is item id): // (replace 3 by minimun item count) return wManager.Wow.Helpers.ItemsManager.GetItemCountByIdLUA(1234) >= 3; // Is Complete Continent Code - iscomplete check continent return (wManager.Wow.Helpers.Usefuls.ContinentId == (int)wManager.Wow.Enums.ContinentId.Azeroth); // Is Complete - iscomplete - Dungeon Check - ContinentID return (wManager.Wow.Helpers.Usefuls.ContinentId == (int)wManager.Wow.Enums.ContinentId.MonasteryInstances); // Is Complete - Quest Completed, has quest. return (Quest.HasQuest(1234) && !Quest.GetQuestCompleted(1234)); // Log Writing - Write to the wrobot Log - RunCode Logging.Write("TEXT HERE"); // Cast spell by name - Cast Spell ID RunLuaCode CastSpellByName("Renew","target") // Has item More or Less Than RunCode ItemsManager.GetItemCountById(11188) < 7 // Does Bot Know Spell - RunCode !wManager.Wow.Helpers.SpellManager.KnowSpell(688) // Class Code - ClassCheck - RunCode ObjectManager.Me.WowClass == WoWClass.Warlock (ObjectManager.Me.WowClass == WoWClass.Warlock || ObjectManager.Me.WowClass == WoWClass.Paladin || ObjectManager.Me.WowClass == WoWClass.Warrior || ObjectManager.Me.WowClass == WoWClass.Rogue || ObjectManager.Me.WowClass == WoWClass.Hunter || ObjectManager.Me.WowClass == WoWClass.Druid || ObjectManager.Me.WowClass == WoWClass.Priest) // If Has Item xhasitemx- RuNCode ItemsManager.HasItemById(29912) // If Statment - hasitem less than , and objective complete, and has quest, and doesnt have quest complete // RunCode ((Quest.HasQuest(2980) && !Quest.GetQuestCompleted(2980)) && (!Quest.IsObjectiveComplete(3, 2980)) && (ItemsManager.GetItemCountById(9590) < 7)) -- OR -- // Difference bewteen these two, is this checks for a SPECIFIC item if we have or dont have. Where as the one above, checks for a set Number of items. // Has Quest, Doesnt Have Quest Completed, Doesnt have Objective for quest completed, Doesnt have ITEM (involved with quest) // Reccomended to only use this code for quests that use single items (Kill mob for skull, if it was 10 skulls, use the code above! // RunCode ((Quest.HasQuest(2980) && !Quest.GetQuestCompleted(2980)) && (!Quest.IsObjectiveComplete(3, 2980)) && (!ItemsManager.HasItemById(29912)) // Use Item (RunCode) -- Used to Use Items in Game. ItemsManager.UseItem(6948); wManager.Wow.Helpers.ItemsManager.UseItem(123); // UseScriptOn - C# - UseItem - Use Item Thread Sleep, Use Item Quester Profile, or RuNCode ItemsManager.UseItem(1234); Usefuls.WaitIsCasting(); Thread.Sleep(1000 * 10); // Has Buff or Doesnt havebuff ObjectManager.Me.TargetObject.HaveBuff(22807); // Equip Item By name (runcode) wManager.Wow.Helpers.ItemsManager.EquipItemByName("Spectrecles"); // Check Player Faction or Race (RunCode) (ObjectManager.Me.PlayerRace == PlayerFactions.Tauren) // Check if has item Equiped - weapon Equiped EquippedItems.GetEquippedItems().Where(x => x.Entry == 2495 || x.Entry == 2488 || x.Entry == 2492 || x.Entry == 2490 || x.Entry == 2509 || x.Entry == 5441 || x.Entry == 2516).Count() == 0 // Check equiped item's rarity (Add to code above) x.GetItemInfo.ItemRarity <= 1 // Pet is alive and valid - has pet summoned ObjectManager.Pet.IsAlive && ObjectManager.Pet.IsValid // Check pet by name (RunCode) if (ObjectManager.Pet.Name == "Wolf") return true; else return false; // Is Complete check pet name - not tested return ObjectManager.Pet.Name == "Wolf" // Check how much Money we have in bags (RunCode) ObjectManager.Me.GetMoneyCopper >= 800 // Skillline - Is Complete Condition return wManager.Wow.Helpers.Skill.GetValue(wManager.Wow.Enums.SkillLine.Lockpicking) >= 75; Skill.GetValue(SkillLIne.Engineering) < 50 // If Has Quest + If Has Quest Complete RunCode Quest.HasQuest(10446) && !Quest.GetQuestCompleted(10446) Quest.HasQuest(10446) && Quest.IsObjectiveComplete(1, 37853) // CAN CONDITION - Check which continent we are on - Pulse true if we are ON this ContinentId return Usefuls.ContinentId == (int) ContinentId.Azeroth; // Check map Zone / Continent / Submap / Sub Continent / zone /* */ Usefuls.ContinentId == (int) ContinentId.Azeroth Usefuls.ContinentId == (int) ContinentId.Kalimdor Usefuls.SubMapZoneName.Contains("theran Village") (wManager.Wow.Helpers.Usefuls.MapZoneName == "" || wManager.Wow.Helpers.Usefuls.MapZoneName == "") // Check player race and faction alliance and horde - runcode ObjectManager.Me.IsAlliance ObjectManager.Me.IsHorde // Stop the bot from Moving - StopMoving - RuNCode if(ObjectManager.Me.GetMove) MovementManager.StopMoveTo(true, 500); // Check number of enemies attacking you or attacking pet ObjectManager.GetWoWUnitAttackables().Where(x => x.Target == ObjectManager.Me.GetBaseAddress || x.Target == ObjectManager.Pet.GetBaseAddress).Count() >= 2 // use spell cast spell on target - Cast spell by id - cast spell by lua RunCode Hello,you can use lua code: CastSpellByID(1234) CastSpellByID(1234, 'target') or c# code: wManager.Wow.Helpers.SpellManager.CastSpellByIdLUA(1234); wManager.Wow.Helpers.SpellManager.CastSpellByIdLUA(1234, "target"); // Target nearest enemy and use spell / use spell on nearest target RunLuaCode local Sunfire = GetSpellInfo(93402); if (not Sunfire) then return; end TargetNearestEnemy(); CastSpellByName(Sunfire); // cast spell local spellid=123456 --[[change to the ID-nr of the spell)]] local spellname=GetSpellInfo(spellid) if (IsUsableSpell(spellname)) then local start, duration, enable = GetSpellCooldown(spellname) if (duration==0) then CastSpellByName(spellname); spell=spellname; break; end end // Target Reactions - Friendly Neutral honored. Checkes the Reaction of the Target in an IF statment. wManager.Wow.ObjectManager.ObjectManager.Target.Reaction < wManager.Wow.Enums.Reaction.Friendly // or wManager.Wow.ObjectManager.ObjectManager.Me.TargetObject.Reaction > Reaction.Neutral // Reactions IsComplete Statment return wManager.Wow.ObjectManager.ObjectManager.Me.TargetObject.Reaction > Reaction.Friendly; // Reactions ORDER Hated, Hostile, Unfriendly, Neutral, Friendly, Honored, Revered, Exalted, _____________________________________________________________________________________________________________________________________ // Force bot to Sit, Force bot to Stand, runcode - Matenia Lua.LuaDoString("SitOrStand()"); //newer wow versions Lua.LuaDoString("SitStandOrDescendStart()"); //alternative approach Lua.LuaDoString("DoEmote('SIT')"); //if you wanna stand up specifically Lua.LuaDoString("DoEmote('STAND')"); _____________________________________________________________________________________________________________________________________ // Go to specific targets GUID - Spell on Target var unit = new WoWUnit(ObjectManager.GetObjectByGuid (17379391364021616671).GetBaseAddress); Fight.StopFight(); ObjectManager.Me.Target = unit.Guid; Fight.StopFight(); // or var unit = new WoWUnit(ObjectManager.GetObjectByGuid (17379391364021616671).GetBaseAddress); wManager.Wow.Bot.Tasks.GoToTask.ToPosition(unit.Position); _____________________________________________________________________________________________________________________________________ // if you have a quest with a item you need to use on the ground. if (wManager.Wow.Helpers.ItemsManager.HasItemById(ID)) { wManager.Wow.Bot.Tasks.GoToTask.ToPosition(new Vector3(z, y, z)); System.Threading.Thread.Sleep(6000); ItemsManager.UseItem(ItemID); ClickOnTerrain.Pulse(new Vector3(x, y, z)); System.Threading.Thread.Sleep(1000); } return true; _____________________________________________________________________________________________________________________________________ // Hunter Pet Auto Train - Auto tame hunter pet runcode if(ObjectManager.Pet.IsValid) { Lua.LuaDoString("CastSpellByName('Beast Training')"); Thread.Sleep(Usefuls.Latency + 500); Lua.LuaDoString("BuyTrainerService(0)"); Thread.Sleep(Usefuls.Latency + 500); Lua.LuaDoString("TogglePetAutocast(4)"); Thread.Sleep(Usefuls.Latency + 500); Lua.LuaDoString("TogglePetAutocast(5)"); Thread.Sleep(Usefuls.Latency + 500); } _____________________________________________________________________________________________________________________________________ // is complete - Quest Complete condition, Quest log - bettersister // Check if quest is completed Quest.GetQuestCompleted(123456) Quest.GetLogQuestIsComplete(245) if you're using it as Is Complete condition put it like this: return Quest.GetLogQuestIsComplete(245); _____________________________________________________________________________________________________________________________________ // Search and Loot Chests - Find Chests - IMOD - RunCode //You should not using the index because if there is no chest you will get a out of range exception. // Search for a chest List<WoWGameObject> chest = ObjectManager.GetWoWGameObjectByyId(123456).FirstOrDefault(); // Found? if(chest != null) { // Open Interact.InteractGameObject(chest.GetBaseAddress); } _____________________________________________________________________________________________________________________________________ // Click Quest Complete Button - Droidz //In "Quest order editor" add action "RunCode" after "pulse" with param: wManager.Wow.Helpers.Quest.CompleteQuest(); You can add wait time to wait then window appear: Thread.Sleep(3500); wManager.Wow.Helpers.Quest.CompleteQuest(); _____________________________________________________________________________________________________________________________________ _____________________________________________________________________________________________________________________________________ // Interact with game object and gather WoWObject _t = ObjectManager.GetWoWGameObjectByName("put here name of herb").OrderBy(o => o.GetDistance).FirstOrDefault(); Interact.InteractGameObject(_t.GetBaseAddress, true, false); Usefuls.WaitIsCasting(); Usefuls.WaitIsLooting(); // Part 2 - For gathering / mining with bad latency. WoWObject _t = ObjectManager.GetWoWGameObjectByName("Peacebloom").OrderBy(o => o.GetDistance).FirstOrDefault(); Interact.InteractGameObject(_t.GetBaseAddress, true, false); Usefuls.WaitIsCasting(); Usefuls.WaitIsLooting(); // wManager.DevelopmentTools.OutPutCSharp= // Execute time: 703 // Part 3 WoWObject _t = ObjectManager.GetWoWGameObjectByName("Peacebloom").OrderBy(o => o.GetDistance).FirstOrDefault(); Interact.InteractGameObject(_t.GetBaseAddress, true, false); // this code works like Usefuls.WaitIsCasting(); robotManager.Helpful.Timer timer = new robotManager.Helpful.Timer((double)(Usefuls.Latency + 200)); while (!timer.IsReady && !ObjectManager.Me.IsCast) { Thread.Sleep(5); } Logging.Write("Me.IsCast="+ObjectManager.Me.IsCast); while (ObjectManager.Me.IsCast) { Thread.Sleep(30); } Usefuls.WaitIsLooting(); Move.JumpOrAscend(); // wManager.DevelopmentTools.OutPutCSharp= // Execute time: 1438 _____________________________________________________________________________________________________________________________________ // Go to Position - Run to position - Run to spot wManager.Wow.Bot.Tasks.GoToTask.ToPosition(new Vector3(-304.4424f, 2389.106f, 46.37655f)); // Interact with NPC (RuNCode) // NORMAL - Interact with NPC wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(new Vector3(-1831.95f, 5298.3f, -12.42768f), 18940); wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(new Vector3(-2917.88f, 4021.48f, 0.4276921f), 19296, 1, false); wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(new Vector3(3373.69f, 994.351f, 5.278372f), 11901, 2, false); // Interact with OBJECT in Game wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithGameObject(new Vector3(2552.44, 856.9836, 51.49502), 148917); // Interact With Game Object V2 wManager.Wow.Helpers.Interact.InteractGameObject(wManager.Wow.ObjectManager.ObjectManager.GetNearestWoWGameObject (wManager.Wow.ObjectManager.ObjectManager.GetWoWGameObjectByEntry(254241)).GetBaseAddress); // Interact with DEAD NPC (runcode) wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(new Vector3(-2917.88f, 4021.48f, 0.4276921f), 19296, 1); // ]Distance - Distance from xdistance - ObjectManager.Me.Position.DistanceTo2D(new Vector3(199.061f, 4238.42f, 121.7268f)) < 125 __________________________________________________________________________________________________________________________________ // level 5 priest quest - cast spell on target - run code if (Quest.HasQuest(5648)) { wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(new Vector3(170.596f, -4769.92f, 14.40446f), 12430); wManager.Wow.Helpers.Lua.RunMacroText("/cast Lesser Heal"); Usefuls.WaitIsCastingAndLooting(); wManager.Wow.Helpers.Lua.RunMacroText("/cast Power Word: Fortitude"); Usefuls.WaitIsCastingAndLooting(); } return true; __________________________________________________________________________________________________________________________________ // Interact with Game Object V3 (use quest profile and overidepulse... quest type) https://wrobot.eu/forums/topic/9846-spam-click-specific-object/ while (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause && !Conditions.IsAttackedAndCannotIgnore) { var o = wManager.Wow.ObjectManager.ObjectManager.GetNearestWoWGameObject(wManager.Wow.ObjectManager.ObjectManager.GetWoWGameObjectByEntry(218889)); if (!o.IsValid) break; wManager.Wow.Helpers.Interact.InteractGameObject(o.GetBaseAddress); Thread.Sleep(100); } // Interact with NPC - Talk to NPC (RunCode) - use with GONG / Andoido (One after another) - by Nudl WoWUnit toTalk = wManager.Wow.ObjectManager.ObjectManager.GetObjectWoWUnit() .SingleOrDefault(i => i.Entry == 75746); if (toTalk != null) { wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(toTalk.Position, toTalk.Entry, 1); } // Interact with Game Object (RunCode) https://wrobot.eu/forums/topic/8395-clicking-objects-in-dungeons/ WoWGameObject gong = wManager.Wow.ObjectManager.ObjectManager.GetObjectWoWGameObject().FirstOrDefault(i => i.Entry == 148917); if (gong != null) { wManager.Wow.Helpers.Interact.InteractGameObject(gong.GetBaseAddress); }  WoWGameObject andoido = wManager.Wow.ObjectManager.ObjectManager.GetObjectWoWGameObject().FirstOrDefault(i => i.Entry == 148917); if (andoido != null) { wManager.Wow.Helpers.Interact.InteractGameObject(andoido.GetBaseAddress); } // Interact with Object -- Search for nearest Game Object and Interact WoWGameObject gong = ObjectManager.GetNearestWoWGameObject(ObjectManager.GetWoWGameObjectById("1234")).GetBaseAddress if (gong != null) { wManager.Wow.Helpers.Interact.InteractGameObject(gong.GetBaseAddress); } __________________________________________________________________________________________________________________________________ // Harvest Item - Used to "Pickup, Gather, or GET a Quest item, Herb, Ore anything really ( RunCode) wManager.wManagerSetting.CurrentSetting.ListHarvest.Add(); __________________________________________________________________________________________________________________________________ // Move Backward (RunCode) wManager.Wow.Helpers.Move.Backward(Move.MoveAction.PressKey,2000); // Move Forward (RunCode) wManager.Wow.Helpers.Move.Forward(Move.MoveAction.PressKey,2000); __________________________________________________________________________________________________________________________________ // Display Code for my on screen display ( RunLuaCode ) MyFrame.text:SetText("TEXT HERE") __________________________________________________________________________________________________________________________________ // Is Complete condition for KILLING a MOB // with the id of the boss dont forget to select "true" in "not required in quest log" return ObjectManager.GetWoWUnitByEntry(16151).Count == 0; __________________________________________________________________________________________________________________________________ // Is Quest Objective Complete (If, While, Runcode) Quest.IsObjectiveComplete(1, 37853) Quest.IsObjectiveNotComplete(0, 245) // Replace 1 with the objective number in correct list order __________________________________________________________________________________________________________________________________ // Change Wrobots Current Settings (RuNCode) wManager.Wow.Helpers.Conditions.ForceIgnoreIsAttacked = false; wManager.Wow.Helpers.Conditions.ForceIgnoreIsAttacked = true; wManager.wManagerSetting.CurrentSetting.AttackBeforeBeingAttacked = true; wManager.wManagerSetting.CurrentSetting.CanAttackUnitsAlreadyInFight = true; wManager.wManagerSetting.CurrentSetting.IgnoreCombatWithPet = false; // Force bot to sell vendor - run to town (runcode) Force Sell, Sell Items Force to Town wManager.Wow.Bot.States.ToTown.ForceToTown = true; wManager.Wow.Bot.States.ToTown.ForceToTown = true; wManager.wManagerSetting.CurrentSetting.Selling = true; wManager.wManagerSetting.CurrentSetting.SellGray = true; wManager.wManagerSetting.CurrentSetting.ForceSellList.Add("Item name at force to sell"); // Use only profile NPCs wManager.Wow.Helpers.NpcDB.AcceptOnlyProfileNpc = true; // Clear blacklist for session wManager.wManagerSetting.ClearBlacklistOfCurrentProductSession(); // Force bot to sell at closest saved npc if (wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWith(Npc npc, bool skipIfCannotMakePath = false, BooleanDelegate conditionExit = null, bool acceptNpcDead = false)) { wManager.Wow.Helpers.Vendor.SellItems(List<String> itemSell, List<string> itemNoSell, List<Enums.WoWItemQuality> itemQuality); } // Force bot to SELL then go TRAIN wManager.Wow.Bot.States.ToTown.ForceToTown = true; // run code - Forces bot to go sell. new wManager.Wow.Bot.States.Trainers().NeedToRun // RunCode - Checks if the bot needs to train or not. // Forces for to Sell AND Train. robotManager.Events.FiniteStateMachineEvents.OnBeforeCheckIfNeedToRunState += (engine, state, cancelable) => { if (state != null && state.GetType() == typeof(wManager.Wow.Bot.States.Trainers) && state.NeedToRun) { wManager.Wow.Bot.States.ToTown.ForceToTown = true; } }; // Clears the NPC Database. wManager.Wow.Helpers.NpcDB.ListNpc.Clear(); // Check if Resting or Rested Exp Lua.LuaDoString("return IsResting()"); Lua.LuaDoString("return GetRestState() == 1") __________________________________________________________________________________________________________________________________ // To unblacklist vendor (add you own condition, check if you are in smart pull): - RunCode robotManager.Events.LoggingEvents.OnAddLog += delegate(Logging.Log log) { if (!log.Text.Contains("[ToTown] Unable to reach the vendor, blacklist it 120 minutes (you can disable this NPC in NPC DB tab 'Tools').")) return; foreach (var n in NpcDB.ListNpc) { n.BlackList(-1); } }; __________________________________________________________________________________________________________________________________ // To add vendor with C# you can use this code: var npcVendor = new wManager.Wow.Class.Npc { ContinentId = (wManager.Wow.Enums.ContinentId)wManager.Wow.Helpers.Usefuls.ContinentId, Entry = 1234, Faction = wManager.Wow.Class.Npc.FactionType.Neutral, Name = "Npc name", Position = new robotManager.Helpful.Vector3(1, 2, 3), CanFlyTo = true, Type = wManager.Wow.Class.Npc.NpcType.Repair, // wManager.Wow.Class.Npc.NpcType.Vendor }; wManager.Wow.Helpers.NpcDB.AddNpc(npcVendor, false); __________________________________________________________________________________________________________________________________ //(use step "RunCode" to run all code) - By Droidz // RunCode (make IF statement, add this below it, then the following in a NEW runcode.) wManager.Wow.Helpers.NpcDB.AcceptOnlyProfileNpc = true; // It is not easy way, but add NPC with C# code like this (use this code when you change zone to select good npc for current level/zone): // RunCode - Removes all NPC's in the NPCDB. wManager.Wow.Helpers.NpcDB.ListNpc.RemoveAll(n => n.CurrentProfileNpc); // Remove in NPCDB all Npc added on current profile // Setting a "Repair" npc - RunCode var npcRepair = new wManager.Wow.Class.Npc // Npc repair info { Name = "Npc name", Entry = 1234, Faction = wManager.Wow.Class.Npc.FactionType.Neutral, ContinentId = wManager.Wow.Enums.ContinentId.Azeroth, Position = new robotManager.Helpful.Vector3(1, 2, 3), CanFlyTo = true, Type = wManager.Wow.Class.Npc.NpcType.Repair, }; wManager.Wow.Helpers.NpcDB.AddNpc(npcRepair, false, true); // Add npc repair to npcdb // Setting a "Vendor" npc.= (food) var npcVendor = new wManager.Wow.Class.Npc // Npc vendor info { Name = "Npc name", Entry = 1234, Faction = wManager.Wow.Class.Npc.FactionType.Neutral, ContinentId = wManager.Wow.Enums.ContinentId.Azeroth, Position = new robotManager.Helpful.Vector3(1, 2, 3), CanFlyTo = true, Type = wManager.Wow.Class.Npc.NpcType.Vendor, }; wManager.Wow.Helpers.NpcDB.AddNpc(npcVendor, false, true); // Add npc vendor to npcdb // RunCode - Forces bot to go VENDOR -- If you want force WRobot to go to vendor/repair: wManager.Wow.Bot.States.ToTown.ForceToTown = true; __________________________________________________________________________________________________________________________________ // Do Not Sell List (TBC) + Vanilla? - runcode if (!wManager.wManagerSetting.CurrentSetting.DoNotSellList.Contains("")) { wManager.wManagerSetting.CurrentSetting.DoNotSellList.Add(""); } // Do Not Sell List Vanilla runcode wManager.wManagerSetting.CurrentSetting.DoNotSellList.Add("Larval Acid"); __________________________________________________________________________________________________________________________________ // Opening Objects (Clams, Boxes, Etc) RunCode - https://wrobot.eu/forums/topic/5684-looting-inventory-item-containing-quest-items/ Thread t = new Thread(() => { while (robotManager.Products.Products.IsStarted) { if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause) { if (ObjectManager.Target.IsValid && ObjectManager.Target.IsAlive) { robotManager.Helpful.Keyboard.DownKey(wManager.Wow.Memory.WowMemory.Memory.WindowHandle, System.Windows.Forms.Keys.ShiftKey); Thread.Sleep(robotManager.Helpful.Others.Random(50, 150)); ItemsManager.UseItem(7973); Thread.Sleep(robotManager.Helpful.Others.Random(50, 150)); robotManager.Helpful.Keyboard.UpKey(wManager.Wow.Memory.WowMemory.Memory.WindowHandle, System.Windows.Forms.Keys.ShiftKey); Thread.Sleep(robotManager.Helpful.Others.Random(50, 150)); } } Thread.Sleep(10000); } }); t.Start(); // open clam untill Item ammount obtained Thread t = new Thread(() => { while (robotManager.Products.Products.IsStarted && ItemsManager.GetItemCountById(15874) != 10) { if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause) { if (ObjectManager.Target.IsValid && ObjectManager.Target.IsAlive) { robotManager.Helpful.Keyboard.DownKey(wManager.Wow.Memory.WowMemory.Memory.WindowHandle, System.Windows.Forms.Keys.ShiftKey); Thread.Sleep(robotManager.Helpful.Others.Random(50, 150)); ItemsManager.UseItem(15874); Thread.Sleep(robotManager.Helpful.Others.Random(50, 150)); robotManager.Helpful.Keyboard.UpKey(wManager.Wow.Memory.WowMemory.Memory.WindowHandle, System.Windows.Forms.Keys.ShiftKey); Thread.Sleep(robotManager.Helpful.Others.Random(50, 150)); } } Thread.Sleep(1000); } }); t.Start(); __________________________________________________________________________________________________________________________________ // Check Bind Location (RunCode) Lua.LuaDoString<string>("bindlocation = GetBindLocation(); return bindlocation;") == "Allerian Stronghold" && ObjectManager.Me.Level >= 65 && ObjectManager.Me.Level <= 67 && (wManager.Wow.Helpers.Usefuls.MapZoneName == "Shattrath City") && Quest.HasQuest(9990) // Check hearthstone timmer Lua.LuaDoString<bool>("if GetItemCooldown(Heathstone) == 0 then return true end") ____________________________________________________________________________________________________________________________ // How to set your Hearthstone, te professional way. // Step 1 - Set IF Statment. IF > IF code in the quest order editor Lua.LuaDoString<string>("bindlocation = GetBindLocation(); return bindlocation;") != "Orgrimmar" // Step 2 - RUNCODE - Change the Location + NPC ID of your new innkeeper (using the helper tools) var position = new Vector3(1633.99f, -4439.37f, 15.43382f); int npcEntryId = 6929; { if (wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(position, npcEntryId)) System.Threading.Thread.Sleep(3000 * 2); Lua.LuaDoString("GossipTitleButton1:Click();"); System.Threading.Thread.Sleep(2000 * 2); Lua.LuaDoString("StaticPopup1Button1:Click();"); System.Threading.Thread.Sleep(3000 * 2); Lua.LuaDoString("StaticPopup1Button1:Click();"); Lua.LuaDoString("CloseMerchant()"); System.Threading.Thread.Sleep(3000 * 2); if (wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(position, npcEntryId)) System.Threading.Thread.Sleep(3000 * 2); Lua.LuaDoString("GossipTitleButton2:Click();"); System.Threading.Thread.Sleep(3000 * 2); Lua.LuaDoString("StaticPopup1Button1:Click();"); System.Threading.Thread.Sleep(3000 * 2); Lua.LuaDoString("StaticPopup1Button1:Click();"); Lua.LuaDoString("CloseMerchant()"); } // ENDIF -- Add an ENDIF Statment. //This will force the bot to run to the npc location, it will do each step every 2 seconds (click the bind option) And a 2nd timeincase the bind is on button 2. // Weaponsmaster Trainer - train Weapons Master - My Code - Andoido - RuNCode // RunCode 1 if (wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(new robotManager.Helpful.Vector3(2091.02f, -4826.49f, 24.11062f), 11868)) { Logging.Write("Training level 10 Warlock Weaponsmaster in Orgrimmar - Please do not stop the bot"); { Lua.LuaDoString("GossipTitleButton1:Click();");; Lua.LuaDoString("StaticPopup1Button1:Click();"); System.Threading.Thread.Sleep(2000 * 2); Lua.LuaDoString("StaticPopup1Button1:Click();"); System.Threading.Thread.Sleep(2000 * 2); Lua.LuaDoString("StaticPopup1Button1:Click();"); Lua.LuaDoString("StaticPopup1Button1:Click();"); Lua.LuaDoString("StaticPopup1Button1:Click();"); Lua.LuaDoString("StaticPopup1Button1:Click();"); } } //RunCode 2 (Add both 1 and 2) to make sure 100% the bot trains) if (wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(new robotManager.Helpful.Vector3(2091.02f, -4826.49f, 24.11062f), 11868)) { Logging.Write("Training level 10 Warlock Weaponsmaster in Orgrimmar - Please do not stop the bot - Training Sayoc"); { wManager.Wow.Helpers.Usefuls.SelectGossipOption(wManager.Wow.Enums.GossipOptionsType.trainer); wManager.Wow.Helpers.Trainer.TrainingSpell(); System.Threading.Thread.Sleep(1000 * 2); wManager.Wow.Helpers.Trainer.TrainingSpell(); System.Threading.Thread.Sleep(1000 * 2); wManager.Wow.Helpers.Trainer.TrainingSpell(); wManager.Wow.Helpers.Trainer.TrainingSpell(); wManager.Wow.Helpers.Trainer.TrainingSpell(); wManager.Wow.Helpers.Trainer.TrainingSpell(); } } ____________________________________________________________________________________________________________________________ // Weaponsmaster Training - FNV Vector3 posWeaponSkill = new Vector3(-5039.499, -1201.89, 508.9015); int npcId = 13084; if(ObjectManager.Me.GetMoneyCopper >= 5000) { Logging.Write("[FNV_Quester]: Going to Ironforge Weapon trainer"); if(!wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(posWeaponSkill, npcId)) { wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(posWeaponSkill, npcId); } if(wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(posWeaponSkill, npcId)) { Usefuls.SelectGossipOption(GossipOptionsType.trainer); Thread.Sleep(Usefuls.Latency + 500); Lua.LuaDoString("BuyTrainerService(0)"); Thread.Sleep(Usefuls.Latency + 500); Lua.LuaDoString("BuyTrainerService(0)"); Thread.Sleep(Usefuls.Latency + 500); Lua.LuaDoString("BuyTrainerService(0)"); Thread.Sleep(Usefuls.Latency + 500); Lua.LuaDoString("BuyTrainerService(0)"); Thread.Sleep(Usefuls.Latency + 500); Lua.LuaDoString("BuyTrainerService(0)"); } Logging.Write("[FNV_Quester]: Weapon skills learned"); } else { Logging.Write("[FNV_Quester]: Not enough money to buy Weapon skills, skip it"); } ____________________________________________________________________________________________________________________________ // Add ALL Items in BAG to Do Not Sell List - All Items in Bag foreach (var woWItem in wManager.Wow.Helpers.Bag.GetBagItem()) { if (!string.IsNullOrWhiteSpace(woWItem.Name) && !wManager.wManagerSetting.CurrentSetting.DoNotSellList.Contains(woWItem.Name)) wManager.wManagerSetting.CurrentSetting.DoNotSellList.Add(woWItem.Name); } // Abandon All Quests In Log for i=1,GetNumQuestLogEntries() do SelectQuestLogEntry(i); SetAbandonQuest(); AbandonQuest(); end // Abandon Quest by IDictionary local questId = 12345; for i=1,GetNumQuestLogEntries() do local _, _, _, _, _, _, _, id = GetQuestLogTitle(i); if id == questId then SelectQuestLogEntry(i); SetAbandonQuest(); AbandonQuest(); end end __________________________________________________________________________________________________________________________________ // CUSTOM SCRIPT - Goes into Custom Script Section. // USAGE - RunCode throwAway.DeleteItems("Phial of Scrying", 0); throwAway.DeleteItems("Gyromast's Key", 0); throwAway.DeleteItems("Barrel of Barleybrew Scalder", 0); //Abandon Quests - Custom Script public class abandonQuest { public static void abandon(string questName) { string name = questName; wManager.Wow.Helpers.Lua.LuaDoString("local name = '" + name + "' for i=1,GetNumQuestLogEntries() do local questTitle, level, questTag, suggestedGroup, isHeader, isCollapsed, isComplete = GetQuestLogTitle(i) if string.find(questTitle, name) then SelectQuestLogEntry(i) SetAbandonQuest() AbandonQuest() end end"); } } //Throw away items - by Reapler - Custom Script public class throwAway { public static int GetItemQuantity(string itemName) { var execute = "local itemCount = 0; " + "for b=0,4 do " + "if GetBagName(b) then " + "for s=1, GetContainerNumSlots(b) do " + "local itemLink = GetContainerItemLink(b, s) " + "if itemLink then " + "local _, stackCount = GetContainerItemInfo(b, s)\t " + "if string.find(itemLink, \"" + itemName + "\") then " + "itemCount = itemCount + stackCount; " + "end " + "end " + "end " + "end " + "end; " + "return itemCount; "; return Lua.LuaDoString<int>(execute); } /// <summary> /// Used to delete all items by name. /// </summary> /// <param name="itemName">The item to delete.</param> /// <param name="leaveAmount">The amount of items which remain in the bag.</param> /// <remarks>Bug at links with "-"</remarks> public static void DeleteItems(string itemName, int leaveAmount) { var itemQuantity = GetItemQuantity(itemName) - leaveAmount; if(string.IsNullOrWhiteSpace(itemName) || itemQuantity <= 0) return; var execute = "local itemCount = " + itemQuantity + "; " + "local deleted = 0; " + "for b=0,4 do " + "if GetBagName(b) then " + "for s=1, GetContainerNumSlots(b) do " + "local itemLink = GetContainerItemLink(b, s) " + "if itemLink then " + "local _, stackCount = GetContainerItemInfo(b, s)\t " + "local leftItems = itemCount - deleted; " + "if string.find(itemLink, \"" + itemName + "\") and leftItems > 0 then " + "if stackCount <= 1 then " + "PickupContainerItem(b, s); " + "DeleteCursorItem(); " + "deleted = deleted + 1; " + "else " + "if (leftItems > stackCount) then " + "SplitContainerItem(b, s, stackCount); " + "DeleteCursorItem(); " + "deleted = deleted + stackCount; " + "else " + "SplitContainerItem(b, s, leftItems); " + "DeleteCursorItem(); " + "deleted = deleted + leftItems; " + "end " + "end " + "end " + "end " + "end " + "end " + "end; "; Lua.LuaDoString(execute); } } // Delete Item from Inventory - RunCode /run for bag=0,4,1 do for slot=1,36,1 do local name=GetContainerItemLink(bag,slot);if (name and string.find(name,"Item1")) or (name and string.find(name,"Item2")) then PickupContainerItem(bag,slot);DeleteCursorItem();end;end;end // Destroy / Delete Inventory items - RunLuaCode -- Number= = 5, 3, 5, 21, 1, 5 etc of items in inventory to call. number = 1; i=1; for bag = 0,4,1 do for slot = 1, GetContainerNumSlots(bag), 1 do local name = GetContainerItemLink(bag,slot); if name and string.find(name,"An Old History Book") then if i > number then PickupContainerItem(bag,slot); DeleteCursorItem(); end; end; i=i+1; end; end; __________________________________________________________________________________________________________________________________ // Time left on Trinket - By Reapler - https://wrobot.eu/forums/topic/7127-trinket-cooldown-time-left/ /// <summary> /// Used to get the cooldown of an inventory item. /// </summary> /// <param name="slotId">The slot to get from.</param> /// <returns>The left cooldown of the item.</returns> public int GetInventoryCooldown(WoWInventorySlot slotId) { return Lua.LuaDoString<int>( @" local start, duration, enable = GetInventoryItemCooldown(""player"", "+(int)slotId+@") local coolDown = duration-(GetTime()-start); if (coolDown < 0) then return 0; end return coolDown; "); } //Usage: Logging.Write("Cooldown of Trinket1: "+GetInventoryCooldown(WoWInventorySlot.Trinket1)); __________________________________________________________________________________________________________________________________ // Desolace Kodo Quest Codes. // [Is Complete Condition for Quest] return wManager.Wow.ObjectManager.ObjectManager.Target.IsValid && wManager.Wow.ObjectManager.ObjectManager.Target.Reaction >= wManager.Wow.Enums.Reaction.Friendly; // Target Unit by Name: RunCode ObjectManager.Me.Target = ObjectManager.GetWoWUnitByName("Tamed Kodo").First().Guid; // Face your Position ( do 180) RuNCode MovementManager.Face(ObjectManager.Me.Position) __________________________________________________________________________________________________________________________________ // Used to farm (Lockpicking Example - // OverridePulseCSharpCode if (GoToTask.ToPosition(new Vector3(-1455.473f, -3968.029f, 7.562639f))) { while (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause && Skill.GetValue(SkillLine.Lockpicking) < 75) { var obj = ObjectManager.GetObjectWoWGameObject() .FirstOrDefault(o => !wManager.wManagerSetting.IsBlackListed(o.Guid) && o.Entry == 123330 || o.Entry == 123333 || o.Entry == 123331); if (obj != null) { Interact.InteractGameObject(obj.GetBaseAddress); Usefuls.WaitIsCastingAndLooting(); Lua.LuaDoString("LootCloseButton:Click();"); wManager.wManagerSetting.AddBlackList(obj.Guid, 5000, true); } } } return true; __________________________________________________________________________________________________________________________________ // Custom code to PickPocket - or used in other situations. - overridePulseCsharpCode if (!ObjectManager.Me.HaveBuff("Stealth")) { Lua.LuaDoString("CastSpellByName('Stealth')"); } if (GoToTask.ToPosition(new Vector3(-11104.44, 491.9153, 28.40324))) { Conditions.ForceIgnoreIsAttacked = true; var target = ObjectManager.GetObjectWoWUnit().FirstOrDefault(o => o.Entry == 7051); if (target != null) { ObjectManager.Me.Target = target.Guid; if (!ObjectManager.Me.HaveBuff("Stealth")) { Lua.LuaDoString("CastSpellByName('Stealth')"); } while (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause && target.GetDistance >= 5) { MovementManager.MoveTo(target.Position); Thread.Sleep(100); } Lua.LuaDoString("CastSpellByName('Pick Pocket')"); Thread.Sleep(50); string[] asm = { "call " + (uint)0x4C1FA0, wManager.Wow.Memory.WowMemory.RetnToHookCode }; wManager.Wow.Memory.WowMemory.InjectAndExecute(asm); Conditions.ForceIgnoreIsAttacked = false; } } return true; __________________________________________________________________________________________________________________________________ // Custom code to rup up and Sap a mob and then loot chest for Rogue Poisons Quest - OverridePulseCSharpCode if (Quest.IsObjectiveComplete(1, 2359)) { return true; } Conditions.ForceIgnoreIsAttacked = true; wManager.wManagerSetting.CurrentSetting.MaxUnitsNear = 100; var target = ObjectManager.GetObjectWoWUnit().FirstOrDefault(o => o.Entry == 7053); if (target != null && target.IsAlive) { ObjectManager.Me.Target = target.Guid; if (!ObjectManager.Me.HaveBuff("Stealth")) { Lua.LuaDoString("CastSpellByName('Stealth')"); } while (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause && target.GetDistance >= 5) { Lua.LuaDoString("CastSpellByName('Sap')"); Fight.StopFight(); if (target.HaveBuff("Sap")) { Lua.LuaDoString("ClearTarget();"); } MovementManager.MoveTo(target.Position); Thread.Sleep(50); } while (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause && !target.HaveBuff("Sap")) { Lua.LuaDoString("CastSpellByName('Sap');"); Fight.StopFight(); Thread.Sleep(10); } if (target.HaveBuff("Sap")) { wManager.wManagerSetting.ClearBlacklistOfCurrentProductSession(); var chest = ObjectManager.GetObjectWoWGameObject().FirstOrDefault(o => o.Entry == 123214); if (chest != null) { while (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause && chest.GetDistance >= 5) { if (target.HaveBuff("Sap")) { Lua.LuaDoString("ClearTarget();"); Fight.StopFight(); } MovementManager.MoveTo(chest.Position); Thread.Sleep(100); } while (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause && !Quest.IsObjectiveComplete(1, 2359) && !ObjectManager.Me.IsLooting() && !ObjectManager.Me.IsCast) { Lua.LuaDoString("CastSpellByName('Pick Lock');"); Interact.InteractGameObject(chest.GetBaseAddress, true); Usefuls.WaitIsCastingAndLooting(); string[] asm = { "call " + (uint) 0x4C1FA0, wManager.Wow.Memory.WowMemory.RetnToHookCode }; wManager.Wow.Memory.WowMemory.InjectAndExecute(asm); } } } } else { var chest = ObjectManager.GetObjectWoWGameObject().FirstOrDefault(o => o.Entry == 123214); if (chest != null) { while (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause && chest.GetDistance >= 5) { MovementManager.MoveTo(chest.Position); Thread.Sleep(100); } while (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause && !Quest.IsObjectiveComplete(1, 2359) && !ObjectManager.Me.IsLooting() && !ObjectManager.Me.IsCast) { Lua.LuaDoString("CastSpellByName('Pick Lock');"); Interact.InteractGameObject(chest.GetBaseAddress, true); Usefuls.WaitIsCastingAndLooting(); string[] asm = { "call " + (uint) 0x4C1FA0, wManager.Wow.Memory.WowMemory.RetnToHookCode }; wManager.Wow.Memory.WowMemory.InjectAndExecute(asm); } } } if (ObjectManager.Me.IsDead) { Quest.QuesterCurrentContext.CurrentStep = 1; } __________________________________________________________________________________________________________________________________ // Buy From Vendor - RunCode Lua.LuaDoString("BuyMerchantItem(1,1)"); // version 1 wManager.Wow.Helpers.Vendor.BuyItem("Walking Stick",1); // Version 2 - RunCode // buy specific item from vendor -- OverridePulseCSharpCode var npc = new Npc { Entry = 1247, Position = new Vector3(-5601.6, -531.203, 399.6539), Type = Npc.NpcType.Vendor }; int itemId = 2894; if (GoToTask.ToPositionAndIntecractWith(npc)) { Vendor.BuyItem(ItemsManager.GetNameById(itemId), 1); } return true; // Buy item From Vendor + Use that item + Is Specific Class - RunCode -- https://wrobot.eu/forums/topic/11076-quests-and-buy-equip/ if (ObjectManager.Me.WowClass == WoWClass.class && ObjectManager.Me.Level <= 0) // change "Class" to what class you are. set level to level you want to get item at. { wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(new Vector3(x, y, z), NpcID, 1, false); System.Threading.Thread.Sleep(5000); wManager.Wow.Helpers.Vendor.BuyItem("Skinning Knife",1); // change Skinning Knife to what item you want. do not remove "" System.Threading.Thread.Sleep(5000); } // if has item useitem, hasitem if (ItemsManager.HasItemById(3108)) // change 3108 to the item id { ItemsManager.UseItem(3108); // change 3108 to the item id } // Buy ONLY Item + Has Quest - RunCode if (Quest.HasQuest(375)) { wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(new Vector3(2259.73f, 275.571f, 34.83753f), 2118, 1, false); System.Threading.Thread.Sleep(5000); wManager.Wow.Helpers.Vendor.BuyItem("Coarse Thread",1); // change Skinning Knife to what item you want. do not remove "" System.Threading.Thread.Sleep(5000); } // Buy from Vendor - Professional way - RunCode int npcEntryId = 1464; var position = new Vector3(-3827.93f, -831.901f, 10.0906f); while(!Quest.IsObjectiveComplete(1, 288)) { while(!wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(position, npcEntryId)) { wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(position, npcEntryId); } if(wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(position, npcEntryId)) { Usefuls.SelectGossipOption(GossipOptionsType.vendor); Thread.Sleep(Usefuls.Latency + 500); if(ItemsManager.GetItemCountById(2594) <= 0) { Lua.LuaDoString("BuyMerchantItem(8,1)"); //Or use wManager.Wow.Helpers.Vendor.BuyItem("Coarse Thread",1); Thread.Sleep(Usefuls.Latency + 500); return; } } } __________________________________________________________________________________________________________________________________ // Buy mount , riding trainer, train riding, buy riding mount - runcode !wManager.Wow.Helpers.Skill.Has(wManager.Wow.Enums.SkillLine.Riding) && Lua.LuaDoString<int>("return GetMoney()") >= 1000000 // buy mount from vendor - runcode int npcEntryId = 4772; var pos = new Vector3(-5521.5f, -1347.8f, 398.8f); if(!wManager.Wow.Helpers.Skill.Has(wManager.Wow.Enums.SkillLine.Riding)) { while(!wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(pos, npcEntryId)) { wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(pos, npcEntryId); Thread.Sleep(Usefuls.Latency + 500); } Usefuls.SelectGossipOption(GossipOptionsType.trainer); Thread.Sleep(Usefuls.Latency + 500); Lua.LuaDoString("BuyTrainerService(0)"); Thread.Sleep(Usefuls.Latency + 500); Lua.LuaDoString("CloseTrainer()"); } __________________________________________________________________________________________________________________________________ // FLY - Custom Fly Code ---- FLYING CODE RunCode var position = new Vector3(-1770.37f, 3262.19f, 5.10852f); int npcEntryId = 6726; if (!ObjectManager.Me.IsOnTaxi) { if (wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(position, npcEntryId)) { int node; Usefuls.SelectGossipOption(GossipOptionsType.taxi); node = wManager.Wow.Helpers.Lua.LuaDoString<int>("for i=0,30 do if string.find(TaxiNodeName(i),'Orgrimmar') then return i end end"); wManager.Wow.Helpers.Lua.LuaDoString("TakeTaxiNode(" + node + ")"); } } __________________________________________________________________________________________________________________________________ // Zangermarsh -- Elevator Code If if (ObjectManager.GetWoWGameObjectByyId(183177).FirstOrDefault().GetDistance <= 10) { Logging.Write("Elevator already here.Lets wait - waiting for elevator"); } while (ObjectManager.GetWoWGameObjectByyId(183177).FirstOrDefault().GetDistance <= 10) {Thread.Sleep(500);}; Logging.Write("Waiting for the Tram"); while (ObjectManager.GetWoWGameObjectByyId(183177).FirstOrDefault().GetDistance > 10) {Thread.Sleep(500);}; // step inside the tram wManager.Wow.Helpers.Move.Forward(Move.MoveAction.PressKey,1000); wait 1500 while (ObjectManager.Me.Position.DistanceTo2D( new Vector3(283.8558f, 5945.312f, 149. 8242f, "None")) >10) {Thread.Sleep(100);}; wait 100 wManager.Wow.Helpers.Move.Backward(Move.MoveAction.PressKey,5500); // Custom Follow Path to run away from Elevator EndIf __________________________________________________________________________________________________________________________________ // Click Loot Window - Item # 1 ( RunCode ) robotManager.Helpful.Mouse.CurseurWindowPercentagePosition(wManager.Wow.Memory.WowMemory.Memory.WindowHandle, 2, 18); robotManager.Helpful.Mouse.ClickLeft(); // Click Loot Window - Item # 2 ( RunCode ) robotManager.Helpful.Mouse.CurseurWindowPercentagePosition(wManager.Wow.Memory.WowMemory.Memory.WindowHandle, 2, 22); robotManager.Helpful.Mouse.ClickLeft(); // Mouse Click - Loot window Item # 3 ( RunCode ) robotManager.Helpful.Mouse.CurseurWindowPercentagePosition(wManager.Wow.Memory.WowMemory.Memory.WindowHandle, 2, 26); robotManager.Helpful.Mouse.ClickLeft(); // Click Loot Window - Item # 4 ( RunCode ) robotManager.Helpful.Mouse.CurseurWindowPercentagePosition(wManager.Wow.Memory.WowMemory.Memory.WindowHandle, 2, 29); robotManager.Helpful.Mouse.ClickLeft(); if (wManager.Wow.Helpers.ItemsManager.GetItemCountById(19035) > 0) { wManager.Wow.Helpers.ItemsManager.UseItem(19035); System.Threading.Thread.Sleep(2000); robotManager.Helpful.Mouse.CurseurWindowPercentagePosition(wManager.Wow.Memory.WowMemory.Memory.WindowHandle, 2, 18); robotManager.Helpful.Mouse.ClickLeft(); System.Threading.Thread.Sleep(2000); robotManager.Helpful.Mouse.CurseurWindowPercentagePosition(wManager.Wow.Memory.WowMemory.Memory.WindowHandle, 2, 22); robotManager.Helpful.Mouse.ClickLeft(); System.Threading.Thread.Sleep(2000); robotManager.Helpful.Mouse.CurseurWindowPercentagePosition(wManager.Wow.Memory.WowMemory.Memory.WindowHandle, 2, 26); robotManager.Helpful.Mouse.ClickLeft(); System.Threading.Thread.Sleep(2000); robotManager.Helpful.Mouse.CurseurWindowPercentagePosition(wManager.Wow.Memory.WowMemory.Memory.WindowHandle, 2, 29); robotManager.Helpful.Mouse.ClickLeft(); } __________________________________________________________________________________________________________________________________ // Go to location and Gather - Specific Location and gather / interact - RuNCode var pos = new Vector3(-4679.763f, -1785.955f, -41.34184f); int objectId = 19861; wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithGameObject(pos, objectId); Thread.Sleep(Usefuls.Latency + 10000); if(ItemsManager.GetItemCountById(5791) < 1 && ItemsManager.GetItemCountById(5790) < 1) { wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithGameObject(pos, objectId); Thread.Sleep(Usefuls.Latency + 10000); } __________________________________________________________________________________________________________________________________ // Use Hearthstone version 2. if (wManager.Wow.Helpers.Usefuls.ContinentId != (int) wManager.Wow.Enums.ContinentId.Azeroth || wManager.Wow.ObjectManager.ObjectManager.Me.Position.DistanceTo2D(new robotManager.Helpful.Vector3(1, 2, 3)) > 1000) { wManager.wManagerSetting.CurrentSetting.CloseIfPlayerTeleported = false; wManager.Wow.Helpers.ItemsManager.UseItem(6948); // http://www.wowhead.com/item=6948/hearthstone System.Threading.Thread.Sleep(1000 * 20); // 20 secondes wManager.wManagerSetting.CurrentSetting.CloseIfPlayerTeleported = true; } // Check timmer on HS Lua.LuaDoString<bool>("if GetItemCooldown(Heathstone) == 0 then return true end") __________________________________________________________________________________________________________________________________ // Add target to Blacklist -- For professional Profile creators.. this can cause you some drama! WoWUnit unit = new WoWUnit(0); if (unit.IsValid && !wManager.Wow.ObjectManager.ObjectManager.BlackListObjectManagerGuid.Contains(unit.Guid)) wManager.Wow.ObjectManager.ObjectManager.BlackListObjectManagerGuid.Add(unit.Guid); __________________________________________________________________________________________________________________________________ // For dungeons mostly ---- Blacklist looting ALL MOBS, except for the boss (rename 12345, by boss id.) var _units = new List<wManager.Wow.ObjectManager.WoWUnit>(); var tUnit = wManager.Wow.ObjectManager.ObjectManager.GetWoWUnitLootable(); foreach (var woWUnit in tUnit) { if (!wManager.wManagerSetting.IsBlackListedAllConditions(woWUnit) && woWUnit.Entry == 12345) _units.Add(woWUnit); } if (_units.Count > 0) wManager.Wow.Bot.Tasks.LootingTask.Pulse(_units); __________________________________________________________________________________________________________________________________ // Select gossip option 1 and click all the text after that var position = new Vector3(-6679.93f, -1194.36f, 240.2135f); int npcEntryId = 8479; wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(position, npcEntryId); System.Threading.Thread.Sleep(1000 * 2); System.Threading.Thread.Sleep(1000 * 2); Usefuls.SelectGossipOption(1); System.Threading.Thread.Sleep(1000 * 2); Usefuls.SelectGossipOption(1); System.Threading.Thread.Sleep(1000 * 2); Usefuls.SelectGossipOption(1); System.Threading.Thread.Sleep(1000 * 2); Usefuls.SelectGossipOption(1); System.Threading.Thread.Sleep(1000 * 2); wManager.Wow.Helpers.Move.Forward(Move.MoveAction.PressKey, 3000); __________________________________________________________________________________________________________________________________ // if in Regeneration State - force bot to sitdown - Runcode -- credit - https://wrobot.eu/forums/topic/9777-sitting-during-regeneration/ if (robotManager.Helpful.Logging.Status == "Regeneration") { if (!wManager.Wow.ObjectManager.ObjectManager.Me.IsSitting) { wManager.Wow.Helpers.Move.SitStandOrDescend(); Thread.Sleep(1000); } } // Force bot to SIT DOWN if (!wManager.Wow.ObjectManager.ObjectManager.Me.IsSitting) { wManager.Wow.Helpers.Move.SitStandOrDescend(); Thread.Sleep(1000); } __________________________________________________________________________________________________________________________________ // Check Reputation Faction level - IF STATEMENT - Rep Faction level Lua.LuaDoString<bool>(@" for factionIndex = 1, GetNumFactions() do local name, description, standingId, bottomValue, topValue, earnedValue, atWarWith, canToggleAtWar, isHeader, isCollapsed, hasRep, isWatched, isChild, factionID = GetFactionInfo(factionIndex) if name == ""The Mag'har"" and standingId < 4 then return true end end ") __________________________________________________________________________________________________________________________________ __________________________________________________________________________________________________________________________________ if (!(Quest.HasQuest(12733)) && !(Quest.GetQuestCompleted(12733)) && !(ObjectManager.Me.Position.DistanceTo2D(new Vector3(-3095.85f, -2890.54f, 34.583f)) < 50)) { wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(new Vector3(-3095.85f, -2890.54f, 34.583f), 13476, 1, false); System.Threading.Thread.Sleep(2000); wManager.Wow.Helpers.Vendor.BuyItem("Healing Potion",4); System.Threading.Thread.Sleep(2000); wManager.Wow.Helpers.Vendor.BuyItem("Scroll of Intellect II",2); wManager.Wow.Helpers.Vendor.BuyItem("Scroll of Agility",2); System.Threading.Thread.Sleep(2000); wManager.Wow.Helpers.ItemsManager.UseItem(2290); System.Threading.Thread.Sleep(2000); wManager.Wow.Helpers.ItemsManager.UseItem(3012); } // Script to accept quest and turn in - manual turn in, manual accept quest if (!(Quest.HasQuest(12733)) && !(Quest.GetQuestCompleted(12733)) && !(ObjectManager.Me.Position.DistanceTo2D(new Vector3(2368.922f, -5776.345f, 151.3674f)) < 20)) { wManager.Wow.Bot.Tasks.GoToTask.ToPosition(new Vector3(2368.922f, -5776.345f, 151.3674f)); } var u = ObjectManager.GetNearestWoWUnit(ObjectManager.GetWoWUnitByEntry(29047)); if (u.IsValid) { Interact.InteractGameObject(u.GetBaseAddress); wManager.Wow.Helpers.Lua.RunMacroText("/script AcceptQuest();"); } if ((Quest.HasQuest(12733)) && !(Quest.IsObjectiveComplete(1, 12733)) && !(ObjectManager.Me.InCombat)); { wManager.Wow.Bot.Tasks.GoToTask.ToPositionAndIntecractWithNpc(new Vector3(2336.52f, -5699.58f, 153.9225f), 28406, 1, false); System.Threading.Thread.Sleep(000); wManager.Wow.Helpers.SpellManager.CastSpellByIdLUA(45477); } if (Quest.HasQuest(12733) && !(Quest.GetQuestCompleted(12733)) && !(ObjectManager.Me.Position.DistanceTo2D(new Vector3(2368.922f, -5776.345f, 151.3674f)) < 20)) { wManager.Wow.Bot.Tasks.GoToTask.ToPosition(new Vector3(2368.922f, -5776.345f, 151.3674f)); } if (u.IsValid) { Interact.InteractGameObject(u.GetBaseAddress); wManager.Wow.Helpers.Lua.RunMacroText("/click QuestFrameCompleteQuestButton"); } return true; __________________________________________________________________________________________________________________________________ // Play sound in game - sound file // Run Lua Code Lua.LuaDoString("PlaySoundFile("Interface\\AddOns\\MyAddOn\\MySound.ogg")"); // Run Lua Macro Lua.RunMacroText("/console Sound_EnableSFX 1"); // Play sound in wrobot C# var myPlayer = new System.Media.SoundPlayer { SoundLocation = Application.StartupPath + "\\Data\\newWhisper.wav" }; var tPlay = new robotManager.Helpful.Timer(1000 * 5); // 5 sec = 5000 ms while (!tPlay.IsReady) { myPlayer.PlaySync(); } myPlayer.Stop(); __________________________________________________________________________________________________________________________________ // Fishing test - Fishing rotation OverridePulseCSharpCode Vector3 pos1 = new Vector3(-1475.103, -226.9858, 4.822745, "Flying"); float fishRotation = 5.77f; uint itemId = 211160; if (!FishingTask.IsLaunched) { if (GoToTask.ToPosition(pos1, 1.5f)) { ObjectManager.Me.Rotation = fishRotation; ItemsManager.UseItem(itemId); FishingTask.LoopFish(); } } return true; __________________________________________________________________________________________________________________________________ // Mail Items *custom script* - By Reapler public static int InteractItems(List<string> itemNames, int interactions = int.MaxValue) { if (!itemNames.Any()) return -1; var execute = "local counter = 0; " + "local leftStacks = 0; " + "for b=0,4 do " + "if GetBagName(b) then " + "for s=1, GetContainerNumSlots(b) do " + "local itemLink = GetContainerItemLink(b, s) " + "if itemLink then " + "local _, stackCount = GetContainerItemInfo(b, s)\t" + "if string.find(itemLink, \""+ itemNames.FirstOrDefault() + "\") "; if (itemNames.Count > 1) { execute = itemNames.Where(obj => itemNames.FirstOrDefault() != obj).Aggregate(execute, (current, obj) => current + "or string.find(itemLink, \"" + obj + "\") "); } execute = execute + "then " + "if (counter < "+interactions+") then " + "UseContainerItem(b, s); " + "counter = counter + 1; " + "else " + "leftStacks = leftStacks + 1;" + "end " + "\tend\tend\tend end end return leftStacks;"; return Lua.LuaDoString<int>(execute); } /// <summary> /// Sends a mail to a recipient. /// </summary> /// <param name="recipient">The recipient.</param> /// <param name="subject">The subject.</param> /// <param name="itemNames">The items to send as names.</param> /// <returns>true if successful ; false if no mailbox available or stacks are left.</returns> public bool SendItems(string recipient, string subject, List<string> itemNames) { var mailBox = ObjectManager.GetObjectWoWGameObject().FirstOrDefault(i => i.IsMailbox && i.GetDistance <= 5); if (mailBox == null || string.IsNullOrWhiteSpace(recipient)) return false; if (subject.Length == 0) subject = "-"; if (mailBox) { const int delayMs = 800; var timeOut = DateTime.Now.AddSeconds(40); Interact.InteractGameObject(mailBox.GetBaseAddress); Thread.Sleep(delayMs); Lua.LuaDoString("RunMacroText('/click MailFrameTab2');"); Thread.Sleep(delayMs); var leftStack = InteractItems(itemNames, 12); Thread.Sleep(delayMs); Lua.LuaDoString($"SendMail(\"{recipient}\",\"{subject}\",\" \");"); Thread.Sleep(delayMs*3); while (leftStack != 0 && DateTime.Now < timeOut) { leftStack = InteractItems(itemNames, 12); Thread.Sleep(delayMs); Lua.LuaDoString($"SendMail(\"{recipient}\",\"{subject}\",\" \");"); Thread.Sleep(delayMs*3); } Lua.LuaDoString("CloseMail();"); if (leftStack != 0) return false; } return true; } // Usage: runcode SendItems("Reapler", "items for you", new List<string> { "Super Healing Potion", "Heavy Netherweave Bandage", "Super Mana Potion", }); __________________________________________________________________________________________________________________________________ //runluacode - equip ammo var QuiverAmmoBagsId = new List<int> { 29143, 29144, 29118, 18714, 44447, 44448, 34105, 34106, 34099, 34100, 19319, 19320, 2662, 2663, 8217, 8218, 7371, 7372, 3604, 3605, 3573, 3574, 11362, 11363, 5439, 5441, 7278, 7279, 2101, 2102, }; var freeSlots = 0; var bags = wManager.Wow.ObjectManager.ObjectManager.GetObjectWoWContainer(); foreach (var b in bags) { if (b.IsValid && QuiverAmmoBagsId.Contains(b.Entry) && b.Owner == wManager.Wow.ObjectManager.ObjectManager.Me.Guid && (b.ContainedIn == 0 || b.ContainedIn == wManager.Wow.ObjectManager.ObjectManager.Me.Guid) && !string.IsNullOrWhiteSpace(b.Name)) { freeSlots += Lua.LuaDoString<int>($@" local freeSlots = 0; for bagID = 1, 4 do if GetBagName(bagID) ~= nil and GetBagName(bagID) == '{b.Name.Replace("'", "\'")}' then for s=1,GetContainerNumSlots(bagID) do local i = GetContainerItemInfo(bagID,s); if not i then freeSlots = freeSlots + 1 end end end end return freeSlots;"); } } __________________________________________________________________________________________________________________________________ // Polymorph on multiple attackers - Mars -https://wrobot.eu/forums/topic/7541-switch-target-polymorph-switch-to-original-target/?tab=comments#comment-34382 List<WoWUnit> attackers = ObjectManager.GetUnitAttackPlayer(); FightEvents.OnFightLoop += (unit, cancelable) => { if (attackers.Count > 1 && Polymorph.KnownSpell && Polymorph.IsSpellUsable && ObjectManager.Target.GetDistance <= 25 && presence.KnownSpell && presence.IsSpellUsable) { WoWUnit mainTarget = attackers.Where(u => u.HealthPercent == attackers.Min(x => x.HealthPercent)).FirstOrDefault(); WoWUnit polyTarget = attackers.Where(u => u.HealthPercent == attackers.Max(x => x.HealthPercent)).FirstOrDefault(); if (!polyTarget.HaveBuff("Polymorph") && polyTarget != mainTarget) { SpellManager.CastSpellByNameOn("Polymorph", polyTarget.Name); Usefuls.WaitIsCasting(); return; } } }; // secondary - Semiko List<WoWUnit> attackers = ObjectManager.GetUnitAttackPlayer(); if (attackers.Count > 1) { WoWUnit mainTarget = attackers.Where(u => u.HealthPercent == attackers.Min(x => x.HealthPercent)).FirstOrDefault(); WoWUnit polyTarget = attackers.Where(u => u.HealthPercent == attackers.Max(x => x.HealthPercent)).FirstOrDefault(); if (!polyTarget.HaveBuff("Polymorph") && polyTarget != mainTarget) { Interact.InteractGameObject(polyTarget.GetBaseAddress); SpellManager.CastSpellByNameLUA("Polymorph"); Thread.Sleep(500); Interact.InteractGameObject(mainTarget.GetBaseAddress); } } __________________________________________________________________________________________________________________________________ // the missing diplomat CAN CONDITION return Quests.hasFailed("The Missing Diplomat"); // IS COMPLETE return Quests.isComplete("The Missing Diplomat") || Quests.hasFailed("The Missing Diplomat"); // isfailed custom script code - timmer quests - run code if(!Quest.GetQuestCompleted(1447)) { bool missingDiplomatFailed = false; if(Quests.isFailed("The Missing Diplomat")) { Logging.Write("Quest failed. Going to abandon and restart, hold on..."); missingDiplomatFailed = true; Thread.Sleep(Usefuls.Latency + 2000); Quests.abandon("The Missing Diplomat"); Thread.Sleep(Usefuls.Latency + 10000); } if(wManager.Wow.Helpers.FinishedQuestsSettings.CurrentSetting.FinishedQuest.Contains(1447) && missingDiplomatFailed) { Logging.Write("[FNV_Quester]: Going to remove The Missing Diplomat from the list of finished quest ids..."); Thread.Sleep(Usefuls.Latency + 500); wManager.Wow.Helpers.FinishedQuestsSettings.CurrentSetting.FinishedQuest.Remove(1447); Thread.Sleep(Usefuls.Latency + 500); Logging.Write("[FNV_Quester]: Success? A: " + !wManager.Wow.Helpers.FinishedQuestsSettings.CurrentSetting.FinishedQuest.Contains(1447)); } } __________________________________________________________________________________________________________________________________ // Next RunCode for IsFailed wManager.wManagerSetting.ClearBlacklistOfCurrentProductSession(); wManager.Wow.Helpers.Conditions.ForceIgnoreIsAttacked = false; Thread d = new Thread(() => { while(!Quest.HasQuest(1447) && !Quest.GetQuestCompleted(1447)) { Thread.Sleep(100); } if(Quest.HasQuest(1447)) { while(ObjectManager.Me.WowClass == WoWClass.Druid && !ObjectManager.Me.HaveBuff("Bear Form") && !ObjectManager.Me.HaveBuff("Cat Form")) { Thread.Sleep(25); Logging.Write("[FNV_Quester]: Forcing Bear Form"); Lua.LuaDoString("CastSpellByName('Bear Form')"); Thread.Sleep(500); break; } } }); if(ObjectManager.Me.WowClass == WoWClass.Druid) d.Start(); --------------- // Pickup Quest // Pulse Quest // RunCode if(!Quest.GetQuestCompleted(1447)) { if(!Quests.hasFailed("The Missing Diplomat") && !Quests.isComplete("The Missing Diplomat")) { int npcId = 4961; Vector3 pos = new Vector3(-8681.17, 433.618, 99.8117); var unit = ObjectManager.GetWoWUnitByEntry(npcId).FirstOrDefault(); wManager.wManagerSetting.ClearBlacklistOfCurrentProductSession(); ObjectManager.Me.Target = unit.Guid; Fight.StartFight(); } } // if quest Quests.isComplete("The Missing Diplomat") //turn in quest  
     
  5. Like
    duthibaut reacted to Droidz in Farming ingenering primal air   
    Hello, create quest profile
×
×
  • Create New...