tubajedimr
New Member
- Joined
- Apr 6, 2010
- Messages
- 441
- Reaction score
- 24
There are several ways to accomplish things outside of quests that insure that this thing won't occur again upon a bot restart. I will go over a few I have come up with. You can use these or a combination of these to accomplish doing things outside of a quest.
Positional Square
The "positional square" creates a square around the player to make sure that the player is within it prior to doing the behavior. This uses an X and Y attribute on either side and in front of and behind the players target position. X Y Z would be a positional cube. Here's an example:
Me.X is your X position, Me.Y is your Y position. Bear in mind that X is your vertical axis and Y is your horizontal.
Buy An Item
This one is a bit unorthodox, but still very doable. Just before turning in a quest, you would speak to and purchase a random food item from a vendor. A particularly unusual item that doesn't really drop from anywhere.
In this example we will purchase a Skethyl Berry from the vendor since it is only purchaseable and does not drop from any mobs.
To purchase an item from a vendor you must interact with the vendor, and then run a macro. See below:
The BuyMerchantItem(X, Y)
X is the position of the item in the window. They are numbered like you were reading a book.
1 2
3 4
5 6 etc
Y is the amount of the item.
Purchase only one and then predicate everything you want to do to be if you have that item.
So:
After you've completed everything you want to do, at the very end prior to closing the IF tag, eat the Skethyl Berries, or whatever rare food item you've purchased.
Then close your IF tag and continue on. This can be done repeatedly with the same item if it's sold at multiple vendors though you might want to let your profile users know in advanced not to have that item in their bags (however unlikely).
In A Zone (or not)
This is by far the simplest and most common, though there are more interesting ways to use it that are more useful. ZoneId's can be found on wowhead. Anyway, you can make it so that an action will only be done if you are NOT in the zone. Such that
The "!" prior to "Me.ZoneId" lets the bot know that if your zone is NOT that area. It's an inverse action.
You can use this for a hearthing action, for example. If you have the user set hearth to Org, and if the user is not in org, you can use the hearth. Here's an example:
More to come...
Positional Square
The "positional square" creates a square around the player to make sure that the player is within it prior to doing the behavior. This uses an X and Y attribute on either side and in front of and behind the players target position. X Y Z would be a positional cube. Here's an example:
PHP:
<If Condition="(Me.X < -741) && (Me.X > -764) && (Me.Y > 4686) && (Me.Y < 4717)">
Me.X is your X position, Me.Y is your Y position. Bear in mind that X is your vertical axis and Y is your horizontal.
Buy An Item
This one is a bit unorthodox, but still very doable. Just before turning in a quest, you would speak to and purchase a random food item from a vendor. A particularly unusual item that doesn't really drop from anywhere.
In this example we will purchase a Skethyl Berry from the vendor since it is only purchaseable and does not drop from any mobs.
To purchase an item from a vendor you must interact with the vendor, and then run a macro. See below:
PHP:
<CustomBehavior File="BasicInteractWith" QuestId="0" NpcID="3362" />
<CustomBehavior File="WaitTimer" WaitTime="1000"/>
<CustomBehavior File="RunMacro" Macro="/run BuyMerchantItem(1, 1)" NumOfTimes="1" WaitTime="2000" />
The BuyMerchantItem(X, Y)
X is the position of the item in the window. They are numbered like you were reading a book.
1 2
3 4
5 6 etc
Y is the amount of the item.
Purchase only one and then predicate everything you want to do to be if you have that item.
So:
PHP:
<If Condition="HasItem(27856)">
After you've completed everything you want to do, at the very end prior to closing the IF tag, eat the Skethyl Berries, or whatever rare food item you've purchased.
PHP:
<UseItem ItemId="27856" QuestId="0" X="9243.975" Y="-7496.219" Z="37.05086" />
Then close your IF tag and continue on. This can be done repeatedly with the same item if it's sold at multiple vendors though you might want to let your profile users know in advanced not to have that item in their bags (however unlikely).
In A Zone (or not)
This is by far the simplest and most common, though there are more interesting ways to use it that are more useful. ZoneId's can be found on wowhead. Anyway, you can make it so that an action will only be done if you are NOT in the zone. Such that
PHP:
<If Condition="!Me.ZoneId == 100">
The "!" prior to "Me.ZoneId" lets the bot know that if your zone is NOT that area. It's an inverse action.
You can use this for a hearthing action, for example. If you have the user set hearth to Org, and if the user is not in org, you can use the hearth. Here's an example:
PHP:
<If Condition="!Me.ZoneId == 1637">
<CustomBehavior File="RunMacro" Macro="/use Hearthstone" NumOfTimes="1" WaitTime="10000"/>
More to come...
Last edited: