Jump to content
Heavy Traffic ×

Issue: Say Once


rraoyxz

Recommended Posts

"Say Once" is a "condition" on a topic: meaning once said it is never repeated as a topic. Are you using a "gateway variable" in that topic's "Result Script" to inform your quest script that it has been said so the next intended response(s) know that it has by checking for that variable as a condition? Suggest you see the tutorials and 'TIP Standard Dialog' under the "Dialogue and Lipsynch" section of the wiki "Getting started creating mods using GECK" article.

 

-Dubious-

Link to comment
Share on other sites

If you could explain your intended out come , and what you have done to set up these info's.

We might be able to figure why / what is not working.

 

But to clarify ... the Say Once flag is set per info , not per topic.

 

So basically you take the "Greeting" topic , and add as many info's to it you want.

Flag them top level , and set priority for what order they will be used ... and even set conditions that might change when they are used , like a quest stage for example.

And the one you flag as "Say Once" will no longer be considered in the priority , after said once.

 

Also it is possible you are getting no text display , because the text has no audio file attatched.

In my experience , which I haven't figured out why exactly. Sometimes text will display till you click , other times it will immediately flash the text and clear it.

 

The dialogue tool is pretty versatile , there is no one set way to do things. But it is not very intuitive either. And one of the harder things to get proficient with in the geck.

 

Also with the NV geck , there is an alternate dialogue tool available from the main geck window tool bar. At least I think that's where it is ? Never used the tool myself ... maybe dubious could better explain where to bring it up and it's use differences ?

Link to comment
Share on other sites

@Mktavish: Thanks for that clarification. Edit: I added it to the wiki article as 'TIP Say Once use' under "Dialog and Lip-Sync". Also added 'TIP Text display timing' to the same section.

 

You are thinking of the OCE. See 'TIP Obsidian Conversation Editor aka OCE' AND 'TIP Standard Dialog' under the "Dialog and Lip-Sync" section of the wiki "Getting started creating mods using GECK" article.

 

-Dubious-

Link to comment
Share on other sites

Ah ya the OCE .... I seem to remember you in that conversation awhile back .

Me and EPDGaffney learning about it from someone asking advice on dialogue.

Turns out they gave us just as much advice ... hehe

 

Sure miss EPD around here ... he was the scripting guru ... guess he had other interests to move on to. Don't know why though , cuz there aint no better than Fallout 3 and NewVegas so far :)

 

Here's hoping you don't up and leave these forums ... cuz you'd be sorely missed :ohdear:

Link to comment
Share on other sites

I think I was interpreting "Say Once" incorrectly in that case.

 

I used "Say Once" on a greeting and expected the greeting to display the first time I spoke to the NPC and then never again.

 

If I'm understanding correctly, I should instead use a variable (and flag that variable in the script) to have my NPC say a greeting once (and then never again).

 

"Say Once" is a "condition" on a topic: meaning once said it is never repeated as a topic. Are you using a "gateway variable" in that topic's "Result Script" to inform your quest script that it has been said so the next intended response(s) know that it has by checking for that variable as a condition? Suggest you see the tutorials and 'TIP Standard Dialog' under the "Dialogue and Lipsynch" section of the wiki "Getting started creating mods using GECK" article.

 

-Dubious-

Link to comment
Share on other sites

To clarify ... for greetings ... you use the special topic named "GREETING"

Which once you add this to topics held within a Quest ID. You can then add many different "Info's" controlled mostly by the condition of "GetIsID" for who will say it , when clicking on an npc to start a conversation. So beyond being able to set priority for which will display upon clicking them by using the "GREETING" topic. You also have the "Say Once" flag.

Which isn't much different than setting another condition. Except that it is a built in function to stream line the process , since it is a common condition.

 

Therefore in order for your say once condition to be said first among the other info's with the same "GetIsID" you need to give it a higher priority than the secondary greeting info.

 

And to clarify ... you must use the "GREETING" topic for normal npc response after player clicking on them.

But there are otherways to do it. This is just the usual way (albeit unintuitive) for how the devs set up the tool.

Link to comment
Share on other sites

I think maybe I should expound on the root elements of this subject.

 

Topics are an object unto themselves ... and are stored under separate from quests.

 

Quests are another object stored with their quest ID ... which are commonly used for storing dialogue groupings. Quests are the meat and potatoes of versatility.

