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 |
||
;... |
;... |
||
| ⚫ | |||
;Further illustrations of more options |
|||
| ⚫ | |||
; Elseif (Choice == #) ;Nth Option |
|||
| ⚫ | |||
;run your code for the nth decision |
|||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
; Set Choosing to 0 |
|||
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.