EchoTiger
Official Profile and Singular Developer
- Joined
- Nov 28, 2012
- Messages
- 6,810
Welcome
Showcase
Supported Functions
To Do
Known Issues
Future Plans
How the Navigation Logic is handled
Interruption Proof and Lag Considerate!
Usage Options
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):
Technical Information
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!)
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!
Message me and I'll post a link to it here!
- Official Questing 1-100: Auto-Loader V2 https://www.thebuddyforum.com/honor...les/131188-kicks-1-100-mega-profile-pack.html
- atg68's [A][Q] Flightpath-o-Matic Get all FP's
- agt68's [H][Q] Flightpath-o-Matic Get All FP's
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.
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:
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:
![1e0b1ff86e5f3f18f58a9fb7af24a331.gif](http://i.gyazo.com/1e0b1ff86e5f3f18f58a9fb7af24a331.gif)
![AzyulCloudMini.gif](http://azyul.com/external/assets/AzyulCloudMini.gif)
Usage Options
Regular Snips (for Copy+Pasting)
Remote Code QuestBehaviors (recommended!!)
Self-Updating Logic
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.
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:
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.
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 profile. Only 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:
Warning, this auto-download+install code may conflict with reloggers as it shuts down Honorbuddy and starts it again.
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-.
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!
View attachment To Eastern Kingdoms.xml
View attachment To Kalimdor.xml
View attachment To Outlands.xml
View attachment To Northerend.xml
View attachment To Pandaria.xml
View attachment To Draenor.xml
View attachment To Kalimdor.xml
View attachment To Outlands.xml
View attachment To Northerend.xml
View attachment To Pandaria.xml
View attachment To Draenor.xml
Reglar Snips (v2.1):
View attachment To Eastern Kingdoms.xml
View attachment To Kalimdor.xml
View attachment To Outlands.xml
View attachment To Northerend.xml
View attachment To Pandaria.xml
View attachment To Draenor.xml
View attachment To Kalimdor.xml
View attachment To Outlands.xml
View attachment To Northerend.xml
View attachment To Pandaria.xml
View attachment To Draenor.xml
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.
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.
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.
![88x31.png](https://i.creativecommons.org/l/by-sa/2.0/88x31.png)
Last edited: