• Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • [Plugin] Gift Of Flight - TEST - Uses flying mount in quest or grind profiles

    Discussion in 'Archives' started by thephoenix25, Oct 8, 2011.

    1. thephoenix25

      thephoenix25 New Member

      Joined:
      Jan 15, 2010
      Messages:
      289
      Likes Received:
      4
      Trophy Points:
      0
      DO NOT USE AFK

      What does it do ?

      To begin with, the idea behind this plugin was to save time when repairing or selling junk by flying to and from the repair/sell NPC. But then I thought, why stop there? It will fly you to and from quest giving NPCs, to and from repair/sell/buy NPCs, to your grind and quest areas (both Grind and Quest profiles) etc.

      What doesn't it do ?

      It (at present) will not interfere with Custom Quest Behaviours used in questing profiles. RunTo, FlyTo, InteractWith, Escort, Vehicle transport and some of the UseItem type CBs.

      What is it for ?

      I've been using it to gain the quest achievements for each zone and continent as I instance boosted my toons to 60 before I started questing. But it should work fine for simple quest levelling or grinding profiles. (Bad landings in packs of mobs is on my todo list)

      What do I need ?

      You need a toon above level 60 with flying skill and a flying mount (with HB flying mount support). You will also need to have some spare time as I don't recommend using this plugin AFK yet.

      What do I need to know ?

      So far I have only tested it with Horde characters so I have no idea how it will perform for Alliance. It has only been tested by a limited number of people with varying levels of HB experience (so only use at your own risk). There are instructions as to how it works and what to do to get out of a ?failed landing? situation etc at the end of the post.

      How does it work ?

      It works by saving ?hotspots? which I refer to as ?safe landing spots?. When you want to travel to a place the plugin has not yet ?seen?, it will scan the area for places (in theory) HB's ground mounted navigation can handle to get you to the target NPC/Objective. It ?scans? 100 locations and attempts to find a navigable path to the target for each spot. Any that are successful are stored for later use as ?un-tested/possible? saved spots. The landing spot found to have the shortest ground mounted travel distance is chosen to be the preferred path. If it lands successfully within a time limit, the landing spot is saved and will used every time the bot needs to return to that area. If it fails to land because the target is inside a building, underground or in a generally difficult place to land it should choose the next closest landing spot and repeat until either a ?safe landing spot? is found or if no safe landing spots are found it will return to either a previously saved landing spot somewhere else, or the place from which you attempted to fly from (which ever is closer), and then it will use a ground mount to continue. In addition to this, every 10 seconds it will do a small scan of the area around the character looking for viable landing spots for future use. This way the scans will become quicker after using it for a while. Every now and then it will purge tightly grouped ?untested? saved landing spots, so you don't end up with 1000's of landing spots in a small area. It will automatically blackspot any area in which it has failed to land and if it exhausts all available options the target is ?temporarily? blacklisted. (the blacklist is not saved to file, stopping the bot will reset the blacklist. Blackspots are saved to file)

      Why have I released this when it isn't 100% perfect ?

      To test every eventuality would take a lifetime even though there are a few of us testing it. So I've released this to first gauge whether it is a plugin that will be worth while to the community and secondly, every safe landing spot recorded can be amalgamated into a set of distributable file to go with the plugin. So any feedback/logs/saved spots will be gratefully received.

      Instructions

      Anywhere within 100 yards is considered a safe/good landing distance. If the target is closer than 100 yards the plugin won't do anything. If the current point of interest (POI) is a ?Hotspot? used in grind or quest profiles, 300 yards is considered a safe landing distance (to avoid flying over quest objective mobs).

      Hotspot = Safe landing spot = X Y Z
      Blackspot = Not safe landing spot = X Y Z Radius

      Both are stored in .xml files in the GiftOfFlight folder. They are continent specific, so be careful not to mix them up if you are adding/removing manually. If it fails to land and you want to fix it, the best option is to stop the bot, find a good landing location near to the target with little or nothing above to obstruct the flight and landing. Take a hotspot from HB for the location and add it to the end of the appropriate .xml file (be sure to pick the correct continent). The same applies to blackspots, if you find a place you know it won't be able to land (ie cleft of shadows in Orgrimmar, underground, or all of Undercity). You can record a blackspot with HB as you normally would and add this to the appropriate blackspot file. X Y Z and RADIUS are required. Any manually added/removed ?spots? must remain EXACTLY as they come from HB, one ? ? space in the wrong place break it.

      *Edit* If it needs to generate 'new' safe landing spots, it can take anything from 0.2 to 120 second if it takes more than 5 mins, something is wrong. Stop the bot wait a few second for the "background thread" to finish and save to file. Then restart. If all else fails, complete the objective and try again.

      Simple Setup

      Install the zip file to your \plugins folder, unzip so that you have \HB\plugins\GiftOfFlight\Blah Blah. Find a ground mount (or flying if you want) profile, quest profiles are more interesting if you are watching it. I find the 1-60 profiles give a good example of what it can do, as these aren't designed to use flying mounts. Enable plugin and press start.

      Side note

      I am not an experienced C# programmer and I know my code isn't pretty! I've left a lot of ?commented? code in there for my own reference. If you don't like it, don't use it. But if you do have any suggestions or improvements I'd be happy to hear them.

      Good luck and DONT AFK (yet)

      EDIT Attachment removed - Latest version(s) is available later in the thread
       
      Last edited: Oct 14, 2011
      no1knowsy likes this.
    2. Venus112

      Venus112 New Member

      Joined:
      Jun 17, 2010
      Messages:
      1,509
      Likes Received:
      13
      Trophy Points:
      0
      Sounds interesting

      Just to clarify one thing: The safe spots you are mentioning, does this mean that it, in theory, will work like Ezfly or the other plugins the will make the bot fly a bit up and then to a hotspot? (though with adding safe zones, which sounds awesome)?
       
    3. no1knowsy

      no1knowsy Well-Known Member

      Joined:
      Feb 28, 2010
      Messages:
      3,927
      Likes Received:
      57
      Trophy Points:
      48
      Looks promising. I'll test tomorrow.
       
    4. thephoenix25

      thephoenix25 New Member

      Joined:
      Jan 15, 2010
      Messages:
      289
      Likes Received:
      4
      Trophy Points:
      0
      No, whilst in a "grind area" it will use a ground mount most/all the time. The same as normal, but it will use Flightor to fly to and from quests/repair/sell etc. It will take the most direct route possible (as long as the "target" is on the same continent). I've not seen Ezfly, but I have used LetMeFly. This does not work in the same way, hotspots in grind areas will/should not be affected. It should only affect travelling to and from objectives.

      For example set a grind profile in Uldum running, with your toon in Orgrimmar.

      It will scan Uldum for the best landing spot near your first hotspot
      Fly to the landing location in Uldum
      continue grind profile as normal

      *One note though* If your hotspots are more than 300 yards apart (grind or quest profiles) it may bug
       
    5. thephoenix25

      thephoenix25 New Member

      Joined:
      Jan 15, 2010
      Messages:
      289
      Likes Received:
      4
      Trophy Points:
      0
      New update added to the first post with bugfix
       
    6. Weyoun

      Weyoun New Member

      Joined:
      Sep 27, 2010
      Messages:
      8
      Likes Received:
      0
      Trophy Points:
      1
      I like the idea of this plugin.

      I didn't have time to look at your main logic but I looked at your helper files.
      Like you mentioned this code was a bit messy. ;)

      I did a bit of cleaning on that code.

      This piece of code will create a slightly different xml file though which is more xml-comformant.

      This means it will create xml files like:

      Code:
      <?xml version="1.0" encoding="utf-8"?>
      <Blackspots>
        <Blackspot X="1" Y="2" Z="3" Radius="12" Height="0" />
        <Blackspot X="4" Y="5" Z="2" Radius="13" Height="12" />
      </Blackspots>
      
      or

      Code:
      <?xml version="1.0" encoding="utf-8"?>
      <Hotspots>
        <Hotspot X="1" Y="2" Z="3" />
        <Hotspot X="4" Y="1" Z="2" />
      </Hotspots>
      
      This means, you cannot load your xml files untill you change them to be xml-comformant. :)

      However you can use these files if you want to.
       

      Attached Files:

    7. Bengan12

      Bengan12 Well-Known Member

      Joined:
      Feb 24, 2011
      Messages:
      1,967
      Likes Received:
      31
      Trophy Points:
      48
      Sounds good.

      Question, i for one have a leather farming profile that i can not get to while on ground mount, result i must change the profile to a PB profile or use your plugin, now but there is a problem, ground nav can not get a route the the vendor from here, would it be possible to make the plugin fly anyway?
       
    8. thephoenix25

      thephoenix25 New Member

      Joined:
      Jan 15, 2010
      Messages:
      289
      Likes Received:
      4
      Trophy Points:
      0
      I have been working on a solution to this, and I think this next version may now be able to handle that scenario. It doesn't require a ground mount path back from the target. I've not tested much with grind profiles, so I'd be interested to see how it works out.

      Hi Weyoun,
      Thanks for the xml code, I'm self taught so I've got some "holes" in my knowledge. I'll try to standardise the format, with help from your code, when I've got the core working smoothly.


      New release following in few mins
       
    9. thephoenix25

      thephoenix25 New Member

      Joined:
      Jan 15, 2010
      Messages:
      289
      Likes Received:
      4
      Trophy Points:
      0
      Hi,

      Version 2

      Features

      Will fly to :

      Pick up quests
      Hand in quests
      Repair/sell NPCs
      Quest objectives
      Use Item tasks
      "Forced MoveTo" tasks

      Generates new landing spots for areas it's not been to
      Learns and remembers landing spots as it progresses
      Failed landing attempt recovery with alternative landing sites
      Automatic blacklisting and blackspots of target landing sites

      Info
      I have included a HORDE (ALLI read further down) quest profile, which you can use to try it out. For those out that know questing profiles, here is the quest order section :
      PHP:
      <QuestOrder>
       
        <!-- 
      Azshara quest pickup -->
        <
      PickUp QuestName="Venison for the Troops" QuestId="14118" GiverName="Ag'tor Bloodfist" GiverId="8576" />
       
        <!--
      Valley of Strength -->
        <
      RunTo QuestId="14118" X="1583.697" Y="-4388.918" Z="17.5777" /> 
       
        <!-- 
      Valley of Honor -->
        <
      RunTo QuestId="14118" X="2006.488" Y="-4697.69" Z="28.82214" /> 
       
        <!-- 
      Hunter trainer -->
        <
      RunTo QuestId="14118" X="2106.94" Y="-4616.56" Z="49.2539" /> 
       
        <!-- 
      Valley of Honor -->
        <!--<
      RunTo QuestId="14118" X="2055.385" Y="-4787.111" Z="27.84274" /> -->
       
        <!--
      Remove brackets to complete quest objective-->
        <!--<
      Objective QuestName="Venison for the Troops" QuestId="14118" Type="CollectItem" ItemId="47038" CollectCount="15" />-->
       
       
       
        <!-- 
        *****************************************************
        
      This is how it deals with NPCs indoors or underground 
        
      -->
        <!-- 
      Warrior trainer -->
        <
      RunTo QuestId="14118" X="1960.88" Y="-4788.98" Z="39.11325" /> 
       
        <!-- 
      Repair -->
        <If 
      Condition="((HasQuest(14118)) &amp;&amp; (!IsQuestCompleted(14118)))" >
         <
      CustomBehavior File="ForceSetVendor" DoRepair="True" /> 
        </If>
       
        <!-- 
      WarLord XXXX -->
        <
      RunTo QuestId="14118" X="1667.021" Y="-4344.587" Z="27.36131" /> 
       
        <!-- 
      Turn in quest (WONT TURN IN IF OBJECTIVE IS NULL) -->
        <
      TurnIn QuestName="Venison for the Troops" QuestId="14118" TurnInName="Ag'tor Bloodfist" TurnInId="8576" />
       
       </
      QuestOrder>
      The profile picks up a low level quest from just outside Org "Venison for the Troops" and completes it during the profile. If you have already done this quest you will need to edit the profile and add another quest and QuestId s, or remove it completely. The QuestId of a valid quest available to you is essential for most quest profiles to work correctly.

      If you don't know how to edit quest profiles, you can use a low level quest profile, but it sometimes take a while to see what it is doing.

      How to use it (Alliance & Horde)
      I will be uploading this without and of the settings files...... Which means it'll have to fend for it's self until it's learnt some of the better places to land. So in theory, there is no reason this wont work for Alliance, but I've never tested it. (It will deffinatly go wrong if you use it on both Horde and Alliance as the safe landing spots are not yet seperated by faction!)

      Sometimes up to 120 seconds is required to generate a landing spot, but once it's learnt it, it will remember it.
       

      Attached Files:

    10. no1knowsy

      no1knowsy Well-Known Member

      Joined:
      Feb 28, 2010
      Messages:
      3,927
      Likes Received:
      57
      Trophy Points:
      48
      You have integrated my most recent project into your plugin. The fly to repair/mail.
      Thank you. :)

      I don't mean this in a richard cranium way. I mean you saved me some work. :)
       
    11. thephoenix25

      thephoenix25 New Member

      Joined:
      Jan 15, 2010
      Messages:
      289
      Likes Received:
      4
      Trophy Points:
      0
      Update

      Blackspot, Blacklisting and Failed flight attempt have been reworked.

      Specifics :

      Blackspots will now be checked fully
      Blacklisting of target objectives, is working correctly
      "scans" of target objective area has been re-worked with a new formulae
      Failed attempts, when scanning no longer result in an infinite loop
      Failed attempts revert back to ground mount navigation

      notes

      The background thread has been removed for the moment, mainly to aid me with tracing bugs. It seems to work well without it, just a little slower.

      It contains no settings files (landing sites and blackspots) which means it will take more time to find the first few "landing sites".
       

      Attached Files:

    12. thephoenix25

      thephoenix25 New Member

      Joined:
      Jan 15, 2010
      Messages:
      289
      Likes Received:
      4
      Trophy Points:
      0
      Alliance support

      I finally got around to testing this with an Alliance toon. I am currently levelling a DK in Outlands, which so far, is working well.

      I have now implemented faction specific files, which means that if you try this on a Horde toon, then try it on an Alliance toon. The Alliance toon won't land in places deemed safe for Horde, and vice-versa.

      If all goes well, I'll be releasing this new version soon.

      If anyone has an Alliance lvl60+ toon, who would be willing to test low level 1-58 quest profiles with this plugin I'd be very thankful. A DK would be best as they (usually) have not done any quests before 60, but any testing will be appreciated. PM me if you're interested.
       
    13. cpy

      cpy New Member

      Joined:
      May 10, 2010
      Messages:
      106
      Likes Received:
      0
      Trophy Points:
      0
      Testing it right now on 2 characters.
       
    14. thephoenix25

      thephoenix25 New Member

      Joined:
      Jan 15, 2010
      Messages:
      289
      Likes Received:
      4
      Trophy Points:
      0
      In the version available now, cpy has kindly informed me that there is an error report which should have been removed. The error report is :

      PHP:
      GoF Exception System.NullReferenceExceptionObject reference not set to an instance of an object.
      at GiftOfFlight.GiftOfFlight.Pulse() in *\Plugins\GiftOfFlight\GiftOfFlight\Main.cs:line 529
      This should not affect the plugin, it was there to help me debug.

      A new version will be released within a few hours
       
    15. cpy

      cpy New Member

      Joined:
      May 10, 2010
      Messages:
      106
      Likes Received:
      0
      Trophy Points:
      0
      Prepare for more feedback later this evening. I'm going to do more test runs with questing.

      Anyway if bot is in "no fly zone" and he somehow blacklist it he will be stuck trying to get to fly zone to fly to another location. It was in Westguard keep, but i'll check if it will happen on other locations.
       
    16. Inrego

      Inrego New Member Buddy Store Developer

      Joined:
      Feb 7, 2010
      Messages:
      2,765
      Likes Received:
      71
      Trophy Points:
      0
      Getting alot of these errors:
      Code:
      GoF : Exception : System.NullReferenceException: Object reference not set to an instance of an object.
         at GiftOfFlight.GiftOfFlight.Pulse() in c:\Users\Inrego\Dropbox\HB\Plugins\GiftOfFlight\GiftOfFlight\Main.cs:line 529
      in a normal grinding profile using grindbot. It seems to get the work done anyhow so I don't really mind.
       
    17. cpy

      cpy New Member

      Joined:
      May 10, 2010
      Messages:
      106
      Likes Received:
      0
      Trophy Points:
      0
      What the hell is dropbox?
      Also read 2 posts above yours.
       
    18. thephoenix25

      thephoenix25 New Member

      Joined:
      Jan 15, 2010
      Messages:
      289
      Likes Received:
      4
      Trophy Points:
      0
      A dropbox is an online storage system, which will automatically sync your files with all your computers. It also allows you to make public links to share files.

      Here is the latest version :

      There are some improvements to the blacklisting and blackspots. And tidyed up the error messages. It also will now fly to most objectives, but not when using the InteractWith quest behaviour.
       

      Attached Files:

    19. cpy

      cpy New Member

      Joined:
      May 10, 2010
      Messages:
      106
      Likes Received:
      0
      Trophy Points:
      0
      I'm not sure if you fixed this but bot seems to land on the top of temple of earth (Deepholm) to go to repair.

      Stuck on top of the temple
       
      Last edited: Oct 17, 2011
    20. thephoenix25

      thephoenix25 New Member

      Joined:
      Jan 15, 2010
      Messages:
      289
      Likes Received:
      4
      Trophy Points:
      0
      Thanks for reporting this, I didn't remember that Deepholm is a seperate continent like Northrend and Outland.

      It should be fixed in this version.
       

      Attached Files:

    Share This Page