What's New: 
 
Major versions:
Version 1.0: humble beginnings :D 
Version 2.0: Multiple instances 
Version 2.1: ADO Database support 
Version 3.0: Revised internal queue processing, added terrain features. 
Version 4.0:  Function calls and parameter passing. 
Version 4.1: VLists
Version 5.0: Switch to Delphi 7. 
Version 5.1: (Some preliminary changes, rolled over into version 5.2.) 
Version 5.2: AW SDK build 37. 
Version 5.3: SHOWTERRAINBUFFER command, ZONE commands and events. 
Version 5.4: FTP Commands (actually in 5.3.1, see 8/20/04 below).
Version 6.0: PlugIns, Survey to Obj List.  THREAD command.
Version 6.1: Some new features for plug-ins.
Version 6.2: WINMSG command/event.
Version 6.3: Ability to hide action tabs.
Version 6.4: AW SDK build 41, small changes to NearBy dialog.
Version 6.5: New ADO module, support for ADO 2.8.
Version 6.6: Administrative instances.
Version 6.7: Find button.
Version 6.8: Improved disconnect recovery.  In 6.8.30: Calculator dialog, Events Viewer, improved database operations with a THREAD.
Version 6.9 Bugs fixes and new non-SDK features from version 7.* Last AW 3.6 version, now updated only to add non-SDK features and bug fixes.

Version 7.0: For SDK build 59 (AWB version 4.1 beta)
Version 7.1: For SDK build 60 (AWB version 4.1)
Version 7.2: For SDK build 61.
Version 7.3: Added @objdata functions.
Version 7.4: SDK build 63.
Version 7.5: SDK build 64.
Version 7.6: SDK build 65.
Version 7.7: New ADO module, ADOnis 4.7.
Version 7.8: SDK build 66.
Version 7.9:  Object IDs in survey.
Version 7.10: New instance list handling.
Version 7.11: Changes for RPGBot II, threading fixes.
Last AW 4.1 version, now updated only to add non-SDK features and bug fixes.

Version 7.12: SDK build 70, 71, 72, 73, 74, 75,76,77 (for AW 4.2)
Version 7.14: Added USING clause
Version 7.15: Improved threading.
Version 7.16: Changed AvTracking, Zone handling for use in multiple worlds. Last AW 4.2 version.

Version 7.17: SDK build 84 for AW 5.0; partial Unicode support. (cancelled)

Version 8.0 SDK Build 85. Switch to Delphi 2010 with full Unicode support.

See here for known bugs, bug fixes and planned enhancements.

Versions prior to 7.12.8 for AW 4.2,  or 7.11.17 for AW 4.1, or 6.8.38 for AW 3.6 will no longer function!


Coming eventually, maybe (?):

Changes to make code inside of buttons that is called within a thread,  run as a thread. (Currently CLICKBTN, FTN etc. calls within a thread will execute the entire button code outside of the thread;  in the new version the code in the button will run in the thread.)

Cancelled:  Version 7.17.0 For AW 5.0. Partial Unicode support using third-party components.


6/4/2010

Version 8.0.0 For AW 5.0. Full Unicode support. Compiled using Delphi 2010. Alpha test

2/7/10

Version 7.16.4 Added HTTPSETREFERER.

2/4/10

Version 7.16.3,  Version 7.11.40, Version 6.9.16  UFixed a bug that prevented @avsession_ from working properly.

1/24/10

Version 7.16.2,  Version 7.11.39, Version 6.9.15  Upgraded ADOnis Component Suite to version 4.9; added functions @heightb and @textureb.

1/22/10

Version 7.16.2 Added @heightb and  @textureb functions.

1/12/10

Version 7.16.1  Upgraded ADOnis Component Suite to version 4.9.   (7.16.1.1: changed update712 to update716, fixed "AW 5.0" to "AW 4.2")

1/11/10

Version 7.16.0,  Version 7.11.38, Version 6.9.14  Changed AvTracking, Zone handling to distinquish locations in different worlds.

12/28/09

Version 7.15.7,  Version 7.11.37, Version 6.9.12  Changes to the verification system due to new server IP number.

12/14/09

Version 7.15.6 Fixed bug: @local and @this missing from function list.

11/1/09

Version 7.15.5,  Version 7.11.36, Version 6.9.11  Changes to the verification system due to new server IP number.

8/13/09

Version 7.15.4  Fixed DetectRange bug (sometimes showed range for wrong instance). Fixed bug that caused nonexistant args to be stored as 0 or "", within THREAD or ENQUEUE.  Fixed bug that caused unquoted string args to be misread as numbers.

6/25/09

Version 7.15.3  Adjusted threading performance.

5/22/09

Version 7.15.2,  Version 7.11.35  Fixed bug with attribute lists causing memory leak. (It wasn't caused by the USING clause after all!)  Fix not required for version 6.9.10, problem didn't occur there.

5/15/09

Rebuilt Version 7.15.1,  Version 7.11.34, Version 6.9.10  to fix tiny bug: forgot to add @local and @this to function list, so the insert function feature inserts the wrong function name for all functions that appear later in the list.  It didn't seem worth issuing a new version for this, but I wanted to fix it, so...if you downloaded any of these versions before 5/15/09 9am EDT, you can download them again to get the fixed build.

5/14/09 later

Version 7.11.34, Version 6.9.10  Debugged and restored USING clause.

5/13/09

Version 7.15.1  Debugged and restored USING clause.

5/12/09

Version 7.15.0,  Version 7.11.33, Version 6.9.9  Temporarily removed USING clause due to memory leak it caused. I'll replace it when I have time to fix it. You weren't using it anyway, were you?  :D

5/7/09

Version 7.14.4,  Version 7.11.32, Version 6.9.8  Fix SETINSTANCE in THREAD, in FTN calls.  

                           NOTE: Only the Build 2 versions of these are good. Mouse over the exe file to see the build version, e.g. 7.14.4.2

5/5/09

Version 7.14.3,  Version 7.11.31, Version 6.9.7 Fix SETINSTANCE in THREAD.

Version 7.11.31, Version 6.9.7 Add USING clause.

(not released)

Version 7.14.2 Try to get SETHTTPID working. (nope) 

Version 7.14.1 Changes to Evaluation.pas to allow local variables to be passed into USING clause.

Version 7.14 Added USING clause. Fixed missing attributes in SetTerrainResult callback, et al.

Version 7.12.28, Version 7.11.30, Version 6.9.6  Updated ADO component to version 4.8.1.

2/2/09

Version 7.12.27, Version 7.11.29, Version 6.9.5  Fixed problem with the Chat, Announce and Telegram edit boxes going off the right edge of the window so that the drop down button didn't show.  (When the heck did that happen??? I just noticed it.)  

1/19/09

Version 7.12.26 Fixed bug with the Options->Objlist format menu item not saving the setting when Version4 was selected.
Version 7.12.26, Version 7.11.28, Version 6.9.4  Fixed THREADWAIT bug. Fixed AvTracking zone column width not being saved.

Version 7.12.25 Fixed bug with the Options->Objlist format menu item not saving the setting when Version4 was selected. (not released)

12/18/08

Version 7.12.24 For SDK build 77. No new functions or attributes, but this SDK build seems to have fixed the connection problem that Magsbot was having when starting instances from a STARTUP event in the Behavior table.

12/15/08

Version 7.11.27 For AW 4.1.  EncryptTagMenu -> EncryptTabMenu.

10/25/08

Ooops, I forgot to put the latest aw.dll in the zip file for Magsbot version 7.12.23. It's in there now, so if you've been having problems running 7.12.23, you can just download it again and it should be okay. Sorry...

10/21/08

Version 7.12.23 For SDK build 76. No change in functionality except one new attribute,  WORLD_WAIT_LIMIT.

???

Version 7.12.22,  6.9.4 EncryptTagMenu -> EncryptTabMenu (not released)

9/20/08

Version 7.12.21 For SDK build 75. No change in functionality except two new attributes (OBJECT_SESSION_TO,  WORLD_CAMERA_ZOOM) and one callback removed (QUERYOBJECT).

9/12/08

Version 7.12.20, 7.11.26 Yeah, I messed up with the update yesterday, so nothing was getting deleted. This fixes it.

9/11/08

Version 7.12.19, 7.11.25 Changed OBJECTDELETE so that it will ignore attempts to delete object number 0, and likewise changed OBJECTDELETE_ so that it will ignore attempts to delete object id 0.

 If AW_OBJECT_NUMBER is set to 0 in the SDK, then aw_object_delete will use AW_OBJECT_ID instead, which could lead to the wrong object being deleted. This change will prevent that problem. If you wish to delete an object using the object id instead of the object number intentionally, then you can still use the OBJECTDELETE_ command.

The converse is also true, that If AW_OBJECT_ID is set to 0 in the SDK, then aw_object_delete will use AW_OBJECT_NUMBER instead, which could lead to the wrong object being deleted. This change will prevent that problem. If you wish to delete an object using the object number instead of the object id intentionally, then you can still use the OBJECTDELETE command.

(NOTE: In actual practice, there are some limitations to using object id to delete an object, as noted in the AW Wiki.)

8/29/08

Version 6.9.3 Restored @memory, @memblock functions that unintentionally removed.

8/28/08

Version 7.12.18, 7.11.24, 6.9.2 Exported GetNearbyList, NameOfSession,  NextSessionFromName,  NameFromSession,  CitNumberFromSession,  PrivilegeFromSession. Updated MBotCalls.pas and PublicMBTypes.pas for each version.

8/27/08 later

Version 6.9.1  Removed AWInstanceSet error message that occurred due to incompatibility between the old SDK and newer code.

8/27/08

Version 6.9.0  For AW 3.6, this brings the previous version 6.8.40 up to date with all the bug fixes and newer non-SDK features of version 7.11.22.

Version 7.12.17, 7.11.23 Removed @dataof and @dataof_ functions. I decided that these don't have much use since avatar data stored this way would disappear whenever an avatar's session changed.

8/26/08

Version 7.11.22  Fixed a bug in the @nextnum and @nextnum_ functions, etc.

8/25/08

Version 7.12.16, 7.11.22  Fixed a bug in the @nextnum and @nextnum_ functions, that caused a wrong value to sometimes be returned when the global variable list window was open. Also added AW_OBJECT_CALLBACK_REFERENCE to Object Result handler.  Thank you, ActiveWiki!

8/18/08

Version 7.12.15  SDK Build 74.  Also fixed bug that caused "propdump version n" to be put at head of object list format files. Removed tentative feature that automatically created vlist for each session, as not being useful. (Pause verification timer, run at instance startup.)

7/29/08

Version 7.12.14, 7.11.21, 6.8.40  Improved Dynamic Synch so that it works with the new timing scheme. Also changed  default interval to 500.

7/28/08

Version 7.12.12, 7.11.20, 6.8.39  Fixed a bug with wait/process phase timing that caused the process phase to last too long when there were no events. Also changed default wait to 0, default interval to 50.  (Note, 6.8.39 still has old method of timing FLOODLIMIT and AVCHANGELIMIT.)

7/26/08 later

Version 7.11.19.  Added new timing method (using aw_tick) that was previously added to 7.12.9.

7/26/08

Version 7.12.11, 7.11.18.  Fixed bug: the checkbox for the UserList callback on the Handlers dialog would become unchecked when the dialog was opened. (However, the setting would stay as long as the Handlers dialog wasn't opened again after checking it.) Having that callback deactivated would only affect the USERLIST command, which itself would only function for universe admins, and only if the userlist for a given universe is turned on.  No doubt that's why no one noticed it earlier.

7/24/08

Version 7.12.10  SDK build 73.  No big changes, just 3 new attributes added.

7/23/08

Version 7.12.9  Trying a new timing method (using aw_tick) for FLOODLIMIT and AVCHANGELIMIT.

7/15/08

Version 7.12.8, 7.11.17  Fixed a bug that caused checkboxes for callbacks on the handlers list dialog to not stay checked/unchecked.

7/14/08 later

Version 7.12.7, 7.11.16, 6.8.38  Oops, some fixes to the previous.

7/14/08

Version 7.12.6,  Version 7.11.15  Added @dataof[$avname] and @dataof_[@avsession] functions.  They return a vlist associated with each avatar, for whatever use desired.  (Later removed.)

also:

Version 6.8.37
 A
retro version for AW 3.6 universes.

7/10/08

Version 7.12.5, Version 7.11.14  Enhancements for RPGBot II.

7/8/08

Version 7.11.12  This is kind of a retro version for AW 4.1 universes, using SDK build 66. It is an update of version 7.11.11 containing the same fixes and functionality as in 7.12, except of course for the AW 4.2 features.  I don't plan to continue support for the 7.11 line generally speaking, but some RPGBot customers are still working with the old world server, and I wanted to provide for them some of the changes that I've made in version 7.12.4 that improves the performance of combat.

7/7/08

Version 7.12.4  New menu items Add coords to AvClick, Add coords to ObjClick and Add coords to HearChat (on the Advanced menu).  When these menu items are checked, extra coordinates information is added to the corresponding event. This allows coordinates infomation to be correct for the time the event occurred.

7/4/08

Version 7.12.3  Some changes for custom Magsbots.

7/2/08

Version 7.12.2 SDK Build  72.  No new features, just a new aw.dll. The OBJECTCLICK bug in the SDK is fixed! Yayyyy! :)

7/1/08

Fixed a typo in the userdefs.udf that affected HUD flags.

6/25/08

7.12.1 beta SDK Build 71. Some changes to zone objects and movers.  Later: 7.12.1 beta 2: fixes a problem with missing zone object preset properties.

6/22/08

7.12 beta 2  Fixed some things with CAVREQUEST.  Added functions @cavdeflen and $cavdefstr (used within CAV and WORLDCAV events). 

6/21/08

7.12 beta  SDK build 70.  Added CAVREQUEST, CAVDELETE, CAVCHANGE, WORLDCAVREQUEST, WORLDCAVDELETE, WORLDCAVCHANGE,  OBJECTQUERY,  OBJECTQUERY_ commands, and @awzip and @awunzip functions. (I haven't updated the documentation yet, but use Insert Action and Insert Function to see the arguments, and use the AW Wikipedia to see how these features work in the SDK. These new features have not been tested yet.) Also fixed AVATARLOCATION so that it properly returns avatar info.

AWZIP, AWUNZIP work with the same functions used with object data blocks, i.e.  @datafromstr, @copydate, @datalen, FREEOBJDATA. They don't have much usefulness yet since there is no way to create a datablock other than @datafromstr which expects a hex string as input. I will add a function to allow Magsbot to read binary data from a file into a datablock soon.

5/21/08

7.11.11  Bug fixes to prevent crash under some rare circumstances.

5/15/08

7.11.10  Added Advanced->Performance->Threads menu.

NOTE:  No, you didn't miss anything! This is the first update since 4.10.8 that I've sent out a reminder about, because most everything since 4.10.8 has concerned changes to accomodate RPGBot II and didn't much affect users of the generic version of Magsbot. However some of the recently improved threading features might be useful for the general user, so I've now issued the update reminder.

5/14/08

7.11.9  More fooling around with APM in threads.

5/12/08

7.11.8  Added THREADWAIT command., better error handling to THREADSUSPEND, THREADRESUME, THREADEND.

5/11/08

7.11.7  Fix error handling and trapping in threads.

5/7/08

7.11.6  Make @thread function work inside thread as well as outside.

5/3/08

7.11.5 More new encryption features.

5/2/08

7.11.4 More threading fixes (setinstance update), and more changes to encryption.

7.11.3 More threading fixes: APM in ProcessAction

7.11.1, 7.11.2
Trial fixes for threading. APM variations

7.11 Changes for RPGBot II (new encryption features).

4/15/08

7.10.10 Fixed a problem that could occur when terminating instances. This also fixed a problem with the @instid function within a TERMINATEINSTANCE event. (Version 7.10.9 was a goof, delete it.)

4/3/08

7.10.8 Some minor changes to help with the RPGBot II project.

3/21/08

7.10.7 Fixed a bug in the ADDCATEGORY command (it expected two arguments, but should only have required one).

1/10/08

7.10.6 Added Fixed a bug in @avsession_ and $avname_ (weren't recognizing a bot instance being run by the same copy of Magsbot).

12/2/07

7.10.5 Added @avsession_[$name].

12/1/07

7.10.4 Enhanced $avname_[@session] so that it also searches instance list (as well as avtracking).

11/18/07

7.10.3 Fixed a bug in $vlpicks and $vlpickvs.

10/17/07

7.10.2 Still more changes to disconnect recovery. (Fixed a bug with the error message when bot is ejected.)

10/15/07

7.10.1 Some more changes to disconnect recovery.  AutoRecover menu item removed; bot always attempts to recover now, unless ejected or unwelcome.

10/12/07

7.10 New instance and recovery handling.  (Technical stuff: formerly aw_user_data was used to store a pointer to instance data; now that is stored in the instance list row.)

10/10/07

7.9.5 Added Allow Irregular Objlist Numbers item under the Advanced menu. When checked, object list files can be read that use non-integer object numbers. This is useful if you want to use the GETOBJLIST_ and SAVEOBJLIST_ commands to read or save a vlist to a file with item numbers included, and the item numbers are non-integer.

Also corected the SORTVLIST command so that it sorts vlists properly when the variable names are numeric.

9/14/07

Made some changes to the Terrain buttons that save and read binary files. Previously the data size was based on the current world size, which was a mistake since the bot might not be in the world where the terrain buffers were read.
Now the data size is based on the size of the terrain buffers when saving, and the size is also saved to the file for when it is read back in again.  The old buttons are still there in case you have some old terrain files that need to be converted.

9/6/07

7.9.4 Fixed problem with varlist sorting.

9/2/07

7.9.3 Improved sorting of varlists and fixed SAVELIST so it now saves items in correct order.

9/1/07

7.9.2 Fix problem with update check system.

8/27/07

7.9.1 Changed flood limit default setting. Fixed a bug in $vlpicks and $vlpickvs.

8/8/07

7.9  ENITITYCHANGE filtered along with AVATARCHANGE fixed (oops).   New survey option: create object list using object ID instead of object number.

8/7/07

7.8.3  ENITITYCHANGE filtered along with AVATARCHANGE.

6/28/07

7.8.2 Added some missing events to the Insert Event dialog.

5/18/07

7.8.1 Preliminary changes for Evaluation module version 4.

5/15/07

7.8 SDK build 66.

5/12/07

7.7.1 Fixed a possible problem with setting a new instance within a THREAD clause.

5/11/07

7.7 Upgraded ADO database module.

3/14/07

7.6.10 Added "Show HUD Events" to Options/Show in Log... menu.

7.6.9   Fixed a bug: if the last action within a WHILE clause, within a THREAD, is an IF, then the thread will terminate.

3/11/07

7.6.8   Fixed a bug: the DELETECATEGORY command was wrongly listed as DELCATEGORY in the InsertAction dialog, and would be inserted as DELCATEGORY when selected.

later

Added a HUD category tab, and made some changes to userdefs.udf to support it.

3/10/07

7.6.7   Added third server verification backup. (In case the first two update notification servers are down, there's now a third one. Doesn't really affect anything important unless you have a custom version of Magsbot.)

2/24/07

7.6.6   Fixed a problem with the EVENT command.   < Mistake! Was okay, should not have changed! Nevermind! :D

2/10/07

7.6.5   Added $dbparamcount, $dbparami functions.

7.6.4   Added $dbparam function.

1/19/07

7.6.3   Fixed a problem with converting the LF in the Build (propdump) command.

1/1/07

7.6.1   Fixed a problem with Events list.

12/30/06

7.6  SDK build 65. Added new attributes and AVLOCATION @cit @session $name.

12/2/06

7.5  SDK build 64. Added HUDCLICK, HUDCREATE, HUDDESTROY @session @id, HUDCLEAR @session commands and corresponding events, and HUDRESULT callback.  I'm not sure how all these work yet, but there are in there for you to use, if you do. :D

Also added these attributes, which are new in SDK build 64:

HUD_ELEMENT_TYPE
HUD_ELEMENT_ID
HUD_ELEMENT_SESSION
HUD_ELEMENT_ORIGIN
HUD_ELEMENT_X
HUD_ELEMENT_Y
HUD_ELEMENT_Z
HUD_ELEMENT_FLAGS
HUD_ELEMENT_TEXT
HUD_ELEMENT_COLOR
HUD_ELEMENT_OPACITY
HUD_ELEMENT_SIZE_X
HUD_ELEMENT_SIZE_Y
HUD_ELEMENT_SIZE_Z
HUD_ELEMENT_CLICK_X
HUD_ELEMENT_CLICK_Y
HUD_ELEMENT_CLICK_Z
HUD_ELEMENT_TEXTURE_OFFSET_X
HUD_ELEMENT_TEXTURE_OFFSET_Y
CITIZEN_PRIVACY

11/29/06

7.4.12  Changes to the DBGrid for use with MySQL databases.  Memo fields now display in blue, with the first 32 characters of the text instead of the word "(Memo)".  Varchar fields that are longer than 32 characters display in green, with only the first 32 characters showing on the grid (although the column can be resized) and are edited in the edit box the same as memo fields, when the user presses Enter.  They can still be edited within the grid by pressing F2.  Any text field (memo or varchar) can be edited in the edit box by pressing Ctrl-F2.

The number of characters displayed can be changed in the .ini file, by setting MaxColWidth in the [Database] section.

11/23/06

7.4.11  Completed changes to WRITE command, and added READ command, for saving and loading binary files. This can be used to save and load terrain buffers; for large worlds, much faster than polling the terrain.

11/19/06

7.4.10  Added error message to @avspresent, @avspresent_ when instance has no nearby list.  Some fixes to threading.

11/15/06

7.4.9  Fixed some encryption issues.

11/4/06

7.4.8  Category tags can now be encrypted individually.

7.4.7
 
Added @createhbuffer and @createtbuffer. Made changes to WRITE command to allow saving data to binary files. (Still some bugs in this however.)

10/24/06

7.4.6  Added zone priority features, implemented by the ZONEPRIORITY command and @zonepriority function.

10/16/06

7.4.5  Fixed: the OBJECTADD event wasn't including OBJECT_TYPE.

9/12/06

7.4.4  Fixed a bug that caused a false error message in AVSET* commands.

9/12/06

7.4.3  Adjusted OBJECTRESULT for @objectidadd and @objectidload. The return value is incorrect (due to an SDK peculiarity), but the value in the OBJECTRESULT callback is correct in this version.

9/11/06

7.4.2  Adjusted @objectidadd and @objectidload...but they still don't work. :P

9/9/06

7.4.1  Fixed a bug in @vlistfromobjdata function, that applied to movers only. But creating movers with the bot still doesn't work, except when using an object data string from a propdump or survey.  Also removed "old z, old x" arguments from @objectidchange. This might cause some problems when loading old scripts...if you get a message that says there are errors in the buttons or behavior tables, choose the option to edit them, and remove the second and third arguments. Sorry about that...I try to preseve backward compatibility, but I doubt that many people have been using @objectidchange anyway.

OLD:
@objectidchange[@obj_num,@old_ns,@old_we,@owner,@ns,@we,@alt,@yaw,@tilt,@roll,$model,$desc,$action,@objtype,$objdata]
Change to NEW:
@objectidchange[@obj_num,@owner,@ns,@we,@alt,@yaw,@tilt,@roll,$model,$desc,$action,@objtype,$objdata]

9/8/06

7.4  SDK build 63.

9/7/06

7.3.18  Can now sort the Nearby List by clicking on a column header.

9/5/06

7.3.17  Changed commands AVSET and AVSET_, and added AVSETTYPE, AVSETTYPE_, AVSETGESTURE,  AVSETGESTURE_, AVSETLOCATION, AVSETLOCATION_, AVSETSTATE, AVSETSTATE_. See here.

9/1/06

7.3.16  Fixed a bug in SVRBROADCAST.  Added @clientindex to CLIENTCONNECT, CLIENTDISCONNECT, CLIENTMSG events and optionally to SVRSEND command (SVRSEND address port index).   This allows you to differentiate between clients when you have several clients from the same addess logged on.

7.3.15  Added "Name for instance" menu item (when checked, the bots name shows in the log in place of the instance handle). Added Login and Enter events.

8/20/06

I haven't uploaded a new version for some time, sorry. Partly I was waiting to see if some of the new fixes really worked. Also there was a long-standing problem with null instances that appeared since the AW 4.1 SDK, that I wanted to fix before making a new version public. And I've been very busy so I didn't get a chance to fix that until recently.

Besides the changes below,  I added a new category tab "Presets" for loading, editing and creating special objects. (In the process I fixed a minor bug with the special objects data structures too.)  Test 'em out, and let me know how they work for you. :)

And I added a "Seed objects" button to the Build tab. It's similar to the "Instant Woods" button but with more options.

7.3.14
Fixed "null instance" bug that started in AW4.1.  Changed @height and @texture so don't automatically return cell info in local var list; instead they optionally take the handle of a vlist to put the information in.


7.3.12 Adjusted AvChangeFilter/Limit, added debug panel on AvTracking (double-click the box with the number of avatars).

7.3.11 Fixed bug in Enter World menu item (didn't act on Active Instance)

7.3.10 Now sets Active Instance explicitly when click a button.

7.3.9  A small change to try to handle some active instance problems that have appeared in 4.1.

Some changes to the survey buttons for Log One Object in 4.1. (Some earlier fixes were lost??)

7.3.8 Changed disconnect handler so if an instance is already disconnected, it won't be processed again. Needs to be tested!  Also added: $avname_ function (same as $nameof except looks at nearby lists of all instances).

7/31/06

I discovered that part of the standard behavior table for saving a terrain query in a "node list" had gotten deleted somehow, so I put it back. I you found that the Terrain/Log from Terrain Query button didn't work, that was why. If you don't want to download the whole package again, you can just add these lines temporarily:

Active
Event
Action
On
TERRAINDATA
FTN "Terrain/[LogNode]"
On
TERRAINDONE
@@tqlog=0

7/23/06 later

Version 7.3.7
  Uh...okay...kinda messed up here. All the AVSET fixes turned out to not work as planned, and in fact the original scheme worked best. So I've put everything back the way it was.  If you are still using 7.3.4, just keep it. If you don't have 7.3.4 anymore, then get 7.3.7.  I promise no more changes for at least a few days! :D

7/23/06

Version 7.3.6  That 7.3.5 fix didn't work so good after all. I don't have time today to do a proper fix, but this version uses the old method when the new method fails. The old method doesn't exactly work right either, but for now it will have to do.  The problem is the AVSET and AVSET_ may not work right if you only use one of the two arguments. To avoid this bug, use AVSET and AVSET_ with both arguments until I fix it...

So you say you want the long, involved, technical details? Well it's like this....First off, the AVSET and AVSET_ commands are essentially the same thing, the only difference is that AVSET_ uses the session to target the command and AVSET uses the avatar name.  (Actually the underlying SDK function aw_avatar_set always uses the session, so for AVSET Magsbot just looks up the avatar's session on the Nearby List and uses that.)  The problem comes in because aw_avatar_set cannot set just the avatar type or just the gesture; it has to set both.  (The aw_avatar_set command also changes the avatar's location unless AW_AVATAR_FLAGS is set to 0...that's a new thing in 4.1 I believe.)  But in Magsbot I wanted to provide the ability to set one or the other (avtype or gesture) by itself if desired; however I recently realized that it just wasn't going to work. (That may be the reason for some wrong-avatar bugs in the RPGBots, I now realize.) 

I attempted to fix this problem in Magsbot 7.3.5 by using avatar tracking data to get the value for the unspecified attribute. That is, if you use AVSET with only one argument, then Magsbot fills in the missing argument for you using avtracking data (that's the data that Magsbot saves during an AVATARCHANGE event).  It also uses avtracking data for the location, so that AVSET won't change the target avatar's location unless used with no arguments. But that didn't work because the avtracking data is not always available.  When it isn't then Magsbot 7.3.5 would give an error message and AVSET would fail.

So I temporarily made changes in 7.3.6 so it will fall back on the previous method of filling in the missing argument, when the avtracking data is missing. That doesn't really work right either, but it has worked well enough in all the previous versions of Magsbot, so it will have to do until I get a change to make a better fix.  Meanwhile, if you use AVSET then make sure you specify both avtype and gesture, and it should work.

7/22/06

Version 7.3.5  Fixed a possible problem with the AVSET and AVSET_ commands.

7/15/06 later still

Version 7.3.4  Fixed a bug with the various @pick functions.(the list wasn't being cleared each time).

7/15/06 later

Version 7.3.3  Fixed some memory-freeing issues with the @objectadd, etc. functions, related to special objects.

7/15/06

Version 7.3.2  Changed the way that the @btntab function works. It will now return a 0 if the specified category tab isn't found. (Previously it would cause an error.)

7/11/06

Version 7.3.1  Fixed a minor bug: some of the function templates (that you get when insert a function into the edit box) didn't line up with the function list, so when you chose a function from the list, the wrong function was inserted. (Because I accidentally added two copies of one of the functions to the list.)

7/3/06

Version 7.3  Added @objdatafromvlist[@vlist], @vlistfromobjdata_[@objdata], ($objdatafromvlist[@vlist] and @vlistfromobjdata[$objdata] still exist also), $strfromdata[@objdata], @datafromstr[$objdata], @copydata[@objdata], @datalen[@objdata] and FREEOBJDATA. Changed @objectadd, etc. to make the last argument ($objdata) variable; can now be $objdata or @objdata.

Also added buttons [load preset], create preset at bot location and edit & create preset at bot location to the Build tab. They let you create special objects using presets that were saved by the AWB.

6/24/06

Fixed a problem in the "Log One Object" button, due to changes in the 4.1 SDK that I didn't notice earlier. (It used to be that after an OBJECTCLICK event, the object data would remain in memory until changed by something else; now apparently the object data is only available during the click event, (if you try to get it afterward, it's all 0's) so I had to explicitly save it myself, in order for the button to work right.)

6/21/06

Version 7.2 Using SDK build 61, no license file required.

6/18/06

Version 7.1.6 Fixed some bugs in terrain building and related issues.

6/14/06

Version 7.1.4 Fixed a bug in the @instid function (and therefore the @iid_ macro that uses it), that caused an error when trying to get the instance id of a terminated instance.

The @instID function should still work in a TERMINATEINSTANCE event, if you use @instance_ (from the queue) instead of @instance (the actual instance handle from the SDK) as the argument.  The instance has actually been terminated already, so you can't get the instance handle directly from the SDK; however the instance handle is saved in the event queue, specifically to allow you to use the @instID function to identify the terminated instance. Therefore you can use @instID in a TERMINATEINSTANCE event to delete or update a database entry for an instance that has terminated.  (As the AWRPG bots do.)


6/8/06, later

Version 7.1.3 Fixed a bug that prevented obj lists from being read from a file properly. Also updated the workings of the various buttons on the Survey tab.  Changed the name of the Options/Propdump version menu item to Options/ObjList Format to better reflect how it's used. Likewise changed the SETBUILDVERSION command to SETOLVERSION.  The Obj List Version setting tells Magsbot what format to expect when using an object list, either when building it or saving it in propdump format. The version numbers correspond to propdump version numbers, 2, 3 or 4.

6/8/06

Version 7.7.2 Made a small fix to allow instance ID to be available during TERMINATEINSTANCE.

Version 7.7.1 Added functions:

$vlpick[@v,$prompt]
$vlpicks[@v,$prompt,$delim]
$vlpickv[@v,$prompt]
$vlpickvs[@v,$prompt,$delim]

These are like the various $pick functions, except that they use a vlist instead of a global variable list.

6/2/06

Version 7.1  This is the one that will run in the newly released non-beta 4.1 AW worlds as of today, June 2nd 2006! :)

6/1/06

Version 7.0 b5 A few fixes...@vlistfromobjdata and $objdatafromvlist had their argument types reversed.  There is still a problem with creating movers from scratch....I'm working on that. :)

5/31/06

Version 7.0 b3 A few adjustments, plus the most important feature revision of all...a new picture for the splash panel!

turtle flock

5/30/07

VERSION 7.0 for AW 4.1!  This is still a beta version because I haven't gotten a few of the new features to work yet. In particular, creating movers using the @objectadd function doesn't work yet.  See here for information about creating special objects.

5/21/07

(Version 7.0 a109 This is the version for AW 4.1 beta. Send me a telegram in the beta uni if you want me to send you the beta aw.dll and license to use it.)  Replaced the @TZ and @DST macros with built-in functions that automatically determine the time zone and daylight savings time on your computer.  Also replaced the @VRDate and @VRTime macros with built-in functions.  And, added menu items in the File/Logging menu to allow you to add a timestamp to each event in the log window, in your local computer's time or in VR time.

5/15/06

Version 6.8.35 Added a button to the Calculator dialog for inserting a function, attribute name, etc.

5/11/06

Version 6.8.34 Changed some things with FLOODPROOFING and AVCHANGELIMIT. They now take an argument in milliseconds rather than a Delphi TDateTime value.

5/9/06

Wow, I'm better than I thought. :P I just discovered that the Scroll Lock feature (selected from either the checkbox on the Chat panel, or the menu item under Chat) does work after all. And all this time I thought that I just couldn't get it to function.  The catch is, the log window can't have the focus (i.e. don't click it) or the scroll lock goes away. If this happens you can re-activate scroll lock by unchecking and checking the scroll lock box.  Another catch is, the scroll lock checkbox and menu item will only be available when Advanced/Anti-Flicker is checked...but that much I knew. :)

5/2/06

Version 6.8.31 Fixed a bug in Connection/Abort failed instance recovery menu item.

Version 6.8.30 Fixed database operations within a thread bug.

Version 6.8.28 Added EventsViewer.  (Right click on Events bar to open).

Version 6.8.27 Added Calculator dialog for Expresssion Evaluation. Added error checking to GETHTTP, etc. Added third verification url for custom Magsbots.

3/25/06

Version 6.8.25 Changed the $if and @if functions so that the alternate argument (the second argument if the first argument is "true", or the third argument if the first argument is false) doesn't get evaluated. Not only is there no need to do so, but this will also prevent problems that used to occur if the alternate argument contained a function call that shouldn't be made. Previously, all arguments were evaluated regardless of whether the first argument was true or not.

Here's an example to show what I mean:

@x=@if[@a,@ftn["[ButtonOne]"],@ftn["[ButtonTwo]"]]

The @if function returns the result of the second argument (@ftn["[ButtonOne]"]) if the first argument (@a) is true, otherwise it returns the value of the third argument (@ftn["[ButtonTwo]"]).  That was working as it should, but because Magsbot normally evaluates all the arguments before passing them to the @if function, both the [ButtonOne] function in the second argument and the [ButtonTwo] function in the third argument would be called regardless of the value of @a.  If the function in the "alternate" argument did something that should only be done by the the function in the argument whose value is returned by @if, that would cause problems. In Magsbot version 6.8.25, the third argument won't be evaluated at all if the first argument is true, thus the [ButtonTwo] function won't be called; and likewise the second argument won't be evaluated at all if the first argument is false, so the [ButtonOne] function would not be called.  All of that also applies to the $if function as well.

3/9/06

Version 6.8.24 Added @dbisnull[$fieldname] function, that tells is a database field is null.

3/5/06

Version 6.8.22 Fixed a bug that was introduced into the $replace function by changes in 6.8.20.

3/3/06

Version 6.8.20 Checks for a more recent version of Magsbot and notifies you. (You can turn off this feature by putting Check=0 in the [Update] section of the .ini file.)

2/27/06 later

Version 6.8.18.  Fixed a problem pertaining to custom versions of Magsbot.

2/27/06

Version 6.8.17.  Fixed a bug that caused non-propdump lists to have a propdump header at the beginning of the file. (A goof caused when I updated to version 3 type propdumps in version 6.8.16.)

2/24/06

Version 6.8.16.  Added INFO command (similar to POPUP but uses a scrolling, resizable window) and updated survey functions to use the propdump version 3 format.

2/20/06

Version 6.8.14.  Yes, you guessed it: made some more changes to the ever-vexing recovery routines.

2/19/06

Version 6.8.11  Some changes to recovery. Added events CITIZENRESULT, LICENCEINFO, LICENSERESULT and commands CITIZENADD, CITIZENDELETE, CITIZENCHANGE, CITIZENNEXT, CITIZENPREVIOUS, LICENSEINFO, LICENSEADD, LICENSEDELETE, LICENSECHANGE, LICENSENEXT and LICENSEPREVIOUS. These commands and events are of interest only to people running their own universe or galaxy server.

2/16/06

Version 6.8.10  Changes to recovery routine, again.

2/15/06

Version 6.8.9  Changes to recovery routine, again.

2/10/06

Version 6.8.2  Fixed a bug that caused the BREAK command to not work within a THREAD clause.

2/9/06

Version 6.8.1  Changed some things to improve recovery from disconnects.

2/5/06

Version 6.7.20  Fixed a problem with the @recovering function. (See 6.7.17 below.)

1/29/06

Version 6.7.18 Changes to $dbrecord so that a null datetime value is returned as 0 instead of "".

1/28/06

Version ...6.7.17 Added @recovering function, valid within a TERMINATEINSTANCE event, that indicates if the instance is recovering from a disconnection (and will be restarted shortly with the same instance ID, though the instance itself may have changed). Also changed the Find Button routine so that matching buttons are highlighted as each tab is selected in the result dialog.

1/26/06

Version 6.7.9 Made some changes to allow @InstID function to work within a TERMINATEINSTANCE event.

1/25/06

Version 6.7.8. Changed @instid function so that it returns 0 and does not cause an error if the instance does not exist.

12/4/05

Version 6.7.7. Made button search (Ctrl-F) case insensitive.

11/28/05

(in version 7.0)
 SETSURVEYVER4 @cond
SETBUILDVER4 @cond

@ver4pd

"Build using 4.x Propdump Format" menu
also added to Survey dialog

11/9/05

Version 6.7.5.  Big jump, huh? Well I tried something experimental in 6.7.0, that didn't work out so well. But after several revisions, I decided to let the .7 stand, even though the only change now is the "Window/Find Button" menu item.  When you click that, you can enter the name or wildcard name of a button, and Magsbot will then popup a list of the tabs with buttons whose names match.

10/24/05

Version 6.6.15. Added EVENT command, AWINT_, AWFLOAT_, AWSTR_, MBNUM, MBSTR. Also added some features to support verification in custom Magsbots.

9/13/05

Version 6.6.7. Added an optional argument to @pos and @ipos and fixed a typo in the list of AW attributes.

9/5/05

Version 6.6.4  Made a little tweak to @dbfield, $dbfield functions and DBFIELD, DBFIELD_ commands internally, and add a $dbfieldtype function.

9/3/05

Version 6.6.3 allows you to create administative instances by menu or command, that can connect to your world server to use admin commands. I also added the UNIVATTRCHANGE command and various UNIVEJECT... commands (which however require the instance to be owned by citizen 1, so I haven't been able to test).

8/27/05

Version 6.5.27. Fixed a problem with the @session function (due to a bug in the SDK) and added an option to ADO options. Nothing major...

8/15/05

Version 6.5.25. Added an optional argument to @iposw. (It was added to 6.5.24, but there was a bug so that version was only posted very briefly.0

8/13/05

Version 6.5.23. Fixed a bug in ENDONREACT that caused ENDONREACT 0 to be ignored following an ENDONREACT 1.

8/2/05

Version 6.5.22. Fixed a bug: a few of the checkboxes on the Handlers dialog weren't working.

7/31/05

Version 6.5.21. Fixed a problem with the function that converts SDK coords to AWB coords (it was rounding them off too much).

7/25/05

Fixed a problem with the terrain buttons, that caused some terrain pages to not be read, in very large worlds. Some other button fixes and improvements too.

7/11/05

Version 6.5.19. Fixed some more terrain stuff...better. :P

7/10/05

Version 6.5.16. Fixed some more terrain stuff.

6/28/05

It turns out that version 6.5.7 didn't really have a bug, I was just having some strange problems with my Internet connection. But I made a bunch of other little changes in the process of figuring this out, and those changes are in the latest version 6.5.12.

6/27/05

Backed up to version 6.5.6 since I found some problems in 6.5.7.

6/26/05

Version 6.5.7. Assorted minor fixes and added @height and @texture functions and CELLFROMZX command (previously these were implemented as buttons, now they're built-in).

6/16/05

Version 6.5.3  New ADO module, support for ADO 2.8, and also fixed a problem with the textures buffer.

3/13/05

Version 6.4.8 Changed @dbfield so that when returning a boolean, true will always be 1, and never -1 which is annoying. :P

2/28/05

Version 6.4.7. Added @putchar[@filehandle,@ch], @getchar[@filehandle] and added an optional length argument to $read: $read[@filehandle,@length].

2/25/05

Version 6.4.6. Added $nameofcit[@citnumber] function.

2/18/05

Version 6.4.4.  Magsbot now sets the ADO version automatically.

2/9/05 later

Version 6.4.2. Decided to add privilege ID to the nearby list also, and a @privilegeof[@session] function.

2/9/05

Fixed a problem with the Stay-On-Top feature. Added citizen number of nearby list (yeah I know, about time). Added @citnumof[@session] function.

2/6/05

Oops, a new SDK version came out and I didn't hear about it. Oh well, now Magsbot 6.4 uses the new SDK build 41.

2/5/05

Version 6.3.8.   Arrgh, a fix I made to the survey system awhile back, returned to bite me, ouch.  Anyway I fixed that now (it caused an exception during a survey under some conditions.)

2/3/05

Version 6.3.7. Added PLAYSOUND $wavefile command. (Thanks to Percipient for writing a plug-in version, that inspired me to add a built-in command, since the code to do it was surprisingly simple.)

2/2/05

Version 6.3.6. Made the FREEVAR and FREELVAR functions case-insensitive.  Added "Stay On Top" to Window menu.

1/31/05

Version 6.3.5. Fixed a bug that sometimes caused Magsbot to hang when the "Action/Queues/Empty Action Queue" or "..EmptyEventQueue" menu items were clicked.  Also updated standard behaviors.beh and buttons.btn.

Also fixed a bug in FINDFIRST that sometimes caused an error message inappropriately.

1/29/05

Updated MBotCalls.pas, PublicMBTypes.pas, PlugInExample4, PlugInExample5 and the Radar plug-in.  This was to make the radar dll clean up "ghost" sessions (i.e. avatars who aren't really there anymore but remain on the screen after a disconnection) when the Refresh button is clicked.

1/28/05

Version 6.3.4 Fixed a bug in the WINMSG command. It wasn't contining to the next action in the sequence.

1/16/05

Version 6.3.2. Added two functions, @lvindex[@vlist,$value] and @lvindex_[@vlist,@value] that return the index of a variable in a vlist, according to its value, or -1 if its not found. (Use @lvindex for string variables and @lvindex_ for numeric variables.)

1/15/05 later

Version 6.3.1. Fixed a bug in the new show/hide tags system.

1/15/05

Version 6.3.  Fixed a problem with the queueing system, that caused an exception if an action in the queue didn't complete before the following action was called. This was not a problem in most cases, but the @newinstance function, for example, allows Magsbot to continue while the new instance was being started, therefore the next command in the queue to proceed even while the command with the @newinstance in it was still executing.  Thus the queue itself might finish and be freed before the @newinstance action completed, also freeing the local variable list that the @newinstance action was still using.  The changes made in 6.3 prevent a new action from being fetched from the queue until the previous item finishes.

I also added a new feature, the ability to hide tabs on the Actions panel. The buttons within the hidden tabs can still be called using CLICKBTN, FTN, @ftn or $ftn, but won't be visible to the user, to avoid visual clutter and confusion for the user.

12/29/04

Version 6.2.2.  Added WINMSG command and WINMSG event, to allow copies of Magsbot on the same computer to pass Windows messages.

Use command WINMSG @wparam @lparam to send.  The message is broadcast to every copy of Magsbot running on the same computer.

The message is received as a WINMSG event, with @wparam and @lparam available within the context of the event.

No text message is sent, just a standard Windows message of the same sort that Windows applications send to each other constantly. The actual message ID is generated new each Windows session (i.e., each time you restart your computer begins a new "Windows session"), but is unique for Magsbot; thus all other applications will ignore it. Since all Magsbots running in the same Windows session will derive the same Windows message ID for messages sent using the WINMSG command, they will always recognize a message sent by another Magsbot. The wparam and lparam are a pair of arbitrary long integers that you can use for whatever purpose you want, but are otherwise meaningless.

In 6.2.2, I also fixed a bug that caused an incorrect message when a plug-in (DLL) failed to load properly.

11/13/04

Version 6.1, which has some more features for plug-ins. See PlugInExample5.

11/9/04

Important note if you're writing plug-ins for Magsbot: I've discovered that even though I'm now using Recycler Memory Manage 1.3 in Magsbot, the 1.0 version of RMM still seems to work better in DLLs used with Magsbot. I discovered this when trying to recompile the Radar plug-in. With RMM 1.3 it crashed, with RMM 1.0 it works okay. Strange. Maybe it's a matter of differing settings?

11/8/04

Version 6.0.10. More memory tightening and debug stuff.

11/7/04

Version 6.0.9. Fixed a memory leak. Added some debugging stuff for myself.

10/31/04 Happy Halloween!

Version 6.0.5.

{$define AUTO_BIND}
{$define SHARE_MEM}
{.$define PATCH_ALLOCMEM}
{.$define SECURE_MEMORYMAP}
{.$define NO_BPL_PATCHING}
{.$define ALLOW_SSE}
{.$define RAISE_EXCEPTION_ON_INVALID_RELEASE}
{$define ALLOW_DELAYED_CHUNK_RELEASE}
{$define DEFER_INVALIDATE_POINTERS}
{$define ALLOW_USAGE_SNAPSHOT}
{.$define ALLOW_BENCHMARK}

(Plug-ins made with earlier versions of RecyclerMM will still work.)

10/22/04

Decided it was about time to release 6.0. Also enhanced the Radar PlugIn and added a small plugin for compacting a MS Access database.

10/17/04

Added more support for plug-ins, and another example. This one adds a RADAR command for a visual display of avatar location.

10/5/04

Fixed a bug that caused a problem with the survey command when using a conditional expression.

10/3/04

Here it is! Magsbot version 6.0 a21 allows your plug-in written in Delphi to add your own commands to Magsbot! See PlugInExample3.zip for details. :)

10/2/04 later

Fixed a problem with the feature that allows you to get object data in the OBJECTRESULT event (even though the SDK doesn't normally provide it). The data wasn't being properly saved in the @objectchange function. (@objectadd and @objectload were working correctly however).  Version 6.0 a19.

10/2/04

Get Magsbot version 6.0 a18 and MBPlugInExample2.zip and you can add your own Delphi functions to Magsbot!  In the next phase, I will add the ability to create your own Magsbot commands!  :)

10/1/04

Woo hoo! I'm so excited! I just realized that the Recycler Memory Manager that Magsbot uses, not only allows the passing of data more easily between the Magsbot program and DLLs, but also allows the DLLs to call upon functions within the Magsbot executeable itself! This means that true plug-ins are now possible, without a whole lot of work for me--well, except for writing the documentation.  Right now in version 6.0 a17 you can call on functions for expression evaluation, but soon it will be possible for you to create a DLL using Delphi, that will add new internal functions to Magsbot, and even new commands!  Download the new example file here.

minor change:

Removed the $botname function and added a macro with the same name, that does the same thing. Make sure you are using the latest userdefs.udf or add $botname=$atr[login_id] to your userdefs.udf.

9/29/04

In Magsbot 6.0 a14:

Added the ability to survey to an object list directly from the survey dialog. This new built-in method is faster than using the behavior table to process the data, and replaces the "Log from Survey" and "Log from World Survey" buttons on the Survey tab of the Actions panel.

New commands (used to set the new survey dialog options programmatically):

SURVEYLIST @listtype
SURVEYFORMAT @formattype
SURVEYLISTCLEAR @cond
Hey...did I mention before that 6.0a now has threads??

9/25/04

In Magsbot 6.0 a12:

9/1/04

Some more adjustments to the Random Movement/Patrolling functions.

8/30/04

Revised the Random Movement/Patrol buttons and behavior table section. (They now both use the same section.)

8/27/04

Some fixes to that darned @height function. It wasn't properly determining the terrain page.

8/20/04

So, what's new in 5.4?  The FTP functions are new. But, you say, those were added in 5.3.1!  Well, yes...but I decided that version should have really been called 5.4 since those new functions were enough to justify a new minor version number; I just didn't think about it at the time. So I've released 5.4 which actually only has a few adjustments to the FTP functions in it.

Also made some action button updates.

8/6/04

Added a setting for the [Debug] section of magsbot.ini, RecoveryDelay = time in seconds before the bot tries to recover from a disconnection. The default value is 10 (seconds).

8/5/04

Another fix to Ctrl-D.

8/4/04

Changed the Ctrl-D (see 7/12/04) so it works anywhere (you don't have to be on the Actions panel).

8/1/04

Made some improvements to HTTP and FTP features.

7/30/04

Made the HTTP and FTP features able to run without freezing the program.

7/12/04

Added Ctrl-D (Find Category) to Actions panel. I added this because the AWRPG script has so many category tabs, it sometimes takes me a minute or so to find a particular one, just searching visually. Now when you have a lot of tabs and can't see the one you want to select, you can press Ctrl-D and type the name to go right to it.

Also fixed a typo in the insert template for the FTPSEND and FTPGET commands.

7/9/04

Fixed a bug that caused Magsbot to lose focus, when a variable list window created with the SHOWVLIST command was closed using the Close menu item rather than Esc or the Close button.  Also added the BREAKRESET command, that has the same effect as the "Actions/Break Reset" menu item, and a CLEAROBJRESULTS command, that has the same effect as the "Advanced/Clear Object Results" menu item. Version 5.3.3.

Also updated the help to reflect the new menu hierarchy.

6/28/04

Added basic FTP capabilities in version 5.3.1:

FTPLOGIN   $url $username $password
FTPLOGOUT
FTPPORT @port
FTPTYPE $type (ASCII or BINARY)
FTPSEND $srcfile $destfile
FTPGET $srcfile $destfile
FTPCHANGEDIR $path
FTPCHANGEDIRUP $path
FTP CREATEDIR $path
FTPREMOVEDIR $path
FTPDELETE $filename
FTPRENAME $oldpath $newname
FTPCMD $command

$ftpdir[$specifier]
 

6/25/04

Corrected a mistake in the [LogObject] button, due to recent changes. (Make sure you get this fix if you are doing any relative surveys using the buttons on the Survey tab. Or you can just fix it yourself: edit the Survey/[LogObject] button and change the +'s to -'s.)

6/23/04

Made some changes to speed up terrain querying. Version 5.3.0. (No longer beta!)

6/20/04

Aaaaaah...those changes I made yesterday left a flaw in the survey buttons. Fixed now.

6/19/04 later

Added some buttons and made some changes in the behavior table to doing surveys directly to a database.

6/19/04

Made some fixes to various build buttons (build from objlog, search & replace, etc.)

6/15/04

Added a AVCHANGECOND command that can be used to specify which AVATARCHANGE events get sent to the behavior table.  Later...made some changes to AVCHANGECOND.  The command takes one optional argument, a numeric expression. If the expression is true (non-0) at run-time then the AVATARCHANGE event will get send to the behavior table as it normally does; otherwise, avatar tracking will still be updated and ENTERZONE and EXITZONE events will still be generated if appropriate, but no AVATARCHANGE event will be sent.  If the optional expression is omitted, then all AVATARCHANGE events are sent.  The AVCHANGECOND command operates per instance.

6/11/04

..also added a PACKGLOBALVARLIST command with the same effect as the "Pack Global Variable List" button. Version 5.3 b28.

6/11/04

Added a MUTESURVEYLOG command and "Mute Log" checkbox to the survey dialog, that can be used to prevent the results of a survey from appearing in the log window. Also fixed some problems in the survey buttons on the Survey tab of the Actions panel.

Also rearranged the main menu somewhat (there was too much stuff in Actions), and added a "Pack Global Variable List" item to the Advanced menu. Clicking this can free some memory used by deleted global variables.

6/10/04 later

Made some changes to greatly speed up loading lists, as well as the variable list. Version 5.3b26.

6/10/04

I had to made some fixes to the new OBJECTRESULT stuff just added. (Hey that's why it's still a beta...)

6/9/04

In the SDK, the OBJECTRESULT callback doesn't give you any information other than the object number. I added a mechanism so that now an OBJECTRESULT event will also have all the object attributes (OBJECT_Z, OBJECT_X, OBJECT_Y, OBJECT_MODEL, OBJECT_ACTION, etc.) available, so you can (for example) save them in a log or whatever...

Version 5.3 b24

6/7/04

Made some changes to the survey buttons to avoid conflicts with the survey dialog.

6/5/04

I made some changes to speed surveys up.  CELLOBJECT, CELLBEGIN, CELLEND and CELLRESULT events now go directly to the behavior table instead of the event queue. It's kind of an experiment, but it seems to work well so far. If you have any problems, you can check menu item Actions/Advanced/Use Queue in Survey to change back to the old way of doing it. With this new method, there is no wait after a survey ends for the data to finish processing. The survey itself may take just a bit longer, but the combined survey+data processing is shorter. Note that during the survey you won't see any events filling the queue on the monitor bar. You can tell when the survey is done either by the "Survey done" message in the log window, or by pressing F9 and looking at the survey dialog (the status bar will be gray when the survey has finished).

Version 5.3 b23

6/4/04 later still

I hope this doesn't mess anyone up...but I decided that the "bottom" and "height" arguments just don't work logically in the zone functions. I've changed them to "bottom" and "top" instead, in version 5.3 b21.  If you have and old zones file to convert, use the "Load OLD zone list" button.

6/4/04 even later

Fixed some incorrect items in the zones documentation. (The last two arguments for ZONE and ZONE_ at not "top" and "bottom", they are "bottom" and "height".)

6/4/04 later

There was in a bug in the AVATARDELETE handler due to the changed I just made to avatar tracking, etc.  It's fixed in version 5.3 b20.

6/4/04

Ooops...I found (and corrected) a mistake in the comments on this page for 5/28/04:  the new command was AVTRACKFILTER, not AVCHANGEFILTER.  The AVCHANGEFILTER command has been around for a long time, and does something entirely different.

However now that I think about it, AVTRACKFILTER is not such a great name for the new command anyway, since it doesn't filter av tracking, but rather AVATARCHANGE events. (At least, it seems more useful for it to work that way.) So I've changed the name of the command to AVCHANGECOND.  (AVCHANGEFILTER would have been an even better name, too bad it's already taken...)

I've revised all of the AVATARCHANGE filtering settings a bit also. I decided that there's not much point in filtering avatar tracking, since that doesn't take much time; instead the AVCHANGELIMIT, AVCHANGEFILTER, AVDETECTRANGE and new AVCHANGECOND commands will now affect only whether or not the event is sent to the behavior table, because the event queue is the big lag-producing factor. But if avatar tracking is turned on for that instance, the location data it will be updated regardless of filtering. I'll be looking at how this works and might change it back again if it's not more efficient.

I updated the main help with the Zone and AVATARCHANGE filtering commands too.

Version 5/3 b19.

6/2/04

Fixed a bug in @avzone, which was returning 0 for both the first zone and the "non-zone". It now returns 0 for the "non-zone" and 1 for the first zone.

Also made an adjustment to queueing, so that if a particular event has no active rows in the behavior table, then the event won't be queued at all, to save time. I actually added a feature some time ago to check if an event is really in the table before sending it, but this change will also check if any row is active or not. (I'm not sure if this will really improve performance, so this will be a test...).

later

Added some buttons (root category) to help in defining zones.

Version 5.3 b18.

5/29/04

Fixed a glitch with the new AVTRACKFILTER that caused the instance to change within the event under certain circumstances.

5/28/04

Added AVTRACKFILTER. This allows you to set a conditional expression to filter AVATARCHANGE messages. Only those AVATARCHANGE events for which the filter expression is non-0 will be sent to the behavior table.

Also made a few improvements to some action buttons.

later

Updated userdefs.udf for the button changes.

5/18/04

Fixed a mistake in the Insert Action template for the BOTGRAM command (it said session where it should have said citizen number).

5/12/04

Finally, finally I think I have the heights thing working under all circumstances. I found out there was a problem with the calculations for worlds with more than one terrain page, and I think it's work in all cases now.

5/11/04

Made Include Tilt,Roll in Build checked by default. Fixes some problems with negative numbers showing up in yaw. Fixed some button problems.

5/9/04

Fixed TURN and FACE so won't show negative yaw.

5/8/04

Added STARTINSTANCE event. Version 5.3 b3.

Added zone functionality. Version 5.3 b8.

Menu:
    Options/Check Avatar Zone

Events:
    ZONEENTER
    ZONEEXIT

Commands:
    ZONE $name @north @south @east @west @alt @height
    ZONE_ $name @north @south @east @west @alt @height
    UNZONE $name
    ZONECHECKING @cond
    ZONECHECKING_ @cond
    ZONEACTIVE @cond
    ZONEGROUP $zone $group

Functions:
    @zonechecking_
    @getzone[$zone,$Nvar,$Svar,$Wvar,$Evar,$Altvar,$Heightvar]
    @inzone[$zone,@session]
    @locinzone[$zone,@z,@x,@y]
    $avzone[@session]
    @avzone[@session]
    @zonestate[$zone]
    $zones
    $zonegroup[$zone]


5/3/04

Had to make yet another fix to the @height macro. Sigh.

5/2/04

Changed SHOWTERRAINBUFFER so that the window it creates is non-modal (it doesn't freeze the program while it's open) and added an optional caption argument. Also fixed a problem with the DBCONNECT and similar database commands, that caused the database window to sometimes not be updated properly.

5/1/04

Made some more button and behavior table improvements, including yet another adjustment to that darned [Height] button (and therefore the @height macro).  Also uploaded version 5.3 beta 1, which so far only has one big difference, which is the SHOWTERRAINBUFFFER command, that allows you to examine any terrain height and/or texture buffer (as created by @copyhuffer or @copytbuffer). Without the new command, you could only see the last terrain page that was loaded, using the terrain buffer dialog.  I plan to add several other things to 5.3 soon, including a better method of defining areas and checking if an avatar is in a particular area.

4/30/04

Fixed a mistake in the [Height] button.

later

Made some other button changes, to the walking routine.

4/29/04

Added an @xor function, and finally got terrain height calculation for avatars (the @height macro) working properly, thanks to Byte Me, Ima Genius and mostly Cristophe Kadara. Thanks!  Also I renamed two old functions, formerly called @height and @texture, but now called @aheight and @atexture to avoid conflict with the @height and @texture macros that I feel are likely to be used more often. I hope this doesn't mess anyone up. The [LoadNode] and [LoadNd] buttons on the Terrain tab also had to be updated with the new function names. Version 5.2.9.

4/28/04

Made some changes to the @reacted and @eventtype functions, to ensure that they are available within a button called with FTN, etc.  Version 5.2.7.

4/26/04

Added some error messages to some terrain functions. 5.2.6.

4/23/04

The @copytbuffer function was missing because of a typo. :O Fixed in version 5.2.4.

later

Fixed some other terrain texture stuff and updated some buttons. 5.2.5.

4/21/04

Made a change in @dbfield to avoid problems when returning boolean or single-precision types from a database. (Magsbot numerical variables are all variant type, and either integer or double precision.) Version 5.2.3.

4/20/04

Fixed a bug that caused an error if the bot heard a blank chat string. (It's not possible for someone to send an empty chat string from the AWB, but a bot can.) Version 5.2.2.

4/19/04

Fixed a bug that caused an error when asking the bot for it's version in chat. (If a Magsbot fails to respond to "version" then you'll know it's either a 5.2 beta version, or 5.2.0.)  Fixed in version 5.2.1.

4/18/04

Minor tweaks, plus a new argument to the $hex function. Version 5.2 (not beta anymore).

4/16/04

Fixed a problem with QWAIT, and generally improved how it works. (Note however that QWAIT still doesn't work predictably within an action clause, such as in the IF, FOR, WHILE, etc. actions.)

4/13/04

Fixed a problem with integer conversion that caused very large numbers to be improperly read or evaluated under some circumstances. (Now very large integers are automatically converted to floating point.)  Version 5.2 b9.

later

Added $sdkerror function. Version 5.2 b10.

later

Fixed a problem in the new @ivnum_ and @itemnum_Version 5.2.11.

4/11/04

Made some changes to @ivnum, @ivnum_, @itemnum, @itemnum_ and @wordinlist, to fix a problem that occurred when dealing with lists containing items numbered less than 1 (i.e. items numbered 0 or with negative item numbers). Also updated userdefs.udf to use the fix.

4/9/04

Some changes to the standard set of action buttons, including a fix to the [Height] calculation. Also some userdef.udf changes (all backward compatible).

4/4/04

Updated Bone telegram module, added new events to the Insert Event dialog. Version 5.2 b5.

4/3/04

AW SDK build 37 is out!  And here is Magsbot 5.2 beta with the new features already. :)  New commands are BOTGRAM, CLICKTOOLBAR, CLICKURL and USERLIST. The SENDURL has some new, optional arguments. There are new Events: BOTGRAM, TOOLBARCLICK, URLCLICK, UNIVDISCONNECT and USERINFO. This is a beta version.

If you're programming a bot yourself in Delphi, the AWAPI header for build 37, ported to Object Pascal, is here.

later

Version 5.2 beta 2. Well duh, I kind of misunderstood the aw_botgram_send...it is sent to a citizen number, not a session number. However, other than the erroneous message shown when the 'gram is sent, the BOTGRAM_ command should have worked properly in 5.2 b1, if a citizen number rather than a session number is input. In beta 2, I've removed BOTGRAM $name $message and BOTGRAM_ @session $message, and replaced them with a single command BOTGRAM @citizen_id $message. But, heck, it still doesn't seem to work, yet. It generates a "not logged in" error. Maybe an SDK bug, I don't know...time will tell.

3/29/04

Version 5.0.7 with some minor fixes, and also Version 5.1 b6 (beta), which has some things I added internally to make custom versions of Magsbot easier for me to make in the future, and also, incidentally, a $gethttp function similar to the GETHTTP command except the function version returns the web page as a string.

3/17/04

Just added a few debugging features. Version 5.0.6.

3/15/04

Added RECOVER and TERMINATEINSTANCE events. Version 5.0.4.

later

Changed the TERMINATEINSTANCE event so that it is queued like all other events, and added @session_ and @instance_ functions to get the session and instance of the instance just ending, within the TERMINATEINSTANCE event. Version 5.0.5.

3/14/04

Version 5.0.3 now saves the names in the table combo on the database dialog.

3/13/04

Made some changes to the $dbrecord function to improve the way it translates nulls, etc. Version 5.0.2.

3/10/04

Had to fix another bug caused by my behavior table improvement (the proper row wasn't being shown when an error occurred).

3/9/04

Added @inbounds function.  Released 5.version 0 (out of beta).

3/8/04

An improvement I made to speed up the behavior table check introduced a bug, that I now have fixed. Also added a few new buttons for manipulating object lists (version 5.0 b10).

3/6/04

Updated the MBEmail.DLL that had some problems passing results back from the DLL.

3/4/04

Fixed a memory leak that occurred when the behavior table was reloaded (version 5.0 b8).

3/3/04

Fixed a bug in the new CONTCHECK command (it should only work for one row, and it was getting set for the whole table).

3/2/04

Fixed a bug that caused some memory to not get freed properly when events are edited or reloaded (version 5.0 b5).

later

Fixed a bug that caused some debugging information to not show up (version 5.0 b6).

2/28/04

Added ENDONREACT, CONTCHECK.  Released beta version 5.0 b2.

2/26/04

Changed the output of the $dbrecord function to make it easier to copy records from one database to another, added a minor change to userdefs.udf.  (version 5.0 a14)

2/21/04

Getting back to 5.0, I've found that I can use the old database components with Delphi 7 after all, so now 5.0a11 is working. It has all the new vlist features, the old dependable database components but it is also compiled with Delphi 7 and has the new 5.0 splash screen (oooh) and pretty new 3d bot picture in the About box, heheh.

More importantly, it has a new memory manager (from sourceforge.net) that may solve the memory leak problems finally!

2/20/04

Made a lot of updates to the help, and added comments to some of the standard buttons that I can now use to generate a web page for the help. Maybe I'll be able to keep the button help up-to-date...

Also added some things to Magsbot 4.6 to let me debug the memory problem.

2/19/04

Well, the new Delphi 7 database component in Magsbot 5.0a doesn't seem to be working so good. And yet, I like the new VList features I put in 5.0.  So, until 5.0 is working better, I've released version 4.6, which has the old reliable database components from Delphi 5 and the new VList features of 5.0.

2/16/04

Added SHOWVLIST, VLISTNAME, @vlist_[@i] and $vlistname[@v] to Magsbot 5.0 a8. Also made some fixes to the template insert dialogs to account for some changes in Delphi 7.

later

Fixed a problem with the way the new database component showed booleans (as strings like "true" or "false" instead of as 1 or 0) that caused problems with Magsbot's expression evaluation. Magsbot 5.0 a9
 

2/13/04

Fixed a small bug in the behavior table, DO command.

later

Posted Magsbot version 5.0 a4.  The main change in this is that it's compiled with Delphi 7 instead of Delphi 5 like the previous version. Maybe it will be a little faster...I'm still testing it, but you can play with it if you want. :)
 
 
 
Magsbot 5.0:

Ported from Delphi 5 to Delphi 7. (I skipped Delphi 6 because there were a lot of compatibility issues.) 

The new SHOWVLIST command displays a vlist in a window similar to the global variables window. Functions @vlistcount, @vlist_[@i] allow you to search through all the created vlists.  The VLISTNAME command allows vlists to be given a name that can be retrieved with the $vlistname function. The @vlistcount function returns the total number of user-created variable lists, and the @vlist_[@i] function allows a vlist handle to be referenced by index. 

ENDONREACT and CONTCHECK added. 

Improved memory management!

2/9/04

It looks like the mbot45.zip with version 4.5.7 from yesterday may not have actually gotten uploaded, though the "What's New" was updated, oops. So, it's all properly updated now.

2/8/04

Changed some macros in userdefs.udf to make them a little faster, and changed the @asc function so that it now returns -1 if you pass it an empty string, in order to support the changes to the macros. (Version 4.5.7).

2/6/04

More adjustments to the avtracking list (I'm trying to make sure that items are properly removed when an avatar leaves).

1/25/04

Another fix to avatar tracking. (Magsbot 4.5.2).

later...yet another tweak. (4.5.3)

1/24/04

Magsbot 4.5.1.  Added menu item (under Actions) and dialog to show avatar tracking, fixed bug that caused avatar tracking data to not be free sometimes.  Also tweaked the "Build Replace from Obj list", "Replace selected from object list" and "Search & Replace from Obj List" buttons.

1/20/04

The @atr[avatar_state] attribute within an AVATARDELETE event and the @avstate function now return -1 if the avatar tracking data is not available. (Magsbot version 4.4.23.)

1/17/04

Revised the "Log by Selection" and "Resolve Select Log" buttons, and updated some other buttons.

1/16/04

Fixed the Anti-Flicked problem, and fixed a bug in $replace that caused problems when dealing with very long strings.

1/7/04

Added some debugging features, changed the way the decimal point is handled when Magsbot runs on non-U.S. computers, deactivated the "Anti-Flicker" menu item temporarily to avoid the memory leak that occurs when it's checked (I'll reactivate it after this is fixed).

12/1/03

Added some SDK error messages that were missing.

11/28/03

Some fixes to prevent Magsbot from crashing when a client disconnects unexpectedly. Also behavior table and button updates.

11/11/03

A few button and behavior table improvements, and I added some links on the Magsbot page leading to Delphi code I have available for download.

11/7/03

Now the main window doesn't appear until initialization is finished, as it should.  Also revised and added some standard buttons.

10/30/03

Made some changes to userdefs.udf to correct the @vrtime macro, and also fixed a bug in the DO chat command.

10/23/03

Made some changes to the log window to make it repaint properly. (Some previous changes I made to allow for smoother scrolling, also introduced this problem.)

Incidentally, yes, I know, the "Scroll Lock" checkbox still doesn't work so good. :/

10/21/03

Made some improvements to the way the WalkTo routines work.  Added some buttons to the Terrain tab and improved [Height] button. Fixed a bug on the terrain dialog that caused the wrong coordinates-to-terrain page translation.

10/20/03

Changed some things in the patrol system.

10/16/03

Fixed a bug in dynamic synch that could cause an error during a survey.

10/9/03

Added AVCHANGEFILTER, AVCHANGELIMIT, AVDETECTRANGE, FLOODPROOF, FLOODLIMIT. Also added Filter AvChange to Advanced menu.

10/8/03

Fixed some more terrain problems, updated the [Height] and [WalkTo] buttons. (Note: use the "load terrain buffers" button in the Terrain category before using [Height], in order to have the bot walk at the approximately correct height for existing terrain.)

10/6/03

Added QFLUSH, fixed some problems with the terrain buffers.

10/4/03

Took version 4.4 off the web page until I fix a big problem with it.  Always overconfident, that's my problem. :P later: Fixed it, put it back up.

10/2/03

Added QBREAK and made some internal changes to ENQUEUE'ing process. Magsbot 4.4.

9/30/03

Fixed a bug in disconnect recovery, introduced by the new @instid function. Oops.

9/27/03

Added @instid function. (Magsbot 4.3.26).

9/15/03

Added SORTVLIST command (Magsbot 4.3.23).

9/14/03

Added @isvar_, @isgvar, @isstrvar_ and @isstrgvar functions. All are similar to @isvar and @isstrvar, but the new functions narrow the search to just local variables or just global.  See herefor details.

9/12/03

Fixed a bug on the Weather tab. (Also added new attributes to include clouds, water, sky color etc. in weather buttons.)

9/2/03

Fixed--hopefully--a tendency for Magsbot to use more and more memory when it runs for a number of days.

8/26/03

Fixed a problem with SETCATEGORYPATH that caused the last category in the path to be ignored.

8/11/03

Guess what? That's right...fixed some problems with SETCATEGORYPATH and $categorypath. (Darn, they worked right the first time I tested them.) Should be okay now.

later

Improved error handling in the Client/Server commands.

8/10/03

Added SETCATEGORYPATH and $categorypath.

8/9/03

Added $dbrecord function, fixed a problem with TCP/IP server error reporting.

8/6/03

Fixed a problem that occurred when server mode failed on startup: since the startup process was interrupted, some of the server options didn't load from the .ini file.

8/2/03

Added @eventcount and @actcount functions.

8/1/03

Added a few extra HTTP commands: SETHTTPID, SETHTTPPORT and POSTHTTP.

7/31/03

Fixed a bug in ASSERT.

7/30/03

Fixed a problem with the [WalkTo] button on the Movement category tab. It uses a new method of making the bot walk, that takes terrain into consideration (a little experimental yet), but it failed if the terrain data wasn't available. I changed it so now it will use the old method, if terrain data isn't available.

later

Another adjustment to the [WalkTo] button, to make the bot walk more slowly.

7/29/03

More scroll lock attempts.  Also fixed a memory leak in the VList functions (FREEVLIST was not entirely freeing the memory used for the list). And, added the ASSERT command that works exactly like REPORT except when Actions/Advanced/Debug Msgs is unchecked, ASSERT does nothing.

7/27/03

Still trying to get scroll lock working right. Arrgh...the last version turned off the chat log text coloring.

7/26/03

Still trying to get scroll lock working right.

7/23/03

Changed @nearby and @nearnext so they return -1 instead of 0 if there's an error.

Yet more adjustments to the scroll/flicker thing. (Chat log wasn't repainting when it should, sometimes.)

later

Somehow I always seem to miss hearing about the latest SDK release.  Anyway, Magsbot 4.3.0 uses the SDK Build 32. (Not that there's really that much new...only one AW attribute added. But I changed the minor release number of Magsbot anyway, to mark the change.)

And since I can't seem to get the scroll lock and anti-flicker stuff working right, I made them optional for now: you can toggle Anti-Flicker on the Actions/Advanced menu.

7/22/03

Sigh...still some things wrong with scroll lock and flicker fix. Fixing one thing broke the other. I think they're both fixed now. (Version 4.2.1.)

7/21/03

Some more adjustments to the flicker fix.

Also fixed a bug in the IF and WHILE commands that would cause a fractional value (like .1) to be interpreted as "false".

Decided it was about time to take 4.2 out of beta. :)

7/20/03

The new method of reducing flicker caused some garbling of the text on the chat log, under certain circumstances, and I fixed that.

7/18/03

I finally found a way to prevent that darned annoying flicked that used to occur when the chat log window got full (1024 lines). I happened because when the top line is deleted to make room for new lines, the cursor would momentarily jump up to the top of the buffer.  I found a way to turn off redrawing during that period, so no more flicker.

later

Added a scroll lock button.

7/15/03

Fixed "Create MultiInstance Button" button.

7/14/03

Fixed a bug that could cause Magsbot to crash when dealing with exponential notation (i.e. numbers like 1.2345e-2).

6/26/03

Changed some menu shortcuts that were in conflict. The new shortcuts are:

Ctrl-Alt-Q for Actions/Empty Event Queue
Ctrl-Alt-A for Actions/Empty Action Queue
Ctrl-Alt-K for Actions/Advanced/Kickstart Main Timer
Ctrl-Alt-S for Actions/Advanced/Dynamic synch

Also added an emergency shut-down (Ctrl-Shift-F10) to the Advanced menu (to be used ONLY when an error prevents Magsbot from closing normally).

Also added an extra verbose mode message to the AVATARDELETE handler, for some debugging purposes.

6/18/03

Made a change in the AVATARDELETE event, so that it also gives @atr[AVATAR_TYPE] correctly.

6/13/03

Fixed some problems with SENDHTTP.  Note that in order to upload files, you need to have rights on the server.

6/10/03

Fixed an error-reporting bug in GETHTTP and SENDHTTP.  Also made some changes to MERGEBTN and LOADBTNS.

6/8/03

Released version 4.1 from beta and started version 4.2 beta, with two new actions, GETHTTP and SENDHTTP.

6/7/03

Fixed a bug with nested SWITCH commands. Also fixed an erroneous "terrain query interrupted" error statement that occurred when bot is disconnected.

5/29/03

Fixed some problems with the Trivia functions.

5/20/03

Added file management commands FDELETE, FRENAME, CREATEDIR, SETDIR, FINDFIRST, FINDNEXT, FINDCLOSE and function @ispath.

Added  @copyhbuffer and @copytbuffer functions, as well as FREEHBUFFER and FREETBUFFER commands.

5/8/03

Added the RESUME command.

5/5/03

Okay...so after I discovered the ENQUEUE bug in class on Saturday I fixed that (see below). Then while testing that fix I discovered another bug, with the FOR loop (see below), and I fixed that.  But, sigh, fixing those things created another bug , which I have now fixed in Magsbot 4.1 b23.

later

Fixed a problem with SAVELIST. It was case sensitive regarding the list name, and it shouldn't have been.

5/3/03

Fixed a bug with the way the ENQUEUE command worked within FOR, IF, etc. The queue ID wasn't getting passed out properly, so any ENQUEUE statements that followed, and lacked a specific queue ID specifier, would create a new queue instead of putting items into the same, previously-created queue, as should have happened within the same context (button or behavior table row). In other words, if you don't specify a queue number in the ENQUEUE command, then all ENQUEUE commands within the same button or behavior table row, should put new queue items into the same queue. This wasn't happening properly, and was fixed.

later

Fixed some remaining problems with ENQUEUE.

later still

Fixing the enqueue problem revealed another bug, with a FOR loop within ENQUEUE. It's fixed.

If you want to know: putting a FOR loop with no increment specified, inside an ENQUEUE caused the FOR loop to continue indefinitely, because the unspecified increment, which should have been interpreted as the default (1), was getting interpreted as 0 instead after being copied into the queue. This was a long-standing bug, but it was never discovered because you wouldn't normally put a FOR loop inside an ENQUEUE. (As discussed in the class notes, doing so would negate the advantage of using ENQUEUE.)

4/15/03

Fixed some problems with the Ejection List action button and the associated row in the behavior table. (It wasn' stopping when it got to the last name in the list.)

4/13/03

Added an extra, optional argument to the @ind and @wind functions. See the help for details...

4/10/03

Added more VList-related commands and functions (to 4.1).  See details here and here.

4/8/03

Fixed a bug involving passing the instance number to the enqueue command.

4/6/03

The default setting for the database was "ReadOnly", which could be changed using the "ADO version" button on the database dialog; however to avoid problems I changed the default setting for the database in the magsbot.ini file.

4/2/03

Fixed some things in the experimental "floodproofing" option (under the Actions/Advanced menu) in 4.1.

3/24/03

very very early: I fixed a bug in the chat commands part of the behavior table. The bot wasn't giving the default response "I don't understand" when it didn't recognize a command. I didn't find it before because I usually have that part turned off myself...

3/23/03

(Version 4.1 beta) Added optional dynamic synch timing (the number of events processed each timer cycle is adjusted according to the number of pending events in the queue) and moved the previously hidden debugging menu to the Actions menu, under "Advanced". Also made "show full paths" off by default, and "auto save configuration" on by default.

later  fixed some problems with dynamic synch. still later some more dynamic synch problems...

later still revised the midi functions to bring them up to date...

3/22/03

(Updated the "Replace RWX extension" button in the Build tab or the Actions panel, to work with 3d axis rotation.)

3/21/03

Uploaded Magsbot 4.1 beta (already!) to my web page. It's major new feature is the user-created variable list.  A minor new feature is a "Goto row" button on the behavior table window.  Made some changes in floodproofing...which didn't really work right in 4.0 if you had more than one bot instance running, oops.  In any case I forgot to mention that you need to put Floodproof=1 in the [Debug] section of magsbot.ini to activate the floodproofing.

3/18/03

Added floodproofing for objectclick and avatarclick events.  Improved default exception handling, and Windows socket exception handling.

later

Took Magsbot 4 out of beta!

3/15/03

There's a row in the behavior table that changes the log name to the current date everytime the bot starts...good idea, but it also expects that you have a subfolder named "logs" for the log files to go in. Since you probably don't, it will cause an error when you start up. So, I turned off that row in the table. If you want to create the logs subfolder, then you can turn it back on. (It's the row with Event=STARTUP and Action=REM change log file name on startup). BTW to exit Magsbot when this kind of error occurs, press F5 and type trap { quit } and click okay. The "trap" will prevent the error message from aborting the program closedown.

3/12/03

Added @par_ function, fixed a mistake in the optional arguments of $par_.

later

Fixed a bug with console message colors.

3/11/03

Fixed a problem with error messages caused within buttons called by FTN (wasn't reporting the correct location). Fixed console message colors bug (again, sigh).

later

Another adjustment to the error location message code.   later still: removed a debugging thing I put in earlier and forgot to remove, oops.

3/10/03

Fixed a glitch in the new way ANNOUNCE default style works.

later

Fixed a bug (typo) in the REC chat command.

3/9/03

I give up! The CLOCKTICK event just causes too much trouble, interrupting stuff that is already being processed. So, from now on CLOCKTICKs will be queued like every other event. You can use the @eventtime function within the CLOCKTICK event to find out when it actually occurred. If you have some crazy reason for wanting CLOCKTICKs handled instantly as they occur, interrupting whatever other event may already be being processed, you can go back to that old way of doing things by putting QClockticks=0 in the [Debug] section of magsbot.ini.

Also, I changed how text color and style work with ANNOUNCE and ANNOUNCE_ so the default color and style is preserved when you specify a color and style explicitly. Now the default color and style won't change when you specify a color and/or style in the ANNOUNCE commands; they will only be changed for the one command where they are specified. To change default color and style, use the AWINT command to change CONSOLE_RED, CONSOLE_GREEN, CONSOLE_BLUE, CONSOLE_BOLD and CONSOLE_ITALICS. The default color and style will be used only when no color/style is specified in the ANNOUNCE commands.

3/6/03

Added  DEFER command, fixed a bug that caused event processing to hang when a button or the behavior table is being edited, fixed some problems with the ENQUEUE command. Looks like version 4.0 beta is nearly ready to become a regular version!

2/17/03

Updated for SDK build 31 and fixed a few miscellaneous bugs.

2/14/03

Fixed a bug that caused an error when deleting a behavior table row. (Bug was caused by an earlier fix...figures!)

Also added some debugging features.

2/12/03

Fixed bug: starting a new instance with AutoEnter checked, when there is already another instance running, caused an error message and the new instance failed to enter the world, because the Location tab got cleared (no world name) when it started up.

Decided I didn't like the checkboxes on the instance list window and changed them back to "yes"/"no".

Changed how the global mode checkbox works. Now you can check Global Mode even if Auto Enter and/or Auto Appear are unchecked, and the global mode setting will be "pending" until you actually enter the world. (Previously you couldn't check Global Mode unless you also had Auto Enter checked.) Also added a message to inform you when the global mode fails because the world you enter doesn't allow it.

2/11/03

Made changes to the Client List window, including adding a checkbox to each client to specify if the chat log should be sent to them.

Changed some icons on the Instance List window.

Various other bug fixes. Added a check for World Caretaker Capability in AVTELEPORT and AVWARP to prevent erroneous success message. Added option port number to STARTSERVER command.

Made a change in the $AWB macro in userdefs.udf to account for how altitude has changed in 3.4.

2/8/03

Fixed a problem with the @wordinlist function (shouldn't have been case sensitive).

later

Fixed a problem with the SQL command drop-down on the database window...it wasn't saving the entries. Also added menu item Options/Show Name for Session which when checked will cause the name (instead of just the session number) of the person receiving the announcement to be shown when using the ANNOUNCE_ command.

2/6/03

Released 4.0 beta version.  It seems pretty stable now, only beta testing will uncover any remaining problems...

2/1/03

Updated some buttons in the Terrain and Database categories.

1/30/03

I'm continuing to test and I'm up to version 4.0 a44.

1/26/03

Magsbot 4.0 beta....alpha....whatever!

I decided that it was a bit early to call Magsbot 4.0 a "beta" version. The changes I made in the way variables are referenced is still causing some bugs. So, I have put two "alpha" versions on my web page:

The 4.0 a29.7 version is actually pretty stable and has most of the new 4.0 features (though not all), but it doesn't have the new speedier variable-referencing scheme. If you want to use the 4.0 features like SDK 29 support, FTN calls, etc., but don't want to be troubled with excessive bugs, then use this version. It could actually have been a good 4.0 beta, but I didn't want to call it a beta until I put all the new features in, so....

The 4.0 a40 (and counting) version is the latest, with all new features and the speedier variable referencing, but it will tend to be a little buggy since I'm still testing things in it. You should use this version only if you want to help me find bugs. :)

1/24/03

Magsbot 4.0 beta released!

The major change is internal: variables are now referenced in a different and faster way. FREEVARS, FREEVAR, FREELIST actions now only work on global variables.

Updated to SDK 29, with AWB 3.4 features. Changed or added pertinent commands and functions:

(I actually added AVSET and AVSET_ a long time ago, but since they're new for AWB 3.4 worlds, I figured I'd mention them again here.)

The length of strings is no longer limited to 1024. Woo hoo!

The new $ftn and @ftn functions allow parameter passing into action buttons. (The entire local variable list is passed when you use the CLICKBTN command, as before.) The ARGS command is used within the button to specify the names of the arguments within the button's code, and the RETURN and RETURN_ commands are used to return a string or numeric value, respectively, when the button is called using @ftn and $ftn.

The RETURNS action is used to return multiple specified variables from an action button called using FTN, @ftn or $ftn. For example, inside the button you would do RETURNS @x $z @n and those variables would be passed out of the button to the calling routine. (If you use CLICKBTN instead of FTN, etc. then all variables are passed into and out of the button as before.)

The new FTN action calls an action button like CLICKBTN, but passing only the specified arguments like the new $ftn and @ftn functions.

(See the help for details about FTN, $ftn and @ftn.)

Updated standard Behavior Table to use new FTN features.

Enhanced buttons to use the new FTN, $ftn, @ftn features.

The ADO database package has been updated to version 2.7. It's backward compatible so you don't need to worry if you don't want to upgrade it on your computer (but why wouldn't you? it's free right here!).

Magsbot can now be minimized to system tray (Window menu).

New functions $instname[@instance] and @instsession[@instance].

Added a $getfnames functions, which is similar to the $getfname function, but gets multiple file names at once (returns the names as a string, separated by a pipe | symbol).

Changed the Aliases system. It used to use defines in the userdefs.udf file, but that never worked so good. Now you define bot alias using the new Alias buttons (in the base "." button category), and the aliases are saved as global variables.

Separated Random Movement features from Random Chat features. Make some changes to Random Movement.

New [WalkTo] button in Movement category, causes bot to walk slowly to specified marker.

New chat commands for controllers:

/walkto    Bot walks to specified marker.
/face        Bot faces specified marker.
/look        Bot faces specified avatar, or speaker.
/bring      Bot warps specified avatar to speaker.
/av                         (bot changes to same avatar as speaker)
/here                     (move to speaker's exact location)
/rec $filename       (record speaker's movements and chat into the specified .rec file)
/recstop                 (stop the current recording)
/play $filename     (plays back the specified .rec file)
Bot now responds to chat prefaced with a slash / the same as if the bot's name was used or the bot was whispered to.

Made changes to the Recorder buttons to simplify them. Also the Random Movement buttons, and added a set of Patrol buttons.

QSTATE no longer echos except in verbose mode.

10/25/02

Fixed a bug that caused CLICKBTN to not be able to find the button called, when called from within the first button in a category.

10/8/02

Made a minor change in the way the SWITCH command is indented.

later

Fixed typo in "Insert Function" help ("dataopen" should have been "dbopen").

10/6/02

Fixed a bug in the Announce tab. (Sometimes the wrong bot instance did the speaking.)

10/3/02

Made some changes in userdefs.udf and some action buttons.

10/2/02

Fixed a bug in the @loop function.

9/24/02

Fixed some problems with the SQL box on the database window.

9/18/02

Fixed a problem that caused the font selection for the database grid to not be properly saved and restored.

Added a popup menu to the log window, for copying text from it. (You could always do this using Ctrl-Insert, I just added a menu interface as well.)

9/17/02

Normally the AVATARDELETE doesn't give you the location of the departing avatar, but I felt it would be useful information to have. The @avz, @avx etc. functions in Magsbot usually give avatar location within events that don't normally provide that information via SDK attributes, but in this case the Magsbot functions can't be used because the avatar tracking information must be freed when the avatar leaves. To get around this, I now add the AVATAR_Z, AVATAR_X, AVATAR_Y, AVATAR_YAW attributes to the AVATARDELETE event myself in the event handler.

I also fixed a bug in the @SDKCoords function.

Changed the DO action so that it now gets the local variable list passed to it.

9/12/02

Yipes...when I took 3.1 out of beta, I didn't update the AW.DLL in the zip file. I did that now!

Also, fixed a bug in the "Insert Action" dialog (one of the new terrain commands was missing from the list), and made some changes in the various "Log from Survey" buttons to make sure the survey is send to the behavior table, even if the user has that feature turned off for surveys from the dialog (F9).

9/10/02

Updated some action buttons. Took 3.1 out of beta.

8/26/02

Updated Bone DLL to Build 11.

8/24/02

MBot 3.1 beta, using the new SDK (build 27). See the SDK documentation for info about new AW attributes, and see here for info about the new AVSET and AVSET_ commands in Magsbot. (Note the new commands will only work in worlds running the new version of the world server.)

6/30/02

Fixed a bug that caused Magsbot to keep trying to recover when disconnected by being ejected, if Option/Auto Recover was checked. It shouldn't try to reconnect if the reason was ejection.

later

Added some comments to userdefs.udf to explain the aliases system, and a current problem with it.  And fixed a bug that caused the specified name to not be saved properly when using the Connection/Set default for new instances" dialog.

6/20/02

I changed the buttons on the Behavior Table window into a menu...I got tired of accidentally clicking buttons when trying to type. Ideally the buttons should only have been triggered when holding Alt down at the same time, but I could never get it to do that properly. As a menu, they will definitely only be activated when Alt is held down.

I also added a popup menu for Delete, Copy, Cut and Paste for the behavior table.

6/19/02

Fixed a very minor problem with console messages (the log window gave the wrong bot name when a message was sent, but the message was actually sent correctly).

6/18/02

Fixed some things in Magsbot to support Bot Bone channels properly, for use with the paintball bot. Also updated the Bot Bone version of Scoreboard for the same use.

6/17/02

Finished all the terrain commands, and added a terrain buffer window. (Mostly I added it for debugging, but it looked so cool I decided to keep it in, heheh.)  If I don't get a lot of bug reports, I'll probably take Magsbot 3.0 out of beta in a week or so. But you don't need to wait for that! Go ahead and download the beta now, you'll like it. :)

6/14/02

Fixed a problem that occurred when a button called another button.  Changed the "Log One Object" button to take advantage of some new SDK features (no survey is required to log a single object now). And found that the bot alias system still doesn't work quite right, so I removed that feature from the userdefs.udf temporarily until I find a way to make it work. It might require some a change to the program itself. (Technically the problem is that there's no way to check if a paricular macro definition exists before trying to call it, the way you can check if a variable exists before calling it. So I might need to add a function for that.)
 

6/13/02

Sorted the action buttons a bit. Don't bother downloading again just for this, if you downloaded the 6/11 build.

6/11/02

I discovered a strange bug that was apparently due to an error that occurred when trying to set the string for a console message (world announcement). Foolishly, I was only checking for errors at the point the message is sent, not when the message string is assigned, so Magsbot wasn't catching the error, and that resulted in some weird effects. So, Magsbot now reports an error and cancels the operation if the announcement string is too long.

later

Changed the USEREVENT command so that it now passes the local variable list to the behavior table.

later still

Made a change in the userdefs.udf file to fix a problem with the bot alias system.  Sorted button categories.

6/7/02

Added two optional arguments to ANNOUNCE and ANNOUNCE_ so you don't have to set the colors etc. separately.

6/6/02

Well, I try not to do this, but I changed the arguments to two functions, @height_and @texture_.  Since these are new to Magsbot 3.0 and the beta has only been out a few days, I hope this won't inconvenience anyone. Yeah, right, like so many people are using Magsbot! :P

Anyway, the reason for the change is some ideas I have about a good way to manipulate terrain data, which is to retain the data from the most recent terrain query in a memory buffer (I had to do that anyway to support the way the the TERRAINDATA event works with the behavior table queue--but nevermind.) In this way, terrain data can be conveniently manipulated then sent back to the world in a different form or location. You'll get an idea of what I mean as I finish developing some new commands I have in mind. Keep watching "What's New" here and the Terrain section of the Actions documentation. :)

later: 10pm ET

I added SETHEIGHT_ and SETTEXTURE_ and updated all of the buttons that do surveys or building, to work with the new 3d axis rotation. Make sure Options/Build Using Tilt,Roll is checked when loading, saving or building files that use the new coordinates; make sure it's unchecked when using old files.

I also updated the Bone Telegram module for release 9.

6/5/02

Fixed a bug that caused the QUERYTERRAIN command to give an error message ("there's already a terrain query in progress") inappropriately.

later 6:30pm ET

Fixed a bug with the disconnect handler...shows what happens when you change things. :P This happened because I changed the Options/Handlers... dialog. Oops.

6/4/02

I added a Build Terrain custom button for loading terrain files, so you don't have to use the BUILDTERRIANPAGE command manually.

Also, Supa contributed a "Terrain Editor" button that lets you set the height and texture for a specific area.

Fixed:

The Terrain page selectors on the terrain dialog were staying disabled even when there was an instance running, so you could only do a query of the 0, 0 page.

The @height and @texture functions weren't giving correct values. Now that they're fixed, the following code in a TERRAINDATA event should produce the same output that the built-in terrain query does (just to give you an idea of how @height and @texture can be used):

REPORT "---------------------------------------------------------";
@sz=@atr[TERRAIN_NODE_SIZE];
@ct=@atr[TERRAIN_NODE_HEIGHT_COUNT];
@p=@atr[TERRAIN_NODE_HEIGHTS];
$s1=$fmt[" Terrain Node %s,%s size=%s",@atr[TERRAIN_NODE_Z],@atr[TERRAIN_NODE_X],@sz];
REPORT "START"+$s1;
IF @ct=1 {
 REPORT $fmt["Heights %s = %s",@ct,@height[@p,0]] }
ELSE {
 $s=$fmt["Heights %s",@ct];
 FOR i 0 (@ct-1)  {
  IF @i%@sz=0 {
   REM start a new line every @sz numbers;
   REPORT $s;
   $s="" };
  $s=$s+$fmt["%s ",@height[@p,@i]] };
 REPORT $s };
@ct=@atr[TERRAIN_NODE_TEXTURE_COUNT];
@p=@atr[TERRAIN_NODE_TEXTURES];
IF @ct=1 {
 REPORT $fmt["Textures %s = %s",@ct,@texture[@p,0]] }
ELSE {
 $s=$fmt["Textures %s",@ct];
 FOR i 0 (@ct-1)  {
  IF @i%@sz=0 {
   REM start a new line every @sz numbers;
   REPORT $s;
   $s="" };
  $s=$s+$fmt["%s ",@texture[@p,@i]] };
 REPORT $s };
REPORT "END"+$s1;
REPORT "---------------------------------------------------------"
6/3/02

Okay, Magsbot 3.0 beta is ready! It's a beta, so there may still be a few bugs...but let me know and I'll fix 'em. :)

Here's a list of new features in Magsbot 3.0.

6/3/02 early

The good news is: since the AWB 3.3 finally arrived, I've been able to test the terrain features for Magsbot 3.0. The bad news: it's taking a bit longer than I thought to get all the bugs out, to the point where I could call it a beta version.  Maybe tomorrow! Meanwhile the alpha (build 42) version is available here. :) It now has all the features in it that I intend to add for 3.0, but bear in mind that the terrain stuff isn't working exactly right yet.

Here is a list of new features in Magsbot 3.0.

5/29/02
I think Magsbot 3.0 would be ready for a beta version now, except I have no way to test terrain stuff, since I'm not on the beta AWB list. You can try the alpha version hereif you're anxious. :)  And if you have a beta AWB, you might test MB 3.0's terrain features for me and let me know...

The on-line help is not completely up-to-date for the 3.0 features, but you can always find a current list of commands/functions in the program's insert templates (click Insert Action/Function/Event etc. on the Edit window).

later

As I'm updating the help, I realize that Magsbot still needs a better way to deal with the terrain commands, so forget what I said above. :> I'm going to add some more commands/functions to make it easier to load, save and build terrain...

5/27/02
Happy Memorial Day! So, how come you didn't tell me about that junk I accidentally left on the database window in 2.12? It's just as I suspected, no one really uses MB. Oh well, I removed the junk (a database component that I only meant to be there temporarily for a test) and uploaded 2.12.1, even though 3.0 will be ready soon...

5/26/02
Magsbot 3.0 is coming along. I only have to add the terrain survey/build features and test it all.  If you feel really daring, you can download the alpha version from here. Alpha version means I haven't finished testing it yet myself, so there may be huge bugs.

Do you have any other things you'd like to see in Magsbot 3.0? Write me! (Hey, who needs sleep?)



5/21/02

I've just put Magsbot 2.12 up on my site, and it will be the last version 2 Magsbot. Right now I'm working on Magsbot 3.0, which will support all the changes in the upcoming AWB 3.3 and the AW SDK 24.

Changes in Magsbot 2.12:

The big change is tabs on the Actions panel and various new functions to support them. This means that you can now arrange all those confusing custom buttons according to categories, and it also means that when you update Magsbot in the future, you only need to replace the buttons in the default category, without having to figure out which buttons are yours and which are the standard ones.

I haven't updated the on-line help yet, so all the info concerning the new button tabs is right here:

You can still load old button files in, but everything in them will get dumped into the default "." category tab. Category names get saved with the button file, so versions of Magsbot prior to 2.12 will NOT be able to read buttons files saved by 2.12.

You can now copy, cut and paste buttons (otherwise sorting them into categories would be a pain!) by selecting a button or buttons (hold down shift to select multiple buttons) and right-clicking to get the pop-up menu. This is the same menu that allows you to Edit, Delete or Save an individual button, or create a new button; but the Copy, Cut and Paste items have been added to it. You can also add, delete or save a category from this menu, or change the position of the tabs to the left or right side, or top or bottom.

I've also added a splitter between the chat window and the Chat/Location/Actions/Telegram panel, so you can adjust the spacing. The splitter position is saved in the .ini file when you save configuration, the same as the main window size/position. As always, remember that each of the panels can be undocked and dragged to become a separate window; but now when all of the panels are removed, the empty panel is minimized until you re-dock any of the floating windows with it.

Changed commands/functions:

In order to support the new button category features with the least amount of changes to existing functions, the button category is specified something like a directory path, i.e. with the category name prefixed to the button name, like this:  Weather/Clear Day would be used to refer to a custom button named "Clear Day" within the category "Weather." Exisiting commands and functions which have been changed to support that Category/Button naming method are:

ADDBTN $tablabel $action
DELETEBTN $tablabel
SETBTN $tablabel $action
CLICKBTN $tablabel

@isbtn[$tablabel]
$btnact[$tablabel]

...where $tablabel = the "category/button" style of naming. If category is left off (if only the button name is given) then Magsbot will look in the default "." tab.  Also, if the code containing any of the above commands is itself within a custom button, MB will first look in that button's own category, and then (if not found) will look in the default "." category.

Some button-related commands and functions take a button index instead of a button name, and to those I added a second, optional argument to specify the category. If the second, optional argument is left out, then the default category is assumed.

$btnact_[@buttonindex,@categoryindex]
$btnlabel_[@buttonindex,@categoryindex]
SETBTN_ @buttonindex $label $action @categoryindex
SAVEBTN @buttonindex $filename @categoryindex
New commands/functions:
ADDCATEGORY $categoryname
Creates a new category tab.

DELCATEGORY $categoryname
Deletes a category tab.

SAVECATEGORY $categoryname $filename
Saves the buttons in a single category to the specified file.

@btncount_[@categoryindex]
Returns the number of buttons in the specified category. (@btncount still returns the total number of buttons.)

@btntabs
Returns the number of categories.

$btntab[@categoryindex]
Returns the name of a category, given the index.

@btntab[$categoryname]
Returns the index of a category, give the name
 


5/16/02

Version 2.10: Added functions @eventtime, @hourfromtime, @minfromtime, @secfromtime, @msfromtime. Added macro @msnow. Changed @timestamp to a macro, derived from @eventtime.

5/7/02

Version 2.9:

Improved behavior table event handling speed.

Added @surveying[@inst] function. (Returns true when specified instance is performing a survey.)

Fixed survey bug (5x5 survey was doing only 3x3).

Fixed behavior table "add" bug.

Miscellaneous small fixes.

later

Fixed a typo in the Insert Action  help.

4/29/02

Added plug-in page, and DLL to send email from Magsbot.

4/26/02

Made some corrections to sample buttons. Added some more disconnect recovery safeguards.  Added WeatherBot buttons to standard set.

later

Updated help for the new time-of-day "weather" buttons. See here.

4/23/02

Fixed incorrect pop-up hints for some behavior table buttons.

Fixed a lingering problem involving disconnect recovery in special instances.

Fixed problem with $svrmsg function. (It was misnamed "$servermsg" so when $svrmsg was used, a "variable not found" error occurred.)

Fixed problem with "Options/Client-Server/Show Server Messages." (Server messages were being displayed even when this was unchecked.)

4/20/02

Version 2.8, with much improved disconnection recovery. Also:

Fixed slight bug concerning the font used by the database window titles.  Added button: Attribs - make weather button.

Fixed survey "no instance" bug. Fixed "Send" button disable/enable when no instances.

Fixed Behavior Table and Action Buttons error-on-edit bug.

Fixed @port function.

a little later

Fixed a problem that prevented logging on to the Bone network.

4/6/02

Version 2.7, added support for the new AWScoreboard 3.0, that can be used to monitor a bot running on a remote computer.

later

Added some behavior table rows and action buttons to help implement the use of Scoreboard.

4/4/02

Added some new action buttons.

4/2/02

Put the script for the Easter Bunny on my web page. (I already released it on the newsgroup a few years ago, this is the latest revision.)

4/1/02

What, 2.6 already? Well, I added a bunch of trig functions and two new macros, @facezx and @faceav, to find the angle that a bot should face in order to face toward an particular location or avatar. (Thanks to Byte Me for the algorithm!) And I changed some of the remote control commands so that they now use the new macros. All the new functions seemed to justify a new minor version number, but they're pretty straightforward and unlikely to cause any bugs, so I'll skip the beta version...

3/29/02

Fixed a bug that caused the TELEPORT command to hang up when re-entering the same world, if used in the behavior table.

Also added the @sdkcoords function, to translate AWB coords into SDK-style coords. (There was already an $AWB macro to do the reverse translation.)

later

Fixed a problem with the some distance related macros, and added location & distance macros to the on-line help here. (They were always in the userdefs.udf file to be used, but I hadn't added them to the help.) Also added them to the template insertion help.

Took 2.5 out of beta, it's now the official version.

later still

I can't quit fussing... :D I changed the way @SDKcoords works; it no longer gives an error if improper coords are entered, so you need to check the value it returns (0 if incorrect coords, 1 if okay).

even later

I added some new remote control commands, and updated the help regarding them.

Maybe I should take a break now. :P

nope, even later than that

Changed how the $word macro works, so it removes quotes from around a word.

3/28/02

Added new functions @inworld and @visible.

3/27/02

Fixed some problems with the survey dialog (the settings weren't being saved to the .ini file properly, and the synch timing wasn't being restored to normal after a survey completed), and added a button to the survey dialog to let you insert conditions, functions, etc. into the conditional expression box (similar to the template insertion dialogs in the behavior table edit box).

3/26/02

Added additional font options so now you can control all the fonts, including the base font used for dialogs. Now you'll never have to look at Comic Sans again! (Well, unless you look at the About box, I didn't change it there. :P)

3/24/02 version 2.5 beta!

Fixed a bug that caused AvTracking option to not be saved properly. Fixed a bug that caused program to pause during GETLIST etc, which could cause disconnection.

Added Font options by popular demand!

Changed the way that BREAK works in the second clause of a TRAP command: it now will cause execution to leave the outer clause instead of just leaving the trap clause. (So you could do something like

    TRAP { ...possible error causing code... } { BREAK };

...in order to exit a behavior table action or a button.

Made FREEVAR silent except in Verbose mode.

Added SVRMSG event for incoming messages from a Magsbot server. Added STARTCLIENT, STOPCLIENT commands.

Fixed a bug that caused the survey size to not show on the dialog when the settings changed using a command.

Added High Speed survey options and SURVEYFAST and SURVEYTOBEH commands to support them using commands. Added new command SURVEYSYNCH to specify high speed survey settings.

Added "Note" field to instance list and INSTNOTE command and $instnote function to support it. (Allows you to add a note to each instance to tell them apart if each bot has the same name.)

Added various string parsing macros to the template insert dialogs. Created new functions  @wordinlist and @iposw in order to replace  @wordin, @word_in macros with faster internal functions. Added macros @inlist and @instr.

3/18/02

Added and revised some time/date definitions: @dawn, @dusk, @day, @night.

3/16/02

Removed @str_in function (you should use @ipos instead; @str_in didn't really make sense) and modified how a few other macros work, although they still behave the same way.

Also improved some button definitions.

3/6/02

Fixed a problem with the paste function in the behavior table.

2/23/02

Fixed a problem with the "Change Bot" Name button, and with the built-in response to version and owner requests.

2/19/02

Magsbot 2.4. Added Client mode, CLIENTSEND command.

1/28/02

Fixed an error in the standard behavior table that could cause HEAR events to be ignored under certain circumstances, if they were placed in the table following the standard section.

Also found a bug, or an oversight of mine, in the random number operator (#) that caused the same sequence of pseudo-random numbers to be generated each time Magsbot was started up. Oops. Anyway, it is now fixed and a different and unpredicable sequence of numbers will be generated by the # operator. (I will probably add a RANDOMIZE command later that will allow you to enter a seed number and get the same sequence of psuedo-random numbers when that's desireable for testing.)
 

10/29/01

Propdumps made by the AW propdump utility convert carriage returns (char 13 + char 10) into char 10 + char 127, and Magsbot propdumps follow this same convention for compatibility.  Magsbot object lists and object list files, however, do not follow this convention; they retain the carriage return exactly as surveyed. There was a bug that caused this conversion to also be done when surveying to an object list, which is now fixed. (If an object list is saved as a propdump, then the conversion is done then.)

10/27/01

Fixed a problem with the BUILD command and (once again!) propdump lines with carriage returns in them.

later

Fixed a problem with the Client List window.

10/26/01

Made some changes to the Client List window and server mode. Now when Options/ClientServer/Restrict to Listed Clients is unchecked, clients that connect will be listed in blue in the client list (previously they weren't shown). You can also disconnect clients individually with the new Disconnect button on the client list window.

10/22/01

Added $dberror function, and improved error messages for database errors.

10/19/01

Made a change in ENQUEUE to correct a problem with the @queue function.

The @queue function is used to get the index of the queue that the ENQUEUE command uses; however if you assign the value within the ENQUEUE'd action (@q=@queue) it won't get assigned until the queued action executes, so it's no help in finding the index at the time that ENQUEUE is called. So, now when you call ENQUEUE the queue index is placed in the local variable list, from which it can be retrieved using the @queue function.

What all this means is that to find the queue index, instead of the old method:

REM this doesn't work!;
ENQUEUE {
    @q=@queue; < this assignment wouldn't occur until the queued action is executed,
                                       so the value of @q would not be available outside of the braces.
    REM do stuff ... };
REM @q will NOT contain the queue index here!
...you would now do this instead:
REM this works;
ENQUEUE {
    REM do stuff ... };
@q=@queue;  < in version 2.2, the queue index is placed in the local variable list
                                   when ENQUEUE is called, so @queue gives the correct value
                                   even outside of the braces.
10/18/01

Added @connectstate[@instance] function.

@connectstate returns:
  -1: (invalid instance)
    0: waiting for login (dark yellow)
    1: waiting to enter (yellow)
    2: connected (green)
    3: disconnected (red)
    4: failed (gray)
Also fixed some bugs in the Find and Next buttons on the Behavior Table window, and the find function (Ctrl-F or F3) within the Edit window.

10/17/01

Changed the DBSQL command to work properly with a SELECT statement. If the SQL statement is SELECT then it isn't executed immediately,  but is deferred until DBACTIVE 1 is called. However, a new, optional second argument has been added to override this behavior. If the second argument is true (non-0) or not given, then DBSQLwill act "automatically" to execute or not execute the SQL statement according to whether it is a SELECT statement; but if the second argument is false (0) then DBSQL only sets the SQL text without executing the statement or calling DBACTIVE.

Also added DBSQLSET and DBSQLEXEC so the above can be dome manually.

10/15/01 (? When I added this I forgot to update this file, so I'm not sure of the date.)

Added the DATASET and DBCLOSE commands and @dbopenfunction.

10/9/01

Added QSTATEcommand, to allow user to suspend and restart the Action Queue. Also see ENQUEUE.

10/8/01

Found and fixed a bug in the @indfunction, that caused the "look in" string to become corrupted.

later

Added Survivor registration and score-keeping bot script to web page.

10/7/01

Added database functions DBRECNO, @dbrfield, @dbrfield_. Took 2.1 out of beta, it's the official version now.

later

Fixed a problem in the DBSQL command that caused it to close the database after being called. Now the "active" state of the database is restored to whatever it was (on or off) before DBSQL is called.

10/4/01

Fixed a typo in the scanvenger hunt script.

10/2/01

Added a section to the help concerning how to update your custom files for new versions of Magsbot.

10/1/01

Fixed an inaccuracy in the "Insert Action" and "Insert Function" dialogs regarding SETWORLDATTR and @worldattrib, and adjusted the action and function themselves.

later

Fixed a problem in the "Build from ObjList" button.

9/30/01

Some very trivial changes to a lot of action buttons (so when you enter the name of an obj list, it will be retained for the next time you use the button). I wouldn't bother downloading it again just for these, if you already downloaded it yesterday :)

9/29/01

Fixed a problem that caused playback of recorded chat (Record, Playback, etc. buttons) to fail.

9/26/01

Made a minor change in the example database (mydatabase.mdb) and the example database code.

9/24/01

Added $replace function and some changes to "Build from ObjLog" button to account to objects with carriage returns (ctrl-enter) in their description fields.

later

Took another shot at eliminating the macros bug. I think I really got the sucker this time. :D

later still

Updated version 2.0 to get rid of the macros bug there too.

even later

AW released build 22 (beta) of the SDK today, so I quickly updated Magsbot 2.1 beta also.

very later

Sigh...oops, the last release I uploaded was compiled without the Delphi libraries in it. So, I recompiled and put the correct version on the web. (Actually compiling without the libraries could be a good thing...you would have to download them also, but it would save space if you have several Delphi applications on your computer, like Magsbot, World Mapper, RWXLint etc.  So, I might do that sometime, but for now it's simpler to put the Delphi libraries in each application so you don't need them separately.)

9/23/01

Magsbot 2.1 beta now uses build 21 of the SDK. Added SURVEY_ command and Local 5x5 area option to Survey window.

later

Added database actions and functions to the help.  Changed name of new SURVEY5x5 command to SURVEY_ (because there was a problem with a command name containing numbers). Added link to 2.1 beta on the web page.

9/22/01

I took 2.0 out of beta, since it seems fairly stable. At least I'm not getting any major complaints lately. Maybe that just means that no one is using it. :P  Anyway, yeah, there are a few bugs yet, but I wanted to move on to adding database functions in 2.1, which will be extremely useful. Of course I will be fixing the bugs too as I go along!

I haven't put a link on my web page for 2.1 (which contains database commands) because I haven't finished the help for it yet, but (shhhhh!) if you want to live dangerously, then you can download 2.1 beta here. :>  Until I finish the help, you can find information about the new database commands by clicking on the Insert Action and Insert Function buttons on the Edit window. Also see the Database window, which you can open from the Action menu. Note that in this first beta version, there is no way to create a database, only to manipulate a previously existing one. The database functionality is via ADO, so if you know anything about that, you could possibly connect up to an on-line database through the bot, as well as a local database. Please, anyone who achieves this, let me know because I'd love to hear about it. :) I've only tested with a local Access database so far.

Also new are the Find and Next buttons on the Behavior Table page, for finding text within the table.

9/3/01

Finally fixed the bug that caused the Active column of the behavior table to not properly toggle On/Off at times. Also found and fixed the cause of the occasional communications "stall" that started happening with beta 2.0. And, I added some useful macros that I required for the AWTeen Joust Bot, which also change and improve the function of the various @near macros, since they now use the new @dist2 and @dist3 macros for correctly determining distance. The new macros are @dist2, @dist3, @avdist2 and @avdist3. See the userdefs.udf file for details. (Hmm, I ought to add all these macros to the "Insert Function" popup so you won't have to look in userdefs.udf to find them!)

Hopefully I'll take 2.0 out of beta soon, it seems to be getting fairly stable...

8/28/01

Fixed a bug in the Handler initialization that caused a crash if you had certain handlers unchecked (and it was just due to a typo!). Fixed a bug in the TELEPORT command (the bot would walk instead of teleport if the location was nearby; after the fix, it always teleports with the TELEPORT command). And fixed a bug in ENQUEUE that would mainly affect the use of that command in buttons. Last one isn't a bug exactly, but if the ENQUEUE was in an action button, it would pass the active instance in the queued action, even if it had been changed to some other instance by a SETINSTANCE command.

8/25/01

The main changes this time were to the suite of functions involved with saving/reading lists to/from files. There are now three sets of functions for this purpose. One set for standard lists, one for object lists to/from object list files, and one for object lists to/from propdumps. These are:

          standard lists:

  GetList
  MergeList
  SaveList
  AppendList

object lists and object list files:

changed:
  GetObjList
  MergeObjList
added:
  SaveObjList
 AppendObjList

object lists and propdumps:

added:
  GetListFromPD
  MergeListFromPD
  SaveListToPD
  AppendListToPD

The corresponding buttons on the actions panel for reading and saving object lists, which previously contained commands to perform the same functions, now call the above functions instead.

More details can be found in the documentation here.

Also:


8/22/01

A change I made in 2.0 to improve the efficiency of handling messages from the world server, turned out to cause some problems. The aw_wait function was being called so often (though only for a millisecond) that it caused responses to menu clicks to be sluggish. (You may have noticed that in 2.0 beta 12.) So, I changed things back.

Also, I found a problem in the standard behavior table that could cause added rows to be ignored. I fixed that, but you should remember to activate (set Active column to "On") the final row of the standard table if you add your own rows at the end.

8/21/01

Added "Read propdump into objlist" button, made some changes to "Save objlist as propdump".

Added a new parameter to the WRITE command, so that the EOL (end-of-line) that the write command adds to the string that it sends to the output file can be omitted if desired. The new parameter is optional, and if omitted then the WRITE command will act exactly as before.

Added a new function, @unquote, to replace the macro of the same name. It now acts a little different: as well as removing quotes, if present, from the beginning and ending of the string, it will now also convert double quotes within the string into single quotes. For instance "this is a ""test"" of this thing" would get converted to this is a "test" of this thing. Note that the @quote function, as well as adding quotes to the beginning and end of a string, also doubles any quote characters within the string. Thus, @quote and @unquote now act in a complementary way to reverse each other's effect.

Also made a change to the behavior of the variables list window: quotes are no longer added (or required) around string variables when editing them in the variables list, and when editing either string and numeric variables, you can only enter a constant (i.e., the actual value that you want to assign to the variable, not a function or another variable name). Of course you can still assign functions or other variables to a variable in command mode.

8/18/01

Fixed a problem with the WORLDINFO callback handler not being loaded (due to changed made in the way MB loads handlers), and related changes to world-name-fetching stuff in the Behavior Table. Also found some more cases of modal windows causing communications stall and fixed those.

8/16/01

Fixed a bug in trivia, added trivia and midi sample files that I had left out of the beta package. Added a "Seek" button and behavior table rows to support seek function. Fixed a bug with Eject List feature (the EjectInfo handler wasn't getting loaded).

8/15/01

Fixed a bug that caused the negative sign to be dropped in front of variables, functions or macros.

a little later

I believe I fixed the bug that caused communications to stall when clicking the "Set" button to change world and location, under some circumstances. Since it was random, it's hard to be sure...let me know if you see Magsbot

(These stalling problems are due to the changes I made to try to avoidstalling when a modal window is opened.)

8/13/01

Resolved the problem with message processing being suspended while modal windows (the edit window, for instance) are open.

8/10/01

Added SURVEYSETRELATIVE, SETSURVEYSTART,  RESETSURVEYSTART commands.

8/9/01

Fixed a bug in ENQUEUE, changed some minor cosmetic things...

8/8/01

I think I fixed the bug mentioned below (8/5/01) that causes crashes when reloading the macros (.udf) file. Let me know if you have any problems with this!

Also added a form to enable/disable handlers, in the Options menu.

Also Magsbot now responds to whispered "version" and "owner" queries without needing behavior table entries for those responses.

later

MB wasn't saving selections from the handler dialog properly.

8/6/01

I finally fixed the problem with the "Save obj list to file" and "Read obj list from file" buttons. You can now use any text editor to edit object list files, and any old object list files you created using previous versions of Magsbot should still be readable.

In order to implement this solution, I had to add a new function, @chrcnt, which counts the occurrances of a particular character within a string. Version 2.0 b2 contains the new function, which is used by the save/read obj list buttons.

later that same day...

A few more fixes. Found a bug that caused the window title to not reflect the correct name of the active instance, if starting a new instance and not having it enter/appear in the world right away.

8/5/01

Okay, Magsbot 2.0 is not entirely finished, but I'm going to release the beta test version now. That way you all get to help me find the bugs. :)

I've been working on the updated Help for 2.0. It's not entirely done. Here are the things that are different in 2.0:

New in 2.0:

See here for known bugs, bug fixes and planned enhancements.

8/3/01 or thereabouts

TurtleFlight!That's the name of my new domain server which will contain all of my freeware and these help pages from now on. This was prompted by my long-time ISP, Earthlink, suddenly deciding that they have to limit bandwidth to 400M per month. At first I was going to use the space that my cable modem provider gives me...but then they announced that they weren't going to support FTP uploads anymore, and I'd have to use a clunky web page interface in order to put files on my site. So, it's about time I got my own domain, and that is http://www.turtleflight.com! All of my Active Worlds stuff can be found there from now on. :) And you can email me at magine@turtleflight.com.

7/27/01

Some action button fixes.  BTW, Magsbot 2.0 beta is coming very soon now! Within a week or two, most probably. :)

7/11/01

I was testing Magsbot 2.0, which has some new error-reporting features...and it found and reported some errors in a few of the existing Action buttons! So I fixed 'em.

6/27/01

I found a typo in the SetArea... buttons, and fixed it.

6/23/01

Fixes to some action buttons (Delete from Obj list, Search & Replace, Read object list, etc.) and a big fix to the "Live Log" stuff in the behavior table. Due to a goof I made, live logging was always turned on! Make sure you get the fix here, or you may be mystified (as I was) about why Magsbot is altering the objlog by itself!

What? I didn't tell you about live logging? :D Well, when you click the "Log Live ON" button, any object deletions or creations that Magsbot detects in the area are automatically reflected in the objlog object list. So you can do "Log from Survey", and after the survey is done, click "Log Live On" to keep the objlog updated as people build in the area.

12:20pm: Oops, I left something out of that latest upload. I added it now and uploaded again. But if you downloaded Magsbot today (6/23/10) before 12:20pm ET, you can just add $LF=$cat[$asc[13],$asc[10]] to userdefs.udf and not have to download the whole thing again. :)

Some boring technical details about object list files:

Magsbot can save object lists to a file, something like a propdump file but in a different format. Object list files use comma-delimited, quoted fields so that they can be changed without having to recalculate the length of a description, model name or action on a model, unlike a propdump file which can't be conveniently edited.  This means that you can use the "Log From Survey" button to create an object list, delete the objects from the world using "Delete from obj list", then save the list to a file using "Save objlist to file", edit the file with a text editor, use "Read obj list from file" to read it back in and finally "Build from obj list" to create the altered objects. This is handy if you want to make a lot of changes to objects without having to seek out each object and click on it, etc. (I used this method to add lighting commands to the fireworks in A'tuin this year, since going around and changing each object in the AWB would have been very difficult, with so many overlapping animation panels, etc.)

Anyway, the point of this discussion is to explain the changes I made to the "Read from obj list" button. There was a problem I discovered that occurs when objects have embedded carriage returns...in other words, sign models that use Ctrl-Enter to put text on separate lines. (You didn't know you could do that? Neither did I until recently, or I would have allowed for it earlier.) When reading the file back in, it was impossible to tell the difference between an end-of-line that marked the end of information for an object, and an end-of-line within a description field on a sign. So, now the "Save obj list to file" and "Read from obj list" buttons both save and load files in binary mode, which means that actual end-of-lines are just ASCII character 10, while embedded returns in description fields are ASCII 13+ASCII 10, so the "Read" button can tell the difference.

What all this means to you is that when you edit obj list files, you should be careful not to delete the ASCII 10 characters (they appear as little black boxes in Notepad). Unfortunately, you cannot use Wordpad to edit these files because it will convert all the ASCII 10's and mess it up. If you want to edit an objlist file with something other than Notepad, then use a full-featured editor like Textpadand save the file in Unix or "binary" format.

Maybe there's a better solution to this problem, but this will have to do for now...

6/16/01

Replaced $readln macro with an internal function of the same name, made some fixes and improvements to "Build from objlog" and buttons, relative survey.

6/11/01

Fixed some goofs in the behavior table Random Movement section and the associated [RndMove] button. Added help for @objectadd and @objectchange functions (that I thought I already put in there long ago! Sorry.)

6/7/01

I found and fixed a strange bug in the $chat function (that returns the chat text within a HEAR Event). The bug could cause the bot to receive the wrong chat string when a lot of people are talking to it at once. The problem was because the old $chat function returned the immediate value of AW_CHAT_MESSAGE instead of the "queued" value received at the time the HEAR event occurred. To fix that I removed the old $chatfunction and replaced it with a macro of the same name, which returns the queued $atr[CHAT_MESSAGE]. The $chat function was extraneous anyway, leftover from long ago when I first started writing Magsbot. Using $atr[CHAT_MESSAGE] makes much more sense than having a special function for the purpose.

5/27/01

Fixed a bug in AVWARP command that could cause it to not work when running multiple instances.

5/13/01

Replaced the MIDI and Trivia sections of the behavior table that got lost when I was cutting and pasting the last update. I hate it when that happens. :P

5/7/01

Rearranged the order of sections in the behavior table, made some minor changes to remote control commands.

5/6/01

Ummm....seems like I left out the new AW.DLL when I uploaded the last release. I changed MBot but forgot to put the newer DLL in the zip file. Sigh. If you downloaded MBot since 4/29 and had problems running it, that's why. Sorry. :(

Also I fixed some things with the "remote control" chat commands. New commands that you can whisper to the bot are: SPAWN and an avatar name causes the bot to create a new instance with the specified name. CITIZEN and a name or citizen number causes the bot to whisper back the corresponding information for the specified citizen. And with the FOLLOW command you can also state the name of an avatar to follow. (If no name is specified for FOLLOW, the command works like before, causing the bot to follow the speaker.)

I also changed the way the remote control key words are detected in chat. Formerly I checked the list of key words (do, follow, come, stay, etc.) and the responses were all contained in a single Action in the Behavior Table, with many IF clauses. I did it that way thinking that it would be faster, but I've since decided that it probably makes little difference, and putting each key word on a different row of the table makes it easier to add new commands, as well as easier to understand. Note that I now use the new CHECK command at the beginning of the key words section to limit the bot's response to those people in the controller list, so that this doesn't need to be tested repeatedly on each row.

4/29/01

Yipes! Why didn't anyone tell me that AW had a new SDK build out since April 3rd? :P  Anyway, MBot is now updated to the new SDK, build 20. (Actually there's not much new in the latest SDK, except for how the world list function behaves. I also updated MBot's "WorldList-goto World" button and the part of the standard Behavior Table that deals with the world list, to correspond with the SDK's new method. Things work much better since the SDK changes, actually.)

Also made some changes to the "safe zone" buttons used for paintball and storytelling, among other things. The button names have been changed from "Safe..." etc. to "SetArea..." etc. and the user is now prompted for an area name. This way the buttons can be used for defining areas for other purposes as well. Enter "safe" for the area name when using the SetArea buttons to define a safe zone, as with the old "SetSafe" buttons.

4/27/01

Rewrote part of Quick & Easy Instructions to make them more actually quick and easy. :)

4/18/01

Fixed a bug in the SURVEYWORLD routine that would prevent the survey from working properly the second time it was run using the same instance.

Also added "Survey set mode" button (and related changes to standard behavior table). When using the action panel survey buttons (but not when using the survey menu item) this lets you survey relative to the bot's location, which is a lot simpler than calculating an offset! In other words, when survey mode is set to relative, the object coordinates in the survey are adjusted so that the bot's position is treated as "ground zero." Therefore, when you rebuild an object list in relative mode, the objects being created will be placed as if the bot was at 0n 0w.

4/16/01

Client/server capabilities have been added to MBot version 1.9.4 so that you can control the program from a remote computer. (Note: I still have to write the client program, but for now you can use AW Scoreboard 2.0 to receive and display messages from the server.) When menu item Connection/Server is checked, then MBot will allow client programs (like AW Scoreboard 2.0) to connect to it via TCP/IP. If Options/Restrict to Listed Clients is checked (the default), then only clients whose IP address are in the list of valid clients will be allowed to connect. Click on Actions/Clients to see the list of clients. Clients are added or removed from the client list using new commands ADDCLIENT and DELCLIENT, each of which take the client IP address as the single argument. (For example, ADDCLIENT "192.168.1.100".)

Magsbot running in Server Mode will be controlled remotely using the Magsbot Client program  (not yet written). Right now Scoreboard 2.0 runs as a MBot client, and will display messages sent to it from MBot in Server Mode using new commands SVRSEND or SVRBROADCAST. (Scoreboard displays HTML text, so you can use HTML codes in messages sent to it, to control text color, font, formatting, etc.)

Server Mode can be activated or deactivated programatically using the new STARTSERVER and STOPSERVER commands.

Messages incoming from a client will trigger a CLIENTMSG Event in MBot. Global variables $clientand $msg contain the client IP address and message, respectively.

Also new in the Options menu are:

    Client-Server Messages     Messages between the client and server are shown in the log window.

    Broadcast Log to Clients  Messages in the log window are sent to all connected clients.

    Auto Start Server                Bot starts up in Server Mode.

I'll be continuing to develop client/server functions in later versions of Magsbot.

***

Also added some new Action Button commands: SAVEBTN, SAVEBTNS, MERGEBTN and LOADBTNS so Action buttons can be saved or loaded programatically. See the help for details.

3/29/01

Fixed $ejectadd macro (I had forgotten to it bring up-to-date with new $ipmacro).

3/27/01

Fixed @wordin macro so that it returns the correct index in the list if the word is found.

3/24/01

I added @portand $addr functions, and changed the names of some macros. I try to avoid renaming macros once released, but I don't think the ones I changed were used much outside of the standard behavior table, which I also updated. The changes to macros are:

$ip changed name to $ipof

$addr formerly translated an IP number to an address. Now you should use $ip for that purpose, since $addr returns the bot instance's address (like "www.activeworlds.com").

$ipnow takes an IP number instead of a session number; you should use $ipof to find an IP address from a session number.

@ip translates an IP address (like "62.211.176.35") into an IP number.

I also changed how the remote control command check works in the standard behavior table. Now it uses the @wi macro with a string of command words (see userdefs.udf), instead of keeping a list of command works.

Updated help for string macros.

3/20/01

Fixed problem with @word_in macro that caused an error message when $chat was an empty string.

3/15/01

A few button improvements, and an update paintball bot script, now including grenades. See the readme.txt.

3/12/01

Added a macro to userdefs.udf required by the paintball bot script.

3/11/01

Added buttons and fixed some things involving ejection lists.

3/6/01

Fixed some mistakes in "Save obj list as propdump button" that could cause problems if objects had description fields with embedded returns.

3/4/01

Changed the $wordsfunction to a macro, and added new $words_function for greater flexibility. Use $words[@n1,@n2] as before, to create a substring of words from the chat string; or use $words_[$s,@n1,@n2,$delim] to use a string other than the chat string, and/or delimiters other than the usual chat delimiters.

Also improved the @word_in function so that it will also correctly find multi-word strings.

3/3/01

Added some enhancements to the paintball bot script. Medic1 is currently running this script in Fort world, check it out! :)

Also made a minor fix to EJECTADD, etc. commands, which previously gave an erroneous error message.

AND...I found that the remote control feature allowing you to say "do..." and a command to the bot, somehow got messed up. If you were having problems with it, that's why.  It's fixed now.

AND AND...Fixed a bug in @sessionof and @nameof functions that would cause them to fail if called from other instances than the active instance.

3/2/01

Minor adjustments to standard behavior table, userdefs.udf.

2/26/01

I previously forgot to add the three new attributes returned by AVATARADD (namely AVATAR_CITIZEN, AVATAR_PRIVILEGE and AVATAR_VERSION) to the event queue for AVATARADD. It's fixed now.

2/25/01

I added whole-world survey to the built-in menu, so the action button I scripted for that is no longer necessary. Now when you click "Survey...", MB will ask if you want a nearby area survey or whole-world survey. I also added a new SURVEYWORLD action that works the same as SURVEY except for covering the whole world. Like SURVEY, it also takes a conditional expression so you can limit the survey to selected objects.

I also fixed some goofs I made in the error messages when I added 3.1 capabilities. Now the error messages are up-to-date for AW 3.1.

2/24/01

Well, I had wanted to wait until MB 2.0 before adding AW 3.1 capabilities, but many real-life events have delayed my working on MB 2.0.  So, for now, I've made MB version 1.8, incorporating the AW 3.1 stuff.

Actually there aren't many new things in 3.1 for bots besides than the new world server administrator methods. Since I don't operate a world server, I have no way to test these capabilities right now, but I've added some of them to MB anyway. If you test them (the administrator methods), be warned that I haven't verified that they will work right.

All the new AW attributes are available in MB 1.8, of course.

(Gray=function or action not yet implemented in MBot.)

Functions:

    @cellnext Starts a survey. To survey a whole world, continue to call this until it returns 0.

Actions:

deleteallobjects Deletes all the objects in the current world, if the bot's owner is a world is a caretaker.

resetworldattribs Resets the world to it's original attributes, if the bot's owner is a world is a caretaker.

reloadregistry          Reload the world registry, if the bot's owner is a world is a caretaker.

Admin server functions:
$worldattrib[@n] Returns a world (server) attribute, by number. (Not to be confused with world attributes such as lighting, backdrop, etc.;  this returns information used by the world hosting program.)
@newadmininstance[$password,@port,$addr]  Create a new admin instance. (Not properly tested yet.)
Admin server Actions, not currently inplemented in MBot:  See theSDK help for information on them.)

   worldadd
    worlddelete @id
    worldchange @id
   worldlist
    worldstart @id
    worldstop @id
    worldset @id

Events:
(Note some events in MB are actually "callbacks" in the SDK.)

    CELLEND
    DELETEALLOBJ Result of DELETEALLOBJECTS
    CELLRESULT Result of @cellnext function
    RELOADREGISTRY Result of RELOADREGISTRY
    RESETATTRIBSRESULT Result of RESETATTRIBS

Admin Events:
(I also put these in, although they have limited usefulness in MB right now. See the SDK help for information on them.)

    ADMINWORLDINFO
    ADMINWORLDDELETE
    ADMINWORLDLIST
    ADMINWORLDRESULT

Events supported in MB but not currently implemented in the SDK:
(I put these in now anyway, in anticipation of future SDK releases, though they won't really occur. But hey, if by some magic the bot starts receiving these events from a world server, you'll know. :D )

    SENDFILE
    CONTACTSTATE
    TELEGRAM
    JOIN



1/28/01

Fixed some flaws in the Playback buttons.

1/24/01

Fixed a bug in DLL loading routine (to allow the CALLDLL function) that caused some DLL functions not to load properly on startup.

1/19/01,1/20/01

Improved response to disconnection.

1/12/01

Fixed a bug in ENLIST, ENLIST_, GETLIST, MERGELIST etc. Previously these added new items to a list according to the count of items in the list; but that could cause problems if items had been deleted from the middle of the list. (If a list had, for instance, items numbered 1 and 3, then the functions would count the items in the list (2) and try to add a new item #3, overwriting the current item #3 and preventing any further items from being added! Now these function add new items after the highest numbered item, regardless of the number of items. Oops. :)

12/26/00

Updated and improved many of the sample action buttons, and the help for them.

12/19/00

Added Storytelling feature, by request of Clee. :)  (I also added the @selcount function to implement this properly.)

This is an enhancement of the simpler "Recite Text file". With Storytelling, the bot will only begin reading the specified file when an avatar is within the zone that you define using the Set SafeN, Set SafeS, Set SafeW and Set SafeE buttons. To define the zone, move your avatar (in the AW browser, with the bot nearby so it can detect your av) to the northmost edge of the zone and click Set SafeN.  Do the same thing for the south, west and east edges, using the corresponding buttons. (The reason these buttons are named "Safe" is because I originally made them to define a "safe zone" for a paintball bot.)  Once the zone is set, click the Storytelling ON to activate the bot and select the file to be read. Now when any avatars come within the area, the bot will begin to whisper the text file to them, a line at a time. If everyone leaves the zone, then the bot will stop reading. It will begin the story from the start if someone re-enters the zone. Storytelling OFF stops the reading, and Storytelling PAUSE will pause the reading so that it will resume at the same place in the text file if you re-start Storytelling later.

11/21/00

Fixed bugs in "Save obj list as Propdump" and "Read obj list from file" buttons. Also added "Log fromBuild" button.

11/13/00

Finally fixed a bug that was causing exceptions (error messages) ifa timer was left running when exiting the program.

11/11/00

I fixed a bug (actually something I forgot to change back after testing, oops) that limited the number of lines in the log window to 20 (insteadof 1024 as it should be).  Added GETOBJLISTand MERGEOBJLISTActions that load a propdump into an object list. (Of course the objectnumbers in the list will be bogus since propdumps don't contain object numbers, but getting a propdump into object list form will allow you to write routines to do complex operations on the propdump, and then build it with the Build from Object List button. I added these so I could extract selected objects from the A'tuin2 propdump, for rebuilding in A'tuin+!) To make this easier for you, I added an Action button, Copy Selected from Object List that you can use to copy only specified items from one object list to another. So you can load a propdump into a list, copy only selected items into another list, then build from the new list.

Also fixed a long-standing bug that caused an exception (error message) if you clicked certain buttons while MBot was still starting up and auto-connecting.

11/11/00

The new @atriand $atrifunctions (see below) still didn't seem dependable enough for use with OBJECTADD ,etc., when creating a lot of new objects in a short time, so I added @objectadd, @objectload and@objectchange functions that return the new object number reliably. (If you don't need to know the object number of the newly created/changed object, then the corresponding Actions OBJECTADD,OBJECTLOAD and OBJECTCHANGE will still work fine; but if you want to get the object number of the new object, then use the function form instead.)

11/8/00

Added support for Bot Bone Build 8: baddcontact, bdelcontact, bupdate, bjoin, bleave, etc.

10/25/00

Bug fix...I somehow lost a row of the standard Behavior Table in the last upload, so you may have gotten "variable not found errors" if you downloaded MBot recently. This restores it.

Also added @timestamp function that tells when an event occurred. The number returned is a "@ctime" number so use $ctime or $vrt_ to convertit to a string.

The group of VR Time functions has been expanded a bit. They are:

@vrt      returns the current VR time as aninteger, like @ctime.
$vrt         returns the currentVR time as a string

@vrt_[@t]    converts a @ctime value to the corresponding VR time.
$vrt_[@t]    converts a VR time integer to a string
 

10/18/00

Added @nextindex function. Similar to @nextnum except it returns the"real" variable index in the global variable list, instead of the "itemnumber".(not added to main body of help yet)

10/16/00

Fixed a bug in @itemnum that caused it to not find an item if the item had a negative item number. This wouldn't make any difference with most lists, but with an "object log" survey, some of the items would have negative item numbers (object numbers) and thus @itemnum wouldn't have found them.

Also fixed a bug that caused the variable list window to show an incorrect total variable count (by 1).

10/14/00

Added two new functions, @atri and $atri, like @atr and$atr except they return the "immediate" value of attributes rather than the values stored in the queue at the time the event occured. You would use @atri, for instance, after calling OBJECTADD or OBJECTCHANGE to get the object number of the new object. (Since the object didn't exist when the Event that triggered the Action occurred, if you use @atr it won't give you the right value.)

10/11/00

Fixed some problems in the new Random Movement scheme, which allowsfor separate sets of positions for different instance.

10/10/00

Bug fixes in $uc, $lc, @atnum functions, and $cat in MBEval.DLL. Decided since it's a new MBEval that I'd forget all the minor minor version numbering and skip to version 1.5. :)

10/2/00
(not added to main body of help yet)

ANY event: any event will trigger behavior table rows  with this event

CHECK @cond : use CHECK 0 to turn checking off for subsequent rows, then CHECK 1 to turnit back on. When CHECK is 0 (off), then only the ANY event will trigger a particular row, so you must use ANY to turn it back on.

@eventtype :to see what the event type was, within an ANY event

$eventtype[@event]:returns a string, the name of the event

(better explanation will be added to main help soon)

8/13/00

Added @nextnum and @nextnum_ functions.

8/12/00

SDK Build 17.

8/5/00

Fixed goof in "[PickAv]" button. Replaced "Goto Avatar" button with improved method that causes the bot to face the avatar. (Many thanks to jumpy for the avatar-facing algorithm!)

7/25/00

Many internal changes to improve performance and avoid instance conflicts.

RESETLIST and $listnext, while formerly were used to get values from the Nearby List, have been renamed to RESETNEARBY and $nearnext, while RESETLIST and new functions $nextitem and @nextitem now apply to items in variable lists.

More details to come, but the help is up-to-date...

5/2/00

"Save ObjLog as Propdump" button, bug fixes.

On-line help was added some time ago.

4/17/00

Ejection List management commands added, some little bug fixes, Variable List window and on-line HTML help! The help file is now complete and up-to-date...hope it helps. :)

Also...if you're interested in writing DLLs for MB to use, note that I've changed the format that MB expects from stdcall to cdecl. This will make it simpler for people using C to write DLLs for MB.

4/5/00

Updated for AW SDK Build 16 and 3.0 capabilities.

Added AVTELEPORT, AVWARP and AWFLOAT commands, updated @atr and @atr_ functions, and added TELEPORT event. See the drop-down lists (Insert Action, etc.) for parameters, until I (eventually) finish the HELP!

Also changed TELEPORT command so that it now accepts optional NS, WE, Alt and Yaw arguments. If these optional arguments are left out, the bot will enter the world without actually appearing at specific coordinates. (This should help prevent embarassing appearances and resulting ejections at GZ in AW!)

4/1/00

SynchTimer (SYNCHTIMER @wait @interval) sets timer that MBot uses to get messages from the AW Server. "@wait" is the time in milliseconds used to call aw_wait and "@interval" is the time in milliseconds between calls to aw_wait. If you set both to 0, MBot won't receieve any messages from the server, which can be useful if you want to avoid conflicts. The default is SYNCHTIMER 1 500. (You can also set these values in the Debug sections of the .ini file, as WAIT= and INTERVAL=.)

Or, you can use the new Synch command (SYNCH @state) to turn synchronous mode on or off, without changing the timer settings. SYNCH 1 turns synch mode on (no messages received unless you call WAIT), and SYNCH 0 turns synch mode off (messages received automatically according to SynchTimer settings).

2/26/00

Fixed numerous bugs concerning multiple instances. Made some changes to the Action Buttons and Behavior Table entries for logging and building objects.

2/20/00

I've added multiple instance capability. I'm still testing this, so please let me know if you find any bugs! (magine@pipeline.com)

Within the context of the Behavior Table, the current instance is the one receiving the Event message. You can use the SETINSTANCE command within an Action to direct commands at a different instance than the one receiving the event.

Within the context of Action buttons or immediate mode commands (Action/Do menu), the current instance is the "Active instance", which is the instance whose information shows on the control panels. The Active instance in the instance affected by clicking "Set" on the Location tab, "Send" on the Chattab, etc.

The AutoConnect, AutoEnter and AutoAppear flags, previously only inthe .ini file, now are also in the Options menu.

New/changed menu items:
 Options
   AutoConnect // the same as the .ini file option of the same name
   AutoEnter   // the same as the .ini file option of the same name
   AutoAppear  // the same as the .ini file option of the same name

 Connection menu:
   New Instance // formerly "Connect"
   Delete Instance // formerly "Disconnect"
   Disconnect All  // terminates all instances.
   Enter World // causes an instance to enter the world
                        // specified on the Location tab, if that
                       // instance was created with "AutoEnter" off.

 Instance... // toggles the Instance List window

New Actions:
 SETINSTANCE @handle // selects the instance that will receiveActions;
                            // only necessary if you want to redirect actions
                            // to an instance other than the one receiving the
                            // event (in the context of the behavior table)

 SETACTIVE @handle   // selects the instance that appears on the control panels

 APPEAR   // causes the Active instance to move to thecoordinates
                 // on the Location tab
(changed:)
 CONNECT // causes a new instance to be created using the
                // information (name, world, coordinates, etc)
                // from the control panel

 TELEPORT $world // if option AutoEnterWorld is unchecked, botwill
                        // teleport to the specified world but not appear

New Functions:
 @newinstance[$name,@id,$password,@port,$address] // creates anew instance,
                                                         // returns instance handle

 @instance // returns the handle of the current instance.
                  // in the context of an action button or immediate mode command
                  // that is the instance shown on the control panels;
                 // in the context of the behavior table that is the instance
                 // receiving the event

 @activeinst // returns the handle of the instance shown in thecontrol panels

 @instindex[@handle] // returns the index in the instance list
                            // of the instance specified by handle

 @insthandle[@index] // returns the handle of the instance specified by index

 @instexists[@handle] // returns true (1) if the specified instance exists

Coming soon:

* Messaging between instances
* Instance ID's shown in the chat log; or chat log toggling (show onlyactive instance)

---------------------------------------------------------------------------------------

Other updates:

Recently I added the @vrt and $vrt functions to attempt to replace the older @vrtime and $vrtime functions. The older versions calculate VR time using your computer's clock and the time zone macro that you should set in the userdefs.udffile. (See userdefs.udf for instructions.) The newer versions attempt to use theAW uniserver to determine VR time, but the SDK methods provided for this don't seem to work as advertised, or else I'm misunderstanding something. :)

NOTE: With the 1/27/00 revision, variables have scope. Variables are local by default, meaning they are only visible within the Action they are defined in.Variables can be declared global using the new GLOBAL and GLOBALSTR commands, or the short form, e.g. @@i=1 or $$x="some text". (Local variables are still assigned using ASN or ASNS, or the short form, e.g. @i=1 or $x="some text".) Variables in Listsare always global. See MBotDocs.txt for more details.

NOTE: With the 11/23/99 revision, the @ItemNum function, formerly a macro in userdefs.udf, has been replaced with an internal function of the same name. If you're using an old .udf containing the @itemnum function definition, you should remove it.