GetMenuHasTrait

From The Elder Scrolls Construction Set Wiki

A function added by the Oblivion Script Extender.

Syntax:

(hasTrait:bool) GetMenuHasTrait traitName:formatString menuType:short

Returns 1 if the menu has the trait specified. The trait name may be qualified with component names to access traits of subcomponents.


Example:

if ( GetMenuHasTrait "item_count\string", 1002 )
 ;Some Non-Vanilla Inventory-Mod has been installed
 ;i.e. the one from [http://theelderscrolls.info/?go=dlfile&fileid=292 Oblivion Improved]
endif

Contents

Formatting notation

%.2f - This means format the variable with 2 decimal places.

%.0f - This will format the variable with 0 decimal places, so is the normal choice for integers.

%5.0f - The number in front of the point specifies the minimum width of the number. In this case, there will always be enough space in front of the number for 5 digits:

Number    12 wins
Number  1234 wins

Formating switches

The following formatting switches can be used in Oblivion. Put them in any sequence right after the '%'

Switch Function
+ Display + in front of positive numbers
<Space> Leave a leading space in front of positive numbers
- Use left-aligned formation instead of right alligned.
0 The filling-char used for formatting is '0' instead of ' '

Other Functions

%g - This usually works just like "%.0f", displaying 0 decimal places. When the number is 1000000 or larger, though, the game displays it in scientific notation (1E+006)

%.3e - Shows numbers in scientific notation (123000 = 1.23E+005)

%% - Use this to display a percent-sign in the message


OBSE Format Specifiers

In addition to the format specifiers supported by Oblivion's Message and MessageBox functions, OBSE functions understand additional specifiers.

%r - Prints a carriage return, ending the current line and starting at the next.

%n - Prints the name of the specified reference or object.

  • In OBSE versions prior to v0014a, %n can crash if the object's name contains a percent sign.

%i - Prints the formID of the specified reference or object. GOTCHA : as of v18, if a refVar is passed which points to a ref not loaded in memory %i will print 00000000 even if the refVar is not empty.

%k - Prints the name of the key for the specified DirectInput scancode, such as those used for IsKeyPressed2.

%c - Prints the specified component of the specified reference or object. Takes two arguments - a reference variable set to the spell or faction, and an index. Behaves differently depending on the passed reference:

  • Faction: Prints the nth male rank title
  • Magic Item: Prints the nth Magic Effect
  • Prior to OBSE v0015, magic effects using actor values (such as Restore Agility) would not display the specific actor value.
  • Actor values may not display correctly for non-English versions of Oblivion.

%p - Displays a pronoun based on the gender of the object parameter:

  •  %po - objective (him, her, it)
  •  %pp - possessive (his, her, its)
  •  %ps - subjective (he, she, it)

%q - Prints a double quote character.

%a - Prints the character corresponding to the specified ASCII code. Passing codes for unprintable characters (such as 0) may have unpredictable (though occasionally useful) results. Passing the code for a percent sign will most likely crash the game as literal percent signs must come in pairs.

%v - Prints the actor value (i.e. an attribute or skill) associated with the passed actor value code.

%e - Provides a workaround for the script compiler's refusal to accept an empty string as a command argument.

  • Example:
SetNameEx "" object    ; attempts to remove an object's name, but won't compile
SetNameEx "%e" object  ; sets the name to an empty string

%{...%} - Conditionally displays or omits the bracketed portion of the format string based on a boolean value. Accepts a variable - if the value of the variable is zero, all text and parameters up to the matching right bracket will be ignored. Otherwise the bracketed text will be displayed.

  • Example (should be single-line, line-breaks added for Wiki)
MBoxEX "Doom comes%{ for you%}. What will you do?
|Dig a hole, hide
%{|Find someone, offer as sacrifice|Find someone, use as shield%}
|Enjoy your final 15 minutes" bDisplay bDisplay

If bDisplay is 0 this will print out

   Doom comes. What will you do?
   [Dig a hole, hide]
   [Enjoy your final 15 minutes]

If bDisplay is 1 this will print out

   Doom comes for you. What will you do?
   [Dig a hole, hide]
   [Find someone, offer as sacrifice]
   [Find someone, use as shield]
   [Enjoy your final 15 minutes]
  • Note: When using GetButtonPressed with messageboxes that can have a variable number of buttons displayed using %{...%}, the return value will be relative to the actual number of buttons displayed and will not include buttons hidden by %{...%}.


Menu Type

1 = "main four" (the character interface: stats, magic, inventory, quest log)
2 = any other menu (message boxes, containers, etc.)
3 = console

Specific menus

1001 = Message
1002 = Inventory
1003 = Stats
1004 = HUDMain
1005 = HUDInfo
1006 = HUDReticle
1007 = Loading
1008 = Container, Barter
1009 = Dialog
1010 = HUDSubtitle
1011 = Generic
1012 = SleepWait
1013 = Pause
1014 = LockPick
1015 = Options
1016 = Quantity
1017 = Audio
1018 = Video
1019 = VideoDisplay
1020 = Gameplay
1021 = Controls
1022 = Magic
1023 = Map
1024 = MagicPopup
1025 = Negotiate
1026 = Book
1027 = LevelUp
1028 = Training
1029 = BirthSign
1030 = Class
1031 = Attributes
1032 = Skills
1033 = Specialization
1034 = Persuasion
1035 = Repair / Ingredient Selection (Alchemy sub-menu)
1036 = RaceSex (Character Generation Screen)
1037 = SpellPurchase
1038 = Load
1039 = Save
1040 = Alchemy
1041 = SpellMaking
1042 = Enchantment
1043 = EffectSetting
1044 = Main
1045 = Breath
1046 = QuickKeys
1047 = Credits
1048 = SigilStone
1049 = Recharge
1051 = TextEdit
Personal tools