February 1, 201610 yr Snippets codes for quest profiles ps: Feel free to share your tips on this post. If your message is poorly presented or contains a question, it will be deleted.
February 1, 201610 yr Author Quest log cleaner Abandon all quests Add step type "RunLuaCode" with code: for i=1,GetNumQuestLogEntries() do SelectQuestLogEntry(i); SetAbandonQuest(); AbandonQuest(); end Abandon quest by quest id Add step type "RunLuaCode with code (replace 12345 by the quest id at abandon): local questId = 12345; for i=1,GetNumQuestLogEntries() do local _, _, _, _, _, _, _, id = GetQuestLogTitle(i); if id == questId then SelectQuestLogEntry(i); SetAbandonQuest(); AbandonQuest(); end end
February 1, 201610 yr Author Use item on hostile weakened 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) (sample if based on this quest: http://www.wowhead.com/quest=28000/do-the-imp-possible )
February 1, 201610 yr Author Force to use Flightmaster / Taxi WRobot takes the taxi automaticly generally, but if you want force to use taxi you can look this sample: UseFlightPath.xml (guide is written in the first step).
February 1, 201610 yr Author Add grind area (don't forget to give a name at this "Quest" and add in the steps a step type "Pulse")
February 1, 201610 yr Author Change WRobot settings You can change WRobot settings with step type "RunCode" like this: Disable "Stop bot if player teleported" (to avoid problem with you use Hearthstone or portals): wManager.wManagerSetting.CurrentSetting.CloseIfPlayerTeleported = false; To disable "attack before being attacked": wManager.wManagerSetting.CurrentSetting.AttackBeforeBeingAttacked = false; ... (to get names of settings, you can edit file with nodepad "WRobot\Settings\General-..........xml")
February 1, 201610 yr Author Use Portals To use portails, you can look this sample: UsePortal.xml (guide is written in the first step).
March 25, 201610 yr Author Ignore fighting back To disable detection when the character is attacked, use this c# code: wManager.Wow.Helpers.Conditions.ForceIgnoreIsAttacked = true; To reactivate attack detection: wManager.Wow.Helpers.Conditions.ForceIgnoreIsAttacked = false; (don't forget to reactivate it, or restart WRobot if you want use other profile/product) You can also ignore fighting back with specific mob: WoWUnit unit = new WoWUnit(0); if (unit.IsValid && !wManager.Wow.ObjectManager.ObjectManager.BlackListObjectManagerGuid.Contains(unit.Guid)) wManager.Wow.ObjectManager.ObjectManager.BlackListGetUnitAttackPlayerGuidTime.Add(unit.Guid, System.DateTime.Now + System.TimeSpan.FromMinutes(2));
April 26, 20169 yr Author Train spells This sample is for WoD, in this sample the profile train the spell http://www.wowhead.com/spell=2018/blacksmithing at http://www.wowhead.com/npc=514/smith-argus : TrainSpell.xml To adapt this profile at you, in "Is complete condition" quest option replace "2018" by your spell id, in "hotspots" put your trainer position and in "target entry" put your trainer entry id.
July 19, 20169 yr Use item on dead mob ( after looting) Use like the use item on weakened mob- you need to modify the item ID and Quest ID for your quest. Thread t = new Thread(() => { uint itemId = 9618; int questId = 25336; while (robotManager.Products.Products.IsStarted) { if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause) { if (!Quest.HasQuest(questId)) break; if (ObjectManager.Target.IsValid && ObjectManager.Target.IsDead) { ItemsManager.UseItem(itemId); } } Thread.Sleep(500); } }); t.Start();
August 27, 20169 yr KILL AND LOOT "is complete condition" for killing a boss (instance, raid) with no quest return ObjectManager.GetWoWUnitByEntry(16151).Count == 0; with the id of the boss dont forget to select "true" in "not required in quest log"
September 9, 20169 yr Author Dump all quests in "Quests log" with lua ret = ''; local numEntries, numQuests = GetNumQuestLogEntries(); for questLog = 1, numEntries do local questTitle, _, _, _, _, _, _, id = GetQuestLogTitle(questLog); if id > 0 and questTitle then local q = '\n================='; q = q .. '\n' .. tostring(questTitle) .. ' (' .. id .. ')'; local numObjectives = GetNumQuestLeaderBoards(questLog); for i=1,numObjectives do local description, objectiveType, isCompleted = GetQuestLogLeaderBoard(i,questLog); if description then q = q .. '\nObjective count: ' .. i .. ', Description: ' .. tostring(description) .. ', ObjectiveType: ' .. tostring(objectiveType) .. ', IsCompleted: ' .. tostring(isCompleted); end end q = q .. '\n================='; print(q); ret = ret .. q; end end Go to WRobot tab "Tools" > "Development Tools" > paste this lua code in textbox and click on button "Lua (return value in 'ret')"
March 6, 20179 yr Author Catch Zeppelin/Ship Quest profile: Catch Zeppelin and Ship Sample.xml // Sample of how to use Zeppelin/Ship // In this sample, WRobot catch Zeppelin from Kalimdor (Ogrimmard) to Northrend (Borean Tundra (Warsong Hold)) /* Quest settings: * Can condition: "return Usefuls.ContinentId == (int) ContinentId.Kalimdor;" * Is complete condition: "return Usefuls.ContinentId == (int) ContinentId.Northrend && !ObjectManager.Me.InTransport;" * Not required in quest log: "True" * Quest type: "OverridePulseCSharpCode" */ // You can get zeppelin/ship/player positions and entry ID in tab "Tools" > "Development Tools" > "Dump all informations" (or "Memory information"). // Settings: var zeppelinEntryId = 186238; // Zeppelin/Ship EntryId // From var fromZeppelinWaitPosition = new Vector3(1775.066, -4299.745, 151.0326); // Position where Zeppelin/Ship waits players (from) var fromPlayerWaitPosition = new Vector3(1762.322, -4282.175, 133.1072); // Position where the player waits Zeppelin/Ship (from) var fromPlayerInZeppelinPosition = new Vector3(1768.199, -4289.856, 133.1912); // Position where the player waits in the Zeppelin/Ship (from) // To var toZeppelinWaitPosition = new Vector3(2837.908, 6187.443, 140.1648); // Position where Zeppelin/Ship waits players (to) var toPlayerLeavePosition = new Vector3(2836.5, 6184.367, 121.9332); // Position to go out the Zeppelin/Ship (to) // Change WRobot settings: wManager.wManagerSetting.CurrentSetting.CloseIfPlayerTeleported = false; // Code: if (!Conditions.InGameAndConnectedAndProductStartedNotInPause) return true; if (Usefuls.ContinentId == (int)ContinentId.Kalimdor) { if (!ObjectManager.Me.InTransport) { if (GoToTask.ToPosition(fromPlayerWaitPosition)) { var zeppelin = ObjectManager.GetWoWGameObjectByEntry(zeppelinEntryId).OrderBy(o => o.GetDistance).FirstOrDefault(); if (zeppelin != null && zeppelin.Position.DistanceTo(fromZeppelinWaitPosition) < 1) { GoToTask.ToPosition(fromPlayerInZeppelinPosition); } } } } else if (Usefuls.ContinentId == (int)ContinentId.Northrend) { if (ObjectManager.Me.InTransport) { var zeppelin = ObjectManager.GetWoWGameObjectByEntry(zeppelinEntryId).OrderBy(o => o.GetDistance).FirstOrDefault(); if (zeppelin != null && zeppelin.Position.DistanceTo(toZeppelinWaitPosition) < 1) { GoToTask.ToPosition(toPlayerLeavePosition); } } } return true;
May 12, 20178 yr Author Change position of path generated by WRobot (this can help you to resolve stuck on specific doors and doorways) With this code, you can replace specific point of path by another. // Continent (item1), DefaultPosition (item2), DefaultPositionSearchRange (item3), NewPosition (item4) var positionChange = new List<Tuple<ContinentId, Vector3, float, Vector3>> { new Tuple<ContinentId, Vector3, float, Vector3>(ContinentId.Kalimdor, new Vector3(1422.318, -4662.921, 35.46182), 0.5f, new Vector3(1422.063, -4665.421, 35.46295)), /// new Tuple<ContinentId... }; wManager.Events.MovementEvents.OnMovementPulse += delegate(List<Vector3> points, CancelEventArgs cancelable) { var continent = (ContinentId) Usefuls.ContinentId; foreach (var p in points) { foreach (var pchange in positionChange) { if (p != null && pchange.Item1 == continent && p.DistanceTo(pchange.Item2) <= pchange.Item3) { Logging.WriteDebug("Change path position of " + p + " to " + pchange.Item4); p.X = pchange.Item4.X; p.Y = pchange.Item4.Y; p.Z = pchange.Item4.Z; p.Type = pchange.Item4.Type; p.Action = pchange.Item4.Action; } } } }; (you need to run this code one time by WRobot session, you can run this code in step type "RunCode")
September 6, 20178 yr Author Use Hearthstone sample 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; } Line 1 replace "Azeroth" by your destination continent. Line 2 replace "1, 2, 3" by your destination position (you can also replace "1000" by your minimum distance to destination to use Hearthstone).
January 30, 20188 yr Author Blacklist object/unit in ObjectManager WRobot will 100% ignore blacklisted objects WoWUnit unit = new WoWUnit(0); if (unit.IsValid && !wManager.Wow.ObjectManager.ObjectManager.BlackListObjectManagerGuid.Contains(unit.Guid)) wManager.Wow.ObjectManager.ObjectManager.BlackListObjectManagerGuid.Add(unit.Guid); (this code can disrupt WRobot, use it only if you know what you're doing)
February 9, 20188 yr Force Taxi (Vanilla) & automatically get TaxiButton by name var position = new Vector3(-8835.76f, 490.084f, 109.6157f); int npcEntryId = 352; 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),'Ironforge') then return i end end"); wManager.Wow.Helpers.Lua.LuaDoString("TakeTaxiNode(" + node + ")"); } } Step "RunCode" and wrap it into a while loop (as shown in Droidz example). For 'position' you have to add the position of the flight master the bot is going to use. For 'npcEntryID' you have to add the ID of the corresponding flight master. For 'Ironforge' you have to change it to the name of the taxi node you wanna travel to. Has not to be the full name, an explizit part of the destination is enough (f.e. 'Stormwind' instead of 'Stormwind City'). The code above makes the bot travelling from Stormwind to Ironforge. Edited April 9, 20188 yr by FNV316
April 9, 20206 yr Click on Item and KILL mob (Overridepulse) var pos = new Vector3(x, y, z); // Vector3 postion int npc = 1; // hostile unit int clickitem = 1; // item you need to click on var target = ObjectManager.GetObjectWoWUnit().FirstOrDefault(o => o.Entry == npc && o.Position.DistanceTo(ObjectManager.Me.Position) < 50 && o.IsAlive); GoToTask.ToPosition(pos); while (MovementManager.InMovement) { Thread.Sleep(250); } if (ObjectManager.Me.Position.DistanceTo2D(new Vector3(pos)) < 3) { Interact.InteractGameObject(ObjectManager.GetWoWGameObjectByEntry(clickitem).FirstOrDefault().GetBaseAddress); Thread.Sleep(1500); } if (target != null && target.IsAlive) { ObjectManager.Me.Target = target.Guid; if (ObjectManager.Me.Position.DistanceTo(target.Position) >= 30) MovementManager.MoveTo(target.Position); if (ObjectManager.Target.Name == "unit") //name of the unit { Fight.StartFight(); } } return true; 1 - edit to your needs, change the info. 2 - use overridepulse 3- in quest order editer, do Pulseallinone
April 10, 20206 yr Go to Vector3 And Use Item (Overridepulse) var pos = new Vector3(x, y, z); // position to where you need to be to use the item string item = "Name"; // item Sring - change name to what item you are using. GoToTask.ToPosition(pos); // move to position while (MovementManager.InMovement) { Thread.Sleep(250); } if (ObjectManager.Me.Position.DistanceTo2D(pos) < 3) { ItemsManager.UseItem(item); Thread.Sleep(500); } return true;
April 10, 20206 yr Go to Vector3 And click on object (Overridepulse) var pos = new Vector3(x, y, z); // position to where you need to interact with object int clickonobject = 0; // the object ID GoToTask.ToPosition(pos); while (MovementManager.InMovement) { Thread.Sleep(250); } if (ObjectManager.Me.Position.DistanceTo2D(pos) < 3) { Interact.InteractGameObject(ObjectManager.GetWoWGameObjectByEntry(clickonobject).FirstOrDefault().GetBaseAddress); Thread.Sleep(500); } return true;
August 16, 20205 yr Many Useful Functions (Vanilla - WOTLK) RunCode (Action): - Tool.LearningSpells("Name Of spell"); // Put in name of the spell you wish to buy. - Tool.Craft("profession", "RecipeName", 1); // This code will only work for Wrath of the lich king - Tool.RemoveItem(55); // Removes item by ID - Tool.UseItem(55); // Uses item by ID - Tool.AbandonQuest("Quest Name"); //Abandon Quest by Name - Tool.Sellitem("Item Name"); // sell item by name - Tool.Fish(new Vector3(1, 1, 1), new Vector3(1, 1, 1), 0, 75, 6562, 111); - Tool.CheckUpdate(); // updates quester profiles from github.raw - Tool.SendItems("name", "note", new List<string> { "Super Healing Potion", }); // mail itemlist to another player If statements : - Tool.RecipeIsKnown("profession", "RecipeName") == true // check if you have this Recipe! If statement! - Tool.HasItem("itemname") <= 0 - Tool.Faction("Name of the faction", 5) == true // add name of faction, and amount of rep you want to check aganst. 42999 is max rep. - Tool.haveKey(KeyID) // checks if you have a key Travel Functions added(Vanilla - WOTLK) Flight : - Travel.Flight.ThunderBluffToOrgrimmar(); - Travel.Flight.OrgrimmarToThunderBluff(); Full code here: https://wrobot.eu/forums/topic/12034-toolboxvanilla-wotlk-many-useful-functions-custom-script/ Edited August 22, 20205 yr by TheSmokie
October 6, 20205 yr Author Try resolve navigation problem In some zone (mainly if you are on a moving gameobject like boat) use this option can help to resolve navigation problem (you need to enable this option also when you record path or get npc/gameobject positions) wManager.Wow.ObjectManager.WoWUnit.ForceRelativePosition = true; (don't forget to disable this option after, wrobot only turns it off itself after a restart)
Create an account or sign in to comment