Dialog conditions help

Post » Fri May 13, 2011 6:50 am

I'm having a hard time getting this to work like I need it to and don't understand why it's not working as I thought it should. (I know this is all dialog 101 but it's my first attempt, so be easy on me! And, yes, I've done the tutorials.)

FYI, the quest is either not started yet or at stage 10 at this point. Also, I'm not adding them in here, but obviously I have the conditions set for my NPC to say the dialog on all lines. (Run on: Subject) GetIsID MyNPC == 1.0000 (AND)


So, simplifying my dialog, it's basically like this:

GREETING
NPC - Can you find something for me I lost? (say once) (Run on: Subject) GetStage MyQuest <= 10.0000 (AND)
PC - Yes, what to you need? (complete rest of dialog tree, advance to stage 20 of quest and should make option 4 the next greeting) not working correctly
PC - Maybe later. (makes option 2 the next greeting)

OPTION 2
NPC - Are you ready to help me yet? (say once) (Run on: Subject) GetStage MyQuest <= 10.0000 (AND)
PC - Yes, I'm ready. (complete rest of dialog tree, advance to stage 20 of quest and should make option 4 the next greeting) not working correctly
PC - No, not yet. (makes option 3 the next greeting)

OPTION 3
NPC - I'm not going to ask for your help again. Will you help me or not?
PC - Sure, what do you need. (complete dialog tree and advance to stage 20 of quest)
PC – I'm not going to help you right now. (quest fail)

OPTION 4
NPC - Have you found my item yet? GetStage MyQuest (Run on: Subject) GetStage MyQuest => 20.0000 (AND) available only after the other options are spoken
PC – Yes.
PC – No.

Unless I misunderstood something, I thought that the condition “(Run on: Subject) GetStage MyQuest <= 10.0000 (AND)” would cause those topics to be spoken ONLY if the quest stage was less than or equal to 10? And that the condition "(Run on: Subject) GetStage MyQuest => 20.0000 (AND)" would cause that line to ONLY be spoken after the quest was 20 or greater? If so, why are each of the options available after the quest has advanced to stage 20? Is it the "say once" flag causing it maybe?

In other words, I can start with the very first greeting option, go through the entire dialog tree, advance to stage 20 and exit from the dialog menu with my NPC. The go right back into the dialog with him, and he greets me with option 2 rather than option 4.

What have I missed?
User avatar
Yung Prince
 
Posts: 3373
Joined: Thu Oct 11, 2007 10:45 pm

Post » Fri May 13, 2011 5:12 am

Getstage = Gets the highest completed quest stage.

If you are in stage 20, 10 is still the highest COMPLETED quest stage.

Make an interim stage that bumps up to stage 30 so that 20 becomes the highest done, or use GetStageDone to test for stage 10 being completed.
User avatar
Tracy Byworth
 
Posts: 3403
Joined: Sun Jul 02, 2006 10:09 pm

Post » Fri May 13, 2011 9:25 am

OH, crap, lol. This was supposed to be in the GECK forum. Please move, sorry.
User avatar
Charlotte Buckley
 
Posts: 3532
Joined: Fri Oct 27, 2006 11:29 am

Post » Fri May 13, 2011 9:01 pm

Getstage = Gets the highest completed quest stage.

If you are in stage 20, 10 is still the highest COMPLETED quest stage.

Make an interim stage that bumps up to stage 30 so that 20 becomes the highest done, or use GetStageDone to test for stage 10 being completed.


OK, if (Run on: Subject) GetStage MyQuest <= 10.0000 (AND) prevents that topic from being spoken if stage 10 has been completed, I don't understand why it's still being spoken by my NPC while in stage 20. Stage 10 was completed after accepting the mission which advances the quest to stage 20. The greeting topics 2 and 3 should have worked, shouldn't they? (I think I can see why option 4 didn't work.)

Quest stages right now are:

10 - Ask around for some info
20 - Find the lost object

This all seems so simple, but I've literally worked for 2 days, have redone this crap 4 times from scratch and still can't get it to work like I want. :banghead: :facepalm:
User avatar
Niisha
 
Posts: 3393
Joined: Fri Sep 15, 2006 2:54 am

Post » Fri May 13, 2011 4:33 pm

No, "GetStage MyQuest <= 10" translates as "Run this dialogue for as long as the highest completed stage is less than or equal to 10"

When first initiating the dialogue, the current stage is 10 and the highest COMPLETED stage is zero. So the dialogue is valid (less than 10).

You accept the quest and the stage advances to 20.

When you next initiate dialogue, the current stage is 20 and the highest COMPLETED stage is ten. So the dialogue is valid (equal to 10).

If you complete stage 20 and the quest advances to stage 30.

When you next initiate dialogue, the current stage is 30 and the highest COMPLETED stage is twenty. So the dialogue is invalid (neither less than nor equal to 10)
User avatar
Matt Bee
 
Posts: 3441
Joined: Tue Jul 10, 2007 5:32 am

Post » Fri May 13, 2011 2:17 pm

God I must just be a complete idiot with this stuff. I still can't get it working correctly. If you could, please just tell me what conditions I need to set up for this to work. I've tried dozens of combinations and it just wont work right. After 2 days I'm really frustrated and about ready to say screw this quest crap if its going to be this hard to learn. (I know what I'm trying to do is supposed to be very basic and simple and that even frustrates me even more.)

