MagSul Posted April 1, 2018 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" ); }
Noodle Posted April 1, 2018 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
Langerd Posted April 1, 2018 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
MagSul Posted April 2, 2018 Author 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" ); } } }
MagSul Posted April 2, 2018 Author 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? >_
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