• Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • [Quest Behavior] Natfoth's QB MegaThread

    Discussion in 'Archives' started by Natfoth, Dec 17, 2010.

    1. laria

      laria Well-Known Member

      Joined:
      Jan 15, 2010
      Messages:
      5,386
      Likes Received:
      36
      Trophy Points:
      48
      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.
       
    2. Hawker

      Hawker Well-Known Member Buddy Core Dev

      Joined:
      Jan 15, 2010
      Messages:
      2,509
      Likes Received:
      70
      Trophy Points:
      48
      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!");
      
       
    3. Hawker

      Hawker Well-Known Member Buddy Core Dev

      Joined:
      Jan 15, 2010
      Messages:
      2,509
      Likes Received:
      70
      Trophy Points:
      48
      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:
       
    4. moujoohoo

      moujoohoo New Member

      Joined:
      Apr 29, 2010
      Messages:
      448
      Likes Received:
      1
      Trophy Points:
      0
    5. Natfoth

      Natfoth Community Developer

      Joined:
      Jan 15, 2010
      Messages:
      1,446
      Likes Received:
      37
      Trophy Points:
      0
      I will take a look at useItem and Moujoohoo's problem and fix some of the other behaviors.
       
    6. moujoohoo

      moujoohoo New Member

      Joined:
      Apr 29, 2010
      Messages:
      448
      Likes Received:
      1
      Trophy Points:
      0
      thx
       
    7. Natfoth

      Natfoth Community Developer

      Joined:
      Jan 15, 2010
      Messages:
      1,446
      Likes Received:
      37
      Trophy Points:
      0
      - 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.
       
    8. sowbener

      sowbener New Member

      Joined:
      Jan 15, 2010
      Messages:
      170
      Likes Received:
      0
      Trophy Points:
      0
      <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!
       
    9. Zugga

      Zugga New Member

      Joined:
      Jun 6, 2010
      Messages:
      280
      Likes Received:
      2
      Trophy Points:
      0
      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?
       
    10. Apoc

      Apoc Moderator Staff Member Moderator

      Joined:
      Jan 16, 2010
      Messages:
      2,790
      Likes Received:
      94
      Trophy Points:
      48
      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
       
    11. chinajade

      chinajade Well-Known Member Moderator Buddy Core Dev

      Joined:
      Jul 20, 2010
      Messages:
      17,540
      Likes Received:
      172
      Trophy Points:
      63
      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
       
      Last edited: Dec 20, 2010
    12. moujoohoo

      moujoohoo New Member

      Joined:
      Apr 29, 2010
      Messages:
      448
      Likes Received:
      1
      Trophy Points:
      0
    13. exfelon

      exfelon Active Member

      Joined:
      Jan 15, 2010
      Messages:
      1,372
      Likes Received:
      8
      Trophy Points:
      38
      wow, good job.
       
    14. Apoc

      Apoc Moderator Staff Member Moderator

      Joined:
      Jan 16, 2010
      Messages:
      2,790
      Likes Received:
      94
      Trophy Points:
      48
      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)
       
    15. Natfoth

      Natfoth Community Developer

      Joined:
      Jan 15, 2010
      Messages:
      1,446
      Likes Received:
      37
      Trophy Points:
      0
      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
       
    16. moujoohoo

      moujoohoo New Member

      Joined:
      Apr 29, 2010
      Messages:
      448
      Likes Received:
      1
      Trophy Points:
      0
      looking forward to this
       
    17. Natfoth

      Natfoth Community Developer

      Joined:
      Jan 15, 2010
      Messages:
      1,446
      Likes Received:
      37
      Trophy Points:
      0
      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.
       
    18. moujoohoo

      moujoohoo New Member

      Joined:
      Apr 29, 2010
      Messages:
      448
      Likes Received:
      1
      Trophy Points:
      0
      [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>
       
      Last edited: Dec 20, 2010
    19. Natfoth

      Natfoth Community Developer

      Joined:
      Jan 15, 2010
      Messages:
      1,446
      Likes Received:
      37
      Trophy Points:
      0
      What behavior version?
       
    20. moujoohoo

      moujoohoo New Member

      Joined:
      Apr 29, 2010
      Messages:
      448
      Likes Received:
      1
      Trophy Points:
      0
      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 :)
       

    Share This Page