Jump to content

Cutscene Trouble


Recommended Posts

Posted

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" );
}

 

 

Posted

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
Posted

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
Posted

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" );
		}

	}

}

 

 

 

Posted

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? >_

 

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...