I want options 1, 2 and 3 to be available until stage 10 is complete and 20 is set. After 20 is set I want option 4 to be available, but not before.





No, "GetStage MyQuest <= 10" translates as "Run this dialogue for as long as the highest completed stage is less than or equal to 10"

When first initiating the dialogue, the current stage is 10 and the highest COMPLETED stage is zero. So the dialogue is valid (less than 10).

You accept the quest and the stage advances to 20.

When you next initiate dialogue, the current stage is 20 and the highest COMPLETED stage is ten. So the dialogue is valid (equal to 10).

If you complete stage 20 and the quest advances to stage 30.

When you next initiate dialogue, the current stage is 30 and the highest COMPLETED stage is twenty. So the dialogue is invalid (neither less than nor equal to 10)

User avatar
Anne marie
 
Posts: 3454
Joined: Tue Jul 11, 2006 1:05 pm

Post » Fri May 13, 2011 7:25 am

In your quest script make a variable called DialogueCount

For the first dialogue try: Condition Function: GetStageDone, Parameter 1: MyQuest, Parameter 2: 10, Comparison: ==, Value: 0, AND
Condition Function: GetQuestVariable, Parameter 1: MyQuest, Parameter 2: DialogueCount, Comparison: ==, Value: 0, AND

Responses: Yes: Set stage to 20, No: Set MyQuest.DialogueCount to 1

For the second dialogue try: Condition Function: GetStageDone, Parameter 1: MyQuest, Parameter 2: 10, Comparison: ==, Value: 0, AND
Condition Function: GetQuestVariable, Parameter 1: MyQuest, Parameter 2: DialogueCount, Comparison: ==, Value: 1, AND

Responses: Yes: Set stage to 20, No: Set MyQuest.DialogueCount to 2

For the third dialogue try: Condition Function: GetStageDone, Parameter 1: MyQuest, Parameter 2: 10, Comparison: ==, Value: 0, AND
Condition Function: GetQuestVariable, Parameter 1: MyQuest, Parameter 2: DialogueCount, Comparison: ==, Value: 2, AND

Responses: Yes: Set stage to 20, No: Set stage to 200 (fail stage)

For the fourth dialogue try: Condition Function: GetStageDone, Parameter 1: MyQuest, Parameter 2: 10, Comparison: ==, Value: 1, AND

See if any of that works.
User avatar
R.I.p MOmmy
 
Posts: 3463
Joined: Wed Sep 06, 2006 8:40 pm

Post » Fri May 13, 2011 2:12 pm

OK showler, I finally got it working! I ended up going with your first suggestion of adding a stage to advance everything one stage and triggering that with a script on a key my NPC gives the player that unlocks a safe with the quest object in it. Doing it that way solved the problems I was having. Your excellent explanation of what "GetStage" actually did cleared up my foggy understanding (or MISunderstanding, lol) of how that worked. From there, I felt I comprehended what I needed to do, and with a few more tweaks it worked! :celebration:


Man, I wish that there was somewhere that explained this stuff a little better for us noobish beginners with no questing or scripting experience. The WIKI has some stuff in there, but much of it seems to me to be explained (what little is explained) to more advanced users. :brokencomputer: I try to ask for help here as a last resort as I know peoples time is valuable. And I cannot thank you enough for your assistance. Maybe I'm just a little hard headed or whatever, but making all this stuff work is really, really difficult when you have such a limited amount of experience and understanding of it all, lol.

Thank you very much again, and have a round on me! :foodndrink: (I'm sure I'll be back as what I have planned next might be a LOT more difficult than the simple little quest I just did, lol) :whistling:


In your quest script make a variable called DialogueCount

For the first dialogue try: Condition Function: GetStageDone, Parameter 1: MyQuest, Parameter 2: 10, Comparison: ==, Value: 0, AND
Condition Function: GetQuestVariable, Parameter 1: MyQuest, Parameter 2: DialogueCount, Comparison: ==, Value: 0, AND

Responses: Yes: Set stage to 20, No: Set MyQuest.DialogueCount to 1

For the second dialogue try: Condition Function: GetStageDone, Parameter 1: MyQuest, Parameter 2: 10, Comparison: ==, Value: 0, AND
Condition Function: GetQuestVariable, Parameter 1: MyQuest, Parameter 2: DialogueCount, Comparison: ==, Value: 1, AND

Responses: Yes: Set stage to 20, No: Set MyQuest.DialogueCount to 2

For the third dialogue try: Condition Function: GetStageDone, Parameter 1: MyQuest, Parameter 2: 10, Comparison: ==, Value: 0, AND
Condition Function: GetQuestVariable, Parameter 1: MyQuest, Parameter 2: DialogueCount, Comparison: ==, Value: 2, AND

Responses: Yes: Set stage to 20, No: Set stage to 200 (fail stage)

For the fourth dialogue try: Condition Function: GetStageDone, Parameter 1: MyQuest, Parameter 2: 10, Comparison: ==, Value: 1, AND

See if any of that works.

User avatar
meghan lock
 
Posts: 3451
Joined: Thu Jan 11, 2007 10:26 pm


Return to Fallout: New Vegas