Jump to content

Can't get force greet to work with companion


McFearo

Recommended Posts

Another day, another topic.

 

So this is my first time trying to set up a force greet. I gave the companion a dialogue package following the settings on one of Arcade's dialogue packages, set to use the topic GREETING, wherein he has a special greeting with the condition where it runs if the player hasn't met him yet. It's set to Say Once and has a condition for "MetDixie == 0" and the dialogue sets that to 1, just to make sure he doesn't greet them twice like this.

 

I then created an activator near the door of the building he's in, with this script attached:

 

scn DixieGreetTriggerScript


short bDoOnce


begin OnTriggerEnter player


   if (bDoOnce == 0)
      if (DixieFollowerQuest.bDixieHired == 0) && (DixieFollowerQuest.bMetDixie == 0)
         DixieREF.AddScriptPackage DixieGreetPlayerPackage
         set bDoOnce to 1
         Disable
         MarkForDelete
      endif
   endif


end

Again, this is copied from one of Arcade's triggers for when you approach the vertibird.

 

The scripts are all saving and the companion starts conversation with his special first time greeting if you talk to him, but entering the building and walking through the trigger does not cause him to run up to the player and initiate the conversation as I told him to do in the package. You have to talk to him to get the greeting.

 

What am I missing? How can I get him to run up to the player and start a conversation? It's not a huge deal now but I might like to have him initiate other conversations later on to do with quests and stuff, like Arcade does, so I'd like to know how to make these force greets work. I checked this topic in the forums and tried scripting the trigger activator with "DixieREF.startconversation player GREETING" but that didn't do the trick either

 

Link to comment
Share on other sites

In the dialogue package if you leave the "Topics" tab at "NONE" it actually uses their greeting by default. I've never manually chosen the GREETING topic, so I'd recommend switching the tab to "NONE" to see if that does the trick. And as I've said a couple posts down, I'd refrain from using "&&" on your conditions because it can be a little f*#@y at times and not work correctly.

Link to comment
Share on other sites

In the dialogue package if you leave the "Topics" tab at "NONE" it actually uses their greeting by default. I've never manually chosen the GREETING topic, so I'd recommend switching the tab to "NONE" to see if that does the trick. And as I've said a couple posts down, I'd refrain from using "&&" on your conditions because it can be a little f*#@y at times and not work correctly.

Hey there! I took your advice on both counts, switched the topic tab to NONE in the dialogue package and rewrote the script as follows, he's still not responding to the player walking through the activator. I feel like it must be a problem with the activator itself somehow like it's not being triggered when the player walks through it but I'm not sure what to do.

 

Current script:

 

scn DixieGreetTriggerScript


short bDoOnce


begin OnTriggerEnter player


if (bDoOnce == 0)
   if (DixieFollowerQuest.bDixieHired == 0)
      if (DixieFollowerQuest.bMetDixie == 0)
        DixieREF.AddScriptPackage DixieGreetPlayerPackage
        set bDoOnce to 1
        Disable
        MarkForDelete
      endif
   endif
endif


end
Link to comment
Share on other sites

The script looks pretty good. Maybe add DixieREF.EvaluatePackage after you add the package. If that don't work I'd check the package. Put the package in him in the geck as a test and see if he comes running to talk to you or maybe swap your greet package with some generic travel to player package in the script for testing the script.

Link to comment
Share on other sites

The script looks pretty good. Maybe add DixieREF.EvaluatePackage after you add the package. If that don't work I'd check the package. Put the package in him in the geck as a test and see if he comes running to talk to you or maybe swap your greet package with some generic travel to player package in the script for testing the script.

I finally got him to force greet the player but I had to take a different tack to get there because that trigger just was not working for me.

 

I added a new if statement to his gamemode script to tell him "if you have not met the player yet, and you detect the player, run your greeting package" and he finally did it! It took a second to work but he greeted the player after a moment of walking around near him. The script I used that finally worked looked like this:

 

Begin GameMode


   if (DixieFollowerQuest.bMetDixie == 0)
      if DixieREF.getdetected player == 1
         DixieREF.addscriptpackage DixieGreetPlayerPackage
      endif
endif


End

The greeting dialogue then sets "bMetDixie" to 1 so he won't do it again.

 

I probably should still figure out what was going wrong with my previous attempts so I can get force greets for future events to work. If it wasn't the script and it wasn't the package it must be something to do with the activator? Maybe I'll get one of PixelHate's invisible activator meshes and use that going forward.

Edited by McFearo
Link to comment
Share on other sites

You might want to try ontrigger, instead of ontriggerenter. I've noticed that ontriggerenter has a few issues when you enter it when entering a new cell, specifically when using doors:

 

https://forums.nexusmods.com/index.php?/topic/8316108-difference-between-ontriggerenter-and-ontrigger/

This is a good solution too. Just make sure you always use a DoOnce Variable because OnTrigger Runs every frame you're in the trigger, so if you don't block it off it will repeat all the script you've written.

Edited by ashtonlp101
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...