• Visit Rebornbuddy
  • [Plugin] KeyRun - dynamically chooses acts/profiles based on key count

    Discussion in 'Plugins' started by skeetermcdiggles, Nov 1, 2012.

    1. DavidKDean

      DavidKDean Member

      Joined:
      Jun 15, 2012
      Messages:
      217
      Likes Received:
      1
      Trophy Points:
      18
      Good good. Like I said. I didn't actually get a chance to test yours. Happy to hear you found it and was able to fix that issue. :D

      That being said. I'm running them now. Lol.
       
    2. Magi

      Magi New Member

      Joined:
      Oct 12, 2012
      Messages:
      1,242
      Likes Received:
      7
      Trophy Points:
      0
      Cool, yeah I'll start messing with getting incorporated tonight.

      Keywarden detection could definitely be improved. Right now it only checks on each MoveTo point...and I imagine a WW barb flying all over the place could stumble upon the warden before the check could even be performed. For my botting monk, he finds the warden pretty much everytime without issue, but that can be a problem.

      If we can get it to constantly check rather than check on each xml tag, that would be great. That way you could actually set a smaller radius for locating him, and it would eliminate any stuck points trying to chase down the warden from far away (happens occasionally in Act3).

      I haven't managed to die and kill the warden at the same time, but some people have which would probably pose a problem. Not sure how to deal with it unless you take note of the position of death and have the bot backtrack its way there to verify warden is dead, and key hasn't been missed.
       
    3. skeetermcdiggles

      skeetermcdiggles New Member

      Joined:
      Oct 8, 2012
      Messages:
      37
      Likes Received:
      0
      Trophy Points:
      0
      I'll work on the check some time this weekend. Tracking deaths seems like a pretty low priority at this point so I'll hold off on that.
       
    4. Magi

      Magi New Member

      Joined:
      Oct 12, 2012
      Messages:
      1,242
      Likes Received:
      7
      Trophy Points:
      0
      yeah it isn't a huge deal for me personally, I've died to the keywarden and had no issues going back and finishing him off. But after starting up a Barb, I can see detection being an issue for the WW build especially. Going to work in your key detection now and give it a try! Looking forward to it.
       
    5. DavidKDean

      DavidKDean Member

      Joined:
      Jun 15, 2012
      Messages:
      217
      Likes Received:
      1
      Trophy Points:
      18
      Well. With the ability to check deaths people will be allowed to farm on higher MP levels much faster. How hard would it be to throw into memory the last known position of the keywarden? IE: When within "a" yards of x,y,z check to see if warden is present. If not. Leave game.

      Edit: I'm playing Devils advocate with these "ifs". I farm on MP5 with NPs what so ever. But there are some who post about "I have problems on MP2+".
       
    6. Magi

      Magi New Member

      Joined:
      Oct 12, 2012
      Messages:
      1,242
      Likes Received:
      7
      Trophy Points:
      0
      If we could keep track of a keywarden encounter this could open up some possibilities. At the moment, if you die to the warden, the profile resets and for all it knows it never saw the warden. If we could check that a warden encounter did happen and last known position of the encounter, should be able to address most issues.

      As a side note, already got your plugin at work. Simple implementation and working as intended. Loving it :cool:
       
    7. skeetermcdiggles

      skeetermcdiggles New Member

      Joined:
      Oct 8, 2012
      Messages:
      37
      Likes Received:
      0
      Trophy Points:
      0
      I'm one of those people that have trouble with MP2 :(

      It wouldn't be hard to store the location and return to the same place but I'm not sure how the profile would have to handle it. It will take a bit of thinking to figure out how exactly it will have to be implemented. I think having the previously mentioned WhileKeyWardenAlive tag would work as it could replace the contents with a direct MoveTo command. That'd probably work great for a1 and maybe a2 but I'm not sure how effective that will be in a3. I've never tried pathing from one end of the map to the other with a single MoveTo in an area with a lot of obstacles.

      Lucky I have an hour long commute to think about it.
       
    8. Magi

      Magi New Member

      Joined:
      Oct 12, 2012
      Messages:
      1,242
      Likes Received:
      7
      Trophy Points:
      0
      oh snap, I didn't realize this actually checked for keywarden as well. It actually found the warden before my XML did in Act 3....very interesting. Of course after killing him my profile didn't realize it and kept going. Going to see if I can put an XML hook in to your plugin just to check if warden is dead or not and use that in the profiles to verify if warden is dead or not. I've just modified trinity as well to treat the wardens as virgins on prom night now so there should be no way to miss them!
       
    9. skeetermcdiggles

      skeetermcdiggles New Member

      Joined:
      Oct 8, 2012
      Messages:
      37
      Likes Received:
      0
      Trophy Points:
      0
      That detection is actually very rudimentary and I don't think it's usable at this point. I haven't even tested it at all. I wrote it before I had the SNOs of the KeyWardens and haven't tested it since I added them in.

      I wasn't aware that you could read Plugin from the Profiles. I assume you'd need a property for that? Did the plugin also give you the message that it died?
       
    10. Magi

      Magi New Member

      Joined:
      Oct 12, 2012
      Messages:
      1,242
      Likes Received:
      7
      Trophy Points:
      0
      yup...reported found and dead. Yeah I'd need to set a property that the XML can read from...of course battlenet just went down for me ugh.
       
    11. DavidKDean

      DavidKDean Member

      Joined:
      Jun 15, 2012
      Messages:
      217
      Likes Received:
      1
      Trophy Points:
      18
      Well! I'm glad you're working it out. Happy to have planted the seed!

      On that note: Storing the data into short memory while "appending" the closest "MoveTo" tag would prob make it easier wouldn't it? IE:

       
    12. Magi

      Magi New Member

      Joined:
      Oct 12, 2012
      Messages:
      1,242
      Likes Received:
      7
      Trophy Points:
      0
      OK been working on a few things after noticing a keywarden detection script started...what I've done is tweaked a few things as far as how it handles the detection and death of the keywarden. Basically, this plugin will allow me to not only pick an Act based on the key, but deal with the keywarden as well. I've included a new XML function which serves as a profile variable to be called when the keywarden is killed. You set the profile you'd like to run after killing the warden (in my case, it loads the Act choosing profile).

      I've added some additional functionality to the plugin so that if you find the warden but die, it resets properly. I did finally die immediately after killing the warden while doing some testing, and yes this is still a problem. Since I know that I have encountered the Warden and legitimately killed it, I think we can justly say that if you die after killing the warden, you likely didn't pick up anything and need to go back. Then likely restart the profile but take note of where you died...when you within range of that area, continue to next appropriate act.

      In any case, here is what I've got so far. It's working quite well now, but going to let it run its course tonight and see how it does. I'll do some more testing with handling vanquished wardens and dying before collecting tomorrow.
       

      Attached Files:

    13. DavidKDean

      DavidKDean Member

      Joined:
      Jun 15, 2012
      Messages:
      217
      Likes Received:
      1
      Trophy Points:
      18
      There is an issue with the Act III keywarden.

      This is the spam I get every time I get near him. He doesn't enter combat. Just stands outside of aggro range. The "KEYWARDEN VANQUISHED!!!" msg is given when I hit "Stop".

      Edit: Oh. Also. The quest id and step were wrong to pick up Tyreal in Act III.

      This should be the correct numbers.
       
      Last edited: Nov 3, 2012
    14. Magi

      Magi New Member

      Joined:
      Oct 12, 2012
      Messages:
      1,242
      Likes Received:
      7
      Trophy Points:
      0
      Did you use the profile I posted? The profile I posted has the correct game params.

      Not sure what version of Trinity you're using, but the untouched version 1.6.3.4 v4 has the keywarden kill radius set to 150...which can get you stuck in A3 if it sees the warden in an area it can't get to in a straight line. I think the only possible solution around this is to set a low radius for the warden in Trinity so it only goes after him when he's right on top of him. I'm trying 60 right now which seems to do a decent job. I've also set the priority of the keywarden to be treated like a Boss as you often encounter him with an elite and we want to constantly go after him.

      The last issue is his teleport. If you get pulled into a side battle with monsters after finding him, he can sometimes teleport out of range of RActors. Right now, I've tweaked the plugin to interpret if the warden is found, but then disappears from RActors, he is probably dead. I did this because sometimes it doesn't recognize he's dead after killing him because the keywarden check is throttled so it's not using too much CPU. I did drop the throttle from 10 to 5...but I still found it occasionally missed me killing him.

      The way I've tweaked it ensures that when we DO kill him, it reacts appropriately. If you get out of range while fighting the warden (which I just did while typing this), it will think he is dead, but should find him again hopefully. Mine did this about 4x in one fight since I found the warden with 2 elites, 1 being shamans who tend to take you all over the place. Eventually I killed all three, had to TP back for a town run, then it did appropriately go back and collect goodies from all 3 elites even though it had loaded the next profile waaay before I even killed the warden.

      With all the said, I'm currently testing the throttle at 3 to see if that interval will afford enough time to determine the keywarden is dead in *ALL* instances, this way if a warden does drop out of the RActors, it won't assume he's dead. I could probably remove the throttle entirely as it doesn't seem to be generating any noticeable load but I'm only running one instance. Would prefer to keep some throttle if I can ensure it always detects the warden's HP has reached 0 before he drops off the RActors when you really do kill him.

      EDIT - FYI, ran this for about 6-7 hours last night and worked wonderfully. Started with 16 A1, 12 A2, 11 A3 keys...now I'm 19,19,18 (going after that pesky terror key right now). That was running what I originally posted. I'm now testing the throttle at 3 and removed the assumption that warden is dead if it drops out of RActors. First encounter with A3 Warden worked flawlessly. Keep you posted.
       
      Last edited: Nov 3, 2012
    15. Splitty

      Splitty Member

      Joined:
      Oct 10, 2012
      Messages:
      64
      Likes Received:
      0
      Trophy Points:
      6
      Going to test this out! =D
       
      Last edited: Nov 3, 2012
    16. Magi

      Magi New Member

      Joined:
      Oct 12, 2012
      Messages:
      1,242
      Likes Received:
      7
      Trophy Points:
      0
      Unfortunately not having much luck with the throttle and determining death if HP is at 0. I just don't think OnPulse is triggered as frequently as we need it to be. I removed the throttle entirely and it would still miss killing the keywarden. For now I am going to have to keep the assumption in that if it goes out of range, he's likely dead. I'll continue to look for another interval or event handler. Would be quite nice if there was an event handler for killing elites, I should think there is. Then you can simply check if the elite killed matches SNO of warden.

      EDIT: I possibly take that back...was doing something stupid. Testing again.

      EDIT2: Nope, OnPulse just doesn't fire frequently enough. Sometimes it really knows he's dead (reaches 0 HP), other times he drops off the RActorList before we can check to make sure his HP is 0. Looking for alternate to OnPulse (I know it exists, just not sure exactly what I have to tie into)

      EDIT3: OK so I decided to change the HP check on warden from 0 (DEAD) to 50000 (almost dead) to see if the pulse check would pick up. I tried on MP0 where I can practically one-shot the warden and it fired. Going to up the MP level and mess with it. I figure most keyrun bots are doing at least 50k dps. My monk is doing twice that (3x if it casts blind). The trick will be to get it to fire right before you land the death blow. Keep you posted...
       
      Last edited: Nov 3, 2012
    17. skeetermcdiggles

      skeetermcdiggles New Member

      Joined:
      Oct 8, 2012
      Messages:
      37
      Likes Received:
      0
      Trophy Points:
      0
      Been a little MIA this weekend and probably won't have more time to work on this for a little while. I was worried about detecting him killed based on SNO because I'm not sure the that dead body has the same SNO. I'd suggest dumping RActors after he's dead and seeing if you can pull something useful from that.

      How many ticks/s is your DB running at? Mine typically runs at 12-13. Perhaps yours is lower and it's leading to the missed detection happening more often for you?
       
    18. Magi

      Magi New Member

      Joined:
      Oct 12, 2012
      Messages:
      1,242
      Likes Received:
      7
      Trophy Points:
      0
      Mine ticks about the same...not sure if any SNO is left after being killed but will look into it. Increasing the HP seems to do a good job...dropped it to 25000 but it mis-triggered 1/5x and when the actual detect fires, most times the warden is at 0HP, going to find the right balance and see if I can determine a percentage of HP needed to get the trigger just right on any MP level...at least for my monk haha. We'll see, would be even simpler if there was just an event handler for the death of an elite.
       
      Last edited: Nov 4, 2012
    19. jiffypop

      jiffypop New Member

      Joined:
      Sep 9, 2012
      Messages:
      1
      Likes Received:
      0
      Trophy Points:
      0
      It seems to have no idea what my NV stack is at, especially in act 2. I sat and watched it kill the keywarden 3 times in a row with only a 3stack.
       
      Last edited: Nov 4, 2012
    20. katkilla

      katkilla New Member

      Joined:
      Oct 20, 2012
      Messages:
      22
      Likes Received:
      0
      Trophy Points:
      0
      all mine says in ACT 1 after it gets 5 stacks and goes to the field that the key warden vanished and then leaves
       

    Share This Page