Frictional Games Forum (read-only)

Full Version: Self Opening/Closing Doors
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi there, sorry for asking so many questions, but I really need to lol. Anyways, what I'm trying to do is make a door that will open upon entering a scripting area. Also, I was hoping to make another door that would close upon entering the room. Here's what I have so far for my script. However, it doesn't seem to work. I have the door open amount set to 1.

PHP Code:
void OnStart()
{
    
AddEntityCollideCallback("Player""dooropen""DoorFunction"true1); 
}
void OnEnter()
{
    
PlayMusic("06_amb"true0.91.01true);
}
void DoorFunction(string &in asParentstring &in asChildint alState)
{
    
SetMoveObjectStateExt("castle_1"051010false);
    
PlaySoundAtEntity("""react_breath_slow.snt""Player"0false);
    
PlaySoundAtEntity("""react_scare""Player"0false);
    
PlaySoundAtEntity("""close_door.snt""Player"0false);
    
GiveSanityDamage(5.0ftrue);

[/php]
This may help.

(06-13-2012, 01:39 PM)GrAVit Wrote: [ -> ]There are multiple ways of doing that, but probably the most convinient one would be to use the Area tool in the level editor. Place an area near the door where you would want the script to active, which would make the door open itself.
Then you need to add the script, first you need to add a callback function like this for example:
Code:
void OnStart()
{
AddEntityCollideCallback("Player","THEAREANAMEYOUCREATEDINLEVELEDITOR","YOURFUNCTIONNAME",true,1);
}
YOURFUNCTIONNAME is the function that will be called when you enter the area. You can name it whatever you want.
Then the function, this is an example, it works if the door is unlocked.
Code:
void YOURFUNCTIONNAME(string &in asParent, string &in asChild, int alState)
{
SetSwingDoorDisableAutoClose("YOURDOORNAMEHERE", true);
AddPropForce("YOURDOORNAMEHERE",x,y,z,"world");
}
The x,y,z here means which way the propforce is coming from, which will force the door open. So you will replace x,y,z, with numbers, example: 0,0,-4000, You also need to add a considerable amount of propforce in order to open it, for example, 4000 or 5000. The negative amount here does not matter since it only describes which way the force is coming from. I hope this helped.
You may also add a sound effect when the door slams, and a particle effect as well.

Try reading through that, and if you don't understand something, just point it out and I'll let you know Big Grin

With the closing door though, there's a pretty simple code for that:

PHP Code:
SetSwingDoorClosed("door_name"truetrue); 

And that would go within the callback code (so where the (string &in asParent, string &in asChild...) goes), changing "door_name" to the name of your door, keeping the quotes!
I made a video tutorial on this exact topic. Perhaps it will help you if you prefer going a bit slower through it.