• Visit Rebornbuddy
  • IsTodoChecked taking extremely long to recognize a change?

    Discussion in 'Community Developer Forum' started by y2krazy, Jun 14, 2015.

    1. y2krazy

      y2krazy Community Developer

      Joined:
      Jun 21, 2011
      Messages:
      2,802
      Likes Received:
      64
      Trophy Points:
      48
      While using something similar to the following in an Order Bot profile, the objective only needed to kill 3 of a mob to be marked as complete, but it continued to grind the mob for at least 100 additional mobs when I manually felt the need to intervene.

      Code:
      <Grind grindRef="Grind_Area1" while="not IsTodoChecked(99999, 1, 0)" />
      Even after Stopping and Starting RB again, it still was using the GrindArea for objective 0 instead of objective 1.

      Why would IsTodoChecked not break out of the Grind tag in the above case once it kills the 3 mobs required? It basically killed new mobs with the ID in the GrindArea as they spawned for what seemed like forever. Should this not be used in a Grind tag?

      I tried adding some While statements outside of the Grind tag, but that didn't help either.
       
    2. mastahg

      mastahg Administrator Staff Member

      Joined:
      Feb 27, 2011
      Messages:
      4,610
      Likes Received:
      241
      Trophy Points:
      63
      How about giving the specific example you talk about instead of 999999?
      Did you try abandoning and re accepting the quest?


      Also a log would be great.

      Edit:
      If you messed up, and provided the wrong questId the condition would never return true.
       
    3. y2krazy

      y2krazy Community Developer

      Joined:
      Jun 21, 2011
      Messages:
      2,802
      Likes Received:
      64
      Trophy Points:
      48
      Code:
      <Grind grindRef="Whats_in_the_Box" while="not IsTodoChecked(65991, 1, 0)" />
      Abandoned the quest and it did everything up to changing to the second objective GrindArea just fine. Stopped after it killed 9 mobs (only 3 were required).

      Log attached:
       

      Attached Files:

    4. mastahg

      mastahg Administrator Staff Member

      Joined:
      Feb 27, 2011
      Messages:
      4,610
      Likes Received:
      241
      Trophy Points:
      63
      Try this in the console when your on the objective its getting stuck on.

      Code:
      Log(QuestLogManager.GetQuestById(65991).GetTodoArgs(0));
      
       
    5. y2krazy

      y2krazy Community Developer

      Joined:
      Jun 21, 2011
      Messages:
      2,802
      Likes Received:
      64
      Trophy Points:
      48
      The first objective is complete (after killing those 9 mobs previously) at the time of running that snippet and returns this:

      Code:
      (0, 3)
      Let me know if you'd like it run while the first objective is incomplete.
       
      Last edited: Jun 14, 2015
    6. mastahg

      mastahg Administrator Staff Member

      Joined:
      Feb 27, 2011
      Messages:
      4,610
      Likes Received:
      241
      Trophy Points:
      63
      Is that after having killed some of the targets?
       
    7. y2krazy

      y2krazy Community Developer

      Joined:
      Jun 21, 2011
      Messages:
      2,802
      Likes Received:
      64
      Trophy Points:
      48
      Edited the post:

       
    8. mastahg

      mastahg Administrator Staff Member

      Joined:
      Feb 27, 2011
      Messages:
      4,610
      Likes Received:
      241
      Trophy Points:
      63
      Yes, run it after killing a few and after the objective is completed.
       
    9. WoWuser123

      WoWuser123 Member

      Joined:
      Aug 4, 2011
      Messages:
      371
      Likes Received:
      4
      Trophy Points:
      18
      You can use something like:
      Code:
      <Grind grindRef="LNC_LittleLadybug" while="not GetQuestById(65754).QuestI8BH == 3 and GetQuestStep(65754) == 1" />
      
      Not sure what the logic is behind the .QuestI8BH and the other simular parameters, but I just check what changes after killing one or 2 and use that.
       
    10. mastahg

      mastahg Administrator Staff Member

      Joined:
      Feb 27, 2011
      Messages:
      4,610
      Likes Received:
      241
      Trophy Points:
      63

      The whole point of IsTodoCompleted is to make it so profile makers do not need to touch the quest variables.
       
    11. y2krazy

      y2krazy Community Developer

      Joined:
      Jun 21, 2011
      Messages:
      2,802
      Likes Received:
      64
      Trophy Points:
      48
      Upon picking up the quest:

      Code:
      (0, 3)
      After killing the first mob (and the objective updating in-game):

      Code:
      (0, 3)
      After killing the second mob (and the objective updating in-game):

      Code:
      (0, 3)
      After killing the third mob (and the objective completing in-game):

      Code:
      (0, 3)
       
    12. mastahg

      mastahg Administrator Staff Member

      Joined:
      Feb 27, 2011
      Messages:
      4,610
      Likes Received:
      241
      Trophy Points:
      63
      Interesting. I've leveled up a toon to this quest, and for this quest they store the objective indexes in a different order from everything else I have seen. For now just use 1 for the first objective, and 0 for the second.
       
    13. y2krazy

      y2krazy Community Developer

      Joined:
      Jun 21, 2011
      Messages:
      2,802
      Likes Received:
      64
      Trophy Points:
      48
      Swapping objective 0 and 1 to 1 and 0 worked. Thanks!
       

    Share This Page