====== Scary events ======
Today I (xtron) will show you! (the reader) how to make scary events that will yea…scare the player!.
===== The door slam =====
==== The Door. ====
we will startoff this tutorial with the basic door slam!.
Start with adding a door.
Go to entities > Door > Choose a door that you want to slam. Change the name of it.
Now when you got the door added you need to change the open ammount.
Click on the door > Entity > Look for "OpenAmount" and change it to 1. 1 is just a recommendation you can choose anything really.
Now you're done with the door. Let's get going to the Script Area.
==== The Script Area. ====
Press on Area (8) > Script and make an area infront of the door like so:
[[http://img705.imageshack.us/img705/4039/doorslam.png|img705.imageshack.us/img705/4039/doorslam.png]]
When you're done with that you need to change it's name, pick anything just remember it.
Now we're done with the Script Area, let's get going to the actuall scripting.
==== The Script ====
First off we will be needing to add an EntityCollideCallBack to the void OnStart()
AddEntityCollideCallback("Player", "script_slam", "func_slam", true, 1);
When you're done adding that we will need to start working on the function.
First function we're gonna add is the actuall slam!.
void func_slam(string &in asParent, string &in asChild, int alState)
{
SetSwingDoorClosed("door1", true, true);
}
That was the first function of a couple.
After the slam we want some sanity increase and maybe one or two sounds! (three actually).
void func_move_box1(string &in asParent, string &in asChild, int alState)
{
SetSwingDoorClosed("door1", true, true);
PlaySoundAtEntity("", "react_breath_slow.snt", "Player", 0, false);
PlaySoundAtEntity("", "react_scare", "Player", 0, false);
PlaySoundAtEntity("", "close_door.snt", "Player", 0, false);
GiveSanityDamage(5.0f, true);
}
Now we got the door slam setup. The result of this one should look like this
void OnStart()
{
AddEntityCollideCallback("Player", "script_slam", "func_slam", true, 1);
}
void func_slam(string &in asParent, string &in asChild, int alState)
{
SetSwingDoorClosed("door2", true, true);
PlaySoundAtEntity("", "react_breath_slow.snt", "Player", 0, false);
PlaySoundAtEntity("", "react_scare", "Player", 0, false); PlaySoundAtEntity("", "close_door.snt", "Player", 0, false);
GiveSanityDamage(5.0f, true);
}
===== The exploding door =====
The exploding door! My favorite!.
It's almost like the slaming door but with a few modifications.
==== The Door ====
You will need to go to the level editor:
Click on the door > Entity > Change OpenAmount to 0. So it's closed.
==== The Script ====
We will be using the same function as the door slam so copy&paste it.
void func_slam(string &in asParent, string &in asChild, int alState)
{
SetSwingDoorClosed("door2", true, true);
PlaySoundAtEntity("", "react_breath_slow.snt", "Player", 0, false);
PlaySoundAtEntity("", "react_scare", "Player", 0, false);
PlaySoundAtEntity("", "close_door.snt", "Player", 0, false);
GiveSanityDamage(5.0f, true);
}
What you now want to do is replace the SetSwingDoorClose with
SetPropHealth("door1", 0.0f);
So it looks like this
void func_slam(string &in asParent, string &in asChild, int alState)
{
SetPropHealth("door1", 0.0f);
PlaySoundAtEntity("", "react_breath_slow.snt", "Player", 0, false);
PlaySoundAtEntity("", "react_scare", "Player", 0, false);
PlaySoundAtEntity("", "close_door.snt", "Player", 0, false);
GiveSanityDamage(5.0f, true);
}
Then we need to change the void OnStart abit.
Replace
SetEntityPlayerInteractCallback("door1", "func_slam", true);
And replace
void func_slam(string &in asParent, string &in asChild, int alState)
with
void func_slam(string &in asEntity)
Now we're done with the Exploding door!. The result should look something like this:
void OnStart()
{
SetEntityPlayerInteractCallback("door1", "func_slam", true);
}
void func_slam(string &in asParent, string &in asChild, int alState)
{
SetPropHealth("door1", 0.0f);
PlaySoundAtEntity("", "react_breath_slow.snt", "Player", 0, false);
PlaySoundAtEntity("", "react_scare", "Player", 0, false);
PlaySoundAtEntity("", "close_door.snt", "Player", 0, false);
GiveSanityDamage(5.0f, true);
}
This is how you create some door events.
I hope you find this usefull. If you got any questions or requests on tutorials please send me a PM on the forum.
Thanks for reading.
//\\ //
//tutorial by xtron//