Jump to content

Request for dialog help


Yovaneth

Recommended Posts

This is about the only thing I can't figure and have been unable to find the answer in any of the many dialog tutorials I've downloaded. Here's a simple dialog snippet:

 

//---------------------------------------------------------
IF ~Global("ys_TalkedToDerval","GLOBAL",0)~ THEN BEGIN BLK7
SAY ~Then prepare to be amazed!!~
IF~~THEN EXTERN ysAine BLK10
END

//---------------------------------------------------------
IF ~Global("ys_TalkedToDerval","GLOBAL",0)~ THEN BEGIN BLK8
SAY ~Shh, my sweeting - you can get your own back on me later. Now, listen!~
IF~~THEN REPLY ~One moment - what is the piece called?~ GOTO BLK9
END

//---------------------------------------------------------
//---------------------------------------------------------
CHAIN ysAine BLK10
~Sometimes I wish you were mazed.~ EXTERN ysderv BLK8
END

Weidu doesn't like my EXTERN from the CHAIN'd block; how do I get back to BLK8 in the main dialog? The main conversation is between Derval and the PC; Aine is simply throwing in snide remarks every now and again.

 

MMTIA.

 

-Y-

Link to comment

Compare your CHAIN to the structure of a CHAIN:

 

CHAIN  [ IF  [ WEIGHT #weight  ] stateTriggerString THEN  ] entryFilename entryLabel

chainText  list

chainEpilogue

 

Where chainEpilogue is either:

 

END filename stateNumber

EXTERN filename stateNumber

COPY_TRANS filename stateNumber

EXIT

END transition list

 

As you can see in yours you appear to have two chainEpilogues.

 

What you want is:

 

CHAIN ysAine BLK10
~Sometimes I wish you were mazed.~
END ysderv BLK8

 

OR

 

CHAIN ysAine BLK10
~Sometimes I wish you were mazed.~
EXTERN ysderv BLK8

 

They both mean the same thing.

Link to comment

IF ~Global("ys_TalkedToDerval","GLOBAL",0)~ THEN BEGIN BLK7
SAY ~Then prepare to be amazed!!~
IF~~THEN EXTERN ysAine BLK10
END

//---------------------------------------------------------
IF ~Global("ys_TalkedToDerval","GLOBAL",0)~ THEN BEGIN BLK8
SAY ~Shh, my sweeting - you can get your own back on me later. Now, listen!~
IF~~THEN REPLY ~One moment - what is the piece called?~ GOTO BLK9
END

 

Oh and are you aware that these two blocks have identical conditions meaning that the second one wll never play? Either that or they are meant to be connecting blocks (as the actually dialogue itself suggests) not the start of dialogues, in which case you don't want a condition on the blocks.

Link to comment
Oh and are you aware that these two blocks have identical conditions meaning that the second one wll never play?  Either that or they are meant to be connecting blocks (as the actually dialogue itself suggests) not the start of dialogues, in which case you don't want a condition on the blocks.

They are connecting blocks; the condition is needed to branch the dialog depending on what has been said and/or done. There's probably a better way to do it but as long as this one doesn't trip me up, I think I'll stick with it.

 

Thanks to your help, the flow now works correctly and Aine gets her snide remarks at all the right (wrong?) times. That was the last stumbling block on a lot of my dialogs; you've really helped push the mod forward.

 

-Y-

Link to comment
They are connecting blocks; the condition is needed to branch the dialog depending on what has been said and/or done. There's probably a better way to do it but as long as this one doesn't trip me up, I think I'll stick with it.

 

WeiDU doesn't work like that. Conditions in the block header are ONLY for dialogue starting blocks. You'll want to attach the conditions to the IF ~~ THEN GOTO line that was pointing to the blocks, not the blocks themselves.

Link to comment
WeiDU doesn't work like that.  Conditions in the block header are ONLY for dialogue starting blocks.  You'll want to attach the conditions to the IF ~~ THEN GOTO line that was pointing to the blocks, not the blocks themselves.

I think where I haven't made myself clear is that the

 

IF ~Global("ys_TalkedToDerval","GLOBAL",0)~ THEN BEGIN BLKx

 

would have started the dialog down one path; then if X happens and you need to speak to Derval again,

 

IF ~Global("ys_TalkedToDerval","GLOBAL",1)~ THEN BEGIN BLKx

 

would have triggered the second conversation. However, once those starting conditions have been met and the flow starts, I understand I no longer need the starting conditions in the dialog blocks; that makes sense. I have IF~~THEN GOTO conditions as well, to guide the conversation within those mutually-exclusive main dialog flows.

 

Many thanks for the help Grim; it's really appreciated.

 

-Y-

Link to comment

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...