Bot Of The Month Club
Magine's bot has been around for quite a long time - it is one of the earlier "general purpose" bots - so it has had time to mature and develop its feature set. Below, Magsbot, as described by Magine:
The intention behind Magsbot was to make an expandable, all-purpose bot that could be easily programmed for whatever behavior the user had in mind. While this is possible with several of the popular bots out there, I feel that MB is easier to use since behaviors can be quickly tested and changed "on the fly" without having to reload an entire script and restart...sort of a "bot interpreter." The basic functionality is built-in, so you only need to write small snippets of instructions rather than a whole script. If you just want a chat bot, seed bot or survey bot, those capabilities are already there too.
The basic concept behind MB is the user-editable "Behavior Table", a grid containing descriptions of Events that the bot should respond to and Actions (bot commands) that describe the bot's response. MB's abilities can also be expanded through user-defined buttons with lists of bot commands attached. Or, the user can enter "immediate mode" commands for the bot to carry out at once. All of these methods use the same simple but extensive language with over 150 commands controlling every aspect of bot hehavior, program flow and data manipulation, such as movement, chat, building, surveying conditionally, teleporting or warping the bot or other avatars, assigning variables or managing lists of variables, as well as programming commands such as IF, WHILE, SWITCH and error trapping. Pretty much every Event and Method in the SDK (except those restricted to Universe owners) is supported by MBot!
As an example, a simple "paintball" bot could be created just by entering these commands into the table:
The "Active" column merely allows you to deactivate a particular row of the table temporarily, if desired. The $atr function returns the value of an AW Attribute.
With the above instructions in the table, any avatar that is clicked on within the bot's presence would be warped to Ground Zero of that world. You could expand on this a bit to provide a "safe zone" near Ground Zero and also keep score:
The @atr function is like $atr except that it returns a number instead of a string. The double-pipe symbol "||" means "or", and the "&&" means "and".
The added part describes conditions that must exist for the associated Action to take place: i.e., the clicked-on avatar must be outside a 2000x2000 area around GZ. (MBot uses SDK coordinates, so 2000x2000 would be between 1N and 1S, 1W and 1E.)
The @v_ function returns the value of the variable with the specified name, or a 0 if the variable doesn't exist. You can also refer to variables directly, but using @v_ allows the variable name itself to be a variable!
Three more commands have been added to the Action. The second command creates a temporary text string $x, composed of "score:" + the name of the person doing the clicking. The next command assigns a value to a global (i.e. permanent) variable, using the "score:avname" string as a name for the variable. The value it assigns is the current value of the "score" variable + 1. Finally, the bot reports the new score using a formatted output function.
To check the score, you could create a user-defined button (just right-click on MBot's Actions panel to make a new button) containing this command:
The $pick function causes a window to appear containing a list of all variables with the specified prefix. Whatever variable in that list that the user selects by clicking, is returned and stored in $s; in this case we're only using $pick to show the list, so $s isn't used, but you have to assign the result to something. The $pick window would look something like this:
Variables are (by default) stored in a file when MBot quits, so the scores would be preserved between sessions automatically.
For people who aren't into programming, I've provided a standard Behavior Table and many already-defined Action Buttons with MBot. The standard table includes responses to whispered commands to "come", "follow" or "stay", for example. Included buttons allow you to set and return to bookmarks, record and playback movements, and many other features. If someone has a good idea for a bot feature, they can email me and I'll try to add a button or Behavior Table entry for it! (But no telegrams, please!)
Some other things MBot has been used for:
What's next for MBot? In planning is an actor bot that records and replays avatar movements, gestures and speech to give a performance; and a ghost hunt game for A'tuin2 in October.