New in 3.5 is the ability to use a custom toolbar layout, along with customized toolbar graphics. This feature is
primarily designed for use by universe administrators who can now design a custom toolbar prior to distributing
The new toolbar can have many commands available in addition to those traditionally used on the toolbar.
For example, a button could be added to open the World Features dialog, or to exit the application. The
buttons may be used in any order and may be grouped in any manner using spacers. If the toolbar
is wider than the available space, then a dropdown menu button will automatically be added to allow access
to the remaining buttons.
A toolbar image is a grid of button images stored as a windows bitmap (BMP) in the /default/toolbars directory.
Different toolbar images can be used to change the look of the toolbar buttons. Toolbar images are interchangeable
(even those of different sizes) as long as the images convey the same meaning, and are arranged in the same order.
The toolbar image itself is divided into five rows, and any number of columns. The first column is always used for
the dropdown menu button graphic. Each column represents a single button, and each row represents a different
version of the button as follows:
Row 1: Image of button in its normal, unpressed state.
Row 2: Image of button pressed
Row 3: Image of button in its normal, unpressed state with mouseover.
Row 4: Image of button pressed, with mouseover
Row 5: Image of disabled button.
Here is an example toolbar image:
The buttons may be any size, but they must be square. The browser determines the button size by dividing the height
of the toolbar by 5. The image above is 160 pixels height, so the browser will determine the button size to be
32 x 32. The width of the image is then divided by this number to determine the number of columns. The image above
is 192 pixels wide, which tells the browser that there are a total of six columns available. These columns are numbered
left-to-right, starting with zero for the first (the drop-down menu button image) column.
The toolbar layout is stored in the toolbar.cfg file in the /toolbars directory. This file tells what
commands are available on the toolbar, and what images those commands should use. Each line in the file
represents one button. The line should contain the command the button performs, followed by the column number of the
toolbar image to use for that button, followed (optionally) by the message number from the message set to
be used as a tooltip. For a complete list of available commands see below.
Here is an example toolbar file.
Any button which is not not associated with a valid command will act as a spacer. A spacer will only use the image
from row zero (Unpressed) and will not respond to user input.
Each button can be assigned one of the following commands:
The command "sdk_event" is a special command which requires further elaboration. In the toolbar config,
you may assign any number of buttons to this action in the following format:
sdk_event <image_number> <message_number> <id_number>
As with other commands, image_number and message_number specify what toolbar button image
and message set entry to use for the button. For sdk_event, all fields must be specified,
even message number. Additionally, an sdk_event button must be assigned a message id. This can
be any number between 0 and 32767. When the user presses this button, a message is sent to the world server
along with the given id, which is in turn sent to all bots with caretaker status. In this way a bot
can be written than can react to toolbar buttons to perform various game-type functions such as
"attack" or "show inventory". This provides another way for the user to interact with game-style worlds.
Note that this command is meaningless unless used with a world configured to handle these special commands.
This feature requires the 3.5 versions of the world server and SDK.