Jump to content

Dialogue quest problem with stages


ramilow

Recommended Posts

I looked at how the dialogue settings in the stages of the mission looked at the original companions and those from modifications, and it ended me up, because actually every time it is different XD
First of all, I was hoping to avoid building a lot of scripts unless there is no other option.
I wanted the course to look similar, where entering a certain stage NPCs enter into dialogue and after that the quest is continued.
For StartConversation, where should this command appear? I tried to type "NPCRef.StartConversation NPC2Ref Dialogue" but I did not find the right place. Should it be in a script, ResultScript (in QestStages or Topic)? The tutorials give commands, but I can't see exactly where, plus whether to add additional commands or markers.
I know there are several ways to achieve a given result, but it's difficult to find the right one for me.
I also used this guide, but I do not know if in my case it is the optimal solution.

Link to comment
Share on other sites

"StartConversation" (my emphasis added):

When you call this function on an actor, the actor will seek out the target actor in order to have a conversation, no matter where the two NPCs are currently.

You can also use it to have an NPC "force greet" the player, by setting the player as the TargetActor.

 

So it is used in response to some triggering logical event, such as another dialog, eventhandler, or activator, and would be placed where it makes the most sense under the circumstances (e.g. any of those you mentioned). Most "functions" are designed that way: to be versatile and useful in any appropriate situation. There is no hard and fast rule (as you saw in the code you looked at).

I recommend you not get too hung up on "optimal" at this point. Keep it in mind, but "Functional" comes first. It is not uncommon to have to rewrite code for better efficiency after you solve the basics of how to get the result you want. By then you will have a better understanding of what it will take to be more efficient.

BTW: Out of curiosity, was the "book/chapter" analogy of any help? (I'm considering adding it to the wiki.)

-Dubious-

Edited by dubiousintent
Link to comment
Share on other sites

 

Edit: Late thought. I suspect (but do not know for certain) that "GetQuestVariable" is intended for use in scripts OTHER than the current quest. I base this upon the requirement for the "QuestID:ref" parameter. Normally the identity of the current script (in this case "quest') context is inherited and assumed. Requiring an identifier for a quest in the condition function makes sense when that assumption is not valid. As pointed out in the description: otherwise you do not need a function at all; the condition can just use the fully qualified variable (i.e. "QuestID.VarName").

 

Actually it is hard to understand what it means by "GetQuestVariable" only available for a condition. o_O

Which it Means a condition box where you use the drop down to select "GetQuestVariable"

Otherwise , there is no function you can use in a script called "GetQuestVariable" :down:

 

You simply use what you stated at the end there dubious. "QuestID.VarName"

Examples :

 

If QuestID.VarName == 1

&

Set QuestID.VarName to 1

 

Which outside of those I can't think of another use you would need for that function , can you think of one ?

Damn Bethesda wiki ... I was scratching my head for awhile before I figured it out.

And the GeckWiki.com is just copied. :ermm:

 

Add edit: but if it is a local variable in the quest script , of course you need not specify the Quest ,,, It is the same as a local variable use anywhere else.

Link to comment
Share on other sites

@ Ramilow ... I think you should set your stages and objectives aside. And just make variables (like switches) that turn off/on parts of your intended render flow. Then later set up the quest as a turtorial type device for people that don't know who,what,where to advance it. But without the quest , they could push the right buttons to make things happen. And when I say quest , I just mean what is going to show in the pipboy. Because quests get used all the time for other things that have nothing to do with telling the player they are on a quest.

 

But lets start with this Line you call it ... that gets crossed in order to start the whole thing.

What is the line ? is it an actual line , like a cubic activator ?

Link to comment
Share on other sites

I'm not sure if this is exactly what you're looking for but I've found that using GetObjectiveDisplayed is an easier Variable to use than getstage. It feels a lot easier to organize for open-ended quests but the issue is if you use say GetObjectiveDisplayed MyQuest 20== 1 and you insert the command SetObjectiveCompleted MyQuest 20 1 your objective for 20 is still displayed as == 1 so you have to additionally write the line SetObjectiveDisplayed MyQuest 20 0 after setting the objective completed.

Edited by ashtonlp101
Link to comment
Share on other sites

 

BTW: Out of curiosity, was the "book/chapter" analogy of any help? (I'm considering adding it to the wiki.)

 

 

Sorry I didn't mean to gloss over this ... but if you want my opinion , I would have to go with a no.

Because stages don't stay open so to speak. Once they are set and run they are done.

There is no stage pending , only completed. So a book analogy doesn't really work.

Where as with Dialogue on ... Topic / info / response ... result scripts

Does work as a book analogy in my opinion.

 

Stages are more like having a robotic arm to turn the pages of a book.

For just trying to come up with an off the top of my head comparison :huh:

Link to comment
Share on other sites

@Mktavish: Fair point about "stage" and the book analogy. That's often the problem with analogies: they aren't a perfect fit. "Stage" is more like a "bear trap": once sprung it's useless except to say "yeah, passed here before".

 

And I agree about how that wiki entry in particular needs more clarification. I did not realize it is only available from a dropdown list box (which does not equate to "condition function" in my head).

 

@ashtonlp101: I see your point about "GetObjectiveDisplayed". However, because it is based upon objectives that are displayed in the Pipboy whether or not they are completed and thus necessitating the additional "GetObjectiveCompleted" function call check, my personal take is that all the related "quest stage/objective" functions are intended for use outside of the quest they are related to tracking (i.e. "Pipboy Log" or other scripts not children of the quest). Using them to control the script logic is unnecessary overhead.

 

Within the quest itself, defined quest variables are better suited to tracking the progress of the logic. When one of those reaches it's intended "start" or "conclusion" is the time to update "stage" or "displayed objective" solely to help the Player track their progress. They are "progress reports" rather than different layers of granular control of the quest itself. I see the problems arising from attempting to use predefined global variables for more localized purposes: stretching the roles. Variables are very low overhead and have the least impact upon processing. Vastly preferable to calling functions for confusing purposes. Just look at how much discussion we are having over their roles based upon examples of that use.

 

-Dubious-

Link to comment
Share on other sites

GetObjectiveDisplayed is useful more than the others , because once it becomes displayed. It functions as good as any other variable, thinking about it in a DoOnce , 1 frame context.

But the Objective tab itself has usefulness no where else found except with some extensive higher level scripting.

It functions to display instructions to the player , with text and map markers.

Stage on the other hand , has no function that you could not get with novice level scripting.

I think Stage is just there as a training wheels tool for new modders that want to use the "Objective" portion.

But maybe there is some hardcoded things happening for benefits you could not get with scripting ???

I'm still liking the idea of using a Quest with Stages , in place of a script , to get a limited amount of multi frame blocks. Plus each stage has a spot for conditions , that would in essence make that stage work like an Event handler. Needs some testing , but of course Idea for context is key.

 

I noticed something of late with regard to the "Script Process Delay" on Quests.

When storing variables , and another script "Gets / Sets" these. The process delay does not effect that.

Maybe everybody knew that and was obvious ? But seemed like a revelation to me. Which I think then says any script result is not effected either. But of course considering the nature of 1 frame blocks , says ... duh !

 

Me feels so dumb now reflecting on my ignorance , and all the supposed good advice I gave :sick: ... albeit not just that as I continue to learn more.

Link to comment
Share on other sites

 

 

What is the line ? is it an actual line , like a cubic activator ?

Yeah, I added a script to it and thanks to this the dialogue that starts the quest begins after exceeding it.

I was thinking about using cubic activator to trigger a dialogue between NPCs, but I do not know where to place the command to trigger it, in addition at the right time in the quest and then go to the next stage, with a new dialogue started. Do you need to use several separate script files, or is one enough to activate? I was also looking for the right commands, but once again, I don't know where it should be placed - in the script or in the tabs of my quest - QuestStages or Conversation.

I know that in GECK the quest is also used to call the right conditions for scripts, but for now I limited myself to the division into conditions related to the functioning of the follower and the quest that concerns him.
It turns out that there are a lot of possibilities to do the same thing in the quest, but I'm wondering what to just use commands and scripts;)

I noticed that by moving SetObjectiveCompleted to a given dialogue, I can trigger the next stage of the quest, but when I want it to apply to the dialogue between NPCs, it doesn't work.

Link to comment
Share on other sites

  • Recently Browsing   0 members

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