Tes3Mod:MessageBox

The UESPWiki – Your source for The Elder Scrolls since 1995

Jump to: navigation, search

MessageBox

                MessageBox, "Message", [Var1], [Var2, ...], ["button1"], ["button2"], ...

       Where:   Message      = String message to display
                Var1, 2, ... = Optional variables to insert into message
                Button1, ... = Optional button texts for displaying choices

        Type:   Misc

     Returns:   none

     Example:   

     Scripts:   

The MessageBox function has two main abilities, to display simple text messages to the player at the bottom of the screen and to display a list of choices to the player. To display a message use the function like the following:

                MessageBox, "This is a simple message"                ; Simple text message
                MessageBox, "GameHour = %.2f", GameHour               ; Display a float value with 2 decimal points
                MessageBox, "Long/Short = %G", 101            ; Display a short/long value, not %D as in the help file!
                MessageBox, "String = %S", "SomeString"             ; Display a string value, kinda useless, might not work

Use the optional variables to display numbers/strings in the message text. When displaying float values you must specify the number of decimals places to use. You can also use the %.0f format to display short/long variables. Although the help file only shows 1 or 2 optional variables, there can be more than 2.

To display a list of choices to the user, use the format:

                MessageBox, "Press ok to continue...", "Ok"         ; One choice
                MessageBox, "What is your answer?", "Yes", "No"           ; Two choices
                MessageBox, "Choose a number", "1", "2", "3", "4", "5"      ; Five choices

There are also a number of special strings which can be used within the MessageBox string. They all begin with the ^ and not the % character as written in the help file:

                ^PCName         The player's name.
                ^PCClass        The player's class.
                ^PCRace         The player's race.
                ^PCRank         The player's rank in the speaker's faction.
                ^NextPCRank     The player's next rank in the speaker's faction.
                ^Cell           The cell the player is currently in.
                ^Global         Any global variable value (ex: ^Day). Floats display with 1 decimal. 
                ^NPC.Name       The NPC's name.
                ^NPC.Race       The NPC's race.
                ^NPC.Class      The NPC's class.
                ^NPC.Faction    The NPC's faction. If they have no faction, it will be blank.
                ^NPC.Rank       The NPC's rank.
        

This is the same format used in dialogue info texts although for dialogue you can omit the NPC. to use the speaker by default (if you omit the NPC. in scripts the player is used by default).

To return the user's choice, use the GetButtonPressed function, for example:

begin TestMessageScript
        short MessageOn
        short Button

                        ; Display message when the player activates the object
        if ( OnActivate == 1 )
                set MessageOn to 1
        endif

                        ; Display the choices to the user
        if ( messageOn == 1 )
                MessageBox, "Do you wish to drink from the Bitter Cup or to pick it up?", "Drink", "Pick it up"
                Set messageOn to 2
        endif

        if ( messageOn == 2 )
                set Button to GetButtonPressed

                if ( Button == -1 )     ; Nothing
                        return;
                endif
                if ( Button == 0 )      ; drink it
                        Disable
                        player->ModStrength, 20
                        Set MessageOn to 0
                        return
                endif
                if ( Button == 1 )      ; pick it up
                        Activate
                        Set MessageOn to 0
                        return
                endif
        endif
end

Use a similar setup for asking the user other choices.

If you pop up a message box with an 'ok' button when a saved game is loaded immediately after running Morrowind, you won't have a mouse pointer to click on the 'ok' button to get rid of the message box. The game also keeps running while the message box is displayed; it doesn't pause as it normally does. You can right-click to get into Menu mode, and then you'll have a mouse pointer to clear the box with. This only happens the first time you load a save after running Morrowind; if you load a save from within the game, you do get a mouse pointer to click the 'ok' button with. So apparently it's some sort of initialization problem.

See Also: GetButtonPressed

Sponsored Links
Personal tools