Jump to content

Zer0

Elite user
  • Posts

    213
  • Joined

  • Last visited

Everything posted by Zer0

  1. You're probably using the demo version. If you want to use it without restriction, you can buy a key here: https://wrobot.eu/store/category/2-wrobot/
  2. For your information, I used to subscribe to OnEventsLuaStringWithArgs in 2 places. First in Hunter.Initialize() and then in the constructor of another class called Cast.Cast() in both places I could only get COMBAT_LOG_EVENT and COMBAT_LOG_EVENT_UNFILTERED. now that I've moved the hunter autoshot event catcher to the Main.Initialize() method, I can get all events from there. For the sake of testing I've logged the Cast.Cast() event catcher and I still only catch COMBAT_LOG_EVENT and COMBAT_LOG_EVENT_UNFILTERED (Which in this case doesn't matter because I don't need anything else) I hope it helps.
  3. I have found what the issue is. So my AIO first selects a rotation class in Main.Initialize(), and then launches the Initialize() method of the selected class (which also derives from the IClassRotation interface), for example Hunter.Initialize(). For some reason, subscribing to OnEventsLuaStringWithArgs inside Hunter.Initialize() only gets me COMBAT_LOG EVENT and COMBAT_LOG_EVENT_UNFILTERED. I've moved the code to Main.Initialize() and it works perfectly now. I have no idea why it happens like that, but I'm glad it's fixed. Thanks everyone for your help ?
  4. I don't doubt your words. If it works for you, then it works, but I feel like I've tried everything, and I'm still having this issue. So, to recap what I've tried: Catching the event with no args works: EventsLua.AttachEventLua("UNIT_SPELLCAST_SUCCEEDED ", c => HandleAutoAttackEvent(c)); ... private void HandleAutoAttackEvent(object context) { Logger.Log("AUTO"); } Catching the event directly in the client works: Lua.LuaDoString($@" AIOAutoHunt = CreateFrame('Frame') AIOAutoHunt:RegisterEvent(""UNIT_SPELLCAST_SUCCEEDED"") AIOAutoHunt:SetScript('OnEvent', function(self, event, unit, spell) if unit == 'player' and spell == 'Auto Shot' then DEFAULT_CHAT_FRAME:AddMessage(spell); end end )"); Catching events with args only returns COMBAT_LOG_EVENT and COMBAT_LOG_EVENT_UNFILTERED EventsLuaWithArgs.OnEventsLuaStringWithArgs += (eventid, args) => { if (eventid == "UNIT_SPELLCAST_SUCCEEDED") Logging.WriteDebug("[EVENT] " + args[0] + " > " + args[1]); }; ------ OR ------ EventsLuaWithArgs.OnEventsLuaStringWithArgs += AutoShotEventHandler; ... private void AutoShotEventHandler(string id, List<string> args) { Logger.Log($"******************** {id} ********************"); for (int i = 0; i < args.Count; i++) { Logger.Log($"{i} -> {args[i]}"); } Logger.Log($"******************** END ********************"); } I'm using a freshly installed WRobot (no plugin) and I've ran those tests on 2 different WoW clients (no addon). I've made sure I compiled my FightClass with the fresh WRobot dlls as references. Do you have any idea what could possibly be different between your setup and mine? Could it be caused by the client? Something in my code?
  5. It doesn't work for me. I've ran more tests. I thought it was an issue with my WRobot so I've downloaded a fresh install. No plugin, no addons. Same problem. I have also tried with 2 different TBC clients (Excalibur/Netherwing), same result on both clients. I only get COMBAT_LOG_EVENT_UNFILTERED and COMBAT_LOG_EVENT out of EventsLuaWithArgs.OnEventsLuaStringWithArgs. On both clients I'm still able to catch the event directly with LUA.
  6. Also fore reference, I've tried logging all the events private void AutoShotEventHandler(string id, List<string> args) { Logger.Log($"******************** {id} ********************"); for (int i = 0; i < args.Count; i++) { Logger.Log($"{i} -> {args[i]}"); } Logger.Log($"******************** END ********************"); } You can have a look at the log joined to this post and see what happens (the character is only auto attacking). 23 mai 2021 11H40.log.html
  7. Thanks for the answer. I do get the event in the client. I have tried this: Lua.LuaDoString($@" AIOAutoHunt = CreateFrame('Frame') AIOAutoHunt:RegisterEvent(""UNIT_SPELLCAST_SUCCEEDED"") AIOAutoHunt:SetScript('OnEvent', function(self, event, unit, spell) if unit == 'player' and spell == 'Auto Shot' then DEFAULT_CHAT_FRAME:AddMessage(spell); end end )"); and it catches my auto attacks successfully (I get the message in the chat every time an auto shot is fired). I'm not using your framework, I'm using WRobot's EventsLuaWithArgs.OnEventsLuaStringWithArgs (wManager.Wow.Helpers). So I guess something else is wrong, but I'm not sure what.
  8. I'm trying to catch the UNIT_SPELLCAST_SUCCEEDED event for Auto Shots. I've tried EventsLua.AttachEventLua("UNIT_SPELLCAST_SUCCEEDED", c => HandleAutoAttackEvent(c)); It does work, but for all spells, and I'm only interested in my own auto attacks (so at least, I know this event is the correct one). EventsLuaWithArgs.OnEventsLuaStringWithArgs += AutoShotEventHandler; This one is the one I would need, but it doesn't catch any UNIT_SPELLCAST_SUCCEEDED. It only catches COMBAT_LOG_EVENT_UNFILTERED and COMBAT_LOG_EVENT events. I'm on TBC, I've been told that in WotLK, EventsLuaWithArgs.OnEventsLuaStringWithArgs does catch UNIT_SPELLCAST_SUCCEEDED. Does anyone know how I can do that?
  9. Version 1.0.0

    332 downloads

    Overview Hi guys, The Wholesome team is proud to present the Wholesome Inventory Manager plugin. This plugin has been created to facilitate items and inventory management. It comes with easy-to-use presets and advanced options for the user to fine-tune its usage. How to install Copy the .dll file into WRobot's Plugin folder and enable it in the Plugins tab of WRobot. Autoupdater This plugin comes with an autoupdater. Every time you press play, it checks if a new version is available. If it finds one, it automatically installs it and restarts the product. Features Auto Equip Gear: The plugin will regularly scan your inventory and check for better gear to equip. Each piece of equipment will be attributed a gear score according to the user defined stat weights. Auto Equip Bags: It can also equip larger bags. You can also choose to equip ammo containers such as quivers and ammo pouches. Stat Weights: Gear selection will rely on each gear item's weight score. The weight score of items is calculated according to the weight stats set by the user. If you choose to let the plugin autodetect your weight stats, it will choose a preset according to your detected class and specialization. It will also update its preset each time you assign a talent point, in case of spec change. All presets were copied from Pawn with a few adjustments, which means it's mostly suited for late-game content. You can also choose to input your own stat weights. Quest Reward Selection: The plugin can select quest rewards for you. It will either choose an item you want to equip (higher weight score than currently equipped) or the first one. Group rolls: If you are in a group and an item roll comes up, the plugin will choose NEED if the item is an upgrade to your currently equipped piece of gear (except for bags), otherwise, by default, the plugin will roll GREED. You can also choose to always GREED, or always PASS. Loot Filter: You can choose to auto-delete items that match your settings. The loot filter is disabled by default. Be very careful with its configuration. The plugin will delete items in your bags without asking for confirmation and with no chance to recover them. By Quality: Each quality has 3 settings: KEEP, ANY, and DELETE. KEEP means that no matter the other options, items of this quality will never be deleted. ANY means that items of this quality will be deleted if it matches other criterias. DELETE means that items of this quality will always be deleted. By Value: This option is disabled for WoW expansions under WotLK because it is impossible in TBC and Vanilla to obtain item sell prices from the client. The loot filter will never delete an item that is in your WRobot Do Not Sell list. Other filter criterias might be added on demand. Project Wholesome – A quick word The goal of Project Wholesome is to develop, test, and freely share wRobot products. All the code created under the project is transparent, open-source, and then released in the store for free. Nothing released under Project Wholesome is sold for profit, although individual donations are welcome. We are always looking for more testers and developers. If you want to participate, please join our Discord channel. Project Wholesome Discord: https://discord.gg/NEq4VA6 if you have questions about our products, you can also post a message in our club: https://wrobot.eu/clubs/9-wholesome-team/ Special thanks Special thanks to the entire Wholesome team, as usual, for their support and help. Enjoy!
  10. CustomClass.ResetCustomClass() reloads the current FightClass. Most products call it when the PLAYER_LEVEL_UP Lua event is fired.
  11. Tauri WoW – Evermoon is a MoP server. AIO.dll is a WotLK fightclass.
  12. You're probably using the free demo version. You need to buy a key. https://wrobot.eu/store/category/2-wrobot/
  13. Make sure you use the English version of the game.
  14. Zer0

    Profil herbe

    WRobot propose un éditeur de profile assez simple à utiliser. Il suffit d'enregistrer un chemin point par point dans la zone qui t'intéresse. Tu peux sélectionner le product "Gatherer", puis cliquer sur "Profile Creator" dans l'onglet "Product Settings"
  15. There's an option called "Framelock", make sure it's disabled.
  16. Version 1.0.0

    1626 downloads

    Overview Hi guys, The Wholesome team is proud to present the Wholesome Inventory Manager plugin. This plugin has been created to facilitate items and inventory management. It comes with easy-to-use presets and advanced options for the user to fine-tune its usage. How to install Copy the .dll file into WRobot's Plugin folder and enable it in the Plugins tab of WRobot. Autoupdater This plugin comes with an autoupdater. Every time you press play, it checks if a new version is available. If it finds one, it automatically installs it and restarts the product. Features Auto Equip Gear: The plugin will regularly scan your inventory and check for better gear to equip. Each piece of equipment will be attributed a gear score according to the user defined stat weights. Auto Equip Bags: It can also equip larger bags. You can also choose to equip ammo containers such as quivers and ammo pouches. Stat Weights: Gear selection will rely on each gear item's weight score. The weight score of items is calculated according to the weight stats set by the user. If you choose to let the plugin autodetect your weight stats, it will choose a preset according to your detected class and specialization. It will also update its preset each time you assign a talent point, in case of spec change. All presets were copied from Pawn with a few adjustments, which means it's mostly suited for late-game content. You can also choose to input your own stat weights. Quest Reward Selection: The plugin can select quest rewards for you. It will either choose an item you want to equip (higher weight score than currently equipped) or the one with the highest sell price. Loot Filter: You can choose to auto-delete items that match your settings. The loot filter is disabled by default. Be very careful with its configuration. The plugin will delete items in your bags without asking for confirmation and with no chance to recover them. By Quality: Each quality has 3 settings: KEEP, ANY, and DELETE. KEEP means that no matter the other options, items of this quality will never be deleted. ANY means that items of this quality will be deleted if it matches other criterias. DELETE means that items of this quality will always be deleted. By Value: Items that are worth less than the set value, and that have the ANY setting for the quality will be deleted. The loot filter will never delete an item that is in your WRobot Do Not Sell list. Other filter criterias might be added on demand. Project Wholesome – A quick word The goal of Project Wholesome is to develop, test, and freely share wRobot products. All the code created under the project is transparent, open-source, and then released in the store for free. Nothing released under Project Wholesome is sold for profit, although individual donations are welcome. We are always looking for more testers and developers. If you want to participate, please join our Discord channel. Project Wholesome Discord: https://discord.gg/NEq4VA6 Special thanks Special thanks to the entire Wholesome team, as usual, for their support and help. Enjoy!
  17. That's great. Do you mind sharing with other users the kind of measures you take to avoid getting caught?
  18. Bump for visibility. New people have joined and we are working on different future releases.
  19. https://wrobot.eu/clients/purchases/ Then click on your purchase.
  20. I almost exclusively work on TBC but I think this should work in WotLK too: // Returns the time left on a buff in seconds, buff name is passed as string public static int BuffTimeLeft(string buffName) { return Lua.LuaDoString<int> ($"for i=1,25 do " + "local n, _, _, _, _, duration, _ = UnitBuff('player',i); " + "if n == '" + buffName + "' then " + "return duration " + "end " + "end"); }
  21. Here's the method I've made to handle elevators: public static void AddTransportOffMesh( Vector3 waitForTransport, Vector3 stepIn, Vector3 objectDeparture, Vector3 objectArrival, Vector3 stepOut, int objectId, ContinentId continentId, string name = "", float precision = 0.5f) { OffMeshConnection offMeshConnection = new OffMeshConnection(new List<Vector3> { waitForTransport, new Vector3(stepIn.X, stepIn.Y, stepIn.Z, "None") { Action = "c#: Logging.WriteNavigator(\"Waiting for transport\"); " + "while (Conditions.InGameAndConnectedAndProductStartedNotInPause) " + "{ " + $"var elevator = ObjectManager.GetWoWGameObjectByEntry({objectId}).OrderBy(o => o.GetDistance).FirstOrDefault(); " + $"if (elevator != null && elevator.IsValid && elevator.Position.DistanceTo(new Vector3({objectDeparture.X.ToString().Replace(",", ".")}, {objectDeparture.Y.ToString().Replace(",", ".")}, {objectDeparture.Z.ToString().Replace(",", ".")})) < {precision.ToString().Replace(",", ".")}) " + "break; " + "Thread.Sleep(100); " + "}" }, new Vector3(stepOut.X, stepOut.Y, stepOut.Z, "None") { Action = "c#: Logging.WriteNavigator(\"Wait to leave Elevator\"); " + "while (Conditions.InGameAndConnectedAndProductStartedNotInPause) " + "{ " + $"var elevator = ObjectManager.GetWoWGameObjectByEntry({objectId}).OrderBy(o => o.GetDistance).FirstOrDefault(); " + $"if (elevator != null && elevator.IsValid && elevator.Position.DistanceTo(new Vector3({objectArrival.X.ToString().Replace(",", ".")}, {objectArrival.Y.ToString().Replace(",", ".")}, {objectArrival.Z.ToString().Replace(",", ".")})) < {precision.ToString().Replace(",", ".")}) " + "break; " + "Thread.Sleep(100); " + "}" }, }, (int)continentId, OffMeshConnectionType.Unidirectional, true); offMeshConnection.Name = name; OffMeshConnections.Add(offMeshConnection, true); } And here is how I use it: AddTransportOffMesh(new Vector3(2865.628, 6211.75, 104.262), // wait for transport new Vector3(2878.712, 6224.032, 105.3798), // Step in new Vector3(2878.315, 6223.635, 105.3792), // Object departure new Vector3(2892.18, 6236.34, 208.908), // Object arrival new Vector3(2880.497, 6226.416, 208.7462, "None"), // Step out 188521, ContinentId.Northrend, "Warsong Hold Elevator UP"); AddTransportOffMesh(new Vector3(2880.497, 6226.416, 208.7462, "None"), // wait for transport new Vector3(2891.717, 6236.516, 208.9086, "None"), // Step in new Vector3(2892.18, 6236.34, 208.908), // Object departure new Vector3(2878.315, 6223.635, 105.3792), // Object arrival new Vector3(2865.628, 6211.75, 104.262), // Step out 188521, ContinentId.Northrend, "Warsong Hold Elevator DOWN"); I've used this for our FlightMaster plugin. In theory, it should also work for other transports.
  22. The link to the github project is on our discord
  23. If you want to move to the first spot on the list, use GoToTask.ToPosition(path[0]); If you want to find nearest spot on the list, you can do it this way: using System.Linq; List<Vector3> closestSpots = path .OrderBy(spot => spot.Position.DistanceTo(ObjectManager.Me.Position)) .ToList(); Vector3 closestSpot = closestSpots[0]; I haven't tested it and there's probably a more efficient way to do it, but that should work.
×
×
  • Create New...