MessageBox Tutorial/Quest Scripts
Revision as of 00:43, 15 September 2007 by imported>Haama (→Setup: Changed script to reflect new one in main tutorial)
Some background
Quest scripts are very similar to the activator script. However, just like the activator script the quest script will require a bit of extra coding.
The disadvantage of quests lies in their lack of a clear start. That is, there are no blocks that a quest runs only a single time when it first starts. Instead, the entire script is run every frame. For instance, if we put the onActivate block into the GameMode block:
begin GameMode set Choosing to -1 if (Choosing == -1) ...
then the first menu will be displayed continuously.
To fix this, we need to add another variable:
begin GameMode if (Working == 1) set Choosing to -1 set Working to 0 endif ...
Setup
- Open the quest dialog. Select a quest on the left. Right-click it and select new. Name it accordingly (YourMenu in this tutorial).
- Write the script:
scn YourMenuScript Short Choosing Short Choice Short Working Begin GameMode If (Working == 1) Set Choosing to -1 Set Working to 0 Endif If (Choosing == 0) ;meaning it shouldn't be running Return Elseif (Choosing == -1) ;Display your menu Messagebox "Which option?" "First Option" "Second Option" ... "Tenth Option" Set Choosing to 1 Set Choice to -1 Elseif (Choosing == 1) ;Catch the player's decision If (Choice == -1) ;No choice yet Set Choice to GetButtonPressed Elseif (Choice == 0) ;First Option ;run your code for the first decision Set Choosing to 0 ;to finish up Elseif (Choice == 1) ;Second Option ;run your code for the second decision Set Choosing to 0 ;to finish up ;... ; Elseif (Choice == 9) ;Tenth Option ;run your code for the tenth decision ; Set Choosing to 0 ;to finish up Endif Endif End
- Make sure to save the script as a Quest Script.
- Attach the script to the quest.
- You can start your menus from any script with <pr>set YourMenu.Working to 1.
Notes on using StartQuest/StopQuest
You can use StopQuest and StartQuest to control when the quest is running. This will prevent the extra if tests from running, but:
- You will need to remember to stop it
... if (Choosing == 0) StopQuest YourMenu ...
- You will need to remember to use
set YourMenu.Working to 1 StartQuest YourMenu
every time you want to use it.
- It will take a couple of seconds after using StartQuest before the quest starts up.
- Using StartQuest can be dangerous, as using StartQuest on a quest that is already running will reset all of it's variables to 0.