| Next revision | Previous revision | ||
|
hpl2:tutorials:script:levers_and_secretshelfs [2011/07/14 01:34] xtron created |
hpl2:tutorials:script:levers_and_secretshelfs [2014/07/03 01:36] (current) romulator |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Levers that opens secret shelfs ====== | ====== Levers that opens secret shelfs ====== | ||
| - | |||
| In this tutorial I (xtron) will show you! (the reader) how to make levers that opens secret bookshelfs!. | In this tutorial I (xtron) will show you! (the reader) how to make levers that opens secret bookshelfs!. | ||
| - | |||
| ===== The Bookshelf ===== | ===== The Bookshelf ===== | ||
| - | |||
| First off you need to create a moveable bookshelf. | First off you need to create a moveable bookshelf. | ||
| - | |||
| 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. | 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. | ||
| - | |||
| secondly you need to create a script area that the shelf will rotate around. | secondly you need to create a script area that the shelf will rotate around. | ||
| - | |||
| Go to Areas(8) > Select "script" and create an area like so: | Go to Areas(8) > Select "script" and create an area like so: | ||
| + | [[http://img6.imageshack.us/img6/4914/shelf1.png|img6.imageshack.us/img6/4914/shelf1.png]] | ||
| - | [[http://img6.imageshack.us/img6/4914/shelf1.png|img6.imageshack.us/img6/4914/shelf1.png]] | + | (If that link does not work, try this: [[http://puu.sh/9UrRK/721008bb1d.jpg|puu.sh/9UrRK/721008bb1d.jpg]]) |
| - | + | ||
| - | + | ||
| - | When you're done adding that area, name it anything for example: rotatearea. | + | |
| + | When you're done adding that area, name it anything for example: rotate. | ||
| 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 | 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 | ||
| - | |||
| just created like so: | just created like so: | ||
| + | [[http://img155.imageshack.us/img155/948/shelf2.png|img155.imageshack.us/img155/948/shelf2.png]] | ||
| - | [[http://img155.imageshack.us/img155/948/shelf2.png|img155.imageshack.us/img155/948/shelf2.png]] | + | (If that link does not work, try this: [[http://puu.sh/9Us9N/ac50a930f0.jpg|puu.sh/9Us9N/ac50a930f0.jpg]]) |
| Now you're done with the bookshelf!. Let's setup the lever. | Now you're done with the bookshelf!. Let's setup the lever. | ||
| - | |||
| ===== Adding the Lever ===== | ===== Adding the Lever ===== | ||
| - | |||
| You will be needing a Lever to make the Bookshelf open so go to | You will be needing a Lever to make the Bookshelf open so go to | ||
| - | |||
| Entities > Gameplay > Look for lever_simple01. You can choose any of those levers. Change the Levers name to your liking. | Entities > Gameplay > Look for lever_simple01. You can choose any of those levers. Change the Levers name to your liking. | ||
| - | |||
| The lever is now DONE!. Easy ayee?. Let's get working on the script then. | The lever is now DONE!. Easy ayee?. Let's get working on the script then. | ||
| - | |||
| ===== The Script ===== | ===== The Script ===== | ||
| - | |||
| We will first fix the code that is needed in the void OnStart() area. | We will first fix the code that is needed in the void OnStart() area. | ||
| - | + | <code cpp>void OnStart() | |
| - | <code cpp> | + | |
| - | void OnStart() | + | |
| { | { | ||
| SetEntityConnectionStateChangeCallback("lever", "func_shelf"); | SetEntityConnectionStateChangeCallback("lever", "func_shelf"); | ||
| } | } | ||
| </code> | </code> | ||
| - | |||
| Change "lever" to the name of your Lever you created in the previous part. | Change "lever" to the name of your Lever you created in the previous part. | ||
| - | |||
| Now we need to setup the "move-the-bookshelf-when-lever-is-pressed" | Now we need to setup the "move-the-bookshelf-when-lever-is-pressed" | ||
| - | |||
| Copy this code and insert it anywhere but void OnStart() | Copy this code and insert it anywhere but void OnStart() | ||
| + | <code cpp>void func_shelf(string &in asEntity, int alState) | ||
| + | { | ||
| + | if (alState == 1) | ||
| + | { | ||
| + | SetMoveObjectState("shelf",1.0f); | ||
| + | PlaySoundAtEntity("", "quest_completed.snt", "shelf_move_1", 0, false); | ||
| + | return; | ||
| + | } | ||
| + | } | ||
| + | </code> | ||
| + | |||
| + | Change "shelf" to your shelfs name. | ||
| + | |||
| + | The SetEntityConnectionStateChangeCallback will execute SetMoveObjectState and PlaySoundAtEntity when the levers State turned to 1. The lever's starting position is always 0. | ||
| + | |||
| + | This is how the complete script should look like: | ||
| + | |||
| + | <code cpp>void OnStart() | ||
| + | { | ||
| + | SetEntityConnectionStateChangeCallback("lever", "func_shelf"); | ||
| + | } | ||
| - | <code cpp> | ||
| void func_shelf(string &in asEntity, int alState) | void func_shelf(string &in asEntity, int alState) | ||
| { | { | ||
| Line 84: | Line 85: | ||
| } | } | ||
| </code> | </code> | ||
| - | Change "shelf" to your shelfs name. | ||
| + | ===== More Than One Lever ===== | ||
| - | The SetEntityConnectionStateChangeCallback will execute SetMoveObjectState and PlaySoundAtEntity when the levers State turned to 1. The lever's starting position is always 0. | + | Simply add another lever through the Level editor and change it's name to your liking. |
| + | Add this to void OnStart() | ||
| - | 1 = drag down | + | <code cpp> |
| + | SetLocalVarInt("Var1", 0); | ||
| + | SetEntityConnectionStateChangeCallback("lever_1", "func_shelf_1"); | ||
| + | </code> | ||
| - | -1 = drag up | + | change lever_1 to the second lever you added. |
| + | Add this code anyhere but void OnStart() | ||
| - | I hope you find this tutorial usefull. Contact on FG forum if you want any specific tutorial or got any questions. | + | <code cpp>void func_shelf(string &in asEntity, int alState) |
| + | { | ||
| + | if (alState == 1) | ||
| + | { | ||
| + | AddLocalVarInt("Var1", 1); | ||
| + | func01(); | ||
| + | } | ||
| + | } | ||
| + | void func_shelf_1(string &in asEntity, int alState) | ||
| + | { | ||
| + | if (alState == 1) | ||
| + | { | ||
| + | AddLocalVarInt("Var1", 1); | ||
| + | func01(); | ||
| + | } | ||
| + | } | ||
| - | Thanks for reading. | + | void func01() |
| + | { | ||
| + | if(GetLocalVarInt("Var1") == 2) | ||
| + | { | ||
| + | SetMoveObjectState("shelf",1.0f); | ||
| + | PlaySoundAtEntity("", "quest_completed.snt", "shelf", 0, false); | ||
| + | } | ||
| + | } | ||
| + | </code> | ||
| + | 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. | ||
| + | |||
| + | When the count is 2 func01 gets executed and activates SetMoveObjectState and PlaySoundAtEntity. | ||
| + | |||
| + | The complete script should look like this: | ||
| + | |||
| + | <code cpp>void OnStart() | ||
| + | { | ||
| + | SetLocalVarInt("Var1", 0); | ||
| + | SetEntityConnectionStateChangeCallback("lever", "func_shelf"); | ||
| + | SetEntityConnectionStateChangeCallback("lever_1", "func_shelf_1"); | ||
| + | } | ||
| + | |||
| + | void func_shelf(string &in asEntity, int alState) | ||
| + | { | ||
| + | if (alState == 1) | ||
| + | { | ||
| + | AddLocalVarInt("Var1", 1); | ||
| + | func01(); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | void func_shelf_1(string &in asEntity, int alState) | ||
| + | { | ||
| + | if (alState == 1) | ||
| + | { | ||
| + | AddLocalVarInt("Var1", 1); | ||
| + | func01(); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | void func01() | ||
| + | { | ||
| + | if(GetLocalVarInt("Var1") == 2) | ||
| + | { | ||
| + | SetMoveObjectState("shelf",1.0f); | ||
| + | PlaySoundAtEntity("", "quest_completed.snt", "shelf", 0, false); | ||
| + | } | ||
| + | } | ||
| + | </code> | ||
| + | |||
| + | 1 = drag down | ||
| + | |||
| + | -1 = drag up | ||
| + | |||
| + | I hope you find this tutorial usefull. Contact on FG forum if you want any specific tutorial or got any questions. | ||
| + | |||
| + | Thanks for reading. | ||
| //created by xtron// | //created by xtron// | ||