| 
		
	
		| ApeCake   Member
 
 Posts: 116
 Threads: 20
 Joined: Jun 2012
 Reputation: 
4
 | 
			| Activating a script area 
 
				Hello again. So I thought about something very simple, a script area that activates upon a key pickup. When I walk into the script area nothing happens, but after I picked up the key and walk in it it does something (in this case push the player back) (I had in mind delete the script area after one use). However, after I picked up the key and walked in the area nothing happened. Here's my script. The script area is called "pusharea" and the key "tocarnellroomkey". The area is not active in the beginning obviously.
 
 
 void OnStart()
 
 {
 AddEntityCollideCallback("Player", "pusharea", "Push", false, 1);
 SetEntityCallbackFunc("tocarnellroomkey", "OnPickupKey");
 }
 
 
 //The push script
 void Push(string &in asParent, string &in asChild, int alState)
 {
 PlaySoundAtEntity("", "react_pant.snt", "push", 0, false);
 AddPlayerBodyForce(0, 0, -2000, false);
 }
 
 //The setting-the-area-active script
 void OnPickupKey(string &in asEntity, string &in type)
 {
 SetEntityActive("pusharea", true);
 PlaySoundAtEntity("", "scare_male_terrified5.snt", "randomatticdoor", 2, false);
 }
 
 So my guess is that SetEntityActive doesn't work on script areas? Can anyone improve this or knows what I did wrong? Thanks in advance.
 
 EDIT: If I do the code in a code window, it gets messed up.
 
				
(This post was last modified: 06-22-2012, 08:31 PM by ApeCake.)
 |  |  
	| 06-21-2012, 04:58 PM |  |  
	
		| MaZiCUT   Senior Member
 
 Posts: 536
 Threads: 31
 Joined: Jun 2012
 Reputation: 
17
 | 
			| RE: Activating a script area 
 
				 (06-21-2012, 04:58 PM)ApeCake Wrote:  Hello again. So I thought about something very simple, a script area that activates upon a key pickup. When I walk into the script area nothing happens, but after I picked up the key and walk in it it does something (in this case push the player back) (I had in mind delete the script area after one use). However, after I picked up the key and walked in the area nothing happened. Here's my script. The script area is called "pusharea" and the key "tocarnellroomkey". The area is not active in the beginning obviously.
 
 
 void OnStart()
 
 {
 AddEntityCollideCallback("Player", "pusharea", "Push", false, 1);
 SetEntityCallbackFunc("tocarnellroomkey", "OnPickupKey");
 }
 
 
 //The push script
 void Push(string &in asParent, string &in asChild, int alState)
 {
 PlaySoundAtEntity("", "react_pant.snt", "push", 0, false);
 AddPlayerBodyForce(0, 0, -2000, false);
 }
 
 //The setting-the-area-active script
 void OnPickupKey(string &in asEntity, string &in type)
 {
 SetEntityActive("pusharea", true);
 PlaySoundAtEntity("", "scare_male_terrified5.snt", "randomatticdoor", 2, false);
 }
 
 So my guess is that SetEntityActive doesn't work on script areas? Can anyone improve this or knows what I did wrong? Thanks in advance.
 
 EDIT: If I do the code in a code window, it gets messed up.
 SetEntityActive works on script areas, i don't really understand what you are trying to achieve but i guess you want a script area to be set to true/false when you collide with another script area?
			 
 Hi. |  |  
	| 06-21-2012, 05:04 PM |  |  
	
		| Cruzore   Senior Member
 
 Posts: 301
 Threads: 2
 Joined: Jun 2012
 Reputation: 
37
 | 
			| RE: Activating a script area 
 
				replace AddEntityCollideCallback("Player", "pusharea", "Push", false, 1);to under the OnPickupKey function, and it should work.
 
 Edit: and delete the setentityactive for this one, and set it active in the level editor
 
				
(This post was last modified: 06-21-2012, 05:05 PM by Cruzore.)
 |  |  
	| 06-21-2012, 05:04 PM |  |  
	
		| ApeCake   Member
 
 Posts: 116
 Threads: 20
 Joined: Jun 2012
 Reputation: 
4
 | 
			| RE: Activating a script area 
 
				 (06-21-2012, 05:04 PM)CrazyArts Wrote:  SetEntityActive works on script areas, i don't really understand what you are trying to achieve but i guess you want a script area to be set to true/false when you collide with another script area? Close, I want the script area to be true when a key is picked up.
			 |  |  
	| 06-21-2012, 05:05 PM |  |  
	
		| Adny   Posting Freak
 
 Posts: 1,766
 Threads: 6
 Joined: Mar 2012
 Reputation: 
173
 | 
			| RE: Activating a script area 
 
				Yes, script areas can in fact be set active/inactive. Quick question though, when "OnPickupKey" is called, does the PlaySoundAtEntity work? If the sound doesn't play, then what I'm about to show you will most likely work; if it does play and the script area doesn't activate, it is a spelling error you made (it's hard to tell because I can't see your level editor   )
 
Anyways, try replacing the "OnPickupKey" function with this:
 
void OnPickupKey(string &in asEntity, string &in asType) 
{ 
	if(asType == "OnPickup") //I'm pretty sure this is what needs to be specified for this function 
	{ 
	SetEntityActive("pusharea", true); 
	PlaySoundAtEntity("", "scare_male_terrified5.snt", "randomatticdoor", 2, false); 
	} 
}
			
 I rate it 3 memes. |  |  
	| 06-21-2012, 05:09 PM |  |  
	
		| Cruzore   Senior Member
 
 Posts: 301
 Threads: 2
 Joined: Jun 2012
 Reputation: 
37
 | 
			| RE: Activating a script area 
 
				Nevermind, the real problem is:the function has to be called OnPickup. So it's SetEntityCallbackFunc("tocarnellroomkey", "OnPickup");
 and void OnPickup(string &in asEntity, string &in asType)
 also, like andyrockin123 said, you have to use a if:
 if(asEntity == "tocarnellroomkey")
 {
 stuff
 }
 |  |  
	| 06-21-2012, 05:17 PM |  |  
	
		| ApeCake   Member
 
 Posts: 116
 Threads: 20
 Joined: Jun 2012
 Reputation: 
4
 | 
			| RE: Activating a script area 
 
				 (06-21-2012, 05:09 PM)andyrockin123 Wrote:  Yes, script areas can in fact be set active/inactive. Quick question though, when "OnPickupKey" is called, does the PlaySoundAtEntity work? If the sound doesn't play, then what I'm about to show you will most likely work; if it does play and the script area doesn't activate, it is a spelling error you made (it's hard to tell because I can't see your level editor  ) 
 Anyways, try replacing the "OnPickupKey" function with this:
 
 void OnPickupKey(string &in asEntity, string &in asType)
 {
 if(asType == "OnPickup") //I'm pretty sure this is what needs to be specified for this function
 {
 SetEntityActive("pusharea", true);
 PlaySoundAtEntity("", "scare_male_terrified5.snt", "randomatticdoor", 2, false);
 }
 }
 Thank you, however the sound actually did play before.
And FasthunteR, it didn't work unfortunately 
 
Let me try out your new one... you guys are posting solutions too fast!    
				
(This post was last modified: 06-21-2012, 05:18 PM by ApeCake.)
 |  |  
	| 06-21-2012, 05:17 PM |  |  
	
		| Cruzore   Senior Member
 
 Posts: 301
 Threads: 2
 Joined: Jun 2012
 Reputation: 
37
 | 
			| RE: Activating a script area 
 
				Or maybe i'm wrong, i hate that type of callback    Just try it out, maybe it works
			 |  |  
	| 06-21-2012, 05:20 PM |  |  
	
		| Adny   Posting Freak
 
 Posts: 1,766
 Threads: 6
 Joined: Mar 2012
 Reputation: 
173
 | 
			| RE: Activating a script area 
 
				An alternative that I see is vastly underused is using the level editor to reduce such scripting complications; if you select any (interactable) entity, in the 2nd tab there is a box labeled "PlayerInteractCallback", just type in the name of your function, and use the syntax:"string &in asEntity"
 
 So the OP can select his key in the editor, type in OnPickupKey for the function then write:
 
 void OnPickupKey(string &in asEntity)
 {
 
 SetEntityActive("pusharea", true);
 PlaySoundAtEntity("", "scare_male_terrified5.snt", "randomatticdoor", 2, false);
 }
 
 
 Just something I thought I'd share since I don't see it used too often, and it's pretty useful for reducing script clutter.
 
 I rate it 3 memes. |  |  
	| 06-21-2012, 05:23 PM |  |  
	
		| ApeCake   Member
 
 Posts: 116
 Threads: 20
 Joined: Jun 2012
 Reputation: 
4
 | 
			| RE: Activating a script area 
 
				 (06-21-2012, 05:23 PM)andyrockin123 Wrote:  An alternative that I see is vastly underused is using the level editor to reduce such scripting complications; if you select any (interactable) entity, in the 2nd tab there is a box labeled "PlayerInteractCallback", just type in the name of your function, and use the syntax:"string &in asEntity"
 
 So the OP can select his key in the editor, type in OnPickupKey for the function then write:
 
 void OnPickupKey(string &in asEntity)
 {
 
 SetEntityActive("pusharea", true);
 PlaySoundAtEntity("", "scare_male_terrified5.snt", "randomatticdoor", 2, false);
 }
 
 
 Just something I thought I'd share since I don't see it used too often, and it's pretty useful for reducing script clutter.
 Doesn't seem to be working ;_; I have no idea what to do now. I must've made a stupid mistake somewhere or something, however there are no errors...
			 |  |  
	| 06-21-2012, 05:33 PM |  |  |