Difference between revisions of "MessageBox Tutorial"
no edit summary
imported>Haama (→Moving Between Multiple Menus: Rewrite2) |
imported>Darkness X |
||
(39 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
{{Tools|req0=[[The Elder Scrolls Construction Set|Construction Set]]|opt0=[[OBSE]]}} | |||
==Intro== | ==Intro== | ||
Most MessageBox mistakes | Most MessageBox mistakes are made when simple scripts are used as a base for more complex menu scripts. To prevent this, this tutorial will work towards a single all-purpose script that can be used and expanded for any situation. By the end, you will know the problems that can pop-up in a menu script, how to prevent them, and why every line of the all-purpose script is needed. | ||
We'll start out with some of the basic mechanics of the MessageBox and related functions, followed by common mistakes in complex scripts, and then the all-purpose script and how to set it up. Finally, we'll go through how to use the script to easily move between multi-layered menus, and some extras that you can tack on to it. | |||
Note that there are 4 mediums to attach a menu script to: Activators, Quests, Tokens (Object scripts on items in the player's possession), and Spells (or Magic Effect scripts). This article will focus mainly on activators, but the other methods, their differences, and how to set them up will be discussed on other pages. Activators are the focus as they are easier and safer to use in most situations (see [[MessageBox_Tutorial#In_which_I_try_to_convince_you_to_use_an_activator|"In which I try to convince you to use an activator"]] for the reasons, though it's highly suggested to read the article first). | |||
==Basic Mechanics of MessageBox and Related Functions== | ==Basic Mechanics of MessageBox and Related Functions== | ||
Line 184: | Line 177: | ||
endif | endif | ||
end</pre> | end</pre> | ||
Note that each menu has a pair of corresponding numbers: Main menu, -1/1; Armor menu, -10/10; Weapon menu, -11/11. When you set Choosing to the corresponding number, that menu will be shown. You can find more information in the [[MessageBox Tutorial#Moving Between Multiple Menus]] section. | Note that each menu has a pair of corresponding numbers: Main menu, -1/1; Armor menu, -10/10; Weapon menu, -11/11. When you set Choosing to the corresponding number, that menu will be shown. You can find more information in the [[MessageBox Tutorial#Moving Between Multiple Menus|Moving Between Multiple Menus]] section. | ||
===Running the same choice for multiple frames=== | ===Running the same choice for multiple frames=== | ||
Line 243: | Line 236: | ||
There are 4 mediums you could use for the script: Quest, Activator, Tokens (Object scripts on items in the player's possession), and Spells (or Magic Effect scripts). Each has their own advantages and disadvantages, but it's suggested you use an activator. | There are 4 mediums you could use for the script: Quest, Activator, Tokens (Object scripts on items in the player's possession), and Spells (or Magic Effect scripts). Each has their own advantages and disadvantages, but it's suggested you use an activator. | ||
====Activator Advantages==== | ====Activator Advantages==== | ||
* Activators can keep persistent variables that other scripts can use (unlike tokens and spells) | * Activators can keep persistent variables that other scripts can use (unlike tokens and spells) | ||
** Quest variables can be reset by using 'StartQuest' when the quest is already running (and there are reports of quests requiring resetting if a variable is added in a mod's update). | ** Quest variables can be reset by using 'StartQuest' when the quest is already running (and there are reports of quests requiring resetting if a variable is added in a mod's update). | ||
** Activators are safe from Oblivion cell resets. These resets will return a container's inventory to it's original state, objects to their start location, etc., but the variables on the activator will remain the same. | |||
* There's a clear beginning to it ([[OnActivate]], unlike quests) | * There's a clear beginning to it ([[OnActivate]], unlike quests) | ||
* It's easy and fast to start (harder for a quest) | * It's easy and fast to start (harder for a quest) | ||
* Tokens can randomly cause CTDs when removed (unless you wait for 5 frames first, and may cause [[Category:Tidbits#Tokens_lead_to_crashes.3F|other problems]] upon removal) | * Tokens can randomly cause CTDs when removed (unless you wait for 5 frames first, and may cause [[:Category:Tidbits#Tokens_lead_to_crashes.3F|other problems]] upon removal) | ||
* Spells are difficult to manage | * Spells are difficult to manage | ||
** Spells will only run in GameMode | ** Spells will only run in GameMode | ||
Line 254: | Line 249: | ||
====Activator Disadvantages==== | ====Activator Disadvantages==== | ||
* They need to be [[Loaded]] | * They need to be [[Loaded]] to run every frame. The easiest way to keep it loaded is to set one of it's own variables every frame. Setting a variable loads an object into memory, as if it were in the same cell as the player. Like this: | ||
* | <pre>short Working | ||
... | |||
begin GameMode | |||
... | |||
set Working to 1 | |||
... | |||
</pre> | |||
* Their script can run even when not around the player (though only for a single frame, but enough to cause [[:Category:Tidbits#When_do_remote_activators_run.3F|problems]]). To solve this problem, set a flag variable (for this tutorial, ''Working'') to 1 when the script should be running, and 0 when it should end. Use an '''if''' test to check ''Working'', like so: | |||
<pre>short Working | |||
... | |||
begin onActivate | |||
... | |||
set Working to 1 | |||
end | |||
begin GameMode | |||
if Working | |||
if (Choosing == 0) | |||
set Working to 0 | |||
... | |||
endif | endif | ||
end</pre> | end</pre> | ||
Set Working to 0 when you wish to keep the script from running. | |||
* These solutions work hand in hand. When the script should be running, and Working is 1, set Working to 1 at the beginning of every frame to keep it loaded for the next frame. When it's 0, don't set any variables and the activator will be unloaded, preventing the script from errantly running. Combining them looks like this: | |||
<pre>short Working | |||
... | |||
begin onActivate | |||
... | |||
set Working to 1 | |||
end | |||
begin GameMode | |||
if Working | |||
set Working to 1 | |||
if (Choosing == 0) | |||
set Working to 0 | |||
return | |||
elseif (Choosing == 1) | |||
... | |||
endif | endif | ||
endif | endif | ||
end | end</pre> | ||
====Other methods==== | |||
* [[MessageBox_Tutorial/Quest_Scripts|Quests]] | |||
* [[MessageBox_Tutorial/Token_Scripts|Tokens]] | |||
* [[MessageBox_Tutorial/Spell_Scripts|Spells]] | |||
===What you'll need=== | ===What you'll need=== | ||
You'll need to set up some objects for the next script: an invisible activator, an XMarker, and your own cell: | You'll need to set up some objects for the next script: an invisible activator, an XMarker, and your own cell: | ||
===Your own cell=== | ===Your own cell=== | ||
Line 307: | Line 308: | ||
#Select "Duplicate Cell" | #Select "Duplicate Cell" | ||
#Rename your new cell to something you'll remember (and don't worry about the lack of floors, it'll work just fine) | #Rename your new cell to something you'll remember (and don't worry about the lack of floors, it'll work just fine) | ||
===Activator=== | ===Activator=== | ||
#Select an activator in the "Object Window" | #Select an activator in the "Object Window" | ||
#*It needs to be an activator. Statics can't have scripts, [[ | #*It needs to be an activator. Statics can't have scripts, [[Crashes#Activating_a_Container_(including_NPC)|NPCs and containers can cause a CTD if they have a scripted item in their inventory]], and items can be picked up. | ||
#Edit the name | #Edit the name | ||
#Press enter (or select ok in the edit menu) | #Press enter (or select ok in the edit menu) | ||
Line 328: | Line 317: | ||
#Drag your new activator into the "Render Window" | #Drag your new activator into the "Render Window" | ||
#Right-click it | #Right-click it | ||
#Give it a "Reference Editor ID" | #Give it a "Reference Editor ID". This is the reference you'll use to start up the menu, so make it something memorable. | ||
#Mark it as "Persistent Reference" and "Initially Disabled" | #Mark it as "Persistent Reference" and "Initially Disabled" | ||
#Place the following script on your new activator | #Place the following script on your new activator | ||
Line 338: | Line 327: | ||
===Activator Script=== | ===Activator Script=== | ||
<pre>scn YourMenuScript | <pre>scn YourMenuScript | ||
Short Working | |||
Short Choosing | Short Choosing | ||
Short Choice | Short Choice | ||
Line 346: | Line 335: | ||
Begin onActivate | Begin onActivate | ||
Set Choosing to -1 | Set Choosing to -1 | ||
Set | Set Working to 1 | ||
End | End | ||
Line 355: | Line 341: | ||
Begin GameMode | Begin GameMode | ||
If (Choosing == 0) ;meaning it shouldn't be running | If Working | ||
Set Working to 1 | |||
If (Choosing == 0) ;meaning it shouldn't be running | |||
Set Working to 0 | |||
;Add anything that needs to be re-initialized, | ;Add anything that needs to be re-initialized, | ||
Set | 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 | Endif | ||
Endif | Endif | ||
End</pre> | End</pre> | ||
You can start your menus from any script with < | You can start your menus from any script with <pre>YourActivatorsReferenceEditorID.Activate player, 1</pre>. | ||
==Moving Between Multiple Menus== | ==Moving Between Multiple Menus== | ||
Line 420: | Line 398: | ||
===Example script=== | ===Example script=== | ||
Here's several examples of menu switching: (also, please note that due to wiki limitations, the messageboxes below have been given line breaks, whereas in the CS they would be on one line) | Here's several examples of menu switching: (also, please note that due to wiki limitations, the messageboxes below have been given line breaks, whereas in the CS they would be on one line) | ||
<pre>Short Choosing | <pre>Short Working | ||
Short Choosing | |||
Short Choice | Short Choice | ||
Begin onActivate | Begin onActivate | ||
Set | Set Working to 1 | ||
Set Choosing to -1 | Set Choosing to -1 | ||
End | End | ||
Line 437: | Line 412: | ||
Begin GameMode | Begin GameMode | ||
If | If Working | ||
Set Working to 1 | |||
If (Choosing == 0) ;meaning it shouldn't be running | |||
Set Working to 0 | |||
;Add anything that needs to be re-initialized, | |||
Elseif (Choosing == -1) ;Display your menu | |||
Messagebox "What would you like to donate?" "Gold" "Food" "Blood" "Cancel" | |||
Set Choosing to 1 | |||
Set Choice to -1 | |||
Elseif (Choosing == 1) | |||
If (Choice == -1) ;No choice yet | |||
Set Choice to GetButtonPressed | |||
Elseif (Choice == 0) ;Gold | |||
Set Choosing to -11 ;to open the Gold menu | |||
Elseif (Choice == 1) ;Food | |||
Set Choosing to -12 ;to open the Food menu | |||
Elseif (Choice == 2) ;Blood | |||
Set Choosing to -13 ;to open the Blood menu | |||
Elseif (Choice == 3) ;Cancel | |||
Set Choosing to 0 ;to close the menus | |||
Endif | |||
Elseif (Choosing == -11) ;Gold menu | |||
Messagebox "How much Gold would you like to donate?" "25" | |||
"I've changed my mind" "I've changed my mind, I'll donate Food" | "I've changed my mind" "I've changed my mind, I'll donate Food" | ||
"I've changed my mind, I'll donate Blood" | "I've changed my mind, I'll donate Blood" | ||
"I've changed my mind, I won't donate anything" | "I've changed my mind, I won't donate anything" | ||
Set Choosing to 11 | |||
Set Choice to -1 | Set Choice to -1 | ||
Elseif (Choosing == 11) | |||
If (Choice == -1) ;No choice yet | |||
Set Choice to GetButtonPressed | |||
Elseif (Choice == 0) ;25 | |||
If (player.GetGold > 25) | |||
Player.RemoveItem Gold001 25 | |||
Set Choosing to 0 | |||
Else | |||
Set Choosing to -99 ;a message that the player doesn't have enough | |||
Endif | |||
Elseif (Choice == 1) ; I've changed my mind | |||
Set Choosing to -1 ;to return to the opening menu | |||
Elseif (Choice == 2) ; I've changed my mind, I'll donate food | |||
Set Choosing to -12 ;to open the food menu | |||
Elseif (Choice == 3) ; I've changed my mind, I'll donate blood | |||
Set Choosing to -13 ;to open the blood menu | |||
Elseif (Choice == 4) ; I've changed my mind, I won't donate anything | |||
Set Choosing to 0 ;to close the menus | |||
Endif | |||
Elseif (Choosing == -12) ;Food menu | |||
Messagebox "How much food would you like to donate?" "An apple" | |||
"Two apples" | |||
... | |||
"Cancel" | |||
Set Choosing to 12 | |||
Set Choice to GetButtonPressed | Set Choice to GetButtonPressed | ||
Elseif (Choice == 0) ; | Elseif (Choosing == 12) | ||
If (player. | If (Choice == -1) ;No choice yet | ||
Set Choice to GetButtonPressed | |||
Elseif (Choice == 0) ;An Apple | |||
If (player.GetItemCount Apple) | |||
player.RemoveItem Apple 1 | |||
Else | |||
set Choosing to -99 ;Go to special 'Not enough' menu | |||
Endif | |||
Set Choosing to -1 ;To return to main menu | |||
Elseif (Choice == 1) ;Two Apple | |||
If ((player.GetItemCount Apple) > 1) | |||
player.RemoveItem Apple 2 | |||
Else | |||
set Choosing to -99 ;Go to special 'Not enough' menu | |||
Endif | |||
Set Choosing to -1 ;To return to main menu | |||
;... | |||
Elseif (Choice == 9) ;Cancel | |||
Set Choosing to 0 | Set Choosing to 0 | ||
Endif | Endif | ||
Elseif (Choosing == -13) ;Blood menu | |||
Messagebox "How much blood would you like to donate?" "1 HP" | |||
"2 HP" | |||
... | |||
"Cancel" | |||
Set Choosing to 13 | |||
Set Choice to GetButtonPressed | Set Choice to GetButtonPressed | ||
Elseif (Choice == 0) ; | Elseif (Choosing == 13) | ||
... | If (Choice == -1) ;No choice yet | ||
Set Choice to GetButtonPressed | |||
Elseif (Choice == 0) ;1 HP | |||
player.ModAV Health -1 ;don't actually use this, just an easy example | |||
set Choosing to -1 ;to return to the main menu | |||
Elseif (Choice == 1) ;2 HP | |||
player.ModAV Health -2 ;don't actually use this, just an easy example | |||
set Choosing to -1 ;to return to the main menu | |||
;... | |||
Elseif (Choice == 9) ;Cancel | |||
Set Choosing to 0 | |||
Endif | |||
Elseif (Choosing == -99) ;Player-doesn't-have-enough menu | Elseif (Choosing == -99) ;Player-doesn't-have-enough menu | ||
Line 514: | Line 517: | ||
Set Choosing to 99 | Set Choosing to 99 | ||
Set Choice to GetButtonPressed | Set Choice to GetButtonPressed | ||
Elseif (Choosing == 99) | Elseif (Choosing == 99) | ||
If (Choice == -1) ;No choice yet | |||
Set Choice to GetButtonPressed | |||
Elseif (Choice == 0) ;player pressed "Done", return to main menu | |||
Set Choosing to -1 | |||
Endif | |||
Endif | Endif | ||
Endif | Endif | ||
End</pre> | End</pre> | ||
==Extras== | ==Extras== | ||
That will take care of most menu systems you'll ever want to create. However, there is still more functioniality you can add to your menus. From here, you can either get it all by using the following script, or pick and choose using the mini-tutorials: | That will take care of most menu systems you'll ever want to create. However, there is still more functioniality you can add to your menus. From here, you can either get it all by using the following script, or pick and choose using the mini-tutorials: | ||
<br>[[MessageBox_Tutorial | <br>[[MessageBox_Tutorial/Centralized_Decision_Catching|Centalizing your decision catching]] | ||
<br>[[Messagebox_Tutorial | <br>[[Messagebox_Tutorial/GameMode_And_MenuMode|Running menus in both GameMode and MenuMode when your script is too large]] | ||
<br>[[MessageBox_Tutorial/Ensuring_Your_Menu_Is_Seen|Ensuring your menus are seen]] | |||
<br>[[MessageBox_Tutorial | <br>[[Messagebox_Tutorial/Set_Variables|Allowing the player to set a variable to any number]] | ||
<br>[[Messagebox_Tutorial | <br>[[MessageBox_Tutorial/External_Menu_Selection|Controlling the menu system via external scripts]] | ||
<br>[[MessageBox_Tutorial | |||
==Applying it all== | ==Applying it all== | ||
Line 636: | Line 539: | ||
<pre>scn YourMenuScript | <pre>scn YourMenuScript | ||
Short Working | |||
Short Choosing | Short Choosing | ||
Short Choice | Short Choice | ||
;GameMode and MenuMode variables | ;GameMode and MenuMode variables | ||
Line 647: | Line 548: | ||
;Ensuring Your Menu Is Read variables | ;Ensuring Your Menu Is Read variables | ||
Short MessageCounter | |||
Short | |||
Begin onActivate | Begin onActivate | ||
If (Choosing >= 0) | If (Choosing >= 0) ;Controlling the menu system via external scripts | ||
Set Choosing to -1 | Set Choosing to -1 | ||
Endif | Endif | ||
Set | Set Working to 1 | ||
If (MenuMode == 0) | Set MessageCounter to 0 ;Ensuring your menus are seen | ||
If (MenuMode == 0) ;Running menus in both GameMode and MenuMode | |||
Set GMRun to 1 | Set GMRun to 1 | ||
Endif | Endif | ||
End | End | ||
Line 667: | Line 565: | ||
Begin GameMode | Begin GameMode ;Running menus in both GameMode and MenuMode | ||
If (Choosing == 0) | If Working | ||
Set Working to 1 | |||
If (Choosing == 0) | |||
Set GMRun to 0 | |||
Set Working to 0 | |||
Set MessageCounter to 0 ;Ensuring your menu is seen | |||
;Add anything that needs to be re-initialized | |||
Elseif GMRun | |||
Set GMRun to 0 | |||
Set ExitButton to 0 | |||
Messagebox "Exiting options..." | |||
Elseif (Choice == -1) ;Ensuring your menus are seen | |||
if (MessageCounter < 30) | |||
set Choice to GetButtonPressed | |||
if (Choice == -1) | |||
if (MenuMode 1001 == 0) | |||
if (MenuMode 1004 == 0) && (MenuMode 1005 == 0) && (MenuMode 1006 == 0) && | |||
(MenuMode 1010 == 0) && (MenuMode 1011 == 0) && (MenuMode 1013 == 0) && | |||
(MenuMode 1015 == 0) && (MenuMode 1016 == 0) && (MenuMode 1017 == 0) && | |||
(MenuMode 1018 == 0) && (MenuMode 1019 == 0) && (MenuMode 1020 == 0) && | |||
(MenuMode 1021 == 0) && (MenuMode 1024 == 0) && (MenuMode 1038 == 0) && | |||
(MenuMode 1039 == 0) && (MenuMode 1044 == 0) && (MenuMode 1045 == 0) && | |||
(MenuMode 1046 == 0) && (MenuMode 1047 == 0) && (MenuMode 1057 == 0) | |||
set MessageCounter to (MessageCounter + 1) | |||
endif | |||
else ;MenuMode 1001 | |||
set MessageCounter to 0 | |||
endif | |||
else ;Choice > -1 | |||
set MessageCounter to 0 | |||
endif | |||
else ;Display menu again | |||
set Choosing to -(Choosing) | |||
set MessageCounter to 0 | |||
message "Trying menu again..." | |||
Set | endif | ||
Elseif (Choice != ExitButton) | |||
Set ExitButton to 0 | |||
Messagebox "Exiting options..." | Messagebox "Exiting options..." | ||
Elseif (Choice == ExitButton) | |||
Set Choosing to 0 | |||
Endif | Endif | ||
Endif | Endif | ||
End | End | ||
Line 716: | Line 615: | ||
Begin MenuMode | Begin MenuMode | ||
If (Choosing == 0) | If Working | ||
Set Working to 1 | |||
; | |||
Set | If (Choosing == 0) | ||
Set GMRun to 0 ;Running menus in both GameMode and MenuMode | |||
Set Working to 0 | |||
Set MessageCounter to 0 ;Ensuring your menu is seen | |||
;Add anything that needs to be re-initialized | |||
;Ensuring your menu is seen | |||
;Centralizing your menu decisions | |||
Elseif (Choosing > 0) && (Choice == -1) ;No choice yet | |||
if (MessageCounter < 30) | |||
set Choice to GetButtonPressed | |||
if (Choice == -1) | |||
if (MenuMode 1001 == 0) | |||
if (MenuMode 1004 == 0) && (MenuMode 1005 == 0) && (MenuMode 1006 == 0) && | |||
(MenuMode 1010 == 0) && (MenuMode 1011 == 0) && (MenuMode 1013 == 0) && | |||
(MenuMode 1015 == 0) && (MenuMode 1016 == 0) && (MenuMode 1017 == 0) && | |||
(MenuMode 1018 == 0) && (MenuMode 1019 == 0) && (MenuMode 1020 == 0) && | |||
(MenuMode 1021 == 0) && (MenuMode 1024 == 0) && (MenuMode 1038 == 0) && | |||
(MenuMode 1039 == 0) && (MenuMode 1044 == 0) && (MenuMode 1045 == 0) && | |||
(MenuMode 1046 == 0) && (MenuMode 1047 == 0) && (MenuMode 1057 == 0) | |||
set MessageCounter to (MessageCounter + 1) | |||
endif | |||
else ;MenuMode 1001 | |||
set MessageCounter to 0 | |||
endif | |||
else ;Choice > -1 | |||
set MessageCounter to 0 | |||
endif | |||
else ;Display menu again | |||
set Choosing to -(Choosing) | |||
set MessageCounter to 0 | |||
message "Trying menu again..." | |||
endif | |||
Elseif (Choosing == -1) ;Display your menu | |||
Set ExitButton to 1 ;Running menus in both GameMode and MenuMode | |||
Messagebox "What would you like to do?" "First Option" "Exit Menu" | |||
Set Choosing to 1 | |||
Set Choice to -1 | |||
Elseif (Choosing == 1) ;Catch the player's decision | |||
If (Choice == 0) ;First Option | |||
;run your code for the first decision | |||
Elseif (Choice == 1) ;Exit Menu | |||
;run your code for the second descision | |||
Set Choosing to 0 ;to finish up | |||
Endif | |||
;Allowing the player to set any number | |||
short NumNewIngsDefault | |||
elseif (Choosing == -2) | |||
set ExitButton to -2 ;Running menus in both GameMode and MenuMode | |||
messagebox "Set the default number of essences to be created. | |||
(Currently %g)", NumNewIngsDefault, | |||
"About 10 fewer (-12 to -8)" | |||
"About 5 fewer (-7 to -3)" | |||
"Default to that amount -2" | |||
"Default to that amount -1" | |||
"Default to that amount" | |||
"Default to that amount +1" | |||
"Default to that amount +2" | |||
"About 5 more (+3 to +7)" | |||
"About 10 more (+8 to +12)" | |||
"Return to previous menu" | |||
set Choosing to 2 | |||
set Choice to -1 | |||
elseif (Choosing == 2) | |||
if (Choice == 0) ;10 fewer | |||
set NumNewIngsDefault to (NumNewIngsDefault - 10) | |||
set Choosing to -2 | |||
elseif (Choice == 1) ;5 fewer | |||
set NumNewIngsDefault to (NumNewIngsDefault - 5) | |||
set Choosing to -2 | |||
elseif (Choice == 7) ;5 more | |||
set NumNewIngsDefault to (NumNewIngsDefault + 5) | |||
set Choosing to -2 | |||
elseif (Choice == 8) ;10 more | |||
set NumNewIngsDefault to (NumNewIngsDefault + 10) | |||
set Choosing to -2 | |||
elseif (Choice == 2) ;-2 | |||
set NumNewIngsDefault to (NumNewIngsDefault - 2) | |||
set Choosing to -1 | |||
elseif (Choice == 3) ;-1 | |||
set NumNewIngsDefault to (NumNewIngsDefault - 1) | |||
set Choosing to -1 | |||
elseif (Choice == 4) ;Cancel | |||
set Choosing to -1 | |||
elseif (Choice == 5) ;+1 | |||
set NumNewIngsDefault to (NumNewIngsDefault + 1) | |||
set Choosing to -1 | |||
elseif (Choice == 6) ;+2 | |||
set NumNewIngsDefault to (NumNewIngsDefault + 2) | |||
set Choosing to -1 | |||
elseif (Choice == 9) ;Return to previous menu | |||
set Choosing to -1 | |||
endif | |||
Endif | Endif | ||
Endif | Endif | ||
End</pre> | End</pre> | ||
[[Category: Scripting Tutorials]] | [[Category: Scripting Tutorials]] |