GetButtonPressed

From GECK
Jump to: navigation, search


A function included in the GECK for Fallout 3.

Description

GetButtonPressed is used to determine which button has been selected after a message box has been displayed using ShowMessage.

Syntax

[help]
(button:int) GetButtonPressed

Example

set buttonVar to GetButtonPressed

The first time this is called after a ShowMessage button has been pressed, it returns the index of the button that was pressed, starting at zero. At all other times it returns -1.

Example

Begin OnActivate
	showmessage ExampleMessage
	set awaitingInput to 1
end

begin gamemode
	if awaitingInput == 1
		set buttonVar to getbuttonpressed

		if buttonVar > -1
			set awaitingInput to 0

			if buttonVar == 0
				; choice 1
			elseif buttonVar == 1
				; choice 2
			elseif buttonVar == 2
				; choice 3
			endif
		endif
	endif
end

Notes

  • This will only react to a ShowMessage call from within the same script.
  • This command along with ShowMessage works inside quest scripts, however the script processing delay must be set to 0.1 or lower or else the timing might be off resulting in the buttons not doing anything.
  • The button indices are shown in the GECK when editing the message object and remain the same even if certain buttons are hidden with conditions. So, if a Message has 3 buttons, GetButtonPressed will return 2 when the last one is pressed even if that is the only button actually being displayed.
  • As demonstrated in the example above, always store the return value of GetButtonPressed in a variable, then check the variable instead of calling GetButtonPressed directly in an "if" statement. Attempting to call GetButtonPressed in successive "if" conditions will cause your menu to fail silently for all options except the first—the first "if" statement calls GetButtonPressed and gets the value of the button pressed, clearing the stored information. GetButtonPressed will then return -1 for each of the remaining "if" statements.

See Also