Jump to content

Droidz

Administrators
  • Posts

    12519
  • Joined

  • Last visited

Everything posted by Droidz

  1. Hello, I added the support of the version "10.2.7 build 55664", you need to download again the updater to be able to select this version.
  2. The profile test_ok.xml works for you ? (if not, share your log file) I gave you the answer, use hotspots rather than static/fixed paths. You can do this with the 'Grinder' by activating the option, or with the 'Quester' (default). If you really want to use a fixed path, you must add the necessary code yourself to take the elevator (the bot does not modify the fixed paths, he trusts the profile creator).
  3. Hello, The problem is that you are using a predefined/static path (which doesn't account for the elevator), and when a predefined path is provided, the bot follows it without question. You can either add the C# code in "Action" to your path to account for the elevator (which is complex) : https://wrobot.eu/bugtracker/add-offmesh-forced-for-barrens-elevator-r1200/?do=findComment&comment=5561&_rid=1 Or you can use hotspots and let the pathfinder do its job (this elevator is supported by the pathfinder, I just tried it and it works) : test_ok.xml If you're still having the issue, please share the session logs where you're using the profile I shared with you.
  4. In vanilla the previous plugin will not work. You can try : using System.Threading; using robotManager.Helpful; using wManager.Wow.Class; using wManager.Wow.Helpers; using wManager.Wow.ObjectManager; public class Main : wManager.Plugin.IPlugin { public void Initialize() { Logging.Write("CastSpellByName to /cast plugin loaded."); robotManager.Events.Events.OnCustomEvent += OnEventsOnOnCustomEvent; } private void OnEventsOnOnCustomEvent(string name, object[] args, System.ComponentModel.CancelEventArgs cancelable) { if (name.StartsWith("Spell.Launch") && args.Length >= 1 && args[0] is Spell) { Spell spellName = args[0] as Spell; if (spellName != null){ string luaUnit = null; bool stopMove = false; bool waitIsCast = false; if (args.Length >= 5 && args[4] is string && args[2] is bool && args[1] is bool) { stopMove = (bool)args[1]; waitIsCast = (bool)args[2]; luaUnit = args[4] as string; } cancelable.Cancel = true; if (stopMove) { if (ObjectManager.Me.GetMove) MovementManager.StopMoveTo(true, 1000); if (ObjectManager.Me.GetMove) Thread.Sleep(10); } if (!string.IsNullOrWhiteSpace(luaUnit) && luaUnit != "player" && luaUnit != "none") { Logging.WriteDebug("Casting " + spellName + " on " + luaUnit + " with macro /cast"); wManager.Wow.Helpers.Lua.RunMacroText("/cast [@" + luaUnit + "] " + spellName); } else { Logging.WriteDebug("Casting " + spellName + " with macro /cast"); wManager.Wow.Helpers.Lua.RunMacroText("/cast " + spellName); } if (waitIsCast) Thread.Sleep((int)(Usefuls.Latency * 0.9)); else Thread.Sleep(10); while (waitIsCast && ObjectManager.Me.IsCast) { Thread.Sleep(1); } } } } public void Dispose() { robotManager.Events.Events.OnCustomEvent -= OnEventsOnOnCustomEvent; } public void Settings() { } } Main.cs
  5. Hello, can you try this plugin :
  6. https://wrobot.eu/forums/topic/15331-new-dragonflight-firestorm-server-anyone-tested-yet/?do=findComment&comment=69603&_rid=1
  7. If you can give me the build number (of the game) used on your servers.
  8. Hello, I'm releasing a compatible version in the next week. I'll post a message here when it's done.
  9. Hello, Disable all Wow addons, all WRobot plugins and share your log file please ( https://wrobot.eu/forums/topic/1779-how-to-post-your-log-file-with-your-topic/ ).
  10. Hello, try this plugin : using wManager.Wow.Enums; using wManager.Wow.Helpers; using wManager.Wow.ObjectManager; public class Main : wManager.Plugin.IPlugin { public void Initialize() { var stopWatch = new System.Diagnostics.Stopwatch(); wManager.Events.InteractEvents.OnInteractPulse += (target, cancelable) => { if (stopWatch.ElapsedMilliseconds < 1000 && stopWatch.IsRunning) { return; } var obj = ObjectManager.GetObjectByGuid(target); if (obj.IsValid && (obj.Type == WoWObjectType.Unit || obj.Type == WoWObjectType.GameObject)) { var isLootable = false; if (obj.Type == WoWObjectType.Unit) { var unit = new WoWUnit(obj.GetBaseAddress); isLootable = unit.IsLootable; } else if (obj.Type == WoWObjectType.GameObject) { isLootable = true; } if (isLootable) { stopWatch.Restart(); Interact.InteractGameObject(obj.GetBaseAddress); cancelable.Cancel = true; } } }; } public void Dispose() { } public void Settings() { } } Main.cs
  11. I don't really understand. Sometimes "IgnoreFightGoundMount" is enabled, sometimes not. Try without plugins, without fightclass (with the "Automaton" product). But I think your profile, or fightclasse or a plugin is the cause of the problem.
  12. Can you share your log file please ( https://wrobot.eu/forums/topic/1779-how-to-post-your-log-file-with-your-topic/ ).
  13. Hello, your setting seems good. Maybe it's your fightclass (try without fightclass to check if the bot dismount).
  14. It's sample of repeatable quest : https://wrobot.eu/files/file/409-98-100-meatgut-needs-bones-repeatable-quest-nagrand/
  15. 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.
  16. 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.
  17. 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; } } }
  18. 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.
  19. 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 )
  20. 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).
  21. 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
×
×
  • Create New...