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:levers_and_secretshelfs
<h1>Levers that opens secret shelfs</h1> <div class="level1"> <p> In this tutorial I (xtron) will show you! (the reader) how to make levers that opens secret bookshelfs!. </p> </div> <h2>The Bookshelf</h2> <div class="level2"> <p> First off you need to create a moveable bookshelf. </p> <p> Go to Entities(7) > Gameplay > Look for "shelf_secret_door_rot" and place it where ever you want it. Change it's name to your liking. </p> <p> secondly you need to create a script area that the shelf will rotate around. </p> <p> Go to Areas(8) > Select "script" and create an area like so: </p> <p> <a href="http://img6.imageshack.us/img6/4914/shelf1.png" class="urlextern" title="http://img6.imageshack.us/img6/4914/shelf1.png" rel="nofollow">img6.imageshack.us/img6/4914/shelf1.png</a> </p> <p> (If that link does not work, try this: <a href="http://puu.sh/9UrRK/721008bb1d.jpg" class="urlextern" title="http://puu.sh/9UrRK/721008bb1d.jpg" rel="nofollow">puu.sh/9UrRK/721008bb1d.jpg</a>) </p> <p> When you're done adding that area, name it anything for example: rotate. </p> <p> Then press on the bookshelf and go to Entity. The last text box named AngularOffsetArea, you'll need to type in the rotate area you </p> <p> just created like so: </p> <p> <a href="http://img155.imageshack.us/img155/948/shelf2.png" class="urlextern" title="http://img155.imageshack.us/img155/948/shelf2.png" rel="nofollow">img155.imageshack.us/img155/948/shelf2.png</a> </p> <p> (If that link does not work, try this: <a href="http://puu.sh/9Us9N/ac50a930f0.jpg" class="urlextern" title="http://puu.sh/9Us9N/ac50a930f0.jpg" rel="nofollow">puu.sh/9Us9N/ac50a930f0.jpg</a>) </p> <p> Now you're done with the bookshelf!. Let's setup the lever. </p> </div> <h2>Adding the Lever</h2> <div class="level2"> <p> You will be needing a Lever to make the Bookshelf open so go to </p> <p> Entities > Gameplay > Look for lever_simple01. You can choose any of those levers. Change the Levers name to your liking. </p> <p> The lever is now DONE!. Easy ayee?. Let's get working on the script then. </p> </div> <h2>The Script</h2> <div class="level2"> <p> We will first fix the code that is needed in the void OnStart() area. </p> <pre class="code cpp"><span class="kw4">void</span> OnStart<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span> SetEntityConnectionStateChangeCallback<span class="br0">(</span>"lever", "func_shelf"<span class="br0">)</span><span class="sy4">;</span> <span class="br0">}</span> </pre><p> </p> <p> Change "lever" to the name of your Lever you created in the previous part. </p> <p> Now we need to setup the "move-the-bookshelf-when-lever-is-pressed" </p> <p> Copy this code and insert it anywhere but void OnStart() </p> <pre class="code cpp"><span class="kw4">void</span> func_shelf<span class="br0">(</span>string <span class="sy3">&</span>in asEntity, <span class="kw4">int</span> alState<span class="br0">)</span> <span class="br0">{</span> <span class="kw1">if</span> <span class="br0">(</span>alState <span class="sy1">==</span> <span class="nu0">1</span><span class="br0">)</span> <span class="br0">{</span> SetMoveObjectState<span class="br0">(</span>"shelf",<span class="nu17">1.0f</span><span class="br0">)</span><span class="sy4">;</span> PlaySoundAtEntity<span class="br0">(</span>"", "quest_completed.<span class="me1">snt"</span>, "shelf_move_1", <span class="nu0">0</span>, <span class="kw2">false</span><span class="br0">)</span><span class="sy4">;</span> <span class="kw1">return</span><span class="sy4">;</span> <span class="br0">}</span> <span class="br0">}</span> </pre><p> </p> <p> Change "shelf" to your shelfs name. </p> <p> The SetEntityConnectionStateChangeCallback will execute SetMoveObjectState and PlaySoundAtEntity when the levers State turned to 1. The lever's starting position is always 0. </p> <p> This is how the complete script should look like: </p> <pre class="code cpp"><span class="kw4">void</span> OnStart<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span> SetEntityConnectionStateChangeCallback<span class="br0">(</span>"lever", "func_shelf"<span class="br0">)</span><span class="sy4">;</span> <span class="br0">}</span> <span class="kw4">void</span> func_shelf<span class="br0">(</span>string <span class="sy3">&</span>in asEntity, <span class="kw4">int</span> alState<span class="br0">)</span> <span class="br0">{</span> <span class="kw1">if</span> <span class="br0">(</span>alState <span class="sy1">==</span> <span class="nu0">1</span><span class="br0">)</span> <span class="br0">{</span> SetMoveObjectState<span class="br0">(</span>"shelf",<span class="nu17">1.0f</span><span class="br0">)</span><span class="sy4">;</span> PlaySoundAtEntity<span class="br0">(</span>"", "quest_completed.<span class="me1">snt"</span>, "shelf_move_1", <span class="nu0">0</span>, <span class="kw2">false</span><span class="br0">)</span><span class="sy4">;</span> <span class="kw1">return</span><span class="sy4">;</span> <span class="br0">}</span> <span class="br0">}</span> </pre><p> </p> </div> <h2>More Than One Lever</h2> <div class="level2"> <p> Simply add another lever through the Level editor and change it's name to your liking. </p> <p> Add this to void OnStart() </p> <pre class="code cpp">SetLocalVarInt<span class="br0">(</span>"Var1", <span class="nu0">0</span><span class="br0">)</span><span class="sy4">;</span> SetEntityConnectionStateChangeCallback<span class="br0">(</span>"lever_1", "func_shelf_1"<span class="br0">)</span><span class="sy4">;</span> </pre><p> </p> <p> change lever_1 to the second lever you added. </p> <p> Add this code anyhere but void OnStart() </p> <pre class="code cpp"><span class="kw4">void</span> func_shelf<span class="br0">(</span>string <span class="sy3">&</span>in asEntity, <span class="kw4">int</span> alState<span class="br0">)</span> <span class="br0">{</span> <span class="kw1">if</span> <span class="br0">(</span>alState <span class="sy1">==</span> <span class="nu0">1</span><span class="br0">)</span> <span class="br0">{</span> AddLocalVarInt<span class="br0">(</span>"Var1", <span class="nu0">1</span><span class="br0">)</span><span class="sy4">;</span> func01<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="br0">}</span> <span class="br0">}</span> <span class="kw4">void</span> func_shelf_1<span class="br0">(</span>string <span class="sy3">&</span>in asEntity, <span class="kw4">int</span> alState<span class="br0">)</span> <span class="br0">{</span> <span class="kw1">if</span> <span class="br0">(</span>alState <span class="sy1">==</span> <span class="nu0">1</span><span class="br0">)</span> <span class="br0">{</span> AddLocalVarInt<span class="br0">(</span>"Var1", <span class="nu0">1</span><span class="br0">)</span><span class="sy4">;</span> func01<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="br0">}</span> <span class="br0">}</span> <span class="kw4">void</span> func01<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span> <span class="kw1">if</span><span class="br0">(</span>GetLocalVarInt<span class="br0">(</span>"Var1"<span class="br0">)</span> <span class="sy1">==</span> <span class="nu0">2</span><span class="br0">)</span> <span class="br0">{</span> SetMoveObjectState<span class="br0">(</span>"shelf",<span class="nu17">1.0f</span><span class="br0">)</span><span class="sy4">;</span> PlaySoundAtEntity<span class="br0">(</span>"", "quest_completed.<span class="me1">snt"</span>, "shelf", <span class="nu0">0</span>, <span class="kw2">false</span><span class="br0">)</span><span class="sy4">;</span> <span class="br0">}</span> <span class="br0">}</span> </pre><p> </p> <p> Var1 will start at the count 0 and everytime you drag a lever the count raises by 1 so when you draged both of the levers the count is at 2. </p> <p> When the count is 2 func01 gets executed and activates SetMoveObjectState and PlaySoundAtEntity. </p> <p> The complete script 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> SetLocalVarInt<span class="br0">(</span>"Var1", <span class="nu0">0</span><span class="br0">)</span><span class="sy4">;</span> SetEntityConnectionStateChangeCallback<span class="br0">(</span>"lever", "func_shelf"<span class="br0">)</span><span class="sy4">;</span> SetEntityConnectionStateChangeCallback<span class="br0">(</span>"lever_1", "func_shelf_1"<span class="br0">)</span><span class="sy4">;</span> <span class="br0">}</span> <span class="kw4">void</span> func_shelf<span class="br0">(</span>string <span class="sy3">&</span>in asEntity, <span class="kw4">int</span> alState<span class="br0">)</span> <span class="br0">{</span> <span class="kw1">if</span> <span class="br0">(</span>alState <span class="sy1">==</span> <span class="nu0">1</span><span class="br0">)</span> <span class="br0">{</span> AddLocalVarInt<span class="br0">(</span>"Var1", <span class="nu0">1</span><span class="br0">)</span><span class="sy4">;</span> func01<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="br0">}</span> <span class="br0">}</span> <span class="kw4">void</span> func_shelf_1<span class="br0">(</span>string <span class="sy3">&</span>in asEntity, <span class="kw4">int</span> alState<span class="br0">)</span> <span class="br0">{</span> <span class="kw1">if</span> <span class="br0">(</span>alState <span class="sy1">==</span> <span class="nu0">1</span><span class="br0">)</span> <span class="br0">{</span> AddLocalVarInt<span class="br0">(</span>"Var1", <span class="nu0">1</span><span class="br0">)</span><span class="sy4">;</span> func01<span class="br0">(</span><span class="br0">)</span><span class="sy4">;</span> <span class="br0">}</span> <span class="br0">}</span> <span class="kw4">void</span> func01<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span> <span class="kw1">if</span><span class="br0">(</span>GetLocalVarInt<span class="br0">(</span>"Var1"<span class="br0">)</span> <span class="sy1">==</span> <span class="nu0">2</span><span class="br0">)</span> <span class="br0">{</span> SetMoveObjectState<span class="br0">(</span>"shelf",<span class="nu17">1.0f</span><span class="br0">)</span><span class="sy4">;</span> PlaySoundAtEntity<span class="br0">(</span>"", "quest_completed.<span class="me1">snt"</span>, "shelf", <span class="nu0">0</span>, <span class="kw2">false</span><span class="br0">)</span><span class="sy4">;</span> <span class="br0">}</span> <span class="br0">}</span> </pre><p> </p> <p> 1 = drag down </p> <p> -1 = drag up </p> <p> I hope you find this tutorial usefull. Contact on FG forum if you want any specific tutorial or got any questions. </p> <p> Thanks for reading. </p> <p> <em>created by xtron</em> </p> </div>
hpl2/tutorials/script/levers_and_secretshelfs.txt
· Last modified: 2014/07/03 01:36 by
romulator
Page Tools
Show page
Old revisions
Backlinks
Export to PDF
Back to top