| 
		
	
		| goodcap   Member
 
 Posts: 193
 Threads: 112
 Joined: Jun 2012
 Reputation: 
3
 | 
			| Light scripting 
 
				Hello,
 what I want is that you push a button and then a light turns on and you hear a voice. And after the voice is done talking the light turns off again. How do I do this?
 |  |  
	| 07-11-2014, 04:35 PM |  |  
	
		| Rapture   Posting Freak
 
 Posts: 1,078
 Threads: 79
 Joined: May 2011
 Reputation: 
30
 |  |  
	| 07-11-2014, 05:23 PM |  |  
	
		| goodcap   Member
 
 Posts: 193
 Threads: 112
 Joined: Jun 2012
 Reputation: 
3
 | 
			| RE: Light scripting 
 
				I have. But i can't find the func that disables a light after the voice is done
			 |  |  
	| 07-11-2014, 06:01 PM |  |  
	
		| Daemian   Posting Freak
 
 Posts: 1,129
 Threads: 42
 Joined: Dec 2012
 Reputation: 
49
 | 
			| RE: Light scripting 
 
				SetLightVisible( light_name, true/false );
If the light it's an entity, use SetEntityActive( entity_name, true/false ); 
If you want the light to turn off after a sound it's over, calculate the time and use a timer, for a 10 seconds delay use this:
AddTimer ( "light_name", 10, "TurnOffLight" ); 
This is the function the timer should call to turn off void TurnOffLight ( string &in light ){ SetLightVisible( light, false ); }
 
If you're using AddEffectVoice  you can use SetEffectVoiceOverCallback  to set a function after the voice is over.
			 
 
				
(This post was last modified: 07-11-2014, 06:30 PM by Daemian.)
 |  |  
	| 07-11-2014, 06:28 PM |  |  
	
		| goodcap   Member
 
 Posts: 193
 Threads: 112
 Joined: Jun 2012
 Reputation: 
3
 | 
			| RE: Light scripting 
 
				 (07-11-2014, 06:28 PM)Amn Wrote:  SetLightVisible( light_name, true/false );
 If the light it's an entity, use SetEntityActive( entity_name, true/false );
 
 If you want the light to turn off after a sound it's over, calculate the time and use a timer, for a 10 seconds delay use this:
 AddTimer ( "light_name", 10, "TurnOffLight" );
 
 This is the function the timer should call to turn off
 void TurnOffLight ( string &in light ){ SetLightVisible( light, false ); }
If you're using AddEffectVoice you can use SetEffectVoiceOverCallback to set a function after the voice is over.
 
I tried the script without the voice. This is my script:
 
void OnStart() 
{   
SetEntityCallbackFunc("knop", "PlayVoice"); 
}
 
void PlayVoice(string &in asEntity, int alState)  
{  
SetLightVisible( "roomlight", true ); 
AddTimer ( "roomlight", 10, "TurnOffLight" ); 
{  
void TurnOffLight ( string &in light ) 
{ 
 SetLightVisible( "roomlight", false );  
} 
}
 
------------------------
 
It tells me: ''unexpected end of file'' when I test the level. What did I do wrong?
			 |  |  
	| 07-11-2014, 06:41 PM |  |  
	
		| Daemian   Posting Freak
 
 Posts: 1,129
 Threads: 42
 Joined: Dec 2012
 Reputation: 
49
 | 
			| RE: Light scripting 
 
				Extra } at the end.
			 
 |  |  
	| 07-11-2014, 06:49 PM |  |  
	
		| goodcap   Member
 
 Posts: 193
 Threads: 112
 Joined: Jun 2012
 Reputation: 
3
 | 
			| RE: Light scripting 
 
				 (07-11-2014, 06:49 PM)Amn Wrote:  Extra } at the end. 
I did that, now it says:  Expected {
			 |  |  
	| 07-11-2014, 06:50 PM |  |  
	
		| Daemian   Posting Freak
 
 Posts: 1,129
 Threads: 42
 Joined: Dec 2012
 Reputation: 
49
 | 
			| RE: Light scripting 
 
				And you can remove the light name in the arguments if you're not going to use it. 
See, this timer AddTimer ( "roomlight", 10, "TurnOffLight" ); 
Is giving the name of your light (roomlight) to the function it's going to call (TurnOffLight function)
 
Below, the function TurnOffLight , it has the name of your light in a variable named light . You can refer to that instead of typing in the name of the light.
void TurnOffLight ( string &in light ) { SetLightVisible( light, false );
 
But whatever. As long as it works, it's ok.
 
 
You can copy&paste this
 void OnStart(){
 SetEntityCallbackFunc("knop", "PlayVoice");
 }
 
 void PlayVoice(string &in asEntity, int alState)
 {
 SetLightVisible( "roomlight", true );
 AddTimer ( "roomlight", 10, "TurnOffLight" );
 }
 
 void TurnOffLight ( string &in light )
 {
 SetLightVisible( light, false );
 }
 
				
(This post was last modified: 07-11-2014, 07:05 PM by Daemian.)
 |  |  
	| 07-11-2014, 06:59 PM |  |  |