Difference between revisions of "MessageBox Tutorial/Quest Scripts"
Jump to navigation
Jump to search
imported>Haama |
imported>Haama (→Setup: Changed script to reflect new one in main tutorial) |
||
Line 36: | Line 36: | ||
If (Choosing == 0) ;meaning it shouldn't be running | If (Choosing == 0) ;meaning it shouldn't be running | ||
Return | Return | ||
Elseif (Choosing == -1) ;Display your menu | Elseif (Choosing == -1) ;Display your menu | ||
Messagebox "Which option?" "First Option" "Second Option" | Messagebox "Which option?" "First Option" "Second Option" ... "Tenth Option" | ||
Set Choosing to 1 | Set Choosing to 1 | ||
Set Choice to -1 | Set Choice to -1 | ||
Elseif (Choosing == 1) ;Catch the player's decision | Elseif (Choosing == 1) ;Catch the player's decision | ||
If (Choice == -1) ;No choice yet | If (Choice == -1) ;No choice yet | ||
Line 52: | Line 50: | ||
;run your code for the second decision | ;run your code for the second decision | ||
Set Choosing to 0 ;to finish up | 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 | ||
Endif | Endif |
Revision as of 00:43, 15 September 2007
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.