Just create one ScriptArea and place it in front of the door, whenever you want him to look at the door
Then use:
void OnStart()
{
AddEntityCollideCallback("Player", "ScriptArea_x", "LookAndVoice", true, 1);
SetEntityPlayerInteractCallback("doorname", "CellActivity", false);
}
void LookAndVoice(string &in asParent, string &in asChild, int alState)
{
StartPlayerLookAt("doorname", 3.0, 3.0, "");
PlaySoundAtEntity("", "voice you wanna play", "doorname", 0, false);
AddTimer("", 1.5, "StopLook");
}
void StopLook(string&in asTimer)
{
StopPlayerLookAt();
}
void CellActivity(string &in asEntity)
{
PlayGuiSound("name of scream sound file", 1.0f);
SetLightVisible("name of light", false);
AddPlayerBodyForce("amount of force on X-axis", "Force on Y-axis", "Force on Z-axis", true); //Test your way on this one as I'm not sure which axis it will be (You need values over 2000 to get any effect
SetSwingDoorLocked("doorname", true, true);
PlaySoundAtEntity("", "break_wood", "doorname", 0, false); //This one is if you wanna have a extra sound of the door really slamming shut, and depending on the door type you might wanna change the break_wood one
GiveSanityDamage(25, true); //Incase you wanna give him sanity damage, completely optional, but preferably since it would scare a normal person
}
All stuff behind // can be removed if you think it gets to messy, just put em there if you wanna copy the script, so nothing gets messed up