But don't let the name fool you , they most certainly are not just used for in game quests.

Which is merely a small facet of their use.

 

Anyways Topics are their own thing ... which a script could tell an npc to say a topic , without it being held within a quest. But the quest window is the only interface to edit that stuff (except maybe the OCE) which am sorry for not knowing about it more.

The other way to look at dialogue is from that button on an NPC "Dialogue" But you can't edit things there.

So that means (disregarding the OCE) you have to use a quest to access the dialogue tool for editing. And the thing about quests , is they are an easy way to turn on / off a whole group of dialogue through "StartQuest" & "StopQuest"

Also the condition field on the first page of quests would be considered before a condition on a particular info. This condition spot is mostly utilized with what voice type for general short dialogue.

Like this is what raiders will say , or this is what wastelanders will say.

Then the random response info's don't have a GetIsID , just condition per male/female.

For the most part ... if you are adding dialogue ... you want to be putting it under your own quest ID.

But so you know ... an npc will be pulling dialogue from any quest running ... wich could be quite a few in the case of vanilla npc's .

Dialogue is just out there ready to come out of any npc mouth.

So you need to tell the engine who , what , where to focus in on.

 

Hope this helps ... I know the geck is fricken convoluted ... especially the dialogue part of it.

So all we can really do is accept and work around it's deficiencies.

But the work around paths available with the tool are many ... so don't forget that :teehee:

Link to comment
Share on other sites

@Mktavish: I think you need to mention that "GetIsID" only works on "Base Object IDs" of type "form". Which (as I interpret it) means it will not work on a "Reference-ID" of an Actor in-game, and can cause a CTD (see "Causes of CTDs".). So you would need to convert the "Ref-ID" into it's "Base-ID" first using "GetBaseObject", and even then it might not be unique between speakers. It (GetIsID) is usually used with a "token". I've expanded the "TIP Standard Dialog" entry of the "Dialogue and Lip-Sync" section to cover this.

 

Re - Prompt: This text will be displayed in place of the topic text. If left blank (as is default), the topic text will be used.

 

It was my understanding that "GREETING" only works once (sort of an automatic "SayOnce" topic) for the very first interaction between an NPC and the Player. But as a result of your comments I did some more digging ("Adding special topics" under the "Quest and Dialogue Tutorial" and determined that only is the case when "SayOnce" is checked. You can apparently have multiple "GREETING" topics as long as each is unique and (I presume) you use difference conditional tests to determine when each is appropriate.

 

-Dubious-

Link to comment
Share on other sites

Okies first to clarify ... there is only one "GREETING" topic.

It is a hard coded topic compared to ones you create.

And can be found anytime you try to add a topic , in the G's ... can't miss it ... is all caps like I have been posting.

 

So after you add this topic which already exists outside any quest.

Now inside the quest ... you can add "Info" lines.

And these info lines once highlighted ,,, turn on all the rest of the things you can do on the page.

But first must have topic selected from left side , then an info selected from the near top labeled "Info"

Sorry , but trying to clarify the teitary structure of dialogue.

Topic > Info > response text ... and everything else you can do on that screen , is on the same level as response text.

 

An easy way to understand this ... bring up a vanilla quest for dialogue. Probably says dialogue in it.

Then click through the different topics on left side seeing what changes on the screen.

Then deciding a topic to leave it on ... click through the different info's and see what changes on the screen.

 

But the greeting topic is the hard coded way to initiate click on response out of npcs

 

There is only one greeting topic. But it is used over many many many quests and npc's

And holds hundreds of info's , which each have conditions to control when ,where , why , who says what .

 

Yes GetIsID is checking the base ID , hence if you want a particular ref npc saying stuff , as apposed to a base id that has many refs to it.

Then of course only have one ref to that base .

Dont go dropping 3 raiders based on one ID , then expect the 3rd to have unique dialogue.

No you would create another base id just for that 3rd raider.

Sorry if that was obvious , just thought I would state it anyways.

 

So seeing that the engine pretty much wants the GetIsID for stable dialogue. Any dialogue assignment , must be to a unique npc.

When using "GetIsID" if that makes sense .... sorry to ramble.

 

But the list of conditions is long and where to use them ... so the getisid rule need not always apply.

 

At least with the seems to me method :wink:

Link to comment
Share on other sites

  • Recently Browsing   0 members

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