• Visit Rebornbuddy
  • [Official] Universal Navigation Snips

    Discussion in 'Honorbuddy Profiles' started by EchoTiger, Jan 26, 2015.

    1. EchoTiger

      EchoTiger Official Profile and Singular Developer Staff Member Moderator

      Joined:
      Nov 28, 2012
      Messages:
      6,807
      Likes Received:
      587
      Trophy Points:
      113
      Welcome
      This is a resource for developers that will add universal navigation support to your profiles.
      Universal navigation support simply means: The bot can be started anywhere in the game - and the code will take the player from its current location, to the desired location before starting the regular profile code.

      ex: If you start the bot in Eastern Kingdoms, but our farm location is located in Northrend - then the Universal Navigation Snip will be able to move the player to Northrend before starting.

      These snips are designed to be very bare-boned, and easily expandable.
      Currently they only focus on more popular methods of transportation - and do not go into much detail such as using items to teleport the player.

      (the snips can be loaded individually directly after downloading them in case you want to test them before using them!)​


      Showcase
      Have a project that uses these snips?
      Message me and I'll post a link to it here!




      Supported Functions
      • Druid Teleportation to Kalimdor.
      • Death Knight's Death Gate to Eastern Kingdoms.
      • Mage Teleportation to Destination.
      • Hearthstone / Astral Recall / Innkeeper's Daughter -> To Destination.
      • Hearthstone / Astral Recall / Innkeeper's Daughter -> To a location that has portals which can be used to get to the destination.
        [*]Garrison Hearthstone to Draenor.
      • From Draenor
      • From Pandaria
      • From Outlands
      • From Eastern Kingdoms
      • From Kalimdor
      • From Azuremyst Isle + Bloodmyst Isle + Exodar (Alliance)
      • From Eversong Woods + Ghostlands + Silvermoon City (Horde)
      • From Isle of Quel'Danas
      • From Deepholm
      • To Eastern Kingdoms
      • To Kalimdor
      • To Outlands
      • To Northerend
      • To Pandaria
      • To Draenor



      To Do
      • Other Hearth Items
      • Any other potential distance checks. (If near Shrine, use portal. If near Jade Village, use portal.)
      • Monk teleportation to Pandaria.



      Known Issues
      • None!



      Future Plans
      • Distance tolerance for 'To Draenor.xml' - If near Booty Bay, go to Blasted Lands. If near Undercity, go to Orgrimmar and use the Blasted Lands portal.
      • From Dungeon.xml?
      • Clean up some of the <If conditions so they're easier to read and more persistently designed.
      • To Draenei / Blood Elf zones?



      How the Navigation Logic is handled
      If the player is outside of a dungeon, or not in our destination, then the navigation is started.

      If we're going to either Kalimdor or Eastern Kingdoms, then we'll use either Teleport: Moonglade or Death Gate to get to the location.
      Moonglade for Kalimdor. Death Gate for Eastern Kingdoms. This only applies to Druids and Death Knights of course.

      Then, it's checked to see if we are Horde or Alliance so that proper navigation is used, or the correct spells are cast.

      If the player is a Mage, then it will loop a teleportation code (reactive to combat interruptions or any other interruptions.)
      This also considers if the player knows the required teleportation spell and it's actually castable in the player's current situation.

      If the player isn't a Mage or can't cast the teleporation, then the Hearthstone destinations are checked.

      If the Hearthstone location is our destination, then it's cast.
      (Along with Astral Recall / etc - cooldowns are also checked during this process)

      If the player's Hearthstone location isn't our destination, then it's checked to see if the player's Hearthstone location has portals (ex: The Shrine in Pandaria) - if so it will simply Hearth to this location.
      The MapId checks later in the profile will handle portal the usage just as if the player started the bot in those locations to begin with.
      The Hearthstone usage is also considerate just as the Mage teleportation code (interruption-proof / etc)

      After the Hearthstone logic, simple MapIds are then ran. For each expansion zone (or any other zone) - custom navigation is used to get to our Destination.
      This navigation will change depending on the player's current location within the map.

      Once the MapIds are ran, the player's location is checked. If the path to our destination has multiple routes, whichever route is the fastest will be taken.
      For example:
      If we are going to Kalimdor as Alliance then we have two major routes. The Stormwind boat or the Booty Bay boat.
      If the player is in or near Stormwind, the Stormwind boat will be taken.
      If the player is in or near Booty Bay, the Booty Bay boat will be taken.
      These routes are considered by the player's X (or sometimes Y) position.​



      Interruption Proof and Lag Considerate!
      As mentioned previously, these snips are interruption proof! This applies if you get attacked, die, enter combat / etc.
      Also, spells are cast with up to 500 miliseconds of wait time in-between. This will allow for latency levels up to 500ms before a loop is considered.
      See gif below:
      [​IMG]



      [​IMG]

      Usage Options
      Regular Snips (for Copy+Pasting)
      These are just the traditional snips.
      They will run as any other normal profile code and will not auto-update.
      Simply paste the code into your profile where (when) you want the bot to travel to the destination.​


      Remote Code QuestBehaviors (recommended!!)
      These quest behaviors will load the navigation code into a temporary profile, and have the bot load that temporary profile.
      No changes are made to your original profile when the navigation code is loaded.

      This is really nice for people who want to use the navigation code, but don't want to have 300 'lines of mess crowding their profile up.
      Usage:
      PHP:
      <CustomBehavior File="LoadRemoteCode"/> <!-- Tell the behavior to look for occurences RemoteCode in the profileOnly assign this once. -->
      <
      CustomBehavior File="RemoteCode" CodeUrl="https://raw.githubusercontent.com/EchoTiger/AzyulSource/master/UniversalNav/ToDraenor.xml"/> <!-- Place this where you want the remote code to be included--> 
      You may use the GitHub source which is located here, all navigation snips located on this link are updated.
      Be sure to only use the raw source when linking the remote code. Don't copy the GitHub HTML page link.




      (Extra)
      Having a profile auto-download+install the quest behaviors.


      You may use this snip of code to have the profile automatically download and install the quest behaviors.
      This will save you from making your users copy them:

      PHP:
      <CustomBehavior File="RunCode" > <!-- Do we have the behaviors? -->
          <![
      CDATA[
              if (!
      File.Exists(Utilities.AssemblyDirectory "\\Quest Behaviors\\RemoteCode.cs") || !File.Exists(Utilities.AssemblyDirectory "\\Quest Behaviors\\LoadRemoteCode.cs")) {
                  
      Logging.Write(System.Windows.Media.Colors.Yellow"[NOTE]: Downloading quest behaviors... your bot will automatically restart!");
                  
      System.Net.WebClient Client = new System.Net.WebClient ();
                  
      Client.DownloadFile("https://raw.githubusercontent.com/EchoTiger/AzyulSource/master/Snips/LoadRemoteCode.cs"Utilities.AssemblyDirectory "\\Quest Behaviors\\LoadRemoteCode.cs");
                  
      Client.DownloadFile("https://raw.githubusercontent.com/EchoTiger/AzyulSource/master/Snips/RemoteCode.cs"Utilities.AssemblyDirectory "\\Quest Behaviors\\RemoteCode.cs");
                  
      Logging.Write(System.Windows.Media.Colors.Yellow"[NOTE]: Restarting bot!");
                  
      System.Diagnostics.Process.Start(Utilities.AssemblyDirectory "\\Honorbuddy.exe""/autostart");
                  
      TreeRoot.Shutdown();
              }
          ]]>
      </
      CustomBehavior>
      Warning, this auto-download+install code may conflict with reloggers as it shuts down Honorbuddy and starts it again.


      Self-Updating Logic
      These snips are hard-coded with an update logic that'll make sure anytime the profile is started, the universal navigation is automatically updated.
      The updates are pulled from GitHub which is located here.

      It's important to note, in these profiles there's a comment at the top and bottom of the profile of the navigation code.
      The comment is: <!-- Universal Nav Start --> and <!-- Universal Nav End -->
      Do not remove these lines, and make sure they're included in your profile.
      These lines are used by the self-update logic to direct the code placement when updates are applied.

      The update logic will check to see if there's any differences between your copy, and the remote SVN copy.
      If even the slightest change is detected, an update will be applied.
      Given this, do not add extra tabs or modify the navigation code unless you remove the self-updating logic.
      You must paste it -as is-.




      Download Links
      (links updated June20th 2016, previous links removed)

      Remote Code QuestBehaviors


      Self-updating logic: Read the Self-Updating Logic section above before using these!


      Reglar Snips (v2.1):







      Code:
      ::Change Log
      v2.1
          ‣ Navigation snips will no longer loop if your player lacks any hearth solutions.
          ‣ Saved variables now have a unique name per "ToXXXX" so that multiple navigation snips can be used in a single profile and they won't conflict.
      
      v2
          ‣ Massively cleaned up the code conditions. Everything is checked by custom booleans rather than having a chunk of mess in each <If/While/>
          ‣ New conditional logic has been added.  In the process, a TON of errors have been fixed - also a lot more unique player circumstances are now supported.
              [I](eg: if player in Dalaran, use portal -- if outside of Dalaran but in Northrend, Hearth to Dalaran.)[/I]
          ‣ Draenor is now checked by ExpansionId rather than a mess of ZoneIds/MapIds.
          ‣ HearthstoneAreaId now checks by MapId rather than specific AreaIds.  This will allow for 100% Hearthstone support to the destination allowing for a LOT more support to the navigation logic.
          ‣ ToPandaria no longer loops after hearthing to Stormwind.
          ‣ If the bot is started in Northrend or Pandaria and the player's Hearth is acceptable for reaching our destination, the bot will now hearth instead of seeking the Dalaran/Shrine portals.
          ‣ The bot will now be able to reach Ashran via Flight Path regardless of what tier the player's Garrison is.
          ‣ If started in Ashran while leaving Draenor, bot will no longer go back to the Garrison.  Instead it will just use the Ashran portals to leave Draenor.
          ‣ Fixed MapId detection when entering Outlands.
      
      
      v1.5.7
          ‣ Added missing closing If tag for the ToPandaria snip.
      
      v1.5.6
          ‣ Hotfix to fix improper operand use.
      
      v1.5.5
          ‣ Major fixes to the MapId checks for when using the Hearthstone or any hearth-related spell/item.
      
      v1.5.4
          ‣ To Kalimdor: Added a MapId check for :Stormwind Docks to Darnassus:. This should prevent issues if the bot decides to go from Booty Bay to Ratchet.
          ‣ Fixed Innkeeper's Daughter ID.
          ‣ To Draenor: Should no longer attempt to go to Draenor if started in Draenor.
      
      v1.5.3
          ‣ To Kalimdor: Will properly use the zeppelin to Orgrimmar when leaving Eastern Kingdoms instead of using the zeppelin to Howling Fjord.
          ‣ To Draenor: Added a ZoneId before attempting to Mage teleport to the capitol city.
          ‣ Global: Innkeeper's Daughter verbose has been reworded given it shares a cooldown with Hearthstone.
          ‣ From Northerend: As Horde, bot should now properly use the zeppelin in Warsong Hold to get to Orgrimmar.
          ‣ To Draenor: Will now use the Ashran portal near faction leaders to get to Draenor.  Also considers player's distance from Dark Portal and will prioritized based off of.
          ‣ Global: Draenei Zone is now checked before Outlands.
          ‣ To Draenor: Now checks Ashran's MapId where/when needed.
          ‣ To Draenor: Will no longer require you to get your Garrison Hearthstone out of the bank.
          ‣ To EasternKingdoms: Added missing item teleportation logic for Alliance.
      
      v1.5.2
          ‣ Corrected parenthesis when checking MapId.
      
      v1.5.1 (Hotfix)
          ‣ Addressed any missed RunTo/FlyTo lines from the last update.  Converted them to MoveTo.
          ‣ Removed 'From Draenor' from the 'To Draenor' snip since it's not needed.
          ‣ Bot will no longer stop instantly if started in Draenor, but instead  should now properly execute 'From Draenor' logic.
              -‣ If the player has a tier 3 Garrison the portal to Ashran is taken.  If not, then a flight path is used.  If both of these aren't met, then the bot will mess up (a solution for this will be coming.)
      
      v1.5
          ‣ Added 'To Draenor.'
          ‣ Changed all RunTo and FlyTo lines to MoveTo to allow for more logical navigation.
          ‣ While going 'To Outlands', bot will no longer stop if started while in any of the Blood Elf / Draenei starting zones or cities.
          ‣ For Alliance, fixed verbose while going from Exodar to Darnassus.  (used to say going to Stormwind.)
          ‣ For Horde, while going from Eastern Kingdoms to Northered, the verbose has been corrected so that it says going to Howling Fjord instead of Kalimdor.
          ‣ Added distance checks.  Depending on which the player is closer to, the bot will use instead.
              - (A) From Eastern Kingdoms, To Kalimdor: Booty Bay /or/ Stormwind Docks
              - (A) From Kalimdor, To Eastern Kingdoms:  Ratchet Boat /or/ Rut'theran Village Boat.
              - (A) From Northerend, To Eastern Kingdoms: Borean Tundra Boat /or/ Dalaran Portal /or/ Howling Fjord Boat.
              - (A) From Eastern Kingdoms, To Northerend: Stormwind Docks /or/ Menethil Harbor
              - (H) From Eastern Kingdoms, To Kalimdor: Undercity Zeppelin /or/ Booty Bay Boat
              - (H) From Kalimdor, To Eastern Kingdoms: Ratchet Boat /or/ Orgrimmar Zeppelin.
              - (H) From Northerend, To Kalimdor: Borean Tundra Boat /or/ Dalaran Portal /or/ Howling Fjord Zeppelin.
      
      v1.4
          ‣ Added Hearthstone functionality for Underbelly.
          ‣ Added Hearthstone functionality for Dwarven District.
          ‣ Added Hearthstone functionality for Valley of Honor.
          ‣ Added Death Knight's Death Gate support.  (to get to Eastern Kingdoms.)
          ‣ Added Druid's Moonglade Teleport support.  (to get to Kalimdor.)
          ‣ Fixed several 'If started in Shrine or Dalaran' issues when Hearthing.
          ‣ Added official 'To Pandaria.'
          ‣ Added official 'To Kalimdor.'
          ‣ Fixed several faction-based errors  (ex: Horde Hearthing to Dalaran to get to Eastern Kingdoms - there's no portal to Eastern Kingdoms for Horde, only Alliance.)
      
      v1.3
          ‣ Fixed a mistype in the 'To Northerend' profiles when boarding the boat from Stormwind to Northerend.
          ‣ If started while in the Shrine, and our Hearth goes to the Shrine - bot will no longer output that it's going to Hearth.  (Same with Dalaran.)
          ‣ Added beta 'To Pandaria.'
      
      v1.2
          ‣ Fixed a mistype which was causing errors for Alliance.
      
      v1.1
          ‣ Added  'To Outlands'
          ‣ Since the Azuremyst Isle shares the same MapId for Outlands, the code now checks for all ZoneIds releating to Azuremyst Isle.
          ‣ Several Id mistypes between Kalimdor and Eastern Kingdoms have been fixed.
          ‣ A few verbose messages have been corrected.
         
      
      v1
          Initial Release.

      Technical Information
      Code:
      This is a list of HearthstoneAreaIds that are used.
      
      6484: (A) Pandaria, Shrine of Seven Stars
      6519: (H) Pandaria, Shrine of Two Moons
      (These two are checked so that we can use the Shrine's portals to get to our location. Or for the To Pandaria snip.)
      
      4395: Dalaran, all inns above level
      4560: Underbelly, all inns below level
      (These two are checked so that we can use the portal to either Eastern Kingdom (A), or Kalimdor (H) depending on where we're going. Or for the To Northerend snip.)
      
      3703: Shattrath, Aldor Rise
      3898: Shattrath, Scryer's Tier
      (These two are checked so that we can use the portal to either Eastern Kingdom (A), or Kalimdor (H) depending on where we're going. Or for the To Outland snip.)
      
      5148: Stormwind, Trade District
      5150: Stormwind, Dwarven District
      (To Eastern Kingdoms)
      
      5170: Orgrimmar, Valley of Strength
      5168: Orgrimmar, Valley of Honor
      (To Kalimdor)
      
      
      Me.ZoneId == 7078 || Me.ZoneId == 7004
      This is located on every <If/> condition at the top of the navigation along with a MapId and IsInInstance check and are for the Alliance/Horde Garrisons.
      The Alliance and Horde Garrisons are considered instanced locations, so without these two checks the universal navigation will not start if started in the Garrison.
      Why ZoneId?  Depending on which tier level your Garrison is, the MapID changes however the ZoneID doesn't.  Having two ZoneIDs is easier than having six MapIDs.



      [​IMG]


      The Azyul Navigation Snips are licensed under Creative Commons CC BY-SA
      Given this, you are allowed to use these snips in commercial products, share and adapt the material.
      However, you must give credit of the work and if you use the snips, or make changes.
      You must also include this license in your modified version.

      Given that the navigation snips output the Azyul name, you do not have to give credit on your threads as long as the output is visible.


      [​IMG]
       
      Last edited: Jul 27, 2017
      Uhtred likes this.
    2. pookthetook

      pookthetook Member Buddy Store Developer

      Joined:
      Jan 28, 2012
      Messages:
      214
      Likes Received:
      21
      Trophy Points:
      18
      <First>
      Awww yeah!
      </First>


      EchoTiger was here <3<3
       
      Last edited by a moderator: Aug 22, 2015
    3. Azhemoth

      Azhemoth Active Member

      Joined:
      May 8, 2013
      Messages:
      534
      Likes Received:
      35
      Trophy Points:
      28
      amazing! much functionality!

      ...

      now get back to work on Wildbuddy we need 1-50 nao
      *cracks whip* ( ͡° ͜ʖ ͡°)
       
    4. tainguyen

      tainguyen New Member

      Joined:
      Feb 13, 2015
      Messages:
      1
      Likes Received:
      0
      Trophy Points:
      0
      Oh i agree with that amazing :D.
       
    5. EchoTiger

      EchoTiger Official Profile and Singular Developer Staff Member Moderator

      Joined:
      Nov 28, 2012
      Messages:
      6,807
      Likes Received:
      587
      Trophy Points:
      113
      Update 1.1.3 is live, here's the changes:

      v1.1.3
      • Added 'To Pandaria.'
      • Added 'To Kalimdor.'
      • Added Hearthstone functionality for Underbelly.
      • Added Hearthstone functionality for Dwarven District.
      • Added Hearthstone functionality for Valley of Honor.
      • Added Death Knight's Death Gate support. (to get to Eastern Kingdoms.)
      • Added Druid's Moonglade Teleport support. (to get to Kalimdor.)
      • Fixed several 'If started in Shrine of Dalaran' issues when Hearthing.
      • Modified a lot of sequential logic to improve functionality.
      • Fixed several faction-based errors (ex: Horde Hearthing to Dalaran to get to Eastern Kingdoms - there's no portal to Eastern Kingdoms for Horde, only Alliance.)


      Also, a lot of conditional logic has been changed around to allow for more functionality.
      This means - more potential bugs! Yay! [​IMG]

      Since there's so many potential 'situations' and outcomes of the navigation logic, it'll take some time to verify+test all of it.
      If you come across a bug, please report it!
       
      Last edited: Feb 18, 2015
    6. HHeLiBeBCNOF

      HHeLiBeBCNOF Member

      Joined:
      Oct 24, 2014
      Messages:
      93
      Likes Received:
      3
      Trophy Points:
      8
      Travelling from Garrison

      Testing To Northrend and To Outland as Horde, appears to not work from Garrison.

      I had to change the opening conditions to get either of them to work.

      To Outlands:
      PHP:
      <If Condition="Me.MapId != 530 &amp;&amp; !Me.IsInInstance" >
      Changed to:
      PHP:
      <If Condition="Me.MapId != 530" >

      To Northrend:
      PHP:
      <If Condition="Me.MapId != 571 &amp;&amp; !Me.IsInInstance" >
      Changed to:
      PHP:
      <While Condition="Me.MapId != 571" >

      Also, this happened:
      Code:
      [Azyul Navigator]: We're in Draenor, using the Ashran portal to Orgrimmar.
      [QDBG] Done with forced behavior Bots.Quest.QuestOrder.ForcedCodeBehavior.
      [QDBG] Starting behavior Bots.Quest.QuestOrder.ForcedMoveTo.
      Flight time: 00:09:31
      Run Time: 00:39:54
      Difference: 00:30:23
      Changed POI to: Type: Fly, R: Use, Warspear, Ashran
      Goal: Moving to <5266.4, -4075.891, 21.13024>
      Moving to Type: Fly, R: Use, Warspear, Ashran
      Stopped moving.
      Interacting with Bron Skyhorn (Unit Id: 79407)
      TaxiMap is opened! Updating known nodes list.
      Taking flight path to Warspear, Ashran from Frostwall Garrison, Frostfire Ridge
      Activity: Waiting on taxi...
      These are looking pretty impressive otherwise
      +rep
       
    7. EchoTiger

      EchoTiger Official Profile and Singular Developer Staff Member Moderator

      Joined:
      Nov 28, 2012
      Messages:
      6,807
      Likes Received:
      587
      Trophy Points:
      113
      I haven't been able to mess around in Draenor yet, haven't touched WoW in months lol.
      Any information I did gather for the Draenor logic was from me borrowing a friends account for about 10 minutes.
      So the 'From Draenor' support is a bit stiff.

      Does the bot recognize the Garrison as an 'Instance' location like a dungeon or a raid?
      If so then I'll need to wrap the !Me.IsInInstance with a "and not in Garrison ZoneIds."
       
      Last edited: Feb 19, 2015
    8. Rabbit112

      Rabbit112 Community Developer

      Joined:
      Jan 22, 2015
      Messages:
      370
      Likes Received:
      7
      Trophy Points:
      0
      Not 100% if they're an instance but they're separate MapIds from the rest of draenor (ashran included) so I imagine they would be.
       
    9. EchoTiger

      EchoTiger Official Profile and Singular Developer Staff Member Moderator

      Joined:
      Nov 28, 2012
      Messages:
      6,807
      Likes Received:
      587
      Trophy Points:
      113
      You could use Honorbuddy's console.

      Try running this while standing in the Garrison:

      Logging.Write("{0}", Me.IsInInstance);

      It should return true/false on Honorbuddy.

      But yea, if they're separate MapIds then it's a good chance that they are instanced.
      I've never seen a changing MapId that didn't require a loading screen though, lol. Usually that's handled on a ZoneId level.

      That aside, I believe Garrison navigation is still being worked on.
      I could imagine the issues would fix with that - but regardless custom navigation should be added.
       
      Last edited: Feb 25, 2015
    10. s7orm

      s7orm Member

      Joined:
      Jul 29, 2014
      Messages:
      34
      Likes Received:
      0
      Trophy Points:
      6
      You, sir, are SO resourceful <3
       
    11. MaxMuster

      MaxMuster Well-Known Member Buddy Store Developer

      Joined:
      Jan 30, 2012
      Messages:
      1,735
      Likes Received:
      30
      Trophy Points:
      48
      PHP:
              <If Condition="Me.MapId == 870" > <!-- Pandaria -->
                  <
      CustomBehavior File="RunCode" Code="Logging.Write(System.Windows.Media.Colors.DeepSkyBlue, &quot;[Azyul Navigator]: We're in Pandaria, using the Shrine portal to Dalaran.&quot;);" />
                  <If 
      Condition="Me.ZoneId != 6553" > <!-- If not inside of Shrine building -->
                      <
      CustomBehavior File="FlyTo" X="861.8756" Y="283.1115" Z="503.678" />
                  </If>
                  <
      RunTo X="822.7375" Y="205.7039" Z="519.3602" />
                  <While 
      Condition="Me.MapId != 571" >
                      <
      CustomBehavior File="InteractWith" MobId="215121" X="820.5553" Y="208.2397" Z="519.9392" TerminateWhen="Me.MapId == 571" />
                      <
      CustomBehavior File="WaitTimer" WaitTime="50000" TerminateWhen="Me.MapId == 571 || Me.Combat" />
                  </While>
              </If>
      What is if we dont have Pandaria Flying? And when the Gate to Vale of Blossom is not already opend per Quest?

      PHP:
              <If Condition="Me.MapId == 1116" > <!-- Draenor -->
                  <
      CustomBehavior File="RunCode" Code="Logging.Write(System.Windows.Media.Colors.DeepSkyBlue, &quot;[Azyul Navigator]: We're in Draenor, using the Ashran portal to Stormwind.&quot;);" />
                  <
      RunTo X="3732.467" Y="-4043.326" Z="44.81949" />
                  <While 
      Condition="Me.MapId != 0" >
                      <
      CustomBehavior File="InteractWith" MobId="235883" X="3734.65" Y="-4042.976" Z="44.81873" TerminateWhen="Me.MapId == 0" />
                      <
      CustomBehavior File="WaitTimer" WaitTime="50000" TerminateWhen="Me.MapId == 0 || Me.Combat" />
                  </While>
              </If>
      How to reach Ashran when Fly Point is not already Learned?




      Here is a Solution for Alliance Draenor:
      PHP:
                  <If Condition="Me.MapId == 1116" > <!-- Draenor --> 
                          <
      CustomBehavior File="RunCode" Code="Logging.Write(System.Windows.Media.Colors.DeepSkyBlue, &quot;[Azyul Navigator]: We're in Draenor, using the Ashran portal to Stormwind.&quot;);" /> 
                          <If 
      Condition="Me.ZoneId != 7078 &amp;&amp; Me.ZoneId != 7332 &amp;&amp; HasItem(110560) &amp;&amp; Me.BagItems.FirstOrDefault(r =&gt; r.Entry == 110560).CooldownTimeLeft.TotalSeconds &lt;= 0"
                                  <
      CustomBehavior File="Misc\RunLua" Lua="UseItemByName(110560)" WaitTime="15000" /> 
                              </If> 
                          <If 
      Condition="Me.ZoneId != 7332"
                                  <
      CustomBehavior File="InteractWith" MobId="81103" KeepTargetSelected="true" PreInteractMountStrategy="DismountOrCancelShapeshift" WaitForNpcs="false" WaitTime="2000" NonCompeteDistance="0" X="1864.33" Y="217.8108" Z="76.66188" /> 
                                  <
      CustomBehavior File="RunMacro" Macro="/run for i=1,NumTaxiNodes() do a=TaxiNodePosition(i); if strmatch(a,'0.85119622945786') then b=i; TakeTaxiNode(b); end end" WaitTime="1000" /> 
                                  <
      CustomBehavior File="WaitTimer" WaitTime="2000" /> 
                          </If> 
                          <If 
      Condition="Me.ZoneId == 7332"
                              <While 
      Condition="Me.MapId != 0" 
                                  <
      CustomBehavior File="InteractWith" MobId="235883" X="3734.65" Y="-4042.976" Z="44.81873" TerminateWhen="Me.MapId == 0" /> 
                                  <
      CustomBehavior File="WaitTimer" WaitTime="50000" TerminateWhen="Me.MapId == 0 || Me.Combat" /> 
                                  </While> 
                          </If> 
                  </If>
      It checks if we are in Draenor.
      Then Check if we are at our Garrison or in Ashran and if we have our Hearthstone in our Bags and if he on CD, when not -> Use Garrison HS.
      Then checks if we are in Ashran, when not Use the Flight Master from Garrison (when available) to Ashran.
      Then checks if we are in Ashran, when yes, use the Portal and Loop until we are in EK.

      With this Flight Master Solution we can prevent the Bot from trying to reach Ashran without having the Flight Point there.

      And here the same for Horde Draenor:

      PHP:
                  <If Condition="Me.MapId == 1116" > <!-- Draenor --> 
                          <
      CustomBehavior File="RunCode" Code="Logging.Write(System.Windows.Media.Colors.DeepSkyBlue, &quot;[Azyul Navigator]: We're in Draenor, using the Ashran portal to Orgrimmar.&quot;);" /> 
                          <If 
      Condition="Me.ZoneId != 7004 &amp;&amp; Me.ZoneId != 7333 &amp;&amp; HasItem(110560) &amp;&amp; Me.BagItems.FirstOrDefault(r =&gt; r.Entry == 110560).CooldownTimeLeft.TotalSeconds &lt;= 0"
                                  <
      CustomBehavior File="Misc\RunLua" Lua="UseItemByName(110560)" WaitTime="15000" /> 
                              </If> 
                          <If 
      Condition="Me.ZoneId != 7333"
                                  <
      CustomBehavior File="InteractWith" MobId="79407" KeepTargetSelected="true" PreInteractMountStrategy="DismountOrCancelShapeshift" WaitForNpcs="false" WaitTime="2000" NonCompeteDistance="0" X="5575.775" Y="4563.67" Z="136.2088" />
                                  <
      CustomBehavior File="RunMacro" Macro="/run for i=1,NumTaxiNodes() do a=TaxiNodePosition(i); if strmatch(a,'0.8574013710022') then b=i; TakeTaxiNode(b); end end" WaitTime="1000" /> 
                                  <
      CustomBehavior File="WaitTimer" WaitTime="2000" /> 
                          </If> 
                          <If 
      Condition="Me.ZoneId == 7333"
                              <While 
      Condition="Me.MapId != 1" 
                                  <
      CustomBehavior File="InteractWith" MobId="235880" X="5266.4" Y="-4075.891" Z="21.13024" TerminateWhen="Me.MapId == 1" /> 
                                  <
      CustomBehavior File="WaitTimer" WaitTime="50000" TerminateWhen="Me.MapId == 1 || Me.Combat" />
                                  </While> 
                          </If> 
                  </If>

      With this Solution he Skips the try to reach Ashran when Flight Point is not available.




      And maybe you can add to the Hearthstone check / usage, if HearthstoneAreaId is in Orgrimmar / Stormwind.
       
      Last edited: Feb 28, 2015
    12. EchoTiger

      EchoTiger Official Profile and Singular Developer Staff Member Moderator

      Joined:
      Nov 28, 2012
      Messages:
      6,807
      Likes Received:
      587
      Trophy Points:
      113
      My old navigation had consideration for flying skills / quest progression / etc but I've simply not had time to add all this in yet.
      More and more functionality will be added over time but don't expect it all to be there instantly.


      I don't know much about Draenor yet. I haven't played WoW in at least a year, so I'm a bit behind on the technicalities that go into navigation for Draenor.
      Going back to what I posted above, I've not really been able to address all the technicalities since I've not had the time.
      Over time small things like this would be addressed.



      I've been working with Apoc on Wildbuddy which has kept me from WoW for a good while. But now our projects regarding Wildbuddy are 'on pause' so I can start working on this stuff again.
      Thanks for the input! I got your private message.
      I'll send you my Skype info.

      That aside, why not just use ElementName:Click(); for the taxi node?
       
      Last edited: Feb 28, 2015
    13. HarveySpecter

      HarveySpecter Member

      Joined:
      Feb 26, 2015
      Messages:
      192
      Likes Received:
      0
      Trophy Points:
      16
      Im sorry, but I am confused to how to use this :p I am a noob yes I know :(
       
    14. EchoTiger

      EchoTiger Official Profile and Singular Developer Staff Member Moderator

      Joined:
      Nov 28, 2012
      Messages:
      6,807
      Likes Received:
      587
      Trophy Points:
      113
      If you're just wanting to use them to to get to a location, then set Honorbuddy to "Questing" and load the profile in / start the bot.
      It should go to the destination as described by the profile name.

      If you're wanting to use the code in your own profile, then open the snip up with a text/code editor and look for <QuestOrder> at the top of the code.
      Under this line, copy everything all the way down until you see </QuestOrder> again near the bottom.
      Don't actually copy the <QuestOrder> lines just everything inbetween them.

      After you copy it, open your profile.
      Assuming your profile is designed to be ran on the Questing botbase you should see <QuestOrder> in your profile code.
      Under this, paste the navigation code.
      That should be it. Once you start your profile, the navigation code will run if needed.
       
    15. HarveySpecter

      HarveySpecter Member

      Joined:
      Feb 26, 2015
      Messages:
      192
      Likes Received:
      0
      Trophy Points:
      16
      So if I am going to outland from let's say Stormwind, I would set it to Questing then load "To Outlands.xml" and start the bot? Will it work if I am not in SW?
      Thanks for your help man!
       
    16. Studio60

      Studio60 Well-Known Member Buddy Store Developer

      Joined:
      Sep 3, 2014
      Messages:
      3,411
      Likes Received:
      46
      Trophy Points:
      48
      Man ... I spent the whole day redoing my own navigation system and was just looking through the forum for the last piece of the puzzle... the Isle of Quel'Danas. The first thread I find is this one containing what I did today myself. :-(
       
    17. EchoTiger

      EchoTiger Official Profile and Singular Developer Staff Member Moderator

      Joined:
      Nov 28, 2012
      Messages:
      6,807
      Likes Received:
      587
      Trophy Points:
      113
      Yes, the intention is that the snips are designed to be started 'anywhere.'

      [Hr][/Hr]


      Hehe, that's how it goes.
      I've been meaning to get around to the last bits of areas such as Isle of Quel'Danas but I've just been too busy working on other things.
       
    18. dellza

      dellza Community Developer

      Joined:
      Jul 29, 2010
      Messages:
      352
      Likes Received:
      3
      Trophy Points:
      0
      thanks for this i plan to put this in my profiles, saves me a lot of time, great work keep it up
       
    19. EchoTiger

      EchoTiger Official Profile and Singular Developer Staff Member Moderator

      Joined:
      Nov 28, 2012
      Messages:
      6,807
      Likes Received:
      587
      Trophy Points:
      113
      No problem!
      I've been slow on updating these since I'm working with other projects at the moment.
      But anytime an update is pushed, I'll post a reply to the thread so that you're notified so you can update the snips in your profiles.
       
      Last edited: Mar 7, 2015
    20. EchoTiger

      EchoTiger Official Profile and Singular Developer Staff Member Moderator

      Joined:
      Nov 28, 2012
      Messages:
      6,807
      Likes Received:
      587
      Trophy Points:
      113
      1.0.5 - BETA
      • Added To Draenor.xml

      This is just a small beta release, the To Draenor snip hasn't been tested 'too heavily' and is lacking some functionality.

      At the moment it's designed primarily to use your Garrison Hearthstone.
      If you do not have the Garrison Hearthstone on you, but have the Garrison intro quests completed - it will assume your Garrison Hearthstone is in your bank and it will tell you to get it out before continuing.
      In a future update it will get the Garrison Hearthstone out of the bank for you.

      If the Garrison Hearthstone is on cooldown or the player hasn't completed the Garrison intro Quest, it will travel to the Dark Portal to use it instead.

      The profile is also somewhat considerate to where it won't go to the Dark Portal if your Garrison Hearthstone has a short remainder of cooldown time (ex: 1minute 30seconds)
      With this, it will wait out the remaining time and use the Garrison Hearthstone appropriately.


      At the moment, the To Draenor profile does not have the rest of the 1.0.5 features that are listed on the original post.
      With that said, the full release of 1.0.5 and its promised functionality will follow tomorrow.
       
      Last edited: Mar 7, 2015

    Share This Page