Facebook Twitter YouTube Frictional Games | Forum | Privacy Policy | Dev Blog | Dev Wiki | Support | Gametee


Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Activating a script area
ApeCake Offline
Member

Posts: 116
Threads: 20
Joined: Jun 2012
Reputation: 4
#1
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
Find
MaZiCUT Offline
Senior Member

Posts: 536
Threads: 31
Joined: Jun 2012
Reputation: 17
#2
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
Website Find
Cruzore Offline
Senior Member

Posts: 301
Threads: 2
Joined: Jun 2012
Reputation: 37
#3
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
Find
ApeCake Offline
Member

Posts: 116
Threads: 20
Joined: Jun 2012
Reputation: 4
#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
Find
Adny Offline
Posting Freak

Posts: 1,766
Threads: 6
Joined: Mar 2012
Reputation: 173
#5
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 Tongue)

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
Find
Cruzore Offline
Senior Member

Posts: 301
Threads: 2
Joined: Jun 2012
Reputation: 37
#6
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
Find
ApeCake Offline
Member

Posts: 116
Threads: 20
Joined: Jun 2012
Reputation: 4
#7
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 Tongue)

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! Tongue
(This post was last modified: 06-21-2012, 05:18 PM by ApeCake.)
06-21-2012, 05:17 PM
Find
Cruzore Offline
Senior Member

Posts: 301
Threads: 2
Joined: Jun 2012
Reputation: 37
#8
RE: Activating a script area

Or maybe i'm wrong, i hate that type of callback Smile Just try it out, maybe it works
06-21-2012, 05:20 PM
Find
Adny Offline
Posting Freak

Posts: 1,766
Threads: 6
Joined: Mar 2012
Reputation: 173
#9
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
Find
ApeCake Offline
Member

Posts: 116
Threads: 20
Joined: Jun 2012
Reputation: 4
#10
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
Find




Users browsing this thread: 2 Guest(s)