HamBot Online Help Copyright © 1998 by Prototech, Inc. Written by Nelson Crowle AKA HamFon
Edited and parts re-written by John Shipley AKA Talisan, Copyright © 2008 by Darkestdestiny.com
Introduction
HamBot is a general purpose Bot creation and manipulation program for the
Active Worlds environment (Version 2 or newer). It allows you to
create Bots, place them or move them in the worlds, have them "talk" using a
script, have them interact with other avatars, and have them create and modify
building objects.
HamBot can be run simultaneously with the Active Worlds browser. Since HamBot
does not provide any 3D display, running with AW during script and Bot
development is very convenient. HamBot creates multiple avatar Bots, all being
controlled from the same machine, over the same Internet connection.
Installation
The zipped HamBot distribution file contains the HamBot
executible and some sample Bot scripting files. The sample files are a good place to start
and then modify for your own purposes.
To install, create a subdirectory (e.g., "HamBot") on your machine. Then,
unzip this distribution file into this directory. You can then run HamBot.exe
from Windows explorer, or create a shortcut either on your desktop, on on the
Programs section of the Start bar. By default, HamBot looks in it's current
directory for script files.
General Usage
HamBot uses scripts to automate the creation and functionality of the Bot(s)
(see "Scripting Elements").
When you first start HamBot, you must log in to validate your identity and
Bot creation rights. HamBot will pop up a dialog asking for a CitizenNumber and
PriviledgePassword. The CitizenNumber you choose determines what Bot rights you
will have. If the CitizenNumber is a PS or ED in the world where you will be
creating Bots, you will be allowed to create them anywhere in the world (and to
use Special avatars). If the CitizenNumber is not in the PS/ED list, then you
will be allowed to have Bots speak only outside the restricted radius, and Bots
who venture inside the restricted radius are moved to 0N 0W 1A in the world.
HamBot gets the restricted radius from the world, then adds 200 meters to it.
So, for example, AW has a restricted radius of 80 meters. HamBot adds 200, so
you would not be allowed to crate or move bots within 280 meters of ground zero,
unless you have PS/ED rights.
After logging in, start a script from the Bot menu. Several sample scripts
are included. The script specifies which Bots to create, where to create them,
what they say, how they move, and how they build.
The configuration (.ini) file
HamBot uses a file similar to the aworld.ini file used by the Active Worlds
browser. I have used the same words to try and make the files compatible.
Various options, particularly for starting up HamBot, can be set within this
file. The file name is HamBot.ini. It is a text file, located in the HamBot
directory, and in the standard Windows format for configuration files: a
"section" header in square brackets, followed by zero or more "items", with a
keyword followed by a value.
- The [citizen] section
- number=CitizenNumber specifies the default citizen number to use
when logging into HamBot
- password=privpassword specifies the default citizen priviledge
password to use when logging into HamBot
- The [universe] section
- port=5670 specifies the port of the galaxy or universe server for
logging in to HamBot - default is 5670
- host=www.myserver.com specifies the host name of the universe
server for logging in to HamBot - default is the Active Worlds universe
server
- The [program] section
- LogAll=1 Causes HamBot to log each line it displays in it's main
window into the LogBot.txt file. Previously, HamBot did this anyway, but
now, it will NOT do it by default, and you must include LogAll=1 to cause
HamBot to log lines.
- LogChat=1 Causes HamBot to log each chat line into the
LogChat.txt file. Previously, HamBot did this anyway, but now, it will NOT
do it by default, and you must include LogChat=1 to cause HamBot to log chat
lines.
The menu
File menu
The items in this menu control what information is
displayed in the main HamBot display window. The items that are (debug only) are
normally not available to the typical user.
- ShowNeighbors/ShowMessages Causes the main window to display (or
update) the list of neighbors for the currently selected Bot (see the Bot
Selection combo box), or to display the chat and status messages in the
window. This menu item toggles back and forth between these two options.
- Show script as processed Displays a line in the HamBot display
window as each line of the script is processed
- Show all chat messages Displays a line in the HamBot display window
each time a chat message is received from another avatar
- Show hex Displays lines in the HamBot display window with
byte-by-byte detail of each message (debug only)
- Show received messages Displays a line in the HamBot display window
each time a network message is received (debug only)
- Show sent messages Displays a line in the HamBot display window
each time a network message is sent (debug only)
- Show debug messages Displays lines in the HamBot display window
which are specially included for debugging purposes (debug only)
Bot menu
For the items below that act upon the "currently selected"
bot, use the Combo Box control on the HamBot screen to select which bot will be
affected. This Combo Box also determines which set of neighbors will be
displayed.
- Start script ... Brings up a dialog box of .txt script files. Each
script file describes to HamBot what Bots to create, and how each will act and
interact with the environment.
- Quickmove Brings up a submenu to quickly move the "currently
selected" Bot (in the bot selection combo box) by a fixed distance
- Teleport ... Brings up a dialog box to allow you to move the
"currently selected" Bot anywhere, change worlds, and change the avatar or
gesture. If the Bot is moving using the Random type of movement, then the new
location becomes the new center for the random wandering.
- Release ownership Forces the "currently selected" Bot to become
freed from it's owner
- Kill bot Logs the "currently selected" Bot out, and removes it from
ActiveWorlds. This does not affect other Bots in the same script.
Utilities menu
- Citizen number to name Given a citizen number, returns the citizen
name.
- Citizen name to number Given a citizen name, returns the citizen
number.
- Get host name for IP address Given an IP address, using reverse
ARP, displays the host name for that address.
Help menu
- On line help (html) Causes this ham_bot.htm file to be displayed in
your web browser.
- About HamBot Displays copyright information, author, and version
number information.
Screen controls
- Main display and message window This window displays messages as
the are received/sent/processed. It also displays Bot neighbor information.
Selection of whether to display messages or neighbors is done with the
File/ShowNeighbors or File/ShowMessages menu item. The main window may be
resized - the controls are on the left of the screen, so the controls do not
resize with the window.
- Bot selection combo box This control contains a list of all the
currently running bots, both by name, and by Bot slot (so you can tell them
apart if they have the same name). Click on the bot you want to work with
manually in this control. Then the Bot menu and the Neighbors display will use
your selected Bot when they perform their tasks.
- Chat button Sends the text from the Chat text edit box as a message
that the Bot is speaking, then clears the Chat text edit box.
- Chat text edit box Enter the message you wish for the Bot to speak
in this control, then click the Chat button.
Scripting Elements
General info
When you run a script, HamBot starts reading at the first line, and processes
one line at a time. Each line contains a either command or a comment (starting
with '//', which is ignored). You may use leading whitespace (spaces, tabs) to
make the script file more readable. The command may be followed with either an
'=' or a space - for readability. Generally, all lines are processed
immediately, and in sequence. When a "chat" line (SAY) is reached, it is
processed, then processing of subsequent lines pauses until the value for
"SPEAK=" counts down to zero. This is also true for the PAUSE script command.
Then all lines up to the next chat text are processed. This allows you to
specifically move the Bot, to change it's gesture, or to change it's avatar, and
relate the changes to chat text.
NOTE - YOU MUST START A BOT BEFORE YOU CAN MOVE IT, ETC. To make sure that a
Bot is ready to be moved, use the WaitFor script command.
Bot positioning and attributes
- NS= to set the NorthSouth Bot location in 100ths of a meter. < 0
is south, > 0 is north. E.g., to set for coordinates "12N 34W" use NS=12000.
- WE= to set the WestEast Bot location in 100ths of a meter. < 0
is east, > 0 is west. E.g., to set for coordinates "12N 34W" use WE=34000.
- Altitude= to set the Altitude Bot location in 100ths of a meter.
E.g., to set for coordinates of "12N 34W 1A" (which is 10 meters),
Altitude=1000.
- Rotation= to set the direction the Bot faces, in 10ths of a degree.
North is 0 degrees (Rotation=0), West is 90 degrees (Rotation=900), South is
180 degrees (Rotation=1800), East is 270 degrees (Rotation=2700).
- Avatar= to set the avatar index (same as the list of avatars in AW,
starting at 0)
- Gesture= to set the avatar gesture (0 means no gesture, then values
of 1 or more for each gesture button available for an avatar). If you choose a
number larger than the number of gestures available for that avatar, it is
ignored. If you want to repeat a gesture (angry then angry again), you must
set gesture to 0 in between.
- World=xx causes the Bot to log out of the current world and log in
to the specified world. The world name field may contain string or numeric
variables that are expanded before the value to search for is determined.
- Movement= determines how the Bot acts. The following movements are
defined:
- Movement=0 No movement - the Bot does not move unless controlled
from the Control menu
- Movement=1 Random movement - the Bot moves randomly - see RANDOM
parameters below
- Movement=2 Follow movement - the Bot is moved based on another
Bot, but facing or offset - see FOLLOW parameters below
- Movement=3 Mirror movement - the Bot is moved based on another
Bot, but with a fixed NS WE Alt offset, and facing the same way - see MIRROR
parameters below
Spawning and controlling other Bots
A script can start additional
Bots (up to the limit of number of Bots allowed) or stop them.
- StartBOT= is used to start a new Bot. Four parameters are required
(and two optional), separated with forward slashes. If a parameter is not
needed or empty, the slashes must still be there. The four parameters are:
BotNumber (0 to MaxNumBots minus 1), Login, Password, and World. The fifth
parameter, if present, specifies the TCP port for the galaxy or universe
server. The default (if not specified) is the AW galaxy server. The sixth
parameter, if present, specifies the host name for the universe server (for
example www.myserver.com). The default (if not specified) is the AW universe
server. This allows HamBot to run Bots in other Galaxies and Universes, while
simultaneously running Bots in the AW galaxy. The Password parameter is not
used anymore - it was only needed in "native mode" HamBot - where the Bots
could be started at citizens. However, the parameter is being left in so that
all previous scripts will continue to work. So, to create a new Bot named
"Wilma" with a script file of "Barney.txt", and in the Beta world the script
is:
StartBOT=1/Wilma//beta
Format is
StartBot=Bot#/Login/Password/World/IPPort/IPHost
Text fields (Login,
Password, World, IPHost) may contain string or numeric variables that are
expanded before the value to search for is determined. Numeric fields (Bot#,
IPPort) may contain expressions and may use numeric variables.
- KillBOT= is used to terminate a running Bot. The only parameter is
the Bot number. To kill the Bot created above:
KillBOT=1
- WaitFor=1 causes the script to pause until the Bot started with
StartBot is fully initialized. The only parameter is the Bot number.
Generally, you should immediately follow a StartBot with a WaitFor - since you
can't control a Bot until it is created.
- SelectBot=1 causes all subsequent scripting commands to affect the
specified Bot.
Parameters for the RANDOM movement type
When the "Movement" type is
set to RANDOM, the Bot randomly moves NS and WE each time period. It also faces
the direction of it's destination. If the Bot can be "owned" (see
AllowCommandLine), then the Bot wanders randomly until it becomes owned, then
follows the owner until it is released, at which time, it begins Random
wandering again, based on the original wander parameters. So, if the "owner" of
the Bot takes the Bot out of the RandomRadius area, the Bot returns there upon
release. If the HamBot user uses the Bot/Teleport menu item to move the Bot,
then the new location becomes the new center for the random wandering.
- RandomSeconds= specifies the number of seconds between changes in
position. values of 3 or 4 are good for continuous movement with 1-2 meter
distances.
- RandomRadius= specifies the maximum distance (NS or WE) the Bot can
wander from the NS and WE positioning values
- RandomNS= maximum distance NS the Bot can move in one time period
- RandomWE= maximum distance WE the Bot can move in one time period
- RandomGesture= specifies the gesture to be repeated continuously
(HamBot interleaves gesturing 0 to allow it to work right)
- RandomNoRotationChange=1 this flag indicates that the facing
direction of the Bot is not to be changed
- RandomAngle= maximum angle (in 10ths of a degree) to turn Bot
clockwise or counterclockwise for RandomType=1(drunk) movement
- RandomDistance= maximum distance (in 100ths of a meter) to move Bot
forwards for RandomType=1(drunk) movement. Moves more than half, but less than
this distance
- RandomType= specifies what Random algorithm to use:
- 0 is "normal" - Bot is moved up to RandomNS north or south, and up to
RandomWE west or east
- 1 is "drunk" - Bot is turned up to RandomAngle degrees clockwise or
counterclockwise, and is moved up to RandomDistance forward
Parameters for the FOLLOW movement type
When the "Movement" type is
set to FOLLOW, the Bot moves each time the "followed" Bot moves. By default, it
is set to face directly the followed Bot (rotation of 180�). The angle can be
adjusted, as well as the distance.
- FollowBot= specifies the Bot number to follow - or set to "-1" to
follow the "previous" Bot in the Bot list.
- FollowDistance= specifies how far away to place the Bot in 100ths
of a meter.
- FollowAngle= specifies the angle to face the followed Bot - e.g.,
90 means to be 90� CCW from followed Bot, so facing followed Bot from it's
left.
Parameters for the MIRROR movement type
When the "Movement" type is
set to MIRROR, the Bot moves each time the "followed" Bot moves. The Bot faces
the same way as the followed Bot, and the distances NS and WE and Alt can be set
to form rows, columns, or diagonals of Bots.
- MirrorBot= specifies the Bot number to mirror - or set to "-1" to
mirror the "previous" Bot in the Bot list.
- MirrorNS= specifies how far NorthSouth the Bot will be from the
mirrored Bot - > 0 for North, < 0 for South.
- MirrorWE= specifies how far WestEast the Bot will be from the
mirrored Bot - > 0 for West, < 0 for East.
- MirrorAlt= specifies how far in Altitude the Bot will be from the
mirrored Bot.
- MirrorAv= specifies the avatar index change to make - 0 to use same
avatar as mirrored Bot, or 1 to use next avatar in list, etc. Set this to -1
to allow the avatar to be specified by the script.
Object creation/modification/destruction commands
A Bot can cause
building objects to be created, moved, changed, or destroyed. Four parameters
are used to establish the "base" for building - the coordinates in the actual
build commands are offset by these values. Objects are identified by an ObjectID
- local to the Bot - so if the Bot goes away, it will not remember anything
about the objects. The format of the parameter line is the same as a dump from
PropDump, except that the citizen number (first field) is not used. Version 15
adds several scripting commands to enhance the building capabilities, and make
them easier to use.
- BuildNS= specifies the base to use for the NorthSouth building
location in 100ths of a meter. < 0 is south, > 0 is north.
- BuildWE= specifies the base to use for the WestEast building
location in 100ths of a meter. < 0 is east, > 0 is west.
- BuildAlt= specifies the base to use for the Altitude building
location in 100ths of a meter.
- BuildAngle= specifies the base to use for the Facing Angle building
location in 10ths of a degree.
- BuildObject= **OBSOLETE - phase this out of your scripts**
specifies the object name (e.g., walk005h.rwx) to be used when building.
- BuildAction= **OBSOLETE - phase this out of your scripts**
specifies the action (e.g., create picture www.stuff.com/mypic.jpg) to be used
when building.
- BuildDescription= **OBSOLETE - phase this out of your scripts**
specifies the description (e.g., HamFon's Pic) to be used when building.
- BuildIndex= specifies the object number or ObjectID (0 to 19 - see
Param1 below) to be used when building.
- CreateObject= causes a building object to be created. The Bot does
not need to actually be in the area (but must be in the same world). There are
9 parameters, separated by spaces:
- Param1 is the object number (0 to 19 number of objects allowed) - and is
used internally to identify which object is to be handled.
- Param2 is WestEast location for the object in 100ths of a meter
- Param3 is Altitude of the object, in 100ths of a meter
- Param4 is NorthSouth location for the object in 100ths of a meter
- Param5 is Rotation angle for the object in 10ths of a degree
- Param6 is Length of Object Name
- Param7 is Length of Description
- Param8 is Length of Action
- Param9 is a string containing Object Name, immediately followed by
Description, immediately followed by Action. If any of these are empty, they
are skipped. For example, for an Object Name of "x.rwx" and Action of
"create sign" with no Description, this parameter would be "x.rwxcreate
sign" (without the quotes), and Param6 would be 5, Param7 would be 0, and
Param8 would be 11.
- DeleteObject= causes a previously created object to be destroyed.
There is only one parameter for this function - the object number. The object
number is the same value as Param1 in the CreateObject and ChangeObject
functions. A deleted object is not recoverable - and the "slot" is freed for
another object.
- ChangeObject= causes a previously created object to be moved or to
change in object type, description, or action. The parameters for ChangeObject
are identical to those for CreateObject.
- ReleaseObject= tells HamBot to not track the specified object
anymore. HamBot will not be able to change or delete the object after it is
released. However, the "slot" the object previously occupied is available for
another object. The object is not destroyed in AW.
- DoBuildChat= **OBSOLETE - phase this out of your scripts** tells
HamBot to use the %e global string variable as an object name, and use the
BuildAction and BuildDescription values, and use the bot's current position,
to create an object. HamBot builds the Propdump string (as above), including
calculation of the object (and action and description) string lengths - so you
don't need to do that. It also uses the BuildIndex value (the "object number"
- Param1 above) - so you can either build a new object (by calling
ReleaseObject for previous ones), or you can change a previously
script-created object.
- DoBuildScript= **OBSOLETE - phase this out of your scripts** tells
HamBot to use the BuildObject value as an object name, and use the BuildAction
and BuildDescription values, and use the BuildNS (etc) values for location, to
create an object. HamBot builds the Propdump string (as above), including
calculation of the object (and action and description) string lengths - so you
don't need to do that. It also uses the BuildIndex value (the "object number"
- Param1 above) - so you can either build a new object (by calling
ReleaseObject for previous ones), or you can change a previously
script-created object.
- DoBuild A$ B$ C$ tells HamBot to use the user string variable A$ as
an object name, B$ as the action, and C$ as the description, and use the bot's
current position, to create an object. HamBot builds the Propdump string (as
above), including calculation of the object (and action and description)
string lengths - so you don't need to do that. It also uses the BuildIndex
value (the "object number" - Param1 above) - so you can either build a new
object (by calling ReleaseObject for previous ones), or you can change a
previously script-created object. The positioning of the object is determined
by BuildNS, BuildWE, BuildAlt, and BuildAngle. To position the object based on
the avatar's current position, set these values using the macros t, u, l, and
i, respectively. Example:
Set A$=walk007h.rwx
Set B$=create animate me water 1 1 0
Set C$=This is the pool
DoBuild A$ B$ C$
Flow control and calculation commands
In the following examples,
x, y, and z are placeholders - replace them with the appropriate parameter. Expressions
can be used for value comparisions. Note that all labels are "words"
composed of one or more letters (upper or lower case) or digits (0 - 9). Also,
labels may contain user variable macros, which are substituted, for example,
if user variables are A=1 and B=5, you can say Goto Label%Aof%B and HamBot
expands the macros to Goto Label1of5. If your script attempts to jump to a
label that does not exist, HamBot first checks for an OnGotoNotFound command -
and uses it if it can. Otherwise, HamBot shuts down your script.
- Label=x specifies a label which is used as a location target for
"If..." and "Goto" scripting commands, example: Label=MainLoop
- Goto=x transfers control in the script to the specified label,
example: Goto=MainLoop
- IfLess=x,y,z transfers control in the script to the label
specified by z, if the comparison of formulas x < y is true. Example:
IfLess X,10+Y,MainLoop
- IfEqual=x,y,z transfers control in the script to the label
specified by z, if the comparison of formulas x == y is true.
- IfGreater=x,y,z transfers control in the script to the label
specified by z, if the comparison of formulas x > y is true.
- IfOwned=x transfers control in the script to the label specified
by x, if the "current bot" has been acquired by a user, and is currently
owned.
- OnGotoNotFound=x sets a flag in your Bot so that if a transfer to
a label fails (might happen if you calculate the label, or you use user
input) then HamBot transfers control in the script to the label specified by
x.
- OnAvatarEnters=x sets a flag in your Bot which causes a block of
your script code (specified by the label x) to be run whenever an avatar
comes into listening range of the bot, for example,
OnAvatarEnters=Bot1AvatarJoined, will transfer control to the label
Bot1AvatarJoined when an avatar gets within listening range.
- OnAvatarExits=x sets a flag in your Bot which causes a block of
your script code (specified by the label x) to be run whenever an avatar
leaves listening range of the bot, for example,
OnAvatarExits=Bot1AvatarLeft, will transfer control to the label
Bot1AvatarLeft when an avatar leaves listening range.
- OnAcquired=x sets a flag in your Bot which causes a block of your
script code (specified by the label x) to be run whenever the bot becomes
"owned" by an avatar, for example, OnAcquired=Bot1Aqcuired, will transfer
control to the label Bot1Acquired when an avatar becomes the owner of the
bot.
- OnReleased=x sets a flag in your Bot which causes a block of your
script code (specified by the label x) to be run whenever the bot is
"released" by an avatar, for example, OnReleased=Bot1Released, will transfer
control to the label Bot1Released when the bot is released from ownership by
the owning avatar, or when the bot times out and releases automatically.
- AskForInput A$ (text) Pops up a dialog box, displays the text as
a prompt for the user, and collects user input, which is stored in the
string variable specified. For example, you might want to ask the user what
world to start in - see the new BotWorldAW.txt for an example
- Evaluate A=A$ sets the value of the internal variable (upper case
letter A - Z) to the numeric evaluation contained in the specified string
variable (which may include integers, +-*/%, and numeric variables). For
example, if A$="1+2+3+4", sets variable A to 10
- Set x=y sets the value of the internal variable (upper case
letter A - Z) to the calculated value y. Example: Set X=300*J+K/20-1000
- Set x$=y sets the value of the internal string variable (upper
case letter A - Z) to the macro-expanded value y. Example: Set X$=Current
version is %v and variable A is %A and string variable is %B$
- ENHANCEMENT - Added OnAvatarEnters and OnAvatarExits script commands
which cause a block of your script code to be run whenever an avatar comes
into listening range of the bot, or whenever one leaves
Variables for use in calculating expressions
HamBot supports evaluation of expressions using the standard arithmetic
operators for addition (+), subtraction (-), multiplication (*), division (/),
and modulus or remainder (%). Expressions may also contain constant numeric
values. Expressions are evaluated as signed integers. Expressions may also
contain variables, which are upper case alphabetic characters A through Z.
These variables are used as storage registers to contain a value, and are set
using the Set command, and tested using the If commands. Expression
examples:
In addition, HamBot supports 26 string (character) variables (A$ through
Z$). By using these variables, the values passed to scripting functions may be
"calculated" - the Set function does a full macro expansion when assigning a
value to a string variable.
- // do a loop 3 times, moving the avatar to various locations
- Set A=0
- Label=MainLoop
- NS=A*1000+50
- WE=1000-A*20
- Set A$=Moving avatar to location %t NS, %u WE.
- Say A$
- Set A=A+1
- // if A < 3 then loop back and do it again
- IfLess A,3,MainLoop
- // done with loop
-
-
In addition to the variables A thru Z that you can arbitrarily set and
change, there are system variables (lower case letters a thru z) that return
values that HamBot knows about. Note that the variables returning a time or
date value are in VRT for the time on the machine that is running HamBot:
- 'a' is day of the week (0 = Sunday, 1 = Monday, ... 6 = Saturday)
- 'b' is the next available Bot slot (0 - ...). You should use this for
the bot index value in StartBot because then the script will run even if
other bots are already running.
- 'c' is the RGB value for RED for the background of the world
- 'd' is date (1 - 31)
- 'f' is the RGB value for BLUE for the background of the world
- 'g' is the RGB value for GREEN for the background of the world
- 'h' is hour (0 - 23)
- 'i' is the bots current location Rotation, in 10ths of a degree,
counterclockwise from North at zero
- 'l' is the bots current location Altitude, in 100ths of a meter
- 'm' is month (1 - 12)
- 'n' is minute (0 - 59)
- 'r' is a random number (0 - 32767). To get a specific range of random
numbers (say a number from 0 to 12), use the modulus operator, e.g., Set
A=r%13. To offset the range from zero (say a number from 21 to 30) add a
base value, e.g., Set A=r%10+21.
- 's' is second (0 - 59)
- 't' is the bots current location NorthSouth, in 100ths of a meter,
negative is South
- 'u' is the bots current location WestEast, in 100ths of a meter,
negative is East
- 'v' is HamBot version number (e.g., 12)
- 'y' is year (e.g., 1998)
The following sample script checks the hour and determines whether to say
"Good Morning" (hour before noon), "Good Afternoon" (hour before 6PM), or
"Good Evening"
// check the hour and say good morning/afternoon/evening
IfLess=h,12,IsMorning
IfLess=h,18,IsAfternoon
Say Good Evening
Goto=DoneGreeting
Label=IsMorning
Say Good Morning
Goto=DoneGreeting
Label=IsAfternoon
Say Good Afternoon
Label=DoneGreeting
HamBot scripting also supports a "global string variable" which can contain
a textual (string) value. This variable (which can be referenced with the
macro %e) is used for temporary storage and manipulation of a string of
letters/characters/words. Several scripting commands (such as GiveBotTo) put
their results in this storage area and other scripting commands use this
storage area as data for the function to be performed. The following script
lines are available specifically to manipulate this string variable. As of
version 16, tho, the Global String Variable is obsolete - and should be phased
out of your scripts. Instead, you should use the user string variables (A$
through Z$).
- SetGlobalString=value Sets the value of the global string
variable (the %e macro) by running the "value" thru macro expansion.
- ParseFirstNumber A A$ Checks left-to-right for first digit in the
user string variable (A$, etc) (if you leave off the second parameter, the
global string variable is parsed, but this usage is discouraged since the
global string variable is now obsolete). If and when found, it calculates
the number starting at that location, and stores it in the specified
variable (A).
- ExtractWord A$ A B$ Evaluates A (which can be an expression),
then checks the user string variable B$ for the A'th word (starting at 0).
If there are that many words, then A$ will be set to contain that word,
otherwise, A$ will be set to be empty. For example, if B$ is "This is a
test", and you call ExtractWord A$ 1 B$ - A$ will be set to "is". You
can loop thru a string, incrementing the value of A each time, and look at
each word. To know that you have reached the end of the string, check for
IfVarIsEmpty on A$ - A$ will be empty when no more words are found. A "word"
is defined as one or more sequential alphanumeric (A-Z, a-z, 0-9) characters
- all others are counted as word separators or punctuation.
- SaveChatLine A$ Causes the most recent chat line received to be
stored in the user string variable A$. You may use "1" as in previous
versions to store the value in the global string variable, but this usage is
discouraged since the global string variable is now obsolete.
- ChopFirstWord A$ Removes the first word (and spaces) from the
front of the user string variable A$. You may use "1" as in previous
versions to store the value in the global string variable, but this usage is
discouraged since the global string variable is now obsolete. For example,
if the value was "This is my world", it is replaced with "is my world".
World attribute changing commands
HamBot allows your bot to
change the world attributes. To do this, you must you must log in the Bot with
the priviledge login of a caretaker of the world. You may use any of the
commands, such as WorldRed= to set the attributes, then to cause the world to
change the attributes, use the WorldChange=1 command.
- WorldRed=x Sets the RED value for the RGB background color of the
world. After setting this value (and any others), call WorldChange=1.
Example: WorldRed=128
- WorldGreen=x Sets the GREEN value for the RGB background color of
the world. After setting this value (and any others), call WorldChange=1.
Example: WorldGreen=0
- WorldBlue=x Sets the BLUE value for the RGB background color of
the world. After setting this value (and any others), call WorldChange=1.
Example: WorldBlue=192
- WorldBackdrop=string Sets the name of the jpeg image for the
backdrop of the world. After setting this value (and any others), call
WorldChange=1. Example: WorldBackdrop=panorama
- WorldGround=string Sets the name of the object file (rwx) for the
ground of the world. After setting this value (and any others), call
WorldChange=1. Example: WorldGround=ground
- WorldChange=1 Causes the values set by the other commands in this
section to be sent to the world server, and applied.
Bot ownership and control from chat text
HamBot supports
ownership of Bots. Bots are initially "free", but can be acquired by a citizen
or a tourist by entering the Bot's name alone on the chat line. The Bot then
joins you, and follows you around (unless you have DontFollowOwner set to 1)
until either you release the Bot, or you ignore it for 60 seconds (or the
value set with the SecondsToOwnBot= command). Note that if the Bot was
previously moving using the Random movement type, the random movement is
suspended while the Bot is "owned." Scripted text messages are NOT sent while
the Bot is "owned." While you own the Bot, it listens to the chat messages you
send (ignoring chat messages from others), and acts upon them if it recognizes
them. Multiple Bots can simultaneously be "acquirable." HamBot won't let an
owner have more than one Bot. So, you can start up a few of the same Bot, then
each gets individually acquired and controlled by different citizens and
tourists. Bots can be "released" or given away to another citizen or tourist.
The Bot follows you using the FollowDistance and FollowAngle parameters.
Script commands to support ownership: (see Chat text
line commands for a information about commands available to the user from
the chat line.
- AllowCommandLine=1 enables the Bot to listen to chat lines. If
set, then the Bot can be acquired, and commanded.
- DontFollowOwner=1 Setting this to 1 (default is 0) causes the Bot
to NOT approach you and follow you around when you acquire ownership of the
Bot.
- SecondsToOwnBot=60 determines how long a Bot remains owned by a
user. If this value is 0, the Bot responds to immediate commands only, and
can not be owned. Default is 60.
- Acquired=AcquiredText specifies the text that will be displayed
each time the Bot is acquired by a user. See also the Macros
for what can be displayed other than static text.
- Released=ReleasedText specifies the text that will be displayed
each time the Bot is released by a user (or given away, or if the Bot times
out). See also the Macros
for what can be displayed other than static text.
- ReleaseOwnership=1 causes the ownership of a Bot to revert to
unowned status
- PSOwnerOnly=1 causes HamBot to block non-Public Speakers from
acquiring a Bot. In addition, if the value PSOwnerOnly=1, the GiveBotTo
script command is blocked.
- GiveBotTo A$ causes ownership of the Bot to be transferred to the
citizen or tourist name specified in the user string variable A$. You may
use "1" as in previous versions to store the value in the global string
variable, but this usage is discouraged since the global string variable is
now obsolete. Tourist names must be in quotes, as displayed in the AW chat
window.
Scripting macros
These macros may be included in chat display commands and are replaced with
the information, as specified below. They can be used in Hello, Goodbye,
Acquired, Released, Say, Whisper, and from the HamBot chat text edit box.
Example: Say Hello, %p, it's %h:%m on %a will be replaced with
Hello, HamFon, it's 10:30 on Tuesday. In addition, the values of the 26
user variables (A - Z) may be included by using the macros %A - %Z. To insert
the contents of a user string variable (A$ - Z$), use the macros %A$ thru %Z$.
- %a is the current day of the week ("Monday", etc.)
- %b is the next available Bot slot (0 - ...).
- %c is the value of the RGB RED component of the world backdrop (0 -
255).
- %d is the date (1 - 31)
- %e is the global string variable (**OBSOLETE - phase this out of your
scripts**) - set with several scripting commands
- %f is the value of the RGB BLUE component of the world backdrop (0 -
255).
- %g is the value of the RGB GREEN component of the world backdrop (0 -
255).
- %h is the hour (24 hour time) (00 - 23)
- %i is the bots current location Rotation, in 10ths of a degree,
counterclockwise from North at zero
- %j is the graphic image (jpeg) for the background of the world (a text
string, e.g., "panorama")
- %k is the object (rwx) for the ground of the world (a text string, e.g.,
"ground")
- %l is the bots current location Altitude, in 100ths of a meter
- %m is the month - 3 letter abbreviation ("Jan", etc.)
- %n is the minute (00 - 59)
- %o (lower case "oh" - as in owner) - substitutes the name of the owner
of the Bot (or speaker to the Bot)
- %p substitutes the name of the avatar(s) who just entered or left the
area, as in the scripting commands Hello and Goodbye
- %r is a random number (0 - 32767). To get a specific range of random
numbers (say a number from 0 to 12), use the modulus operator, e.g., Set
A=r%13. To offset the range from zero (say a number from 21 to 30) add a
base value, e.g., Set A=r%10+21.
- %s is the second (00 - 59)
- %t is the bots current location NorthSouth, in 100ths of a meter,
negative is South
- %u is the bots current location WestEast, in 100ths of a meter, negative
is East
- %v is the version number of the currently running HamBot (12, etc.)
- %w is the world name
- %y is the year (1998, etc.)
- %z is the bot name (e.g., "Tourist")
Word matching of text entered in chat line
HamBot examines the
input lines as typed by the owner of the Bot (or "immediate" mode lines like
Bot tell me who is HamFon ), and can find either the Chat text
line commands or can search for words according to the Bot script. If the
text matches a hard-coded Chat text line command (such as TGRAM or BUILD), the
text is processed according to that command, and OnTextEntered is not called.
- IfTextContains=x,text Searches for specific word(s) (not case
sensitive), and transfers control to the label "x" if the phrase "text" is
found anywhere in the input line. For example,
IfTextContains=HaveABeer,beer will transfer control to label
HaveABeer if the input text (from the OnTextEntered command) is give me a
bEEr
- IfVarContains A$,x,text Searches for specific word(s) (not case
sensitive), and transfers control to the label "x" if the phrase "text" is
found anywhere in the user string variable A$ (etc.). For example,
IfVarContains A$,HaveABeer,beer will transfer control to label
HaveABeer if the user string variable A$ is give me a bEEr . The
"text" field may contain string or numeric variables that are expanded
before the value to search for is determined.
- IfVarContainsExact A$,x,text Searches for specific word(s) (case
sensitive), and transfers control to the label "x" if the phrase "text" is
found anywhere in the user string variable A$ (etc.). For example,
IfVarContainsExact A$,HaveABeer,Beer will transfer control to label
HaveABeer if the user string variable A$ is give me a Beer , but not
for give me a beer . The "text" field may contain string or numeric
variables that are expanded before the value to search for is determined.
- IfVarIsEmpty A$,x Transfers control to label specified by x if
the contents of the string variable A$ are empty. This is convenient when
parsing a line of words, to know that you have finished.
- IfVarIsExact A$,x,text Compares (case sensitive), and transfers
control to the label "x" if the phrase "text" is identical to the user
string variable A$ (etc.). For example, IfVarIsExact
A$,HaveABeer,Beer will transfer control to label HaveABeer if the user
string variable A$ is Beer , but not for beer or Beer
please . The "text" field may contain string or numeric variables that
are expanded before the value to search for is determined.
- OnPSTextEntered=x Causes control of the script to be transferred
to the label "x" whenever a text line is entered by the owner (but the owner
MUST be a Public Speaker) of the Bot (or by a user when entering a Bot
immediate command like Bot give me a beer ). The text that was
entered by the user is saved for future comparison using the IfTextContains
command. This scripting command can be used to give the PS additional
chat-line commands that are not available to the normal user.
- OnWhisperEntered=x Causes control of the script to be transferred
to the label "x" whenever a text line is whispered by the owner of the Bot
(or by a user when entering a Bot immediate command like Bot give me a
beer ). The text that was entered by the user is saved for future
comparison using the IfTextContains command.
- OnTextEntered=x Causes control of the script to be transferred to
the label "x" whenever a text line is entered by the owner of the Bot (or by
a user when entering a Bot immediate command like Bot give me a beer
). The text that was entered by the user is saved for future comparison
using the IfTextContains command.
- WaitForText=text stops on this line in the script and waits, but
only for owned bots. Note that the text matched may be anywhere in the chat
text line - it does not have to match the complete text line. For example,
if text is "hel", WaitForText will match text chat lines "Say hello"
or "Please help me". If the Bot times out (SecondsToOwnBot) and is released
from ownership, the script continues on the next line after WaitForText.
WaitForText uses the WaitForTextTimeout value to specify how long to wait
for matching input.
- WaitForTextTimeout=x specifies the number of seconds HamBot will
wait at a WaitForText without the requested input being entered, before
HamBot moves on and begins processing the next line of the script.
Miscellaneous commands
- Speak= specifies the number of seconds after displaying a chat
message to wait before processing the next line of the script.
- Pause=10 causes a pause the script for the specified number of
seconds, like a chat message, but does not display anything. For example,
maybe you want the Bot to cycle thru several avatars, every 10 seconds, but
you don't want the Bot to be talking.
- Say text has the "current bot" (See SelectBot) say the text, then
waits Speak seconds before processing the next line in the script.
- Whisper B$ text has the "current bot" (See SelectBot) whisper the
text privately to the user name contained in user variable B$, then waits
Speak seconds before processing the next line in the script.
- ShowChatMsgs=1 causes all received chat messages for that Bot to
be displayed in the HamBot display window. This parameter defaults to 0
(off) - only turn it on if you really need to see the messages. Turning it
off (or leaving it off) does not affect the processing or logging of the
messages - just the display in the HamBot window. Also, if this parameter is
set, all outgoing chat messages are displayed in the Message window.
- ShowAvatarMsgs=1 causes all received avatar movement messages for
that Bot to be displayed in the HamBot display window. This parameter
defaults to 0 (off) - only turn it on if you really need to see the
messages. Turning it off (or leaving it off) does not affect the processing
or logging of the messages - just the display in the HamBot window.
- LogAvatarMsgs=1 causes received avatar join- and leave-area
messages for that Bot to be displayed in the HamBot display window, and
logged to the chat log (LogChat.txt) file. This parameter defaults to 0
(off). Turning it off (or leaving it off) does not affect the processing of
the messages - just the display in the HamBot window.
- ShowBuildMsgs=1 causes all received building messages for that
Bot to be displayed in the HamBot display window. This parameter defaults to
0 (off) - only turn it on if you really need to see the messages. Turning it
off (or leaving it off) does not affect the processing or logging of the
messages - just the display in the HamBot window.
- Hello=HelloText specifies the text that will be displayed each
time an avatar joins the area. Note that this DOES respond to everyone,
including lurkers.
- Goodbye=GoodbyeText specifies the text that will be displayed
each time an avatar leaves the area. Note that this DOES respond to
everyone, including lurkers.
- AddDefine=word=definition adds a "dictionary entry" to HamBot.
This list of definitions can be accessed by the user by entering the DEFINE
chat text command. Example:
AddDefine=brb='brb' --> Be Right Back
Then if the user types "define brb", HamBot will respond with
'brb' --> Be Right Back
- DisplayDefinition A$ searches the user string variable $A (etc.)
(You may use "1" as in previous versions to store the value in the global
string variable, but this usage is discouraged since the global string
variable is now obsolete) looking for non-alphanumeric characters (also not
punctuation) - such as * or ( or " or '. The first one found from the left
determines the start of the key word, and the second one determines the end.
This word is then searched for in the define-table, which was set up using
AddDefine (above). The result is displayed as chat text.
- DisplayDictionary=1 Builds a list of words from the define-table,
which was set up using AddDefine (above). The result is displayed as chat
text.
- GetCitizenNumber A HamFon Performs a lookup with the galaxy or
universe server for the citizen number corresponding to the citizen name
supplied. The resulting number is placed in the variable (A), if found. If
the citizen name is not found, the variable is set to -1.
- GetCitizenName 38433 A$ Performs a lookup with the galaxy server
for the citizen name corresponding to the citizen number supplied. The
resulting name is placed in the specified user string variable (A$, etc) (if
you leave off the second parameter, the result is stored in the global
string variable, but this usage is discouraged since the global string
variable is now obsolete).
- LoadNeighborsList A$ Causes the list of all neighbors to the Bot
to be put into a user string variable (A$ - Z$) (=A$, etc.). (You may use
"1" as in previous versions to store the value in the global string
variable, but this usage is discouraged since the global string variable is
now obsolete)
Chat text line commands
This section actually goes away as of version 15, since all the hard-coded
commands (built in to HamBot) were removed in favor of making them scriptable.
Below, sample script code is given for the "old" commands, so that you can get
your scripts working again easily. Commands may be entered from the chat
command line when a user owns a bot. In addition, if a Bot is not owned, users
may enter "immediate" commands - the command preceded by the Bot name, and a
space, for example, BOT AVATAR 3. By scripting these commands (and many
others), the input may be more free-form. So the user could type "Change your
avatar to 3 please" instead.
In all cases, you need to start using the OnTextEntered and IfTextContains.
The sample code below will deal with the previously-hard-coded commands. Note
also, that the code below will accept some additional commands - you can
specify the avatar by name (for selected avatars), etc. This makes the script
code more complex, but also more friendly to the user.
OnTextEntered=Bot1Spoke
Label=MainLoop
Speak=10
Pause=180
IfOwned=MainLoop
Say Type my name (%z) to own me
Goto MainLoop
Label=Bot1Spoke
Speak=1
// these lines replace internal commands
IfTextContains=ShowHelp Help
IfTextContains=ShowVersion Version
IfTextContains=ShowTime Time
IfTextContains=Release Leave
IfTextContains=ShowGesture Gesture
IfTextContains=ShowAvatar Avatar
IfTextContains=TryBuild Build
IfTextContains=DoDefine Define
IfTextContains=GiveBotTo GiveTo
IfTextContains=Dictionary Dictionary
Goto MainLoop
Label=ShowHelp
Say I know about Help, Version, Time, Leave, Avatar, Gesture, Build, Define, and GiveTo.
Goto MainLoop
Label=ShowTime
Say Today is %a, %m %d, %y, at %h:%n:%s.
Goto MainLoop
Label=ShowVersion
Say I am running version %v of HamBot
Goto MainLoop
Label=ShowAvatar
IfTextContains=AvLori Lori
IfTextContains=AvButch Butch
IfTextContains=AvVanessa Van
IfTextContains=AvSarah Sarah
IfTextContains=AvRachel Rach
IfTextContains=AvPhilippe Phil
IfTextContains=AvRandom Random
SaveChatLine A$
ParseFirstNumber Z A$
IfGreater Z -1 AvNumeric
Say That is not one of MY favorite avatars, so I'm not gonna change :-))
Say I like Lori, Butch, Van, Phil, Sarah, and Rachel.
Goto MainLoop
Label=AvNumeric
Say Changing to avatar number %Z
Avatar Z
Goto MainLoop
Label=AvLori
Say Changing to the Lori avatar
Avatar 3
Goto MainLoop
Label=AvButch
Say Changing to the Butch avatar
Avatar 5
Goto MainLoop
Label=AvVanessa
Say Changing to the Vanessa avatar
Avatar 20
Goto MainLoop
Label=AvRachel
Say Changing to the Rachel avatar
Avatar 23
Goto MainLoop
Label=AvSarah
Say Changing to the Sarah avatar
Avatar 22
Goto MainLoop
Label=AvPhilippe
Say Changing to the Philippe avatar
Avatar 32
Goto MainLoop
Label=AvRandom
// random number - 33 avs in beta (0 - 32), but don't select a tourist avatar
Set Z=r%31+2
Say Changing to a random avatar %Z
Avatar Z
Goto MainLoop
Label=ShowGesture
IfTextContains=DoHappy Happy
IfTextContains=DoAngry Angry
IfTextContains=DoWave Wave
IfTextContains=DoJump Jump
IfTextContains=DoFight Fight
IfTextContains=DoDance Dance
SaveChatLine A$
ParseFirstNumber Z A$
IfGreater Z -1 DoNumeric
Say I don't know that action :(((
Goto MainLoop
Label=DoNumeric
Gesture=Z
Goto MainLoop
Label=DoHappy
Gesture=1
Goto MainLoop
Label=DoAngry
Gesture=2
Goto MainLoop
Label=DoWave
Gesture=3
Goto MainLoop
Label=DoJump
Gesture=4
Goto MainLoop
Label=DoFight
Gesture=5
Goto MainLoop
Label=DoDance
Gesture=6
Goto MainLoop
Label TryBuild
Set P=0 // build index
BuildIndex=P
Set B$=Action
Set C$=Description
Say Building chat object
SaveChatLine A$
ChopFirstWord A$
// also, we need to load the location from the avatar current location
BuildNS=t
BuildWE=u
BuildAlt=l
BuildAngle=i
DoBuild A$ B$ C$
ReleaseObject P
Goto MainLoop
Label DoDefine
SaveChatLine A$
DisplayDefinition A$
Goto MainLoop
Label Dictionary
DisplayDictionary=1
Goto MainLoop
Label GiveBotTo
SaveChatLine A$
ChopFirstWord A$
GiveBotTo A$
Goto MainLoop
Release Notes
Note: With so many changes in each release, it's
hard to keep track of what affects your scripts. Now, each entry in the
release notes is preceded with an indication of what type of entry it is:
BUGFIX means a change to HamBot because it did not work
correctly according to the specifications
ENHANCEMENT means a new
feature of HamBot
CHANGE means current functionality was changed -
check to see if it affects you
OBSOLETE indicates a note of a
change that has become unneeded, and MAY be removed in a future
release
NOTE is just a general entry, not necessarily related to
the actual usage of HamBot itself
Release 0034, 16 June 2008
- UPDATED - now use the Activeworlds SDK build 66
- DEPRECATED - now required to use AW.DLL as of the initial release of Activeworlds v4.1
- BUGFIX - macros that contained the sky colors, only contained the red component
- BUGFIX - commands that altered the sky colors, only modified the red component regardless if blue or green were specified
Release 0032, 5 February 2001
- BUGFIX - If you used the KillBot scripting command, it would kill the
bot you specify - AND - kill another one too (if you were running a script
of more than one bot).
- BUGFIX - This documentation incorrectly specified "IfVarEmpty" - the
correct scripting command is "IfVarIsEmpty".
- ENHANCEMENT - upgraded to SDK 19 (World/Universe version 3.1), and using
a static AW library now, so no need to keep around the "right" version of
AW.DLL.
Release 0031, 30 November 2000
- BUGFIX - If you used BuildIndex to re-select an object that you had
HamBot build previously, HamBot didn't know that it had already created the
object, and so you couldn't refer back to it after changing the build index.
- BUGFIX - For building, with multiple bots, the instance wasn't getting
set right.
Release 0030, 3 October 1999
- CHANGE - Removed authentication of user from code - this will help for
some users in Australia who where having firewall problems
- CHANGE - Removed all encryption and "special" handling that HamBot was
capable of - for public release of the source code.
- CHANGE - Added the PASSWORD= parameter in the [Citizen] section of
HamBot.ini. Since we now do no authentication, HamBot does not ask for your
password. You may either provide it here, in the ini file, or you may (as
before) provide it (or a "?" to be prompted) in the StartBot scripting line.
- NOTE - This is the last public release of HamBot - since I have now
released the source code, I can no longer support development for HamBot.
This product is released under the GNU Public License (GPL) - It remains
Copyrighted � by HamFon of Prototech, Inc., in the years 1997, 1998, and
1999. You are free to modify and distribute this work, within the guidelines
of the GPL - for example, you MUST make your changed source code available.
Please read the
GNULicense,
included in HamBotSource.zip.
Release 0029, 18 July 1999
- NOTE - Upgraded to SDK version 15 - no affect to application.
- BUGFIX - Users logging in with citizen numbers less than 10 failed -
fixed.
- CHANGE - Users with special rights in Australia now can authenticate
thru a proxy or behind a firewall.
- ENHANCEMENT - Added the OnWhisperEntered event handler to branch to the
label you specify when the owner of the bot whispers.
Release 0028, 23 March 1999
- ENHANCEMENT - Added scripting and local-variable capabilities (k) to
allow the user to examine and change the World ground object. See
WorldGround=.
Release 0027, 15 March 1999
- CHANGE - removed Native Mode capabilities from HamBot. HamBot now ALWAYS
logs in as an avatar type of [Bot], and does not support citizen or tourist
logins any more. This change is due to the encryption of the networking
protocol between AW/HamBot and the world and universe servers. HamBot only
runs in SDK mode now. Since the SDK does not yet support telegrams or
contact lists, the following scripting commands have been removed:
AddContact, ClearContacts, SendContactList, GetWhoList, SendTelegram.
- CHANGE - removed the "UseSDK" ini file switch - it is now redundant (but
ignored, if you don't remove it) - since HamBot always starts in SDK mode.
- CHANGE - the StartBot scripting command now ignores the password
parameter since the Bots log in with the previously specified priviledge
password. You don't need to make any changes to your script, tho, since
HamBot will just skip over this parameter. HamBot will NOT ask for the
password if you have a "?" specified.
Release 0026, 16 February 1999
- BUGFIX - Lines longer than 250 characters stored in variables caused
unpredictable scripting behavior (generally, Goto statements could not get
past a certain point in the script file). Increased the allowable size to
500 bytes - which is larger than AW allows.
- BUGFIX - changed "Reading scipt file" to "Reading script file".
- CHANGE - The default number of Bots available is now 20. NOTE that
ActiveWorlds.com currently limits each citizen to 3 concurrent bots. This is
a limit enforced by the universe server, NOT by HamBot.
- CHANGE - Upgraded to Version 13 SDK.
- ENHANCEMENT - HamBot now displays the SDK version when it starts.
- ENHANCEMENT - Added scripting and local-variable capabilities (c, f, g,
j) to allow the user to examine and change the World backdrop image, as well
as the World background colors. See WorldRed=, WorldGreen=, WorldBlue=,
WorldBackdrop= and WorldChange=.
- ENHANCEMENT - Enabled the ShowNeighbors menu option to allow the Bot to
see a list of all the neighbors, not only the ones who have spoken.
- ENHANCEMENT - The Utilities menu item and it's sub-items are now always
available.
- NOTE - added BotWorldAttributes.txt scripting file as an example of
World backdrop changing.
- NOTE - in the near future, the messages to and from the Universe and
World servers will be encrypted. At that point, "Native" mode in HamBot
(where your bot logs in as a citizen, or as a "tourist") will not be
supported any more. The only bots that will be available will be [sdk] style
bots. You gain: [sdk] bots do not count as visitors in a world, and multiple
[sdk] bots can simultaneously run with a single citizen's rights. You lose:
telegramming and contact list capability. Recommendation - prepare now -
switch over to SDK mode in HamBot by changing the "UseSDK=0" line in
HamBot.ini to "UseSDK=1".
Release 0025, 5 January 1999
- BUGFIX - HamBot was being blocked in 2.1 worlds where the citizen number
used to log in was the last citizen number (or the only one) in the Bots
Right list. Fixed.
- CHANGE - removed the line-by-line display of the script file as it is
read in (the Read Line ...)
Contact Information
HamBot was written by HamFon, a citizen of Active Worlds.
HamBot is © Copyright 1997-2001 by Prototech, Inc.
Contact HamFon via telegram in ActiveWorlds, or by email
Legal mumbo-jumbo
HamBot was written without sanction or consent of ActiveWorlds.com, Inc.
(AWLD), the owners of Active Worlds. Therefore, HamBot is subject to change or
loss of functionality as AWLD changes internal specifications. Although
Prototech will attempt to keep HamBot functioning as designed when AWLD makes
changes, we have NO control over what AWLD changes, or when. It
IS possible that AWLD could change the messaging architecture or the security
model in a way that would cause HamBot to cease to function.
HamBot is provided AS-IS, without warranty or guarantee of any kind. If you
choose to use HamBot, you have implicitly agreed to the rules and limitations
set forth here.
- The user will not hold HamFon or Prototech, Inc. liable for any damages,
either consequential or incidental, resulting from the use of HamBot
- HamBot will be used in public areas within acceptable guidelines (for
example, spamming or improper language may not be acceptable)
- HamBot will only be used in public AWLD worlds, or in private worlds
unless prohibited by the world owner
- Although Prototech will attempt to address incorrect behavior in a
timely manner, no guarantee is made as to what changes will be made, or when
- Prototech may, at it's option, choose to disallow access to one or more
users
HamBot is provided as no-fee shareware for the 20 bot version. HamBot is Copyright © 1997-2001 by Prototech, Inc.
Downloads