skip to content
Frictional Game Wiki
User Tools
Register
Log In
Site Tools
Search
Tools
Show page
Old revisions
Backlinks
Recent Changes
Media Manager
Sitemap
Log In
Register
>
Recent Changes
Media Manager
Sitemap
Trace:
hpl2:tutorials:script:events
<h1>Scary events</h1> <div class="level1"> <p> Today I (xtron) will show you! (the reader) how to make scary events that will yea…scare the player!. </p> </div> <h2>The door slam</h2> <div class="level2"> </div> <h3>The Door.</h3> <div class="level3"> <p> we will startoff this tutorial with the basic door slam!. </p> <p> Start with adding a door. </p> <p> Go to entities > Door > Choose a door that you want to slam. Change the name of it. </p> <p> Now when you got the door added you need to change the open ammount. </p> <p> Click on the door > Entity > Look for "OpenAmount" and change it to 1. 1 is just a recommendation you can choose anything really. </p> <p> Now you're done with the door. Let's get going to the Script Area. </p> </div> <h3>The Script Area.</h3> <div class="level3"> <p> Press on Area (8) > Script and make an area infront of the door like so: </p> <p> <a href="http://img705.imageshack.us/img705/4039/doorslam.png" class="urlextern" title="http://img705.imageshack.us/img705/4039/doorslam.png" rel="nofollow">img705.imageshack.us/img705/4039/doorslam.png</a> </p> <p> When you're done with that you need to change it's name, pick anything just remember it. </p> <p> Now we're done with the Script Area, let's get going to the actuall scripting. </p> </div> <h3>The Script</h3> <div class="level3"> <p> First off we will be needing to add an EntityCollideCallBack to the void OnStart() </p> <pre class="code cpp">AddEntityCollideCallback<span class="br0">(</span>"Player", "script_slam", "func_slam", <span class="kw2">true</span>, <span class="nu0">1</span><span class="br0">)</span><span class="sy4">;</span> </pre><p> </p> <p> When you're done adding that we will need to start working on the function. </p> <p> First function we're gonna add is the actuall slam!. </p> <pre class="code cpp"><span class="kw4">void</span> func_slam<span class="br0">(</span>string <span class="sy3">&</span>in asParent, string <span class="sy3">&</span>in asChild, <span class="kw4">int</span> alState<span class="br0">)</span> <span class="br0">{</span> SetSwingDoorClosed<span class="br0">(</span>"door1", <span class="kw2">true</span>, <span class="kw2">true</span><span class="br0">)</span><span class="sy4">;</span> <span class="br0">}</span> </pre><p> </p> <p> That was the first function of a couple. </p> <p> After the slam we want some sanity increase and maybe one or two sounds! (three actually). </p> <p> void func_move_box1(string &in asParent, string &in asChild, int alState) </p> <pre class="code cpp"><span class="br0">{</span> SetSwingDoorClosed<span class="br0">(</span>"door1", <span class="kw2">true</span>, <span class="kw2">true</span><span class="br0">)</span><span class="sy4">;</span> PlaySoundAtEntity<span class="br0">(</span>"", "react_breath_slow.<span class="me1">snt"</span>, "Player", <span class="nu0">0</span>, <span class="kw2">false</span><span class="br0">)</span><span class="sy4">;</span> PlaySoundAtEntity<span class="br0">(</span>"", "react_scare", "Player", <span class="nu0">0</span>, <span class="kw2">false</span><span class="br0">)</span><span class="sy4">;</span> PlaySoundAtEntity<span class="br0">(</span>"", "close_door.<span class="me1">snt"</span>, "Player", <span class="nu0">0</span>, <span class="kw2">false</span><span class="br0">)</span><span class="sy4">;</span> GiveSanityDamage<span class="br0">(</span><span class="nu17">5.0f</span>, <span class="kw2">true</span><span class="br0">)</span><span class="sy4">;</span> <span class="br0">}</span> </pre><p> </p> <p> Now we got the door slam setup. The result of this one should look like this </p> <pre class="code cpp"><span class="kw4">void</span> OnStart<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span> AddEntityCollideCallback<span class="br0">(</span>"Player", "script_slam", "func_slam", <span class="kw2">true</span>, <span class="nu0">1</span><span class="br0">)</span><span class="sy4">;</span> <span class="br0">}</span> <span class="kw4">void</span> func_slam<span class="br0">(</span>string <span class="sy3">&</span>in asParent, string <span class="sy3">&</span>in asChild, <span class="kw4">int</span> alState<span class="br0">)</span> <span class="br0">{</span> SetSwingDoorClosed<span class="br0">(</span>"door2", <span class="kw2">true</span>, <span class="kw2">true</span><span class="br0">)</span><span class="sy4">;</span> PlaySoundAtEntity<span class="br0">(</span>"", "react_breath_slow.<span class="me1">snt"</span>, "Player", <span class="nu0">0</span>, <span class="kw2">false</span><span class="br0">)</span><span class="sy4">;</span> PlaySoundAtEntity<span class="br0">(</span>"", "react_scare", "Player", <span class="nu0">0</span>, <span class="kw2">false</span><span class="br0">)</span><span class="sy4">;</span> PlaySoundAtEntity<span class="br0">(</span>"", "close_door.<span class="me1">snt"</span>, "Player", <span class="nu0">0</span>, <span class="kw2">false</span><span class="br0">)</span><span class="sy4">;</span> GiveSanityDamage<span class="br0">(</span><span class="nu17">5.0f</span>, <span class="kw2">true</span><span class="br0">)</span><span class="sy4">;</span> <span class="br0">}</span> </pre><p> </p> </div> <h2>The exploding door</h2> <div class="level2"> <p> The exploding door! My favorite!. </p> <p> It's almost like the slaming door but with a few modifications. </p> </div> <h3>The Door</h3> <div class="level3"> <p> You will need to go to the level editor: </p> <p> Click on the door > Entity > Change OpenAmount to 0. So it's closed. </p> </div> <h3>The Script</h3> <div class="level3"> <p> We will be using the same function as the door slam so copy&paste it. </p> <pre class="code cpp"><span class="kw4">void</span> func_slam<span class="br0">(</span>string <span class="sy3">&</span>in asParent, string <span class="sy3">&</span>in asChild, <span class="kw4">int</span> alState<span class="br0">)</span> <span class="br0">{</span> SetSwingDoorClosed<span class="br0">(</span>"door2", <span class="kw2">true</span>, <span class="kw2">true</span><span class="br0">)</span><span class="sy4">;</span> PlaySoundAtEntity<span class="br0">(</span>"", "react_breath_slow.<span class="me1">snt"</span>, "Player", <span class="nu0">0</span>, <span class="kw2">false</span><span class="br0">)</span><span class="sy4">;</span> PlaySoundAtEntity<span class="br0">(</span>"", "react_scare", "Player", <span class="nu0">0</span>, <span class="kw2">false</span><span class="br0">)</span><span class="sy4">;</span> PlaySoundAtEntity<span class="br0">(</span>"", "close_door.<span class="me1">snt"</span>, "Player", <span class="nu0">0</span>, <span class="kw2">false</span><span class="br0">)</span><span class="sy4">;</span> GiveSanityDamage<span class="br0">(</span><span class="nu17">5.0f</span>, <span class="kw2">true</span><span class="br0">)</span><span class="sy4">;</span> <span class="br0">}</span> </pre><p> </p> <p> What you now want to do is replace the SetSwingDoorClose with </p> <pre class="code c++">SetPropHealth<span class="br0">(</span>"door1"<span class="sy0">,</span> <span class="nu17">0.0f</span><span class="br0">)</span><span class="sy0">;</span> </pre><p> </p> <p> So it looks like this </p> <pre class="code cpp"><span class="kw4">void</span> func_slam<span class="br0">(</span>string <span class="sy3">&</span>in asParent, string <span class="sy3">&</span>in asChild, <span class="kw4">int</span> alState<span class="br0">)</span> <span class="br0">{</span> SetPropHealth<span class="br0">(</span>"door1", <span class="nu17">0.0f</span><span class="br0">)</span><span class="sy4">;</span> PlaySoundAtEntity<span class="br0">(</span>"", "react_breath_slow.<span class="me1">snt"</span>, "Player", <span class="nu0">0</span>, <span class="kw2">false</span><span class="br0">)</span><span class="sy4">;</span> PlaySoundAtEntity<span class="br0">(</span>"", "react_scare", "Player", <span class="nu0">0</span>, <span class="kw2">false</span><span class="br0">)</span><span class="sy4">;</span> PlaySoundAtEntity<span class="br0">(</span>"", "close_door.<span class="me1">snt"</span>, "Player", <span class="nu0">0</span>, <span class="kw2">false</span><span class="br0">)</span><span class="sy4">;</span> GiveSanityDamage<span class="br0">(</span><span class="nu17">5.0f</span>, <span class="kw2">true</span><span class="br0">)</span><span class="sy4">;</span> <span class="br0">}</span> </pre><p> </p> <p> Then we need to change the void OnStart abit. </p> <p> Replace </p> <pre class="code c++">SetEntityPlayerInteractCallback<span class="br0">(</span>"door1"<span class="sy0">,</span> "func_slam"<span class="sy0">,</span> <span class="kw2">true</span><span class="br0">)</span><span class="sy0">;</span> </pre><p> </p> <p> And replace </p> <pre class="code cpp"><span class="kw4">void</span> func_slam<span class="br0">(</span>string <span class="sy3">&</span>in asParent, string <span class="sy3">&</span>in asChild, <span class="kw4">int</span> alState<span class="br0">)</span> </pre><p> </p> <p> with </p> <pre class="code cpp"><span class="kw4">void</span> func_slam<span class="br0">(</span>string <span class="sy3">&</span>in asEntity<span class="br0">)</span> </pre><p> </p> <p> Now we're done with the Exploding door!. The result should look something like this: </p> <pre class="code cpp"><span class="kw4">void</span> OnStart<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span> SetEntityPlayerInteractCallback<span class="br0">(</span>"door1", "func_slam", <span class="kw2">true</span><span class="br0">)</span><span class="sy4">;</span> <span class="br0">}</span> <span class="kw4">void</span> func_slam<span class="br0">(</span>string <span class="sy3">&</span>in asParent, string <span class="sy3">&</span>in asChild, <span class="kw4">int</span> alState<span class="br0">)</span> <span class="br0">{</span> SetPropHealth<span class="br0">(</span>"door1", <span class="nu17">0.0f</span><span class="br0">)</span><span class="sy4">;</span> PlaySoundAtEntity<span class="br0">(</span>"", "react_breath_slow.<span class="me1">snt"</span>, "Player", <span class="nu0">0</span>, <span class="kw2">false</span><span class="br0">)</span><span class="sy4">;</span> PlaySoundAtEntity<span class="br0">(</span>"", "react_scare", "Player", <span class="nu0">0</span>, <span class="kw2">false</span><span class="br0">)</span><span class="sy4">;</span> PlaySoundAtEntity<span class="br0">(</span>"", "close_door.<span class="me1">snt"</span>, "Player", <span class="nu0">0</span>, <span class="kw2">false</span><span class="br0">)</span><span class="sy4">;</span> GiveSanityDamage<span class="br0">(</span><span class="nu17">5.0f</span>, <span class="kw2">true</span><span class="br0">)</span><span class="sy4">;</span> <span class="br0">}</span> </pre><p> </p> <p> This is how you create some door events. </p> <p> I hope you find this usefull. If you got any questions or requests on tutorials please send me a PM on the forum. </p> <p> Thanks for reading. </p> <p> <em><br/> </em> </p> <p> <em>tutorial by xtron</em> </p> </div>
hpl2/tutorials/script/events.txt
· Last modified: 2011/07/14 13:48 by
xtron
Page Tools
Show page
Old revisions
Backlinks
Export to PDF
Back to top