Difference between revisions of "MessageBox Tutorial"

98 bytes added ,  10:37, 15 April 2010
no edit summary
imported>Haama
(→‎Intro: Bit of a rewrite)
imported>Darkness X
 
(8 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 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.
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.
Line 176: 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 272: Line 273:
end</pre>
end</pre>
Set Working to 0 when you wish to keep the script from running.
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 end 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:
* 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
<pre>short Working
...
...
begin onActiavte
begin onActivate
...
...
   set Working to 1
   set Working to 1
Line 282: Line 283:
begin GameMode
begin GameMode
   if Working
   if Working
    set Working to 1
     if (Choosing == 0)
     if (Choosing == 0)
       set Working to 0
       set Working to 0
Line 288: Line 291:
...
...
     endif
     endif
    set Working to 1
   endif
   endif
end</pre>
end</pre>


====Other methods====
====Other methods====
* [[MessageBox_Tutorial:_Quest_Scripts|Quests]]
* [[MessageBox_Tutorial/Quest_Scripts|Quests]]
* [[MessageBox_Tutorial:_Token_Scripts|Tokens]]
* [[MessageBox_Tutorial/Token_Scripts|Tokens]]
* [[MessageBox_Tutorial:_Spell_Scripts|Spells]]
* [[MessageBox_Tutorial/Spell_Scripts|Spells]]


===What you'll need===
===What you'll need===
Line 309: Line 311:
===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, [[:Category:Troubleshooting#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.
#*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 340: Line 342:
Begin GameMode
Begin GameMode
   If Working
   If Working
    Set Working to 1
     If (Choosing == 0) ;meaning it shouldn't be running
     If (Choosing == 0) ;meaning it shouldn't be running
       Set Working to 0
       Set Working to 0
Line 364: Line 368:
       Endif
       Endif
     Endif
     Endif
    Set Working to 1
   Endif
   Endif
End</pre>
End</pre>
Line 410: Line 413:
Begin GameMode
Begin GameMode
   If Working
   If Working
    Set Working to 1
     If (Choosing == 0) ;meaning it shouldn't be running
     If (Choosing == 0) ;meaning it shouldn't be running
       Set Working to 0
       Set Working to 0
Line 519: Line 524:
       Endif
       Endif
     Endif
     Endif
    Set Working to 1
   Endif
   Endif
End</pre>
End</pre>
Line 526: Line 529:
==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:_Centralized_Decision_Catching|Centalizing your decision catching]]
<br>[[MessageBox_Tutorial/Centralized_Decision_Catching|Centalizing your decision catching]]
<br>[[Messagebox_Tutorial:_GameMode_And_MenuMode|Running menus in both GameMode and MenuMode when your script is too large]]
<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/Ensuring_Your_Menu_Is_Seen|Ensuring your menus are seen]]
<br>[[Messagebox_Tutorial:_Set_Variables|Allowing the player to set a variable to any number]]
<br>[[Messagebox_Tutorial/Set_Variables|Allowing the player to set a variable to any number]]
<br>[[MessageBox_Tutorial:_External_Menu_Selection|Controlling the menu system via external scripts]]
<br>[[MessageBox_Tutorial/External_Menu_Selection|Controlling the menu system via external scripts]]


==Applying it all==
==Applying it all==
Line 564: Line 567:
Begin GameMode ;Running menus in both GameMode and MenuMode
Begin GameMode ;Running menus in both GameMode and MenuMode
   If Working
   If Working
    Set Working to 1
     If (Choosing == 0)
     If (Choosing == 0)
       Set GMRun to 0
       Set GMRun to 0
Line 604: Line 609:
       Set Choosing to 0
       Set Choosing to 0
     Endif
     Endif
    Set Working to 1
   Endif
   Endif
End
End
Line 612: Line 616:
Begin MenuMode
Begin MenuMode
   If Working
   If Working
    Set Working to 1
     If (Choosing == 0)
     If (Choosing == 0)
       Set GMRun to 0 ;Running menus in both GameMode and MenuMode
       Set GMRun to 0 ;Running menus in both GameMode and MenuMode
Line 710: Line 716:
           endif
           endif
     Endif
     Endif
    Set Working to 1
   Endif
   Endif
End</pre>
End</pre>
[[Category: Scripting Tutorials]]
[[Category: Scripting Tutorials]]
Anonymous user