Yovaneth Posted May 31, 2006 Share Posted May 31, 2006 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
Grim Squeaker Posted May 31, 2006 Share Posted May 31, 2006 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 stateNumberEXTERN 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
Yovaneth Posted June 1, 2006 Author Share Posted June 1, 2006 Thanks Grim; my optician told me I don't need glasses yet but it seems he could be wrong. -Y- Link to comment
Grim Squeaker Posted June 1, 2006 Share Posted June 1, 2006 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
Yovaneth Posted June 1, 2006 Author Share Posted June 1, 2006 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. <{POST_SNAPBACK}> 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
Grim Squeaker Posted June 1, 2006 Share Posted June 1, 2006 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
Yovaneth Posted June 2, 2006 Author Share Posted June 2, 2006 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. <{POST_SNAPBACK}> 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
Recommended Posts
Archived
This topic is now archived and is closed to further replies.