In zMUD versions 6.65 and later, pressing Ctrl-T brings up the Simple Trigger
Wizard. This wizard can be customized via *.WIZ files.
This document describes the features of this system and provides examples of how
to customize this file.
Overview
The Simple Trigger Wizard allows you to construct a zMUD script from the
answers to various questions that the user answers. Each section of the
*.WIZ (referred to as the WIZFile from here on) contains the details on
the questions that the user is asked and how those answers are converted into a
zMUD script.
zMUD will first load the contents of the ZMUD.WIZ file in the main zMUD
directory. This is the master file distributed with zMUD and may change
with each zMUD update, so it should not be modified. Next, any other *.WIZ
file in the zMUD directory is loaded. Finally, any *.WIZ file in the
MUD-specific subdirectory is loaded.
The *.WIZ files are in Windows INI file format, which is used to provide compatibility with 3rd
party tools and to provide easy modification. Any text editor, such as
NotePad, can open and edit the *.WIZ files.
Each section of the WIZFile has the following structure:
[Title of this wizard rule]
Author=optional name of author of this wizard
Version=optional version number of this wizard
Date=optional date this wizard was created
Start=optional expression to determine the starting question number for the wizard
Param1=First question to ask the user
Type1=type of answer allowed (string, number, etc)
Default1=default value for answer
Validate1=optional validation expression
Convert1=optional conversion expression
NextN=optional expression to specify the next question number to ask. 0 goes to next question, -1 goes to finish
CommandN=override the default command with this new command when the current answer is accepted
Param2=...
Type2=...
...
Command=script command
Any number of questions can be asked. The user steps through the
questions using the Next and Prev buttons. When the last question is
reached, the Finish button becomes enabled. The user is shown the full
script command that has been constructed and is able to edit the results before
clicking the Finish button to execute the command.
The parameter entered by the user is stored in the $1..$99 variables and can
be referenced in any of the other strings in the WIZFile. The $1..$99 are
similar to the normal %1..%99 variables in zMUD in that they are expanded before
any other parsing is done. The $ is used instead of % to allow you to use
the normal %1..%99 references in any script created by the wizard.
Special characters such as the # command character can be overridden by the
player. In order to create a wizard that works no matter what special
characters are being used, you can use the sequences \# \% \@ \; \~ etc to
reference zMUD special characters. These meta values are replaced with the
actual special characters used by the player when executed.
You can leave out the use of \ to override special characters. If you
do not use the \ expansion, then zMUD will temporarily use the standard set of
special characters when executing your functions or commands. While this
is fine for hidden functions such as the parameter validation and conversion, it
is important to use the \ meta characters in your command output so that the
player will see the trigger created by the wizard using the special characters
they are used to.
Header Information
Several optional header fields can be included in your wizard. The
Author, Version, and Date fields are used to publish your author name, the
version of your wizard, and the date is was created. The values of these
fields are displayed to the user at the bottom of the dialog when they are
running your wizard.
When you first select the wizard rule, the wizard normally starts with
question number one (Param1). You can change this using the Start string
in the WIZFile. The optional Start string should point to an expression
that returns a number. This number will determine the first question
number to ask the user.
Parameter Question
The ParamN field in the WIZFile specifies the question string to be displayed
to the user in the wizard. This string is both expanded for zMUD variables
(and function execution) as well as expanded for other parameters using the
$1..$99 syntax.
Parameter Types
There are several different parameter types that determine the type of answer
you want the user to give to your question:
- string
- A single-line string result.
- memo
- A multi-line string result. Line breaks are implemented as #13#10
(or \r\n) characters imbedded in the text result.
- number
- A numeric value.
- stringlist
- The user is presented with a grid and can enter any number of words into
the list. The result is returned as a zMUD string list with the |
character between each entry
- picklist:valuelist
- A Windows Combobox (pulldown box) is filled with the strings given in the
ValueList string list. The string selected by the user is returned as
the value. The ValueList is expanded for meta characters and for zMUD
variables and functions.
- pickindex:valuelist
- A Combobox is filled with the strings given in the ValueList string list
as above. However, unlike the picklist, the numeric index of the
selected string is returned as the value instead of the string itself.
- radio:valuelist
- Presents the ValueList to the user as a set of radio buttons. The
numeric index of the radio button selected (starting with zero) is returned.
- check:valuelist
- Presents the ValueList to the user as a set of checkboxes. The
numeric value of the checkboxes is returned, with each checkbox representing
a bit position. Thus, the first checkbox has a value of 1, the second
one a value of 2, the third one a value of 4, the 4th one a value of 8 and
so on. The values are added together. So, if the first and third
checkboxes are selected, a value of 1+4=5 is returned. There is a
limit of 31 items in the ValueList.
- checklist:valuelist
- Similar to check in that a series of checkboxes is shown. However,
instead of returning a numeric value, a string list of the items selected is
returned. This check list can have any number of items in ValueList.
- list:valuelist
- Similar to picklist, but the list of items is presented in a scrollable
list instead of a pulldown combobox.
- listindex:valuelist
- Similar to pickindex, but the list of items is presented in a scrollable
list instead of a pulldown combobox.
- color
- A full color selection dialog is presented to the user. Color values
appropriate for the #COLOR or #CW commands are returned. Specifically,
the user can either select an ANSI color attribute, returned as a numeric
value, or can select web colors from a pulldown list, or can select any RGB
color returned as an #RRGGBB string. If both a foreground and
background color are selected, they are returned separated by a comma.
- message:text of message
- No input is collected from the user. The "text of message"
is displayed in the wizard and the user just clicks the Next button.
The message text is expanded with any meta characters and zMUD variables or
functions.
Default Values
The DefaultN string in the WIZFile can be used to specify the default value
for the answer. This string is expanded for the $1..$99 previous answers
as well as the \ meta characters. It is also expanded as a normal zMUD
string for any variables or function calls. This default value is
recomputed every time you display this question until the user specifically
changes it. So, even after pressing Next and Prev it will be recomputed,
allowing you to change some other answer that the default value depends upon.
Input Validation
When the user clicks the Next button to accept the current answer, this
answer can be optionally validated with the ValidateN string in the WIZFile section. The value of the ValidateN key is a zMUD expression that should
return true (or non-zero) if the answer is acceptable, or return False (or zero)
if the answer is not allowed.
For example, if you wanted the user to enter a number from 1 to 10 inclusive,
you could do the following:
Param1=Enter a number from 1 to 10
Type1=number
Validate1=($1 >= 1) and ($1 <= 10)
Note that the answer entered by the user is referenced using the normal %nnn
syntax. %1 refers to the answer of the Param1 question, %2 refers to the
answer of the Param2 question, and so forth. Previous answers are always
available so you can use previous answers in your validation test.
Input Conversion
After the answer from the user is validated, it can also be optionally
converted. To convert the answer to a different form, use the ConvertN
string in the WIZFile section and specify a zMUD function string. For
example, to replace all occurrences of the CR/LF in a Memo result with the |
character, you could do the following:
Param1=Enter some text
Type1=memo
Convert1=%replace("$1",%char(13)%char(10),"|")
This example uses the zMUD %replace function to replace all occurrences of
character 13 and character 10 with the | character. Any zMUD function can
be used here, including COM calls and other advanced features. You can
also write conversion functions in VBScript using the normal %mss function in
zMUD. Remember that the %1..%nn parameters will be replaced directly as
string values before the conversion function is parsed.
Controlling Flow of Questions
Normally when the user clicks the Next button, the next question will be
asked. To change this and jump to a different question, you can use the
StepN string in the WIZFile. This is a function that should evaluate to a
numeric value. If the value is zero, the next step is taken as
normal. If a -1 value is returned, the wizard will jump to the end,
present the command to the user and allow the user to click the Finish
button. Otherwise, if another number is returned, that question number is
asked next.
Command Generation
When all of the questions have been answered, the %1..%nn variables contain
the answers given by the user. The value of the Command string in the WIZFile
section is now parsed with the %1..%nn parameters replaced by the text
given by the user. The resulting command string is presented to the user
in a syntax-checker window with the PrettyPrint and Multiline options set.
The user can edit this script, and the script will be executed when the user
clicks the Finish button.
At any step you can override the Command string using the CommandN string in
the WIZfile. When an answer is accepted, the optional CommandN argument
will replace the current command. If CommandN starts with a + character,
it is appended to the current command along with the current command separator
character (;)
Just before the final command is presented to the user, it is expanded for
any <> syntax to perform any immediate evaluation. This allows you
to construct the command in a variable and then expand the variable to present
the full command to the user.
During the entire wizard, zMUD sets the default class to a temporary class
folder. This temporary class is deleted just before the final command from
the wizard is executed. The final command is executed in the user's
current default class.
Example
The ZMUDWIZARD.INI file comes with several examples. Here is one of the
examples for creating a trigger to color various words sent by the MUD:
[Change the color of certain words sent by the MUD]
Author=Zugg
Version=1.0
Param1=Enter the list of words you want to color.
Type1=stringlist
Param2=Select the color to display these words.
Type2=color
Command=\#TRIGGER {{$1}} {\#CW "$2"}
Notice the use of \# to convert this to whatever special character the player
is using for the command character.
Conclusion
The power of zMUD scripting can be used to create quick complex rules for the
Simple Trigger Wizard. This provides a good way to help new users learn
how zMUD scripting works since they are able to see the result before it is
executed.