Everything posted by TheSmokie
-
Bot doesn't loot while executing code.
Just note : overridepulse Is a whileloop executing till the conditions are met.
-
How to write this command in "Is complete condition"?
return Usefuls.MapZoneName != "Westfall"; //Complete Condition
-
Bot doesn't loot while executing code.
the problem your having is the while loop keep going which overrides normal wrobot state and just attacks mobs. use something like this. return ItemsManager.GetItemCountById(45005) == 1; //Complete Condition //overridepulse wManager.Wow.Bot.Tasks.GoToTask.ToPosition(new Vector3(5178.439f, -63.72389f, 360.272f)); foreach (WoWUnit everblaze in ObjectManager.GetWoWUnitByEntry(33289)) { if (!Fight.InFight) { Fight.StartFight(everblaze.Guid); } } return true; also using while loops can make many problems if you do not use them the right way. if youd like i can teach you how to make quester profiles a lot better, Dm me if you have any questions. i am here to help!
-
One Skill with two seperate conditions, how wrobot will count CD on that spell
Yes. the timers are Seprate.
-
Go To Trainers command (for all classes)
Just to help others, here is to go to a trainer and learn spell or spells. Custom Code > Quester : public static class Trainer_Learn { public static List<Tuple<string, uint>> SpellsList = new List<Tuple<string, uint>> { new Tuple<string, uint>("Charge", 5), new Tuple<string, uint>("Rend", 5), new Tuple<string, uint>("Thunder Clap", 5), new Tuple<string, uint>("Parry", 5), new Tuple<string, uint>("Battle Shout", 5), }; public static void LearningSpells(string SpellName) { Lua.LuaDoString(string.Format(@" for i=1,GetNumTrainerServices() do local name = GetTrainerServiceInfo(i) if (name == '{0}') then BuyTrainerService(i) end end ", SpellName.Replace("'", "\'"))); } public static void SpellINdex(Vector3 Vect, int npc, bool LearnAll) { if (LearnAll == true) { Trainer.TrainingSpell(); Thread.Sleep(100); } uint lastLevelCheck = 0; foreach (var SpellIndex in SpellsList) { var level = ObjectManager.Me.Level; if (level >= SpellIndex.Item2) { if (SpellManager.KnowSpell(SpellIndex.Item1.ToString()) == false) { while (GoToTask.ToPositionAndIntecractWithNpc(Vect, npc)) { Usefuls.SelectGossipOption(GossipOptionsType.trainer); Thread.Sleep(100); LearningSpells(SpellIndex.Item1); Thread.Sleep(100); } } } lastLevelCheck = level; } } } Useage : Trainer_Learn.SpellINdex(new Vector3(-639.344f, -4230.19f, 38.13411f), 3153, false);
-
[Partially fixed]Can't make working gatherer quest
Might be bc you don’t have it select as repeatable
-
[Partially fixed]Can't make working gatherer quest
Can you post the profile? I’ll take a look at it
-
Set foreground/focus wow window
Just out of Curiosity, why do you need this for botting?
-
Healing in BG
Even tho I’d love to see the battleground code also, healing is part of fightclass, not the product
-
[ToolBox][Vanilla - WOTLK] Many Useful Functions (Custom script)
Fixed : Achievement Rep
-
Mesh in mudpocket is broken
[N] 00:21:24 - [MovementManager] Waypoint timed out [N] 00:21:24 - [MovementManager] Report navmesh poly to avoid it [N] 00:21:24 - [Path-Finding] FindPath from -4619.148 ; -3172.836 ; 34.85954 ; "None" to -6867.624 ; 731.9318 ; 46.6624 ; "None" (Kalimdor) [N] 00:21:25 - [Path-Finding] Path Count: 458 (12551.29y, 1072ms, smoothed) (resultPartial=True, resultSuccess=True (more info with server log option)) [N] 00:21:30 - [MovementManager] Think we are stuck [N] 00:21:30 - [MovementManager] Trying something funny, hang on
-
Choosing quest rewards
Both, when it comes to wrobot, lua and c# go together
-
Choosing quest rewards
I’ve posted the code here : https://wrobot.eu/forums/topic/12492-miscellaneous-code-idea-developers-only/?tab=comments#comment-60258
-
miscellaneous Code Idea (Developers only)
Note : this is not the code used in selector, the reward selection in selector is more advanced, but i think this will help make the whole quest reward problem go away for a lot of devs. enjoy. using wManager.Wow.Helpers; using System.ComponentModel; using System.Threading; public static class Quester_rewards { public static void Select() { wManager.Events.OthersEvents.OnSelectQuestRewardItem += delegate (CancelEventArgs cancelable) { cancelable.Cancel = true; gossip(); Thread.Sleep(100); if (Lua.LuaDoString<bool>("if QuestFrameRewardPanel:IsVisible() then return true else return false end")) Selecter(); }; } public static void Selecter() { int questRewards = Lua.LuaDoString<int>("return GetNumQuestChoices()"); if (questRewards == 0) { Lua.LuaDoString("QuestFrameCompleteQuestButton:Click();"); Thread.Sleep(100); } else RunLua(); } public static void gossip() { Lua.LuaDoString(@" if ( not QuestFrameRewardPanel:IsVisible() or QuestFrameRewardPanel:IsVisible() == nil ) then local gossipTable = {GetGossipActiveQuests()} local numOptions = table.getn(gossipTable)/4 local nameIndex, completeIndex = 1, 4 for i=1,numOptions do if gossipTable[completeIndex] == 1 then SelectGossipActiveQuest(i) CompleteQuest(); end nameIndex, completeIndex = nameIndex + 4, completeIndex + 4 end return"); } public static void RunLua() { Lua.LuaDoString(@" local numberOfQuestRewards = GetNumQuestChoices() local mostValuableQuestItemIndex, mostValuableQuestItemValue, bestQuestItemIndex, bestQuestItemArmorWeight = 1, 0, -1, -1 local armorWeights = { Plate = 4, Mail = 2, Leather = 1, Cloth = 0 } local equipmentSlotLookup = { INVTYPE_HEAD = {""HeadSlot"", nil}, INVTYPE_NECK = {""NeckSlot"", nil}, INVTYPE_SHOULDER = {""ShoulderSlot"", nil}, INVTYPE_CLOAK = {""BackSlot"", nil}, INVTYPE_CHEST = {""ChestSlot"", nil}, INVTYPE_WRIST = {""WristSlot"", nil}, INVTYPE_HAND = {""HandsSlot"", nil}, INVTYPE_WAIST = {""WaistSlot"", nil}, INVTYPE_LEGS = {""LegsSlot"", nil}, INVTYPE_FEET = {""FeetSlot"", nil}, INVTYPE_SHIELD = {""SecondaryHandSlot"", nil}, INVTYPE_ROBE = {""ChestSlot"", nil}, INVTYPE_2HWEAPON = {""MainHandSlot"", ""SecondaryHandSlot""}, INVTYPE_WEAPONMAINHAND = {""MainHandSlot"", nil}, INVTYPE_WEAPONOFFHAND = {""SecondaryHandSlot"", ""MainHandSlot""}, INVTYPE_WEAPON = {""MainHandSlot"",""SecondaryHandSlot""}, INVTYPE_THROWN = {""RangedSlot"", nil}, INVTYPE_RANGED = {""RangedSlot"", nil}, INVTYPE_RANGEDRIGHT = {""RangedSlot"", nil}, INVTYPE_FINGER = {""Finger0Slot"", ""Finger1Slot""}, INVTYPE_HOLDABLE = {""SecondaryHandSlot"", ""MainHandSlot""}, INVTYPE_TRINKET = {""Trinket0Slot"", ""Trinket1Slot""} } for questItemIndex = 1, numberOfQuestRewards do local itemName, itemLink, itemRarity, itemLevel, itemMinLevel, itemType, itemSubType, itemStackCount, itemEquipLoc, itemTexture, itemSellPrice = GetItemInfo(GetQuestItemLink(""choice"", questItemIndex)) if itemRarity >= 3 then return end local itemId = itemLink:match(""|Hitem:(%d+)"") local isItemEquippable = IsEquippableItem(itemId) local _, _, _, _, isItemUsable = GetQuestItemInfo(""choice"", questItemIndex) if itemSellPrice > mostValuableQuestItemValue then -- Keep track of which item is most valuable: mostValuableQuestItemIndex = questItemIndex mostValuableQuestItemValue = itemSellPrice end if isItemEquippable == 1 and isItemUsable ~= nil then -- NPC is offering us an item we can actually wear: local currentEquippedItemLinksInSlots = {} local currentWorstEquippedItemInSlot = nil -- Figure out what we already have equipped: for _, itemSlot in ipairs(equipmentSlotLookup[itemEquipLoc]) do if itemSlot ~= nil then local currentEquippedItemLinkInSlot = GetInventoryItemLink(""player"", GetInventorySlotInfo(itemSlot)) if currentEquippedItemLinkInSlot == nil then -- Of the n item slots available, at least one of them has nothing equipped. Ergo, it is the worst: currentWorstEquippedItemInSlot = nil break else local _, _, _, currentEquippedItemLevelInSlot, _, _, currentEquippedItemSubTypeInSlot = GetItemInfo(currentEquippedItemLinkInSlot) if currentWorstEquippedItemInSlot == nil or currentWorstEquippedItemInSlot.itemLevel > currentEquippedItemLevelInSlot then currentWorstEquippedItemInSlot = { itemLink = currentEquippedItemLinkInSlot, itemLevel = currentEquippedItemLevelInSlot, itemSubType = currentEquippedItemSubTypeInSlot } end end end end if currentWorstEquippedItemInSlot == nil then bestQuestItemIndex = questItemIndex else if itemLevel > currentWorstEquippedItemInSlot.itemLevel then if armorWeights[itemSubType] ~= nil then if armorWeights[itemSubType] > bestQuestItemArmorWeight then bestQuestItemIndex = questItemIndex bestQuestItemArmorWeight = armorWeights[itemSubType] end elseif currentWorstEquippedItemInSlot.itemSubType == itemSubType then bestQuestItemIndex = questItemIndex bestQuestItemArmorWeight = -1 end end end end end if bestQuestItemIndex < 0 then bestQuestItemIndex = mostValuableQuestItemIndex end GetQuestReward(bestQuestItemIndex) "); } }
-
dump lua
hello, is there a way to dump all lua on a screen? like if i have a frame there. it will dump all the code inside the frame?
-
[Suggestion] allow custom scripts into reward item
@Droidz Can you add the same function for picking up quests?
-
miscellaneous Code Idea (Developers only)
This code i made for running normal instances, come out to sell items to "traveler's tundra mammoth" Quester > Custom Script. using robotManager.Helpful; using wManager.Wow.Helpers; using wManager.Wow.Bot.Tasks; using wManager.Wow.ObjectManager; using System.Linq; using System.Threading; using System.Collections.Generic; using wManager.Wow.Enums; using System; using System.ComponentModel; using System.IO; using System.Configuration; public static class Main_Thread { public static List<string> Sellitems = new List<string>(); public static WoWPlayer Me = ObjectManager.Me; public static void Start() { wManager.wManagerSetting.CurrentSetting.CloseIfPlayerTeleported = false; wManager.wManagerSetting.CurrentSetting.Save(); Lua.LuaDoString(@"SetDungeonDifficulty(1);"); } public static void OnSeemStuck() { if (!wManager.wManagerSetting.IsBlackListedZone(new Vector3(Me.Position.X, Me.Position.Y, Me.Position.Z, "None"))) { wManager.wManagerSetting.AddBlackListZone(new Vector3(Me.Position.X, Me.Position.Y, Me.Position.Z, "None"), 2.00f, true); Logging.Write("[Unstuck Blacklisting]: " + Me.Position.X.ToString() + Me.Position.Y.ToString() + Me.Position.Z.ToString()); } } public static void ToPosition(Vector3 vector) { GoToTask.ToPosition(vector); } public static void MoveWhileDead() { var badCorpsePos = new Vector3(-3361.787f, 4665.568f, -22.70184f); var enterDungeonPos = new Vector3(-3361.623f, 4643.492f, -101.047f); Logging.Write("[EnterCorpse] Started."); wManager.Events.OthersEvents.OnPathFinderFindPathResult += (from, to, path, mpq, success) => { if (ObjectManager.Me.IsDead && to.DistanceTo(badCorpsePos) < 10) { path.Clear(); path.AddRange(PathFinder.FindPath(enterDungeonPos)); } }; } public static void Mammoth() { string Mount_Name = "Traveler's Tundra Mammoth"; if (GoToTask.ToPosition(new Vector3(-3361.868f, 4759.114f, -101.3954f))) { if (!ObjectManager.Me.HaveBuff(Mount_Name)) { SpellManager.CastSpellByNameLUA(Mount_Name); Usefuls.WaitIsCasting(); } } } public static void Sellingitems() { List<WoWItemQuality> quality = new List<WoWItemQuality> { WoWItemQuality.Common, WoWItemQuality.Poor, WoWItemQuality.Rare, WoWItemQuality.Epic, WoWItemQuality.Uncommon }; int Mount_Vendor_ID = 32641; var Mount_Vendor = ObjectManager.GetWoWUnitByEntry(Mount_Vendor_ID).FirstOrDefault(i => i.Entry == Mount_Vendor_ID); if (Mount_Vendor.IsValid && Mount_Vendor != null) { Interact.InteractGameObject(Mount_Vendor.GetBaseAddress); foreach (WoWItem item in Bag.GetBagItem()) { if (!Selling_Settings.CurrentSetting.DONOT.Contains(item.GetItemInfo.ItemName)) { Sellitems.Add(item.GetItemInfo.ItemName); Vendor.SellItems(Sellitems, Selling_Settings.CurrentSetting.DONOT, quality); Thread.Sleep(100); } } Thread.Sleep(10); } } public static void DoNotSellITems(string item) { Selling_Settings.Load(); if(!Selling_Settings.CurrentSetting.DONOT.Contains(item)) { Selling_Settings.CurrentSetting.DONOT.Add(item); Selling_Settings.CurrentSetting.Save(); } } } [Serializable] public class Selling_Settings : Settings { [Setting] [DefaultValue(null)] [Category("C:_Other Functions_")] [DisplayName("Items to delete")] [Description("It will attempt to DELETE the Items in interval")] public List<string> DONOT { get; set; } private Selling_Settings() { DONOT = new List<string>(); } public static Selling_Settings CurrentSetting { get; set; } public bool Save() { try { return Save(AdviserFilePathAndName("Selling_Settings", ObjectManager.Me.Name + "." + Usefuls.RealmName)); } catch (Exception e) { Logging.WriteError("Selling_Settings > Save(): " + e); return false; } } public static bool Load() { try { if (File.Exists(AdviserFilePathAndName("Selling_Settings", ObjectManager.Me.Name + "." + Usefuls.RealmName))) { CurrentSetting = Load<Selling_Settings>( AdviserFilePathAndName("Selling_Settings", ObjectManager.Me.Name + "." + Usefuls.RealmName)); return true; } CurrentSetting = new Selling_Settings(); } catch (Exception e) { Logging.WriteError("Selling_Settings > Load(): " + e); } return false; } }
-
Corpse submap
Hello, Can you add a way to return a Corpse (Me) submap? like if i am dead in side a instance.
-
Wow Classic
This does not work on blizzard servers
- [Wotlk][Source] GetSpecialization
-
Enter corpse in Dungeon
I just used the code @droidz provided, if you are using it for instances, use custom script. instead of making a plugin for each and every instance.
-
Allow drop down menu into settings
I am using c# dll fight class with normal settings GUI
-
Allow drop down menu into settings
Hello @Droidz, while i am working on some fightclasses with talents, i am having a problem with setting a drop down menu, i know i can override this by making my own Settings GUI but it would be awesome if you allow it as normal settings. [DropDownList(new string[] { "Fire", "Frost", "Arcane" })]
-
AdvancedBattlegrounder Mount Issues
Buy a key, is what @Matenia would say I think.
-
Bambos Profile
@Droidz this thread should be lock, there is no info being provided.