Jump to content

Droidz

Administrators
  • Posts

    12579
  • Joined

  • Last visited

Everything posted by Droidz

  1. 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; } } }
  2. 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.
  3. 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 )
  4. 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).
  5. 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
  6. 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).
  7. 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.
  8. Bonjour, Oui, ALT-X pour mettre en pause le bot ou l'enlever, ou ALT-C pour démarrer/arrêter le bot.
  9. https://wrobot.eu/forums/topic/15507-improving-bot-navigation-to-initial-position/?do=findComment&comment=69491&_rid=1
  10. 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.
  11. 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.
  12. Hello, you can found upgrade invoice here: https://wrobot.eu/clients/orders/ Sincerely
  13. 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
  14. 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() { } }
  15. Hello, in the first task of each, use "ChangeWowPath"
  16. 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) { // ... } }
  17. Hello, you can find the renewal invoice here: https://wrobot.eu/clients/orders/
  18. I will release a version for Dragon Flight in early September.
  19. 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 ...
  20. Hello, your problem should be solved.
  21. Hello, you can disable pathfinder in advanced general settings or with this c# code : wManager.wManagerSetting.CurrentSetting.UsePathsFinder = false;
  22. sorry I fixed the code of my previous post.
×
×
  • Create New...