Everything posted by Droidz
-
Target a specific mob
Hello, Your quests seem common. Watch these videos to understand how the "Quester" : https://wrobot.eu/forums/topic/3323-quest-profile-creation-video-tutorial/ To use an item at a specific location, use the 'UseItemOn' quest type, don't add mobs/objects (keep empty), the bot will use items at hotspots positions.
-
How to Raid with 39 other characters?
Hello, Yes, you must have 1 WRobot client (window) per game (which counts as the number of sessions when signing up for a subscription). Try first with 2 or 3 characters, managing 39 characters may be complicated.
-
Need help with plugin
Hi, Your code has several syntax problems (which I fixed), and some logic problems (which I did not correct), but I gave advice in the code comments (I did not test the code) : using System.Collections.Generic; using System.Linq; using wManager.Wow.Helpers; using wManager.Wow.ObjectManager; using wManager.Plugin; using robotManager.Helpful; using wManager.Wow.Bot.States; public class Main : IPlugin { private readonly List<ItemInfo> foodItems = new List<ItemInfo> { new ItemInfo(4540, 1, 5), new ItemInfo(4541, 5, 15), new ItemInfo(4542, 10, 20), new ItemInfo(4544, 15, 25), new ItemInfo(4601, 20, 30), new ItemInfo(8950, 25, 35), new ItemInfo(8076, 30, 40), new ItemInfo(4599, 35, 45), new ItemInfo(2287, 40, 50), new ItemInfo(8952, 45, 55), new ItemInfo(2679, 50, 60), new ItemInfo(2680, 55, 65), new ItemInfo(2681, 60, 70), new ItemInfo(2682, 65, 75), new ItemInfo(2684, 70, 75), new ItemInfo(2687, 75, 80), new ItemInfo(2683, 80, 80), new ItemInfo(2681, 55, 60), new ItemInfo(2685, 60, 65), new ItemInfo(3727, 65, 70), new ItemInfo(3726, 70, 75), new ItemInfo(3728, 75, 80), new ItemInfo(4594, 80, 80) }; private readonly List<ItemInfo> waterItems = new List<ItemInfo> { new ItemInfo(159, 1, 5), new ItemInfo(1179, 5, 15), new ItemInfo(1205, 15, 25), new ItemInfo(1708, 25, 35), new ItemInfo(1645, 35, 45), new ItemInfo(8766, 45, 55), new ItemInfo(28399, 55, 65), new ItemInfo(33044, 65, 75), new ItemInfo(27860, 75, 80), new ItemInfo(33445, 80, 80), new ItemInfo(3356, 10, 20), new ItemInfo(2287, 20, 30), new ItemInfo(27422, 30, 40), new ItemInfo(33176, 40, 50), new ItemInfo(33177, 50, 60), new ItemInfo(33178, 60, 70), new ItemInfo(33179, 70, 80), new ItemInfo(33180, 80, 80), new ItemInfo(40731, 80, 80), new ItemInfo(19999, 40, 50), new ItemInfo(5469, 15, 25), new ItemInfo(13923, 30, 40), new ItemInfo(13443, 60, 70) }; public void Initialize() { Logging.Write("[FoodWaterPlugin] Initialized."); /* Should better to do run your code in OnBeforeCheckIfNeedToRunState event of ToTown state robotManager.Events.FiniteStateMachineEvents.OnBeforeCheckIfNeedToRunState += (engine, state, cancelable) => { if (Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause && !Conditions.IsAttackedAndCannotIgnore && state is ToTown) { CheckAndBuyFoodWater(); } }; */ EventsLuaWithArgs.OnEventsLuaStringWithArgs += OnSpellCastSucceeded; CheckAndBuyFoodWater(); } public void Dispose() { EventsLuaWithArgs.OnEventsLuaStringWithArgs -= OnSpellCastSucceeded; Logging.Write("[FoodWaterPlugin] Disposed."); } public void Settings() { } private void OnSpellCastSucceeded(string luaEvent, List<string> args) { /* Maybe should be more strict with conditions if (!Conditions.InGameAndConnectedAndAliveAndProductStartedNotInPause || Conditions.IsAttackedAndCannotIgnore) return; */ if (luaEvent == "UNIT_SPELLCAST_SUCCEEDED" && args.Count > 0 && args[0] == "player") { CheckAndBuyFoodWater(); } } private void CheckAndBuyFoodWater() { if (ObjectManager.Me.IsDead || ObjectManager.Me.InCombatFlagOnly) return; int foodCount = GetItemCount(GetBestFood()); int waterCount = GetItemCount(GetBestWater()); if (foodCount < 5 || waterCount < 5) { GoToVendorAndBuy(); } } private uint GetBestFood() { var playerLevel = ObjectManager.Me.Level; return foodItems.Where(item => item.MinLevel <= playerLevel && item.MaxLevel >= playerLevel) .OrderByDescending(item => item.MinLevel) .Select(item => item.Entry) .FirstOrDefault(); } private uint GetBestWater() { var playerLevel = ObjectManager.Me.Level; return waterItems.Where(item => item.MinLevel <= playerLevel && item.MaxLevel >= playerLevel) .OrderByDescending(item => item.MinLevel) .Select(item => item.Entry) .FirstOrDefault(); } private int GetItemCount(uint itemId) { return ItemsManager.GetItemCountByIdLUA(itemId); } private void GoToVendorAndBuy() { /* Should use default totown state, don't forget to add vendor to npc db var foodName = ItemsManager.GetNameById(GetBestFood()); var waterName = ItemsManager.GetNameById(GetBestWater()); wManager.wManagerSetting.CurrentSetting.TryToUseBestBagFoodDrink = false; wManager.wManagerSetting.CurrentSetting.FoodAmount = 20; wManager.wManagerSetting.CurrentSetting.DrinkAmount = 20; wManager.wManagerSetting.CurrentSetting.FoodName = foodName; wManager.wManagerSetting.CurrentSetting.DrinkName = waterName; ToTown.ForceToTown = true; */ // Ищем ближайшего вендора WoWUnit vendor = ObjectManager.GetNearestWoWUnit(ObjectManager.GetWoWUnitVendor()); if (vendor != null) { // Идем к вендору и покупаем MovementManager.Go(PathFinder.FindPath(vendor.Position)); Interact.InteractGameObject(vendor.GetBaseAddress); Lua.LuaDoString($"BuyItem({GetBestFood()}, 20)"); Lua.LuaDoString($"BuyItem({GetBestWater()}, 20)"); AddToDoNotSell(GetBestFood()); AddToDoNotSell(GetBestWater()); } } private void AddToDoNotSell(uint itemId) { var name = ItemsManager.GetNameById(itemId); if (!string.IsNullOrWhiteSpace(name) && !wManager.wManagerSetting.CurrentSetting.DoNotSellList.Contains(name)) { wManager.wManagerSetting.CurrentSetting.DoNotSellList.Add(name); } } private void RemoveFromDoNotSell(uint itemId) { var name = ItemsManager.GetNameById(itemId); if (!string.IsNullOrWhiteSpace(name) && wManager.wManagerSetting.CurrentSetting.DoNotSellList.Contains(name)) { wManager.wManagerSetting.CurrentSetting.DoNotSellList.Remove(name); } } private class ItemInfo { public uint Entry { get; } public int MinLevel { get; } public int MaxLevel { get; } public ItemInfo(uint entry, int minLevel, int maxLevel) { Entry = entry; MinLevel = minLevel; MaxLevel = maxLevel; } } }
-
Wrobot not healing after fight
Hello, It looks like there might be a misunderstanding in how the food and drink settings are configured in WRobot. Currently, you have both set to activate when your health or mana is at 1% and to stop when it reaches 90%. This setting is not effective because it's waiting until your health or mana is almost completely depleted before beginning regeneration, which is why the bot is not stopping to heal or drink as expected. A more effective setting would be to adjust the ranges to something like 70% to 95%. This means the bot will start the regeneration process when your health or mana falls below 70% and will continue until it reaches 95%. This ensures that the bot heals and replenishes mana more proactively, avoiding situations where you enter the next fight with insufficient health or mana. Try adjusting these settings and see if the bot performs better.
-
License Key is not working for Legion 7.3.5 (26124)
Hello, it should work now.
-
Target a specific mob
Hello, what is the quest? Maybe you can find sample on the existing profiles (here or https://github.com/droidzfr/WRobot_Packages/tree/master/Old paid files )
-
Flying Mounts broken in TBC/WOTLK
Check the logs (and share them here) to see what the bot is doing. Enable 3D radar to watch where the bot is trying to go (maybe a profile position is outside the flyable area or an object to pick up).
-
Flying Mounts broken in TBC/WOTLK
Hello, using System.Threading; using System.Windows.Forms; using robotManager.Helpful; using wManager.Wow.Helpers; public class Main : wManager.Plugin.IPlugin { bool _isLaunched; public void Initialize() { _isLaunched = true; while (_isLaunched) { if (Conditions.InGameAndConnectedAndProductStartedNotInPause) { if (Usefuls.TextBoxActivated()) { Logging.Write("Close chat box"); Keyboard.PressKey(wManager.Wow.Memory.WowMemory.Memory.WindowHandle, Keys.Enter); } } Thread.Sleep(500); } } public void Dispose() { _isLaunched = false; } public void Settings() { } } Main.cs
-
Stop buying low lvl food and drinks
Hello, in "script can condition" put code like : return wManager.Wow.ObjectManager.ObjectManager.Me.Level >= 5 && wManager.Wow.ObjectManager.ObjectManager.Me.Level <= 15; Replace 5 by the minimum level, 15 by the maximum level (in the current code, the bot will buy your item if the level is equal to or bigger than 5 and equal to or lower than 15).
-
Compilation error in wrobot: Unexpected characters $. Need help.
Hello, WRobot uses an older version of the C# compiler that does not support string interpolation with the '$' syntax for variables like {varname}. However, you can use '@' for multiline strings.
-
Possible de On and OFF auto rotation ???
Bonjour, Oui, ALT-X pour mettre en pause le bot ou l'enlever, ou ALT-C pour démarrer/arrêter le bot.
-
Inverser la prise de position
https://wrobot.eu/forums/topic/15507-improving-bot-navigation-to-initial-position/?do=findComment&comment=69491&_rid=1
-
Improving Bot Navigation to Initial Position
Hello, Check that the positions in your profile are of type 'Flying'. If not that, you can share here the parts of the log where the bot does this problem.
-
Wrobot on Windows Parallels (Macbook Pro M1)
Hello, Have you tried with 'WRobot DX'? But your case seems complicated, whether in relation to Mac and an ARM processor, I have not yet had any feedback on this configuration.
-
Upgrade Subscription
Hello, you can found upgrade invoice here: https://wrobot.eu/clients/orders/ Sincerely
-
Client Crash when you go to start bot
Hello, try to download the game client on another website than the server where you play : https://wowdl.net/files/clients#wrath-of-the-lich-king
-
[Request Plugin] close bot/client after X minutes when character can't reach corpse
Hello, using System.Threading; using robotManager.Helpful; using wManager.Wow.Helpers; using wManager.Wow.ObjectManager; public class Main : wManager.Plugin.IPlugin { private bool _isStarted; public void Initialize() { _isStarted = true; var stopWatch = new System.Diagnostics.Stopwatch(); while (_isStarted) { if (Conditions.InGameAndConnectedAndProductStartedNotInPause) { if (ObjectManager.Me.IsDeadMe && stopWatch.Elapsed.TotalMinutes > 5) { Logging.Write("Bot is dead for more than 5 minutes, closing game."); wManager.Wow.Memory.WowMemory.CloseHookedProcess(); _isStarted = false; } else if (ObjectManager.Me.IsDeadMe) { stopWatch.Start(); } else { stopWatch.Reset(); } } Thread.Sleep(500); } } public void Dispose() { _isStarted = false; } public void Settings() { } }
-
License Key is not working for Legion 7.3.5 (26124)
Hello, your problem should be solved.
-
Suggestion in Relogger
Hello, in the first task of each, use "ChangeWowPath"
-
Code about fuzzy matching
Hello, string[] objectNames = new string[] { "Bonfire" }; foreach (string objectName in objectNames) { var gameObjects = ObjectManager.GetObjectWoWGameObject() .Where(o => o.Name.Contains(objectName) && o.GetDistance <= maxDistance) .OrderBy(o => o.GetDistance) .FirstOrDefault(); if (gameObjects != null) { // ... } }
-
Possible to renew a license that expired?
Hello, you can find the renewal invoice here: https://wrobot.eu/clients/orders/
-
New Dragonflight Firestorm server, anyone tested yet?
I will release a version for Dragon Flight in early September.
-
Help with relogging please
Hello, To force the relogger to complete the current task and go to the next, you can run from the bot this c# code : System.Environment.Exit(-10); This code will close the bot (you can close the game before that with the code "wManager.Wow.Memory.WowMemory.CloseHookedProcess();") In your relogger add several tasks like : ChangeCharacter Run ChangeCharacter Run ChangeCharacter Run ...
-
Key not working for Legion 7.3.5.26124
Hello, your problem should be solved.
-
Disabling Pathfinder in Custom Ahn'Qiraj Dungeon on Private Server
Hello, you can disable pathfinder in advanced general settings or with this c# code : wManager.wManagerSetting.CurrentSetting.UsePathsFinder = false;