MessageBox Tutorial/Quest Scripts
Revision as of 00:52, 15 September 2007 by imported>Haama (→Setup)
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
- Create a new quest: 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.