Jump to content

Zer0

Elite user
  • Posts

    213
  • Joined

  • Last visited

Posts posted by Zer0

  1. It's possible but hard to implement. You would have to come up with an algorithm that tests positions around you and find one that is both reachable by the pathfinder and out of sight from your target. Once it's done you'd have to stop the rotation and move you character there.

    You can use TraceLine.TraceLineGo to test LoS between positions and your target. Be aware that it's counterintuitive as it returns false when in sight, and therefore true when out of sight.

  2. Blacklist events do exist and I checked them, but the "mob seems bugged" thing doesn't fire anything, as far as I know.

    I confirm that there is a GUID blacklist in wManager, and that's what I'm using, but I need to do it dynamically. I can also confirm that Trinity does not generate GUIDs on the fly, it just extracts preset GUIDs from the database for each creature/game object instance. But I suspect not every private server uses the same GUID for each npc , especially if they run on different cores so that would be unreliable.

  3. Hey guys,

    I'm working on a product and sometimes, for various reasons, I'll come across a bugged mob or a mob that cannot be reached (ex: the Volatile Mutation that is in a cage, in the Draenei starting zone). 

    The WRobot Fight method seems to at least detect that there is a problem. I call Fight.StartFight(guid), the character moves to the mob, and if it's bugged, after a while, I'll get a debug message in the log stating "[Fight] Mob seem bugged". Then it stops the fight... and then my product tries to fight it again. No Blacklist message or anything.

    I've looked everywhere in the forums and can't find anything about it. I've seen a few logs where after this message, the mob gets blacklisted, so I assume this part is handled by the WRobot default products.

    So in short, when a mob is detected as bugged, is there any way to trigger a guid blacklist? Or maybe it fires an event and I missed it?

    Thanks in advance.

  4. Qui est le vendeur ? Je pense que c'est à lui qu'il faut demander en cas de doute.

    Sinon j'imagine qu'il s'agit de l'URL de ton profil sur ce site qui est unique et qui permettra au vendeur de t'affecter une clé d'activation chiffrée. Clique sur ton avatar en haut à droite du site puis Profile.

    image.png.eecad64c2e2bfe83bc311a637ad5c4e5.png

    Et ton username, mxg87.

  5. Some FCs have specific movements, lilke a rogue moving behind a target, or a hunter backing up to be in shoot range. This is something you can't prevent, unless you modify the code of the FC.

    If it's a simpler XML routine, then as long as you're under the FC set range, you're free to move.

  6. 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)

    image.png.6a378c6822bfa0ea30af92460bd4bf97.png

    I hope it helps.

  7. 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 ?

  8. 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?

  9. 7 hours ago, Droidz said:

    Hey, I tested this code he works for me:

    
         wManager.Wow.Helpers.EventsLuaWithArgs.OnEventsLuaStringWithArgs += (eventid, args) =>
                {
                if (eventid == "UNIT_SPELLCAST_SUCCEEDED")
                                Logging.WriteDebug("[EVENT] " + args[0] + " > " + args[1]);
                };

    It is not the case for you?

    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.

    1299932074_PrtScrcapture.jpg.0d295be464dac631e5861378dfebf65b.jpg

  10. 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

  11. 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).

    898226963_CanWRobotcatchUNIT_SPELLCAST_SUCCEEDEDwitharguments-Developersassistance-WRobot-GoogleChrome.jpg.a2781556b9bd0474f876925b5f35f3a1.jpg

    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.

  12. 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?

  13. 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"

     

    image.png.9ef2c647b7c047b15782e4042e7661be.png

×
×
  • Create New...