MagSul Posted April 1, 2018 Share Posted April 1, 2018 Problem: I put together a short cutscene for the end of a level. This is purely dialog at this point aside from the opening camera movement, no look_targets or animations or anything. I thought I'd sorted out the sequence, but apparently not. After Jaden's first line of dialog everything stops. I've checked the npc_targetnames and all 3 are correct; they're also checked as "cinematic" in GTKRadiant. After a minor scare, all dialog files are accounted for and filepathed correctly. I'm really unsure what's preventing this from working. Hopefully, this will all make sense to me when I wake up fresh-faced! But in case it doesn't, I would really appreciate some support. Thanks. //(BHVD) remove ( "player" ); camera ( /*@CAMERA_COMMANDS*/ ENABLE ); camera ( /*@CAMERA_COMMANDS*/ MOVE, $tag( "outrocam1", ORIGIN)$, 0 ); camera ( /*@CAMERA_COMMANDS*/ PAN, $tag( "outrocam1", ANGLES)$, < 0.000 0.000 0.000 >, 0 ); camera ( /*@CAMERA_COMMANDS*/ FADE, < 0.000 0.000 0.000 >, 1, < 0.000 0.000 0.000 >, 0, 1000 ); camera ( /*@CAMERA_COMMANDS*/ MOVE, $tag( "outrocam2", ORIGIN)$, 10000 ); camera ( /*@CAMERA_COMMANDS*/ PAN, $tag( "outrocam2", ANGLES)$, < 0.000 0.000 0.000 >, 10000 ); affect ( "npc_jaden", FLUSH ) { task ( "jadenline 1" ) { print ( "Never heard of it." ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/knight/32kni004.mp3" ); } dowait ( "jadenline 1" ); signal ( "kyleline 1 follow jadenline 1" ); waitsignal ( "jadenline 2 follow kyleline 1" ); task ( "jadenline 2" ) { print ( "Hm!" ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/knight/32kni005.mp3" ); } dowait ( "jadenline 2" ); signal ( "kyleline 2 follow jadenline 2" ); waitsignal ( "jadenline 3 follow padawanline 1" ); task ( "jadenline 3" ) { print ( "I've been waiting here forever." ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/knight/32kni002.mp3" ); } dowait ( "jadenline 3" ); signal ( "kyleline 3 follow jadenline 3" ); waitsignal ( "jadenline 4 follow kyleline 4" ); task ( "jadenline 4" ) { print ( "You seem really nervous." ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/jaden_male/01jak010.mp3" ); } dowait ( "jadenline 4" ); signal ( "padawanline 3 follow jadenline 4" ); } affect ( "outro_fakeplayer", FLUSH ) { waitsignal ( "padawanline 1 follow kyleline 2" ); task ( "padawanline 1" ) { print ( "Sir?" ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/jaden_fmle/19jak001.mp3" ); } dowait ( "padawanline 1" ); signal ( "jadenline 3 follow padawanline 1" ); waitsignal ( "padawanline 2 follow kyleline 3" ); task ( "padawanline 2" ) { print ( "Well, I-" ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/jaden_fmle/03jak001.mp3" ); } dowait ( "padawanline 2" ); signal ( "kyleline 4 follow padawanline 2" ); waitsignal ( "padawanline 3 follow jadenline 4" ); task ( "padawanline 3" ) { print ( "Yeah, I'm okay." ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/jaden_fmle/01jak010.mp3" ); } dowait ( "padawanline 3" ); signal ( "kyleline 5 follow padawanline 3" ); waitsignal ( "padawanline 4 follow kyleline 6" ); task ( "padawanline 4" ) { print ( "Ready as I'll ever be!" ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/jaden_fmle/21jak002.mp3" ); } dowait ( "padawanline 4" ); } affect ( "npc_kyle_outro", FLUSH ) { waitsignal ( "kyleline 1 follow jadenline 1" ); task ( "kyleline 1" ) { print ( "It's not exactly a vacation spot." ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/kyle/33kyk003.mp3" ); } dowait ( "kyleline 1" ); signal ( "jadenline 2 follow kyleline 1" ); waitsignal ( "kyleline 2 follow jadenline 2" ); task ( "kyleline 2" ) { print ( "I was starting to get worried." ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/kyle/33kyk004.mp3" ); } dowait ( "kyleline 2" ); signal ( "padawanline 1 follow kyleline 2" ); waitsignal ( "kyleline 3 follow jadenline 3" ); task ( "kyleline 3" ) { print ( "Yeah." ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/kyle/33kyk008.mp3" ); } dowait ( "kyleline 3" ); signal ( "padawanline 2 follow kyleline 3" ); waitsignal ( "kyleline 4 follow padawanline 2" ); task ( "kyleline 4" ) { print ( "Don't worry!" ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/kyle/33kyk005.mp3" ); } dowait ( "kyleline 4" ); signal ( "jadenline 4 follow kyleline 4" ); waitsignal ( "kyleline 5 follow padawanline 3" ); task ( "kyleline 5" ) { print ( "All right. Let's get started." ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/kyle/33kyk006.mp3" ); } dowait ( "kyleline 5" ); wait ( 1000.000 ); task ( "kyleline 6" ) { print ( "Ready?" ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/kyle/33kyk007.mp3" ); } dowait ( "kyleline 6" ); signal ( "padawanline 4 follow kyleline 6" ); } Link to comment
Noodle Posted April 1, 2018 Share Posted April 1, 2018 Shouldn't affect ( "outro_fakeplayer", FLUSH ) be inside affect ( "npc_jaden", FLUSH ) and affect ( "npc_kyle_outro", FLUSH ) be inside outro_fakeplayer? MagSul likes this Link to comment
Langerd Posted April 1, 2018 Share Posted April 1, 2018 Problem: I put together a short cutscene for the end of a level. This is purely dialog at this point aside from the opening camera movement, no look_targets or animations or anything. I thought I'd sorted out the sequence, but apparently not. After Jaden's first line of dialog everything stops. I've checked the npc_targetnames and all 3 are correct; they're also checked as "cinematic" in GTKRadiant. After a minor scare, all dialog files are accounted for and filepathed correctly. I'm really unsure what's preventing this from working. Hopefully, this will all make sense to me when I wake up fresh-faced! But in case it doesn't, I would really appreciate some support. Thanks. //(BHVD) remove ( "player" ); camera ( /*@CAMERA_COMMANDS*/ ENABLE ); camera ( /*@CAMERA_COMMANDS*/ MOVE, $tag( "outrocam1", ORIGIN)$, 0 ); camera ( /*@CAMERA_COMMANDS*/ PAN, $tag( "outrocam1", ANGLES)$, < 0.000 0.000 0.000 >, 0 ); camera ( /*@CAMERA_COMMANDS*/ FADE, < 0.000 0.000 0.000 >, 1, < 0.000 0.000 0.000 >, 0, 1000 ); camera ( /*@CAMERA_COMMANDS*/ MOVE, $tag( "outrocam2", ORIGIN)$, 10000 ); camera ( /*@CAMERA_COMMANDS*/ PAN, $tag( "outrocam2", ANGLES)$, < 0.000 0.000 0.000 >, 10000 ); affect ( "npc_jaden", FLUSH ) { task ( "jadenline 1" ) { print ( "Never heard of it." ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/knight/32kni004.mp3" ); } dowait ( "jadenline 1" ); signal ( "kyleline 1 follow jadenline 1" ); waitsignal ( "jadenline 2 follow kyleline 1" ); task ( "jadenline 2" ) { print ( "Hm!" ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/knight/32kni005.mp3" ); } dowait ( "jadenline 2" ); signal ( "kyleline 2 follow jadenline 2" ); waitsignal ( "jadenline 3 follow padawanline 1" ); task ( "jadenline 3" ) { print ( "I've been waiting here forever." ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/knight/32kni002.mp3" ); } dowait ( "jadenline 3" ); signal ( "kyleline 3 follow jadenline 3" ); waitsignal ( "jadenline 4 follow kyleline 4" ); task ( "jadenline 4" ) { print ( "You seem really nervous." ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/jaden_male/01jak010.mp3" ); } dowait ( "jadenline 4" ); signal ( "padawanline 3 follow jadenline 4" ); } affect ( "outro_fakeplayer", FLUSH ) { waitsignal ( "padawanline 1 follow kyleline 2" ); task ( "padawanline 1" ) { print ( "Sir?" ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/jaden_fmle/19jak001.mp3" ); } dowait ( "padawanline 1" ); signal ( "jadenline 3 follow padawanline 1" ); waitsignal ( "padawanline 2 follow kyleline 3" ); task ( "padawanline 2" ) { print ( "Well, I-" ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/jaden_fmle/03jak001.mp3" ); } dowait ( "padawanline 2" ); signal ( "kyleline 4 follow padawanline 2" ); waitsignal ( "padawanline 3 follow jadenline 4" ); task ( "padawanline 3" ) { print ( "Yeah, I'm okay." ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/jaden_fmle/01jak010.mp3" ); } dowait ( "padawanline 3" ); signal ( "kyleline 5 follow padawanline 3" ); waitsignal ( "padawanline 4 follow kyleline 6" ); task ( "padawanline 4" ) { print ( "Ready as I'll ever be!" ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/jaden_fmle/21jak002.mp3" ); } dowait ( "padawanline 4" ); } affect ( "npc_kyle_outro", FLUSH ) { waitsignal ( "kyleline 1 follow jadenline 1" ); task ( "kyleline 1" ) { print ( "It's not exactly a vacation spot." ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/kyle/33kyk003.mp3" ); } dowait ( "kyleline 1" ); signal ( "jadenline 2 follow kyleline 1" ); waitsignal ( "kyleline 2 follow jadenline 2" ); task ( "kyleline 2" ) { print ( "I was starting to get worried." ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/kyle/33kyk004.mp3" ); } dowait ( "kyleline 2" ); signal ( "padawanline 1 follow kyleline 2" ); waitsignal ( "kyleline 3 follow jadenline 3" ); task ( "kyleline 3" ) { print ( "Yeah." ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/kyle/33kyk008.mp3" ); } dowait ( "kyleline 3" ); signal ( "padawanline 2 follow kyleline 3" ); waitsignal ( "kyleline 4 follow padawanline 2" ); task ( "kyleline 4" ) { print ( "Don't worry!" ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/kyle/33kyk005.mp3" ); } dowait ( "kyleline 4" ); signal ( "jadenline 4 follow kyleline 4" ); waitsignal ( "kyleline 5 follow padawanline 3" ); task ( "kyleline 5" ) { print ( "All right. Let's get started." ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/kyle/33kyk006.mp3" ); } dowait ( "kyleline 5" ); wait ( 1000.000 ); task ( "kyleline 6" ) { print ( "Ready?" ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/kyle/33kyk007.mp3" ); } dowait ( "kyleline 6" ); signal ( "padawanline 4 follow kyleline 6" ); } Hmm i may be wrong but jadenline<space>1 kyleline<space>1 Maybe space in the names are creating the issue. Sometimes space in the cvars doesnt work well . Name them withou spaces. MagSul likes this Link to comment
MagSul Posted April 2, 2018 Author Share Posted April 2, 2018 I gave both suggestions a go, but the result is still the same. Both changes are still implemented: outro_fakeplayer is now inside npc_jaden and npc_outro_kyle is inside of outro_fakeplayer as suggested by @@Noodle and the names have been shortened to take out some of the spaces as mentioned by @@Langerd. The game console is not being very helpful with noting anything either. It's still just Jaden's first line of dialog and then nothing. //(BHVD) remove ( "player" ); camera ( /*@CAMERA_COMMANDS*/ ENABLE ); camera ( /*@CAMERA_COMMANDS*/ MOVE, $tag( "outrocam1", ORIGIN)$, 0 ); camera ( /*@CAMERA_COMMANDS*/ PAN, $tag( "outrocam1", ANGLES)$, < 0.000 0.000 0.000 >, 0 ); camera ( /*@CAMERA_COMMANDS*/ FADE, < 0.000 0.000 0.000 >, 1, < 0.000 0.000 0.000 >, 0, 1000 ); camera ( /*@CAMERA_COMMANDS*/ MOVE, $tag( "outrocam2", ORIGIN)$, 10000 ); camera ( /*@CAMERA_COMMANDS*/ PAN, $tag( "outrocam2", ANGLES)$, < 0.000 0.000 0.000 >, 10000 ); affect ( "npc_jaden", FLUSH ) { task ( "jadenline1" ) { print ( "Never heard of it." ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/knight/32kni004.mp3" ); } dowait ( "jadenline1" ); signal ( "kyleline1 follow jadenline1" ); waitsignal ( "jadenline2 follow kyleline1" ); task ( "jadenline2" ) { print ( "Hm!" ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/knight/32kni005.mp3" ); } dowait ( "jadenline2" ); signal ( "kyleline2 follow jadenline2" ); waitsignal ( "jadenline3 follow padawanline1" ); task ( "jadenline3" ) { print ( "I've been waiting here forever." ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/knight/32kni002.mp3" ); } dowait ( "jadenline3" ); signal ( "kyleline3 follow jadenline3" ); waitsignal ( "jadenline4 follow kyleline4" ); task ( "jadenline4" ) { print ( "You seem really nervous." ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/jaden_male/01jak010.mp3" ); } dowait ( "jadenline4" ); signal ( "padawanline3 follow jadenline4" ); affect ( "outro_fakeplayer", FLUSH ) { waitsignal ( "padawanline1 follow kyleline2" ); task ( "padawanline1" ) { print ( "Sir?" ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/jaden_fmle/19jak001.mp3" ); } dowait ( "padawanline1" ); signal ( "jadenline3 follow padawanline1" ); waitsignal ( "padawanline2 follow kyleline3" ); task ( "padawanline2" ) { print ( "Well, I-" ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/jaden_fmle/03jak001.mp3" ); } dowait ( "padawanline2" ); signal ( "kyleline4 follow padawanline2" ); waitsignal ( "padawanline3 follow jadenline4" ); task ( "padawanline3" ) { print ( "Yeah, I'm okay." ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/jaden_fmle/01jak010.mp3" ); } dowait ( "padawanline3" ); signal ( "kyleline5 follow padawanline3" ); waitsignal ( "padawanline4 follow kyleline6" ); task ( "padawanline4" ) { print ( "Ready as I'll ever be!" ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/jaden_fmle/21jak002.mp3" ); } dowait ( "padawanline4" ); affect ( "npc_kyle_outro", FLUSH ) { waitsignal ( "kyleline1 follow jadenline1" ); task ( "kyleline1" ) { print ( "It's not exactly a vacation spot." ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/kyle/33kyk003.mp3" ); } dowait ( "kyleline1" ); signal ( "jadenline2 follow kyleline1" ); waitsignal ( "kyleline2 follow jadenline2" ); task ( "kyleline2" ) { print ( "I was starting to get worried." ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/kyle/33kyk004.mp3" ); } dowait ( "kyleline2" ); signal ( "padawanline1 follow kyleline2" ); waitsignal ( "kyleline3 follow jadenline3" ); task ( "kyleline3" ) { print ( "Yeah." ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/kyle/33kyk008.mp3" ); } dowait ( "kyleline3" ); signal ( "padawanline2 follow kyleline3" ); waitsignal ( "kyleline4 follow padawanline2" ); task ( "kyleline4" ) { print ( "Don't worry!" ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/kyle/33kyk005.mp3" ); } dowait ( "kyleline4" ); signal ( "jadenline4 follow kyleline4" ); waitsignal ( "kyleline5 follow padawanline3" ); task ( "kyleline5" ) { print ( "All right. Let's get started." ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/kyle/33kyk006.mp3" ); } dowait ( "kyleline5" ); wait ( 1000.000 ); task ( "kyleline6" ) { print ( "Ready?" ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/kyle/33kyk007.mp3" ); } dowait ( "kyleline6" ); signal ( "padawanline4 follow kyleline6" ); } } } Link to comment
MagSul Posted April 2, 2018 Author Share Posted April 2, 2018 Progress has been made! Link to comment
Noodle Posted April 2, 2018 Share Posted April 2, 2018 Progress has been made! But how! Link to comment
MagSul Posted April 2, 2018 Author Share Posted April 2, 2018 Moving the outrocam2 commands into NPC_Jaden bracket allowed everything to function. When it played all the way through I also noticed a few dialog errors which've now been fixed. x_x The current problem is trying to work out how they manage to perfectly time animations. Example scenario: Jaden stands still in BOTH_STAND10. I then place //(BHVD) set ( /*@SET_TYPES*/ "SET_ANIM_BOTH", /*@ANIM_NAMES*/ "BOTH_STAND10_TALK1" ); in with the same task, it winds up with the animation finishing before the dialog is over and Jaden reverts to standing upright for a split second before the script tells him to go back to STAND_10. If anyone has any tips on getting animations to flow smoothly, that'd be great. Would allow more variety in stances! Anyway, I then tried it a different way on Kyle: //(BHVD) task ( "kylespeak" ) { set ( /*@SET_TYPES*/ "SET_ANIM_BOTH", /*@ANIM_NAMES*/ "BOTH_STAND1_TALK3" ); } task ( "kyleline1" ) { print ( "It's not exactly a vacation spot." ); sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/kyle/33kyk003.mp3" ); } do ( "kylespeak" ); dowait ( "kyleline1" ); This doesn't quite cut it either. So looking at T1_Inter as a working example: //(BHVD) task ( "talk1" ) { set ( /*@SET_TYPES*/ "SET_ANIM_BOTH", /*@ANIM_NAMES*/ "BOTH_STAND10_TALK1" ); } task ( "talk2" ) { set ( /*@SET_TYPES*/ "SET_ANIM_BOTH", /*@ANIM_NAMES*/ "BOTH_STAND10_TALK2" ); } task ( "training" ) { sound ( /*@CHANNELS*/ CHAN_VOICE_GLOBAL, "sound/chars/rosh/03rop001.mp3" ); } do ( "training" ); wait ( 1800.000 ); dowait ( "talk1" ); set ( /*@SET_TYPES*/ "SET_ANIM_BOTH", /*@ANIM_NAMES*/ "BOTH_STAND10" ); set ( /*@SET_TYPES*/ "SET_ANIM_HOLDTIME_BOTH", -1 ); I notice that they have a wait key timed to 1800.000. How are they measuring these things and how can I do it? >_ Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now