Practising steady shot with a hunter and CastSpellOn, will basically kill the training dummy before all 5 shots are completed. It would be nice if the speed of acquiring a new target could be increased, less downtime and bit less looking stupid . Dummy dead, target a new one, cast the remaining 2 steadyshots.
UseItem HP amount needs to be like this: Code: int hpleftamount; if (!int.TryParse(Args["HpLeftAmount"], out hpleftamount)) Logging.Write("Parsing mobid in UsedItemOn behavior failed! please check your profile!");
UseItem doesn't check if the quest is completed so it runs forever Code: <!-- Aid for the Wounded (level 2) --> <!-- Use Sten's First Aid Kit on 4 Wounded Coldridge Mountaineers. --> <!-- Classes: Any --> <!-- Races: Any --> <!-- http://www.wowhead.com/quest=24471 --> <PickUp QuestName="Aid for the Wounded" GiverName="Sten Stoutarm" QuestId="24471" GiverId="658" /> <!-- Wounded Coldridge Mountaineers Aided --> <CustomBehavior File="UseItemOn" QuestId="24471" ItemId="49743" NpcId="37080" NumOfTimes="1" HpLeftAmount="1100" Location="-6268.455 392.9427 382.2347" /> <CustomBehavior File="UseItemOn" QuestId="24471" ItemId="49743" NpcId="37080" NumOfTimes="1" HpLeftAmount="1100" Location="6294.953 378.092 380.4026" /> <CustomBehavior File="UseItemOn" QuestId="24471" ItemId="49743" NpcId="37080" NumOfTimes="1" HpLeftAmount="1100" Location="6347.745 382.6111 377.7332" /> <CustomBehavior File="UseItemOn" QuestId="24471" ItemId="49743" NpcId="37080" NumOfTimes="1" HpLeftAmount="1100" Location="6342.358 349.8715 378.406" /> <CustomBehavior File="UseItemOn" QuestId="24471" ItemId="49743" NpcId="37080" NumOfTimes="1" HpLeftAmount="1100" Location="6357.604 307.3559 380.9178" /> <CustomBehavior File="UseItemOn" QuestId="24471" ItemId="49743" NpcId="37080" NumOfTimes="1" HpLeftAmount="1100" Location="6293.073 272.2483 381.415" /> <TurnIn QuestName="Aid for the Wounded" TurnInName="Sten Stoutarm" QuestId="24471" TurnInId="658" /> It has completed the quest but it carries on trying to use the item:
- Updated the CastSpellOnTarget so that it will now have a range and will stop when it gets to the range you specify - Updated the UseItemOn with Hawker's New fixes for it (Thank you Hawker) - Renamed BasicMoveTo : NoCombatMoveTo to clear up what the behavior actually does at first glance.
<CustomBehavior File="UseItemOn" QuestId="11889" ItemId="35278" NpcId="25582" NumOfTimes="6" HpLeftAmount="4000" Location="2186.105 5397.85 0.1625389" /> it will cast a net and kills a mob thats right but when it killed the mob it tries to cast the net again on a death mob what ever i set te hpleftamount to could u fix it? or sent me a pm whith a quik fix? thanks really appreciate your work!
Yes Im SOOOO happy im not alone! I was making a quest profile for undead... Yes Me Woodi and Liferose and im sure many others are trying to figure out a way to make the quest The Wakening to work, is there something in here that will work?
Alright, so I looked at all of these, and not a single one checks if the quest is completed yet. Basically; that means it'll go through ALL the behaviors every time you start the bot. I've gone through most of them, and added quest checking, but I'll leave it to natfoth to do it the way he decides to. More or less; in the ctor: Code: uint questId; if (!uint.TryParse(Args["QuestId"], out questId)) Logging.Write("Parsing QuestID in UseGameObject behavior failed! please check your profile!"); QuestId = questId; And a property for QuestId (obviously) Then at the beginning of the CreateBehavior method, you should be able to add the following (make sure you close it properly): Code: protected override Composite CreateBehavior() { return _root ?? (_root = new Decorator( ret => // If QuestId is set, make sure we have the quest, and it's not completed. (QuestId != 0 && me.QuestLog.GetQuestById(QuestId) != null && !me.QuestLog.GetQuestById(QuestId).IsCompleted) // If no quest ID is set, just run it anyway. Lets hope there are proper checkpoints in place to avoid bugging out || QuestId == 0, ... rest of the method body
Okay, this confuses the heck out of me. What is the purpose of the QuestId attribute in the <CustomBehavior> element then? I assumed the specific CustomBehavior wouldn't even be constructed if the QuestId was turned in. If not, then what's the purpose of the QuestId attribute? Its nice that QuestId is passed as part of the dictionary to the specific CustomBehavior. But, the assumption is that the calling framework won't call stuff that is unneeded. This was inferred from the two Quest Behaviors (InteractWith.cs and TalkToAndListenToStory.cs) that shipped with Honorbuddy 2.0.0.3626--since they failed to check for the QuestId also. cheers & thanks for any info! chinajade
I still have probs with profile making... almost giving up logs View attachment 20-12-2010_20_30 2624 Log.txt View attachment Goblin.xml
QuestId isn't required. Nor do we parse it in HB itself. It's up to the person writing the custom behavior, to use the attribute. And the 2 default behaviors suffer the same problem. (I'll make sure they're fixed before we release a new build)
I have already updated them to have the quests checks and fixed a bunch of conversion stuff, I was testing them and you just do not have them. Be patient lol
V1.0.0.4 - Fixed A lot of conversion errors and things that happened when HB switched to the new args - Changed the Location System to now use XYZ will update the doc to support this one my worgen is updated shortly - Added a lot more quest completion checks - Fixed some of the broken behaviors QuestID is recommended for most of my behaviors, even though it is not required most of the behaviors actually use it.
[21:40:44:791] Cleared POI [21:40:48:57] System.Exception: Unable to create instance of UserDefinedObjective at Bots.Quest.QuestOrder.ForcedCodeBehavior..ctor(String file, Dictionary`2 args) at QuestBot.Actions.ForcedBehaviorExecutor.a(OrderNode A_0) at QuestBot.Actions.ForcedBehaviorExecutor.b.a() at TreeSharp.Composite.Tick(Object context) at QuestBot.Actions.ForcedBehaviorExecutor.b.a() at TreeSharp.Composite.Tick(Object context) at TreeSharp.PrioritySelector.a.b() at TreeSharp.Composite.Tick(Object context) at TreeSharp.PrioritySelector.a.b() at TreeSharp.Composite.Tick(Object context) at Styx.Logic.BehaviorTree.TreeRoot.b() [21:40:48:57] Cleared POI [21:40:51:394] System.Exception: Unable to create instance of UserDefinedObjective at Bots.Quest.QuestOrder.ForcedCodeBehavior..ctor(String file, Dictionary`2 args) at QuestBot.Actions.ForcedBehaviorExecutor.a(OrderNode A_0) at QuestBot.Actions.ForcedBehaviorExecutor.b.a() at TreeSharp.Composite.Tick(Object context) at QuestBot.Actions.ForcedBehaviorExecutor.b.a() at TreeSharp.Composite.Tick(Object context) at TreeSharp.PrioritySelector.a.b() at TreeSharp.Composite.Tick(Object context) at TreeSharp.PrioritySelector.a.b() at TreeSharp.Composite.Tick(Object context) at Styx.Logic.BehaviorTree.TreeRoot.b() [21:40:51:394] Cleared POI [21:40:52:129] Start/Stop button pressed. [21:40:52:152] Stop called! [21:40:54:563] System.Threading.ThreadAbortException: Thread was being aborted. at Styx.Logic.BehaviorTree.TreeRoot.b() at Styx.Logic.BehaviorTree.TreeRoot.a() [21:40:54:563] System.Threading.ThreadAbortException: Thread was being aborted. at Styx.Logic.BehaviorTree.TreeRoot.a() It pickup the quest, but it dont do anything. Code: <QuestOrder> <If Condition="Me.Race==WoWRace.Goblin"> <PickUp QuestName="Good Help is Hard to Find" QuestId="14069" GiverName="Foreman Dampwick" GiverId="34872" /> <CustomBehavior File="BasicInteractWith" QuestId="14069" NpcId="34830" MoveTo="1" /> <TurnIn QuestName="Good Help is Hard to Find" QuestId="14069" TurnInName="Foreman Dampwick" TurnInId="34872" /> </If> </QuestOrder>
Its a Goblin Hunter. LVL 1, the first quest its doing. Quest: Good Help is Hard to Find It pickup the quest and then it supposed to right click on the target with id: 34830 but it dont, you can see the error above I am trying to use CustomBehavior BasicInteractWith. plz tell me to give you all the details you need