• Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • NPC Interaction Attempts Issue? (While in a Cutscene)

    Discussion in 'Community Developer Forum' started by y2krazy, Jul 29, 2015.

    1. y2krazy

      y2krazy Community Developer

      Joined:
      Jun 21, 2011
      Messages:
      2,803
      Likes Received:
      70
      Trophy Points:
      48
      As seen below, after an NPC interaction takes place and a cutscene commences, sometimes I will see NullReferenceExceptions spam every few seconds until the cutscene ends. This does not happen every time, so is something happening outside of the cutscene that is causing this, such as an NPC walking away or changing IDs after the current step?

      Also, something of note: while in the cutscene during one of these errors, the dialog skipping (Talk.Next()?) does not fire like it usually does. Talk.Next() (I assume) fires off after another NullReferenceException appears in the RB window/log file. I'm not sure how to word it properly, but is this error causing dialog checks to not pulse(?) properly as well?

      Code:
      [03:45:25.718 V] [Poi.Clear] Reason: Current behavior changed to TalkToTag: LineNumber: 2944, IsDone: False, NpcId: 1000764, InteractDistance: 5, BypassTargetChange: False, XYZ: <218.8906, -28.25249, 338.3992>, NPC: Nolanel 0x4BF11F90, HighPriority: False, InCombat: False, QuestId: 65584, StepId: 3, PostCombatDelay: 0, QuestName: Trial by Earth, IsDoneCache: False, Behavior: TreeSharp.PrioritySelector, .
      [03:45:25.718 D] Removed all hooks from [HighPriorityProfileOrderBehavior_Hook]
      [03:45:25.718 D] Replaced hook [ProfileOrderBehavior_Hook] be665532-5a6d-4852-a9b4-42f0016277d1
      [03:45:25.723 D] Interacting with Nolanel 0x4BF11F90
      [03:45:28.487 N] Waiting at location for valid npc to spawn
      [COLOR="#FF0000"][03:45:33.513 D] System.NullReferenceException: Object reference not set to an instance of an object.
         at ff14bot.NeoProfiles.Tags.TalkToTag.(Object )
         at TreeSharp.Action.RunAction(Object context)
         at TreeSharp.Action.<Execute>d__0.MoveNext()
         at TreeSharp.Composite.Tick(Object context)
         at TreeSharp.Sequence.<Execute>d__0.MoveNext()
         at TreeSharp.Composite.Tick(Object context)
         at TreeSharp.Decorator.<Execute>d__0.MoveNext()
         at TreeSharp.Composite.Tick(Object context)
         at TreeSharp.PrioritySelector.<Execute>d__0.MoveNext()
         at TreeSharp.Composite.Tick(Object context)
         at TreeSharp.PrioritySelector.<Execute>d__0.MoveNext()
         at TreeSharp.Composite.Tick(Object context)
         at ff14bot.Behavior.HookExecutor.Run(Object context)
         at TreeSharp.Action.RunAction(Object context)
         at TreeSharp.Action.<Execute>d__0.MoveNext()
         at TreeSharp.Composite.Tick(Object context)
         at TreeSharp.PrioritySelector.<Execute>d__0.MoveNext()
         at TreeSharp.Composite.Tick(Object context)
         at TreeSharp.PrioritySelector.<Execute>d__0.MoveNext()
         at TreeSharp.Composite.Tick(Object context)
         at ff14bot.Behavior.HookExecutor.Run(Object context)
         at TreeSharp.Action.RunAction(Object context)
         at TreeSharp.Action.<Execute>d__0.MoveNext()
         at TreeSharp.Composite.Tick(Object context)
         at TreeSharp.Decorator.<Execute>d__0.MoveNext()
         at TreeSharp.Composite.Tick(Object context)
         at TreeSharp.PrioritySelector.<Execute>d__0.MoveNext()
         at TreeSharp.Composite.Tick(Object context)
         at ff14bot.TreeRoot.()[/COLOR]
       
    2. Sodimm

      Sodimm Member

      Joined:
      Nov 8, 2014
      Messages:
      383
      Likes Received:
      7
      Trophy Points:
      18
      Add a <WaitWhile Condition="Core.Player.InCutscene"/> after the interact, looks like the profile is trying to move on when it can't, or rather, the talktotag hasn't registered as IsDone.
       
    3. y2krazy

      y2krazy Community Developer

      Joined:
      Jun 21, 2011
      Messages:
      2,803
      Likes Received:
      70
      Trophy Points:
      48
      I've added that to a number of other quest steps where a cutscene starts upon zoning in after a UseTransport or something, but do I really need to add it for possibly hundreds of quest steps? I already considered it, but it seems a bit redundant to have to do that, no?
       
    4. iyake

      iyake Member

      Joined:
      Oct 19, 2014
      Messages:
      143
      Likes Received:
      5
      Trophy Points:
      18
      The waitwhile won't work since it's pulsing again before the waitwhile gets executed.

      you can try this:

      Code:
      using Clio.XmlEngine;
      using ff14bot.Behavior;
      using ff14bot.Managers;
      using TreeSharp;
      
      namespace ff14bot.NeoProfiles.Tags {
          [XmlElement("ExtendedTalkTo")]
          class ExtendedTalkToTag : TalkToTag {
              protected override Composite CreateBehavior() {
                  return new PrioritySelector(
                      new Decorator(c => QuestLogManager.InCutscene && RemoteWindows.SelectYesno.IsOpen, new Action(ctx => { RemoteWindows.SelectYesno.ClickYes(); })),
                      new Decorator(c => QuestLogManager.InCutscene, new ActionAlwaysSucceed()),
                      base.CreateBehavior()
                  );
              }
          }
      }
      
      I think(?) the cutscene skip dialog is a SelectYesno, but you'll have to verify yourself if it's a different window

      and find/replace all <TalkTo with <ExtendedTalkTo
       
    5. Sodimm

      Sodimm Member

      Joined:
      Nov 8, 2014
      Messages:
      383
      Likes Received:
      7
      Trophy Points:
      18
      Yeah, it's a necessary evil for some quests, much like the zonecheck bonanza. Either that, or a waitwhile condition="not questvariable".. IIRC the individual tags have wait commands built in, but something is definitely causing the tag to not register as done, be it the cutscene or something else, our job is to find a workaround, until such a time as Mastahg releases the source and we can modify them.
       

    Share This Page