What's new
  • Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • Visit Resources
  • Visit Downloads
  • Visit Portal

mount up on quest giver

panYama

Community Developer
Joined
Jan 15, 2010
Messages
2,629
Reaction score
49
I'm currently interested on how I can make my char use the given option from the quest giver to hop on the mount he has available at gossipoption 1 where the bot should just click (click to mount and ride to xxx location xxx ) and then wait for it to arrive instead of walking all the way to xxx, while its FAR away.
 
Panyama said:
I'm currently interested on how I can make my char use the given option from the quest giver to hop on the mount he has available at gossipoption 1 where the bot should just click (click to mount and ride to xxx location xxx ) and then wait for it to arrive instead of walking all the way to xxx, while its FAR away.

Hi, Panyama!

There are a couple of twists on this...
1) Sometimes the vehicle is right behind the giver waiting to be mounted. If that's the case, you want the MountVehOnly behavior.

2) If you must select gossip option 1, then this should get the job done...
PHP:
<!-- open up the NPC dialog box by 'interacting' with him -->
<CustomBehavior File="InteractWith" NpcId="18408" X="3194.392" Y="5282.065" Z="47.90903" />

<!-- select gossip option #1 -->
<CustomBehavior File="RunMacro" Macro="/click GossipTitleButton1" NumOfTimes="1" WaitTime="1000" />

<!-- some givers requires an "are you sure" type confirmation.  If that's the case, this will be needed also -->
<CustomBehavior File="RunMacro" Macro="/click QuestFrameCompleteButton" NumOfTimes="1" WaitTime="1000" />

3) A simple RunTo will use flightpoints, if they're known and the user has the setting enabled
If you want to assure the setting is enabled in your profile (whether or not the user has it turned on), a UserSettings behavior is perfect for this....
PHP:
<CustomBehavior File="UserSettings" LearnFlightPaths="true" UseFlightPaths="true" />


Here's the problem with option #2...
Depending on your progress through a zone, and whether or not the NPC is offering additional quests, the gossip option you desire may not always be the first one. If so, you have to either guarantee a certain state of 'zone completion' throughout the rest of the profile (very tricky), or use some clever tricks and a lot more profile code to address all the gossip option position possibilities. Either situation is not pretty.

Good luck with it!
chinajade
 
Last edited:
Hi, Panyama!

There are a couple of twists on this...
1) Sometimes the vehicle is right behind the giver waiting to be mounted. If that's the case, you want the MountVehOnly behavior.

2) If you must select gossip option 1, then this should get the job done...
PHP:
<!-- select gossip option #1 -->
<CustomBehavior File="RunMacro" Macro="/click GossipTitleButton1" NumOfTimes="1" WaitTime="1000" />

<!-- some givers requires an "are you sure" type confirmation. If that's the case, this will be needed also -->
<CustomBehavior File="RunMacro" Macro="/click QuestFrameCompleteButton" NumOfTimes="1" WaitTime="1000" />

Here's the problem with option #2...
Depending on your progress through a zone, and whether or not the NPC is offering additional quests, the gossip option you desire may not always be the first one. If so, you have to either guarantee a certain state of 'zone completion' throughout the rest of the profile (very tricky), or use some clever tricks and a lot more profile code to address all the gossip option position possibilities. Either situation is not pretty.

Good luck with it!
chinajade


I need option 2, but how can I implement it that it does it after it turned in another quest that it walks to the npc, open ups his screen and then select gossip? and that it enforces to do so instead of skipping it.
 
Panyama said:
I need option 2, but how can I implement it that it does it after it turned in another quest that it walks to the npc, open ups his screen and then select gossip? and that it enforces to do so instead of skipping it.

Whoops, I left that part out. I've updated the example in Post #2 to show how. I've also provided a 3rd option.

cheers,
chinajade
 
should option 2 be places in a IF statement so it doesn't get repeated everytime profile gets reloaded or isn't that needed?

same goes for 3
 
Panyama said:
should option 2 be places in a IF statement so it doesn't get repeated everytime profile gets reloaded or isn't that needed?
same goes for 3
Of course, just showing the tools you've got to work with. Its up the profile writer to put them in the proper context.

cheers,
chinajade
 
even with option 3 it opens the flightmaster quite fast and closes the window, so it uses the flight master by luck.
 
also when I try this:

HTML:
  <If Condition="(HasQuest(35)">
   <CustomBehavior File="InteractWith" NpcId="240" X="-9465.521" Y="74.00694" Z="56.59579" />
   <CustomBehavior File="RunMacro" Macro="/click GossipTitleButton5" NumOfTimes="1" WaitTime="1000" />
  </If>

it doesn't do the interactwith at all.
 
Panyama said:
even with option 3 it opens the flightmaster quite fast and closes the window, so it uses the flight master by luck.

It is very quick, and the taking the flight is not luck--this is how RunTo is supposed to work.

You may see HB open and close the flight window very fast without using the flightmaster. This is how HB learns the flightpoints. "HB learning the flightpoints" is not the same as your toon's knowing the flightpoints (from the toon's state on the WoW server).

Once HB has learned the flightpoints from that NPC, it will re-open the flightmap gossip and take a flightpoint if it needs to travel and the travel time is shorter than ground transport.

You may see HB 'learn' flightpoints from an NPC that it already has learned. This happens, because you've added other destinations from other flightmasters in your journey, and the previously visited flightmaster needs to be re-examined to determine if he has direct routes to the newly learned destinations.

In summary,
1) HB may open and close the flight window a couple of times before taking a flight,
2) the window opening and closing is very quick, and all triggered by the processing of the RunTo

cheers,
chinajade
 
Last edited:
Panyama said:
also when I try this:
HTML:
  <If Condition="(HasQuest(35)">
   <CustomBehavior File="InteractWith" NpcId="240" X="-9465.521" Y="74.00694" Z="56.59579" />
   <CustomBehavior File="RunMacro" Macro="/click GossipTitleButton5" NumOfTimes="1" WaitTime="1000" />
  </If>

it doesn't do the interactwith at all.

You've a typo in the "If" Condition (one too many left parens). So, your "Then clause" is never executed.

When writing profiles, it is very convenient to turn on ProfileDebuggingMode in your StyxSettings.xml file. (Be sure all copies of HB are stopped when editing StyxSettings.xml).

Once ProfileDebuggingMode is turned on, all kinds of profile writing errors are reported in your Log file. It helps to quickly locate problems precisely like this one. More info about ProfileDebuggingMode here...
[wiki]Honorbuddy: Internal Configuration Options[/wiki]


cheers,
chinajade
 
it does show some errors yes, but I don't understand them:O
 
I think there is no need to use a RunMacro line here:
Interactwith has an option for gossip, which is not represented on the wikipage yet.
Have a look at the .cs for that behavioru to see the exact name for this option.

I think it was "Gossip="1,1,1" to select first dialog option 3 times.
 
hmm more info think my head is going to explode! so interact can deal with gossip?
 
HTML:
    /// InteractWith by Nesox
    /// Allows you to do quests that requires you to interact with nearby objects.
    /// ##Syntax##
    /// [Optional]QuestId: Id of the quest.
    /// NpcId: Id of the object to interact with.
    /// NumOfTimes: Number of times to interact with object.
    /// [Optional]GossipOption: The Dialog numbers you wish to choose. Should be seperated with commas. ie. GossipOption="1,1,4,2" or GossipOption="1"
    /// [Optional]CollectionDistance: The distance it will use to collect objects. DefaultValue:100 yards
    /// [Optional]BuySlot: Buys the item from the slot. Slots are: 1 2
    ///                                                            3 4
    ///                                                            5 6
    ///                                                            7 8
    ///                                                            page2
    ///                                                            9 10 etc.
    /// [Optional]BuyItemId: Buys the item with that id from vendor.
    /// [Optional]BuyItemCount: The amount to buy the item. Default: 1
    /// [Optional]WaitTime: The time to wait once it has interacted with an object. DefaultValue:3000
    /// ObjectType: the type of object to interact with, expected value: Npc/Gameobject
    /// X,Y,Z: The general location where theese objects can be found
 
as for my errors, it spits out:

HTML:
Warning: XML Error: Could not parse 'If'. Condition code "(HasQuest(60)" could not be compiled into C# code. - On line 415 - [<if Condition="(HasQuest(60)">
<CustomBehavior File="BasicInteractWith" QuestId="60" NpcID="295" MoveTo="1" Faction="12" />
<CustomBehavior File="RunMacro" QuestId="60" Macro="/run SelectGossipOption(1)" NumOfTimes="1" WaitTime="200" />
<CustomBehavior File="RunMacro" QuestId="60" Macro="/run StaticPopup1Button1:Click()" NumOfTimes="1" WaitTime="200" />
</if>]
Warning: XML Error: Could not parse 'If'. Condition code "((60)) && (!IsQuestCompleted(60)))" could not be compiled into C# code. - On line 467 - [<If Condition="((60)) &amp;&amp; (!IsQuestCompleted(60)))">
<CustomBehavior File="Message" QuestId="0" Text="[Zygor Guide] Human1-5 complete, continue with human 5-7." LogColor="Purple" GoalColor="Purple" />
</If>]
Warning: XML Error: Could not parse 'If'. Condition code "((114)) && (!IsQuestCompleted(114)))" could not be compiled into C# code. - On line 520 - [<If Condition="((114)) &amp;&amp; (!IsQuestCompleted(114)))">
<CustomBehavior File="Message" QuestId="0" Text="[Zygor Guide] Human 5-7 complete, continue with human 7-10." LogColor="Purple" GoalColor="Purple" />
</If>]
Warning: XML Error: Could not parse 'If'. Condition code "(HasQuest(35)" could not be compiled into C# code. - On line 524 - [<If Condition="(HasQuest(35)">
<CustomBehavior File="InteractWith" NpcId="240" X="-9465.521" Y="74.00694" Z="56.59579" />
<CustomBehavior File="RunMacro" Macro="/click GossipTitleButton5" NumOfTimes="1" WaitTime="1000" />
</If>]
Warning: XML Error: Missing attribute condition in "If". - On line 535 - [<If Conditon="!IsQuestCompleted(123)">
<If Condition="!HasItem(1307)">
<GrindTo Condition="HasItem(1307)" GoalText="Gold Pickup Schedule" />
</If>
<If Condition="!HasQuest(123)">
<PickUp QuestName="The Collector" GiverType="Item" QuestId="123" GiverId="1307" />
</If>
</If>]
 
Panyama said:
what do they mean?

In post #10, I already told you about your typo...
&lt;if Condition="(HasQuest(60)"&gt;
should be
&lt;If Condition="HasQuest(60)"&gt;


As for this one...
&lt;If Condition="((60)) &amp;amp;&amp;amp; (!IsQuestCompleted(60)))"&gt;
It doesn't make any sense--a raw number ANDed with something? I'm going to guess you mean 'HasQuest(60)', thus it becomes...
&lt;If Condition="HasQuest(60) &amp;amp;&amp;amp; !IsQuestCompleted(60)"&gt;
...which reads "If 'QuestID 60 is in my log, and it is not complete'".


In this one...
&lt;If Conditon="!IsQuestCompleted(123)"&gt;
...you have misspelled the word "Condition".


Just relax and read what the error messages are telling you.

cheers,
chinajade
 
Last edited:
In post #10, I already told you about your typo...
&lt;if Condition="(HasQuest(60)"&gt;
should be
&lt;If Condition="HasQuest(60)"&gt;


As for this one...
&lt;If Condition="((60)) &amp;amp;&amp;amp; (!IsQuestCompleted(60)))"&gt;
It doesn't make any sense--a raw number ANDed with something? I'm going to guess you mean 'HasQuest(60)', thus it becomes...
&lt;If Condition="HasQuest(60) &amp;amp;&amp;amp; !IsQuestCompleted(60)"&gt;
...which reads "If 'QuestID 60 is in my log, and it is not complete'".

cheers,
chinajade

hehe thanks clears it up, damn this takes up time the learning curve for profile questing etc:P
 
HTML:
/// InteractWith by Nesox
/// [Optional]GossipOption: The Dialog numbers you wish to choose. Should be seperated with commas. ie. GossipOption="1,1,4,2" or GossipOption="1"
/// [Optional]CollectionDistance: The distance it will use to collect objects. DefaultValue:100 yards
/// [Optional]BuySlot: Buys the item from the slot. Slots are: 1 2
 
/// [Optional]BuyItemId: Buys the item with that id from vendor.
/// [Optional]BuyItemCount: The amount to buy the item. Default: 1

yea that one, just don't have the files available at work ;)
 
PHP:
				<CustomBehavior File="InteractWith" QuestId="" NpcId="" NumOfTimes="1" GossipOption="1" WaitTime="1000" CollectionDistance="50" X Y Z />

or

		<PickUp QuestName="Fuselight, Ho!" GiverName="Gek Nozzlerocket" QuestId="27762" GiverId="48704" X="2278.151" Y="-5259.874" Z="81.60403" />
			<If Condition="(HasQuest(27762))" >
				<CustomBehavior File="MountVehOnly" NpcMountId="48708" X="2276.458" Y="-5258.253" Z="81.52869" />	
				<CustomBehavior File="WaitTimer" WaitTime="240000" />
			</If>
		<TurnIn QuestName="Fuselight, Ho!" TurnInName="Eddie Flofizzle" QuestId="27762" TurnInId="46650" X="-6651.38" Y="-4746.83" Z="8.326457" />
 
Last edited:
Back
Top