c
The initial ini files, produced when you first start and stop the applications, contain by default three bots. These are called: NotBBot1, NotBBot2 and NotBBot3. Their parameters are contained in their respective sections: [Bot1], [Bot2], [Bot3]. There are a few other sections:
I will discuss here the values which you need to adjust or must leave as is in the [Parameters] and [Dialogs] sections and in the [Bots...] sections. Important parameters are highlighted in bold blue, parameters critical for security are in bold red.
Title=AV99Bot is useful if you have more than one Av99Bot application running, because this value (by default: Av99Bot) is used as the name of the application on the task-bar, and allows you to distinguish between the different bot applications. It is meaningless for the NT service version.
TimerInterval=500 is in milliseconds. It can be speeded up to 64 milliseconds in bots up to version 3.302, as from 3.303 the fastest setting is 16 milliseconds between heartbeats (4 times faster that 64 milliseconds).
MaxCache reserves disk-space for the object's cache in bytes.
BotCount=3 is crucial: it determines how many bot sections are included in the ini file and therefore, how many bots your application will create and run.
ConfirmClose=0 suppresses the dialog asking for confirmation when closing the application. A value of 1 brings up the dialog. Meaningless in the NT service bot.
DownloadsDisabled=0 and ServerDisabled=0 may be set to 1 if you are hosting other people's bots, for security reasons. These refer to downloading files from internet, and opening the built-in server (through Action Script and WriteToBot commands).
FTPDisabled=0, FTPDownloadsDisabled=0, FTPUploadsDisabled=0. (xelagot 3.607 or higher) If FTPDisabled=1, the built in FTPClient is disabled. If FTPDownloadsDisabled=1, FTP downloads are disabled. If FTPUploadsDisabled=1, FTP uploads are disabled. Note that if FTPDisabled=0 but the others are set to 1, FTP connections are possible (e.g. for testing purposes), but no file transfer will occur.
FileAccessRestricted=0 allows unlimited access to the hard-disk. Version 1.65 up: when set to 1, drastically restricts file access. Bot hosting services: the recommended setting is 1, to block unlimited file access to the hard-disk. Restricting file access has the following effect:
StartWait=180 indicates the number of seconds the Service application must wait before connecting the bots to the Xelagot Server and to attempt universe login and world enter. This is important, as the xelagot and world servers may be running on the same machine and not yet have started.
Due to utter lazyness on my side, this section looks like this by default:
[Dialogs]
DefaultDialog=English
Count=0
DialogFile1=
It works all right for the default English file, but this section should look like this if other language files are to be used:
[Dialogs]
DefaultDialog=English
Count=3
DialogFile1=dialog0.txt
DialogFile2=spanish_AMD01.txt
DialogFile3=nederlands01.txt
Each of these standard dialog files contains, in the [Common] section, a title identifying the language. This title is used in the bot section, keyword Dialog, to determine which file is used by that particular bot. The actual files are in the Chat folder.
Proxy settings for downloading files.
UseProxy=0 disabled. To enable, use 1.
UseDirect=0 disabled. To enable, use 1.
UsePreconfig=1 enabled. To disable, use 0. Enabling this option forces the use of the system's settings for proxies. Only one of these may be enabled: UseProxy, UseDirect or UsePreconfig.
The following settings are used if UseProxy is enabled. For normal use, enable UseOther=1 and fill in the Other field with the proxy data (url:port).
UseHttp=0
UseHttps=0
UseFtp=0
UseGopher=0
UseOther=0
UseBypass=0
Http=
Https=
Ftp=
Gopher=
Other=
Bypass=
Used by action scripts to send emails, this section allows specifying the SMTP parameters. All these parameters can be set individually by scripts. Recommended to only set the Host, and give custommers a login name to use.
Host= compulsory, SMTP host address
Port=25 SMTP port, default is 25
UserID= Login name if required
FromAddress= compulsory, email of the sender
ReplyTo=
ToBCC=
Timeout=10000
The in-built server may occasionally be used by scripts (rarely used). Bot hosting should use the stand-alone server.
Port=0 the listening port
ReconnectOn=1 allows automatic reconnection, 0 disallows this.
ReconnectDelay=10 see Server specs
ReconnectPause=60
ReconnectAttempts=6
ReconnectCycles=-1
X=
here goes the full path (including drive and filename) of the server file, preceded by a question mark. For example:
X=?c:\xelagot\server.txt
The bot's central client, not used by these bots (may be used by scripts though, but is not recommended). See the bot's section, it has the parameters for the Bot Client, which are similar.
Host=
Port=0
Login=
Password=
ReconnectOn=1
ReconnectDelay=10
ReconnectPause=60
ReconnectAttempts=6
ReconnectCycles=-1
Each bot has its own numbered section: [Bot1], [Bot2] and so forth. The number of sections is determined by the value of BotCount in the [Parameters] section. You will need to add more sections if you want to run more than 3 bots. I deal here with the [Bot1] section, others are similar.
BotName=NotBBot1 should be changed to whichever name the bot will use to log into the universe. Do not include the square brackets. In one application, each bot name must be unique and may not be repeated in other sections (this is an internal application requirement).
Profile= must be left empty unless you define a profile. This is explained below, in the section called Profiles (for version 1.64 or newer).
CitizenNumber=0 must be changed to a valid citizen number for the bot to log into a universe, unless you use a Profile.
PrivilegePassword must have the privilege password the bot uses to log in, unless you use a Profile. When you first set this password, prefix it with a question mark, for example, if it is waiting4u then you would write:
PrivilegePassword=?waiting4u
The application will encrypt this password and change it in the ini file to the encrypted version.
CitizenName may be left empty, or you may put here the nickname of the owner corresponding to the CitizenNumber.
Owners is a Xelagot speciality :) It allows more than one citizen to own and command the bot. The value consits of a comma-separated list of citizen numbers. This value is ignored if you use a Profile.
UniverseName=ActiveWorlds. The universe name must be included for this application to work properly, even if it is not required by the bot SDK. It may include spaces, letters and numbers. For example, valid values are: City4All, Outer Worlds, VectorScape. Please note that capitalization is important here: these names are used in verbal commands, and initial letters, capital letters and numbers are used to form abbreviations for these names. For example (using the above examples), these abbreviations will be recognised by the bot: aw, c4a, ow, vs. If you use a Profile, this name must be identical to the universe name defined in the Profile.
Host and Port are the IP and Port of the universe server, and they follow the general SDK rules. They only need to be filled in if they differ from the standard values for universe login. These values are ignored if you use a Profile.
World=Beta must be changed to the name of the world as it appears on the browser's world list.
Location=0.000n 0.000w 0.00a 0.0° must contain the coordinates where the bot has to land. Notice that the altitude here is in metres (not in AW coordinates as is usual in AW teleport coordinates), and that you may safely omit the degrees symbol "°" and unused decimal positions.
Avatar specifies the default avatar.
GestureSequence=1 6,0 specifies a sequence of gestures, in this case (default): gesture 1 for 6 seconds, 0 = don't loop.
Dialog specifies the dialog language used (not the filename though): it is the so called Title in the dialog file's [Common] section. See above in the ini file's [Dialogs] section. An empty value defaults to the English file dialog0.txt.
AutoLogin=1 should be set to 1 if the bot is to log in automatically when the application starts, and to 0 if it should not log in.
UseUniverseFile=0 (default). This file contains parameters for use by the bot in a specific universe, and is only used if the value of UseUniverseFile is 1. See section Universe File below.
UseWorldFile=0 (default). This file contains parameters for use by the bot in specific worlds, and is only used if the value of UseWorldFile is 1. See section World File below.
BadWordFile=Word.txt and EjectFile=Eject.txt specify the bad words file and eject file (not discussed here). If these files do not not exist, they have no effect. They are not useful in a multi-owner context (as in bot-hosting) because they apply to just one world (eject file) or produce a sound (bad words file).
ScriptFile is important. The functioning of this parameter is different as from version 3.607.
If the bot is to run a script at startup, it must be specified here (and the script must have the 'Run' statement in it's [Settings] section). The script must be in the application's User folder (old Script folder) or in a sub-folder. The specification is relative to the USBD folder:
ScriptFile=MyScript.txt
specifies a MyScript.txt file in the USBD folder (see ScriptBaseDir):
ScriptFile=Bobby\MyScript.txt
specifies a MyScript.txt file in the USBD folder's sub-folder Bobby. If FileAccessRestricted=1, specifying a sub-folder here sets the file access folder for the bot to this sub folder. Bot hosting services may want to create separate sub-folders in the User folder for their custommers, and restrict file access to this folder (see section [Parameters], keyword FileAccessRestricted for more information).
If the bot is to run a script at startup, it must be specified here (and the Script must have the 'Run' statement in it's [Settings] section). The script must be in the application's Script folder or in a sub-folder. The specification is relative to the Script folder:
ScriptFile=MyScript.txt
specifies a MyScript.txt file in the Script folder;
ScriptFile=Bobby\MyScript.txt
specifies a MyScript.txt file in the Script folder's sub-folder Bobby. If FileAccessRestricted=1, specifying a sub-folder here sets the file access folder for the bot to this sub folder. Bot hosting services may want to create separate sub-folders in the Script folder for their custommers, and restrict file access to this folder (see section [Parameters], keyword FileAccessRestricted for more information).
ScriptBaseDir= (introduced with xelagots 3.607) is the base folder for access of scripts and other user activities (verbal commands), also shortened to USBD for Script Base Directory. It is either the User folder if this keyword is left blank, or a sub-folder of the User folder.
ScriptBaseDir=
says that the USBD is the User folder.
ScriptBaseDir=Johnny
says that the USBD is the folder User\Johnny
The ScriptFile specification is relative to this USBD. This USBD also contains the _Downloads folder, the _DeeJay folder (with subfolder CustomSpeakers), and the _Survey folder, that replace the pre-3.607 Downloads, DeeJay and Survey folders.
ScriptAccessPaths= (introduced with xelagots 3.607) works together with FileAccessRestricted=1 to enlarge the area accessible for file operations by scripts and verbal commands. If left empty, then only the USBD is accessible. To add paths for access, make a comma separated list of full paths (including drive). If the path contains spaces or commas, it must be enclosed in double-quotes. For example:
ScriptAccessPaths="C:\Active Worlds",C:\Temp
IMPORTANT NOTE: if this line begins and ends with a double-quote, you must add a comma at the end:
ScriptAccessPaths="C:\Active Worlds",
because Windows reads
ScriptAccessPaths="C:\Active Worlds"
as
C:\Active Worlds
without double-quotes. As a precaution, always end the paths string with a comma, Windows and the bot interpret this correctly.
Symbolic path notation is also accepted, see here.
DeeJayFile specifies the DeeJay file for the bot, and defaults to the DeeJay folder for xelagots 3.606 or lower, and to the _DeeJay folder in the USBD for 3.607 or higher. If FileAccessRestricted=1, the filename (regardless of the path) will default to the directory set with the ScriptFile keyword for xelagots 3.606 or lower. For xelagots 3.607 or higher, the path always defaults to the USBD\_DeeJay folder, it does not matter if FileAccessRestricted is on or off. Note: the Av99Bot and SrvcXlgBot do not make a valid speaker file, they only make a template of it. See section Speaker File below.
LogToText=0, TecLogToText=0, FulLogToText=0 indicate the bots are not to log events (recommended for Bot hosting services, log files have no size limit). A value of 1 will allow logging.
The Bot Client specifications follow below. These are necessary if the bot is to be logged into a Xelagot Server. Bot hosting services need to pay special attention: if their custommers are to be able to chat to their bots (and command them), (i) they must have USER protocol and their bots' login names must be registered in their User Bots field on the server; (ii) the first four ini file entries below must contain valid values (ClientLogin and ClientPassword must be those registered on the server), and ClientReconnectOn must be set to 1; (iii) the Xelagot server must be online and listening at the specified Host and Port when the bots are started (or just after they start, ClientReconnectOn attempts to reconnect). The ClientPassword must be prefixed with a question mark (see the explanation for Password here above). If the values of ClientHost and ClientLogin are not empty, and ClientPort is larger than 0, the bot will attempt to log into the specified server automatically.
ClientHost=
ClientPort=0
ClientLogin=
ClientPassword=
ClientReconnectOn=1
ClientReconnectDelay=10
ClientReconnectPause=60
ClientReconnectAttempts=6
ClientReconnectCycles=-1
For more information about the Xelagot Server see the server pages.
For a description of the following keys, see the section Universe File below:
LimitedHear
ArrivalWav
ArrivalAlert
ArrivalWhisper
DepartureWhisper
BadWordWav
EjectWhisper
WhisperAvClicks
ArrivalAsConMsg
For a description of the following keys, see the section World File below:
ToAtDistance see section World File below.
ToAtAngle
ToAtFacing
ToAtLevel
ToStepH
MotionCentre
MotionWait
MotionRadiusH
MotionRadiusV
MotionStepH
MotionStepV
MotionAngleH
MotionAngleShiftH
BlimpRadius1
BlimpRadius2
BlimpClockwise
BlimpStep
BlimpCentre
SayHi
SayBye
WhisperHi
HiExcludeBots
AnnounceExcludeBots
SayAnnounce
SayAnnounceType
AnnounceCount
optional Announce1
AnnounceInArea
AnnounceNW
AnnounceSE
AllowWorldDestruction
ChatLines=700, BuildRate=10, BotRadius=200.00 and WorldBoundary=10.000 should be left as is.
As from 3.303, the following can be specified (see section World File below):
SayAnnounceConMsg
AnnounceConMsg
AnnounceConMsgR
AnnounceConMsgG
AnnounceConMsgB
AnnounceConMsgBold
AnnounceConMsgItalics
AnnounceConMsgExcludeBots
BlimpTerrainOn
BlimpTerrainMinAltitude
BlimpTerrainMaxAltitude
BlimpTerrainCells
BlimpGuideDistance
RandomTerrainON
RandomTerrainMinAltitude
RandomTerrainMaxAltitude
Profiles are used by the x1 Xelagot bot to be able to warp accross universes. The x1 Xelagot uses these by default and keeps it's profile and universe definitions in files in the Preferences folder. The Av99Bot and SrvcXlgBot may use profiles as an option: the profiles and universe definitions are not kept in separate files, as is the case with x1, but must be entered in the ini file. They are not included by default, as the bots run quite happily without them, but without profiles, the bot is doomed to reside in one universe only.
To start with, you must add two new sections to the ini file:
[Universes]
[Profiles]
The [Universes] section will have the names and data of all the universes the bots must recognise. (See notes in the [Bot...] section, keyword UniverseName, for the name convention used here). For example:
[Universes]
UniverseList=ActiveWorlds,City4All,Outer Worlds,VectorScape
ActiveWorlds=/0
City4All=193.186.168.183/0
Outer Worlds=host.seeray.com/0
VectorScape=universe01.vectorscape.net/0
Notice that the keyword UniversList must have a comma-separated list with the names of the universes. These names are used as keywords in this section: their value is the host-name or IP (or empty if it is auth.activeworlds.com), followed by a slash, followed by the port number (0 if the default port is used). These universe names are also used in the bot sections as the value of the Universe keyword for the bot.
The [Universes] section is used by the application to create templates for each universe.
The [Profiles] section contains only one keyword, ProfileList, with a comma-separated list of profile names.
[Profiles]
ProfileList=Pro1,Pro2,Pro3
These profile names will form new sections, which you must add to the ini file:
[Pro1]
[Pro2]
[Pro3]
In each of these profile sections, the universe names are used as keywords to point to the data relevant for that universe in this profile. For example, for [Pro1]:
[Pro1]
ActiveWorlds=289499,299724,299728/?password/xelagon/1s 0w 0a 0.0
City4All=1055/?password/holland/3n 5e 0a 0/
Outer Worlds=1462/?password
VectorScape=146/?password
I will use the ActiveWorlds definition of [Pro1] to explain the data:
For [Pro2] and [Pro3] you must repeat the exercise yourself: the citizen numbers, password and home world/coordinate may change according to your needs. Of course, you may only need one profile, instead of three. That's easy: In the [Profiles] section, define only one profile, and create only one profile-section, for example:
[Universes]
UniverseList=ActiveWorlds,City4All,Outer Worlds,VectorScape
ActiveWorlds=/0
City4All=193.186.168.183/0
Outer Worlds=host.seeray.com/0
VectorScape=universe01.vectorscape.net/0
[Profiles]
ProfileList=MyProfile
[MyProfile]
ActiveWorlds=289499,299724,299728/?password/xelagon/1s 0w 0a 0.0
City4All=1055/?password/holland/3n 5e 0a 0/
Outer Worlds=1462/?password
VectorScape=146/?password
So, now you have defined your set of Universes and Profiles, what next? In the [Bot...] sections, you may now fill in the Profile keyword: use the name of the profile section, for example, Profile=Pro1 or Profile=MyProfile (don't include the square brackets). You also need to specify the UniverseName, World and Location (the home world is rarely used, it is there for compatibility with x1), but not the CitizenNumber, Password, Owners, Host and Port, as these are extracted from the Profile.
The universe file is automatically made by the bot and is in the folder Preferences, sub-folder universe name. The file name starts with the bot's code and name, followed by .prf. (The bot's code is its citizen number in hexadecimal notation.) For my bot Delph in Active Worlds, this file is called 46ADB_Delph.prf
This file is only used if UseUniverseFile=1 in the bot's section of the ini file. Otherwise, the parameters in the ini file are used for all universes.
[Settings] LimitedHear=1 0 = listen to all, 1 = listen only to owner (default) ArrivalWav=Popup.wav filename in Preferences folder ArrivalAlert=0 0 = none, 1 = apply ArrivalWav ArrivalWhisper=1 0 = none, 1 = to login owner, 2 = to 1st owners, 3 = to all owners DepartureWhisper=1 0 = none, 1 = apply settings of ArrivalWhisper WhisperAvClicks=3 0 = none, 1 = to login owner, 2 = to 1st owners, 3 = to all owners ArrivalAsConMsg=0 0 = disallow, 1 = allow forces the arrival, departure, eject and click whispers to be done with console messages, if possible (version 3.504) BadWordWav=Popup.wav filename in Preferences folder EjectWhisper=0 0 = whisper own ejects to login owner, 1 = to 1st owners, 2 = to all owners UniverseDialog=English language used in universe leave empty if it follows the ini file Dialog
A world file is automatically made by the bot for each world and is in the folder Preferences, sub-folder universe name. The file name starts with the bot's code and name, followed by _ + world name (url encoded) + .wpr. (The bot's code is its citizen number in hexadecimal notation.) For my bot Delph in xelagon of Active Worlds, this file is called 46ADB_Delph_xelagon.wpr
This file is only used if UseWorldFile=1 in the bot's section of the ini file. Otherwise, the parameters in the ini file are used for all worlds. It contains one section, [Settings]:
[Settings] LastLogin=18/11/2000 01:50:13 VRT WorldDialog=English language used in world leave empty if it follows the universe or ini file Dialog Avatar=29 avatar used in world GestureSequence=1 6,0 gesture sequence used in world MotionCentre=0.967s 0.990e 3.50a random motion parameters MotionRadiusH=1900 MotionRadiusV=300 MotionStepH=200 MotionStepV=50 MotionAngleH=300 MotionAngleShiftH=0 MotionWait=0 ToAtDistance=150 join/follow parameters ToAtAngle=900 ToAtFacing=0 ToAtLevel=100 ToStepH=70 BlimpRadius1=500 blimp parameters BlimpRadius2=200 BlimpClockwise=1 BlimpStep=200 BlimpCentre=5.000n 0.000w 0.00a 0.0° Identify=0 identify citizens: 0 = off, 1 = on SayHi=0 0 = don't greet, 1 = greet SayBye=0 0 = don't greet, 1 = greet WhisperHi=0 0 = don't greet, 1 = greet HiExcludeBots=0 1 = never greet bots, 0 = include bots SayAnnounce=1 0 = don't announce, 1 = announce SayAnnounceType=1 0 = aloud, 1 = whisper AnnounceExcludeBots=1 1 = never announce to bots, 0 = include bots AnnounceCount=1 number of lines in announce text Announce1=Welcome in Xelagon, {p} first line of announce text, number of announce lines corresponds to AnnounceCount: if AnnounceCount=0, Announce1 is ignored if AnnounceCount=2, Announce1 is followed by Announce2=second line AnnounceInArea=0 (version 2.978) 0 = disable, 1 = Announce only in area spacified: AnnounceNW=20.000n 20.000w (version 2.978) NW corner of announce area used if AnnounceInArea=1 AnnounceSE=20.000s 20.000e (version 2.978) SE corner of announce area used if AnnounceInArea=1 AllowWorldDestruction=0 (version 3.08) must be set to 0 for safeguarding against world destruction by scripts. If one wishes to use destructor scripts, set it to 1 or any non-zero number SayAnnounceConMsg=1 (version 3.303) 0 = don't send an Announce Console Message AnnounceConMsg=Welcome in Xelagon, {p}{newline}XelaG:{tab}and enjoy yourself! (version 3.303) Announce Console Message text. In contrast to the Announce1, the whole text is set in one line, line breaks are indicated by {newline} AnnounceConMsgR=0 (version 3.303) Red value of the Console message font: 0 to 255 AnnounceConMsgG=0 (version 3.303) Green value of the Console Message font 0 to 255 AnnounceConMsgB=0 (version 3.303) Blue value of the Console Message font: 0 to 255 AnnounceConMsgBold=1 (version 3.303) 1 = use bold font, 0 = no bold AnnounceConMsgItalics=0 (version 3.303) 1 = use italics, 0 = no italics AnnounceConMsgExcludeBots=0 (version 3.303) set to 1 to exclude bots BlimpTerrainOn=1 (version 3.304) enables terrain sensing for blimps BlimpTerrainMinAltitude=500 (version 3.304) minimum alt. above terrain in cm BlimpTerrainMaxAltitude=-1 (version 3.304) max. alt, disabled is <& min. BlimpTerrainCells=3 (version 3.304) number of terrain cells to test BlimpGuideDistance=500 (version 3.304) distance of the guide in cm RandomTerrainON=1 (version 3.304) enables random terrain sensing RandomTerrainMinAltitude=0 (version 3.304) min. alt. RandomTerrainMaxAltitude=0 (version 3.304) max. alt., both set to 0 foe accurate 'walk on terrain'
The speaker file is automatically made by the bot and is in the folder Preferences, sub-folder universe name. The file name starts with the bot's code and name, followed by _ + world name (url encoded) + .wdj. (The bot's code is its citizen number in hexadecimal notation.) For example, for my bot Delph in xelagon of Active Worlds, the file is called 46ADB_Delph_xelagon.wdj
In X1, this file is edited throught the user interface. In the Av99Bot and SrvcXlgBot, this must be done by hand, or using the contents of an X1 speaker file. Note that the object number is important if speakers are present in the world, it must be known by the bot: this paradox can be solved by deleting the speakers in world.
MidiTimeout=0 seconds between midis CurrentMidi=-1 -1 = none PlayState=0 use verbal commands PlayMode=1 use verbal commands Continuous=-1 use verbal commands Requests= leave empty SpeakerCount=1 number of speakers depending on this number, the next lines are repeated with a different numeral: Speaker2Model=sign2.rwx etc... Speaker1Model=ball1.rwx model of first speaker Speaker1Location=1.000n 0.000w 0.00a 0.0° location of first speaker Speaker1Number=0 object number of first speaker Speaker1Create= create section of action Speaker1Activate= activate section of action Speaker1Bump= bump section of action Speaker1Adone= adone section of action
That's it :)