Magsbot 3.0 Features and fixes:
(See the main help for more details.)

New features supporting AWB 3.3 / SDK 24:

The OBJECTCLICK event now returns extra object info (name, location etc.)

send and receive "console messages"
(called "announcments" in Magsbot, I think that sounds more descriptive):

Announcement panel added

ANNOUNCEMENT (receive console message) event. The text is found in $atr[CONSOLE_MESSAGE]. Hm, I guess we should have an $announcement macro for consistency. I will leave that as an exercise for the user. :D

ANNOUNCE $who $message
ANNOUNCE_ @session $message
  (use AWINT CONSOLE_RED=...etc., to set color; also AWINT CONSOLE_BOLD, _ITALICS)

Eject command using citizen number or computer id:
(see main help for details)

EJECTADD $ip @time $comment ADDRESS
EJECTADD @comp @time $comment COMPUTER
EJECTADD @id @time $comment CITIZEN

EJECTDELETE $ip @time $comment ADDRESS
EJECTDELETE @comp @time $comment COMPUTER
EJECTDELETE @id @time $comment CITIZEN

EJECTLOOKUP ($ip, @comp or @id)
EJECTNEXT ($ip, @comp or @id)
EJECTPREV ($ip, @comp or @id)

Global mode:

Global mode checkbox on NewInstance

Options/Connection/Global mode menu item (specifies default setting)

GLOBALMODE @cond
changes Global Mode menu item

Added optional args to @newinstance: @entermode, @appear

ENTERWORLD  $world
ENTERGLOBAL $world

Building with 3-axis rotation:

New attributes are available for events:
OBJECTADD
OBJECTCLICK

Added new versions of object creation functions, to use with 3-axis rotation:
@objectchange_
@objectadd_
@objectload_

The old versions have optional extra arguments to support 3-axis rotation. (They do exactly the same as the new versions, and preserve backward compatibility; but I like order of arguments in the new versions better, putting tilt and roll after yaw, instead of tacking it on the end following the action field.
@objectchange[...]
@objectadd[...]
@objectload[...]

BUILD and LOAD now support new tilt and roll attributes.

The following command still exist, but they are obsolete (the equivalent functions, show above, are preferable) and so I haven't added 3-axis support for these:
OBJECTADD_
OBJECTLOAD_
OBJECTCHANGE_

There's a new "include tilt,roll" checkbox on the survey dialog.

New surveying commands and a function:
SETSURVEY3AXIS @cond
SETBUILD3AXIS @cond
@axis3

Terrain:

There's now a terrain query dialog, similar to survey dialog.

New events:
TERRAINBEGIN
TERRAINCHANGED
TERRAINDATA
TERRAINEND

...and some callbacks "events":
DELETEALLTERRAIN
SETTERRAIN

Terrain commands:

Commands to set terrain query options on terrain dialog programatically:
SETTERRAINSTART
RESETTERRAINSTART
SETTERRAINFILE
TERRAINTOFILE
TERRAINFAST
TERRAINTOBEH

Begin or stop a terrain query programatically:
QUERYTERRAIN
STOPTERRAINQUERY

Commands to alter terrain:

DELETEALLTERRAIN command
SETTERRAIN @cell_z @cell_x @texture $heights
BUILDTERRAINPAGE @page_z @page_x $file

(This will be in a later version:)
SETTERRAIN @cell_z @cell_x @texture { @ht1 @ht2 @ht3 ... }

(This will be in a later version:)
BUILDTERRAINNODE  @cell_z @cell_x @nodesize $file

Functions related to terrain:

@querying

@texture[@p,@i]
@height[@p,@i]
SETHEIGHT @p @i @n
SETTEXTURE @p @i @n



Other changes
 
 
 

You can save and get text from clipboard using the CLIPBD command and $clipbd function, by request of Nathan.

I changed how whisper command is reported in chat window, to account for possibility of really large numbers of people in nearby list (now it just says "Mags (to selected): chat message" instead of "Mags (to Name1,Name2...): chat message" if there are more than a few avs nearby.

New functions and commands to allow avs on the nearby list to be selected by session number instead of name, when desired:

New:

@ispresent_[@session]
@selected_[@session]
@tagged_[@session]

SELECT_ @session
UNSELECT_ @session
TAG_ @session
UNTAG_ @session

AVTELEPORT_ @session ...
AVWARP_ @session ...
AVCLICK_ @session
EJECT_ @session

Changed:

@sessionof[$name,@lastfound];
returns NEXT session with specified name,not counting @lastfound; set @lastfound=0 or omit, to find first session with specified name

@ispresent[$name]
returns NUMBER of avs present that have the specified name

@selected[$name]
returns NUMBER of avs selected that have the specified name

@tagged[$name]
returns NUMBER of avs tagged that have the specified name

These commands now act on ALL nearby avs with specified name:

SELECT $name
UNSELECT $name
TAG  $name
UNTAG $name
AVTELEPORT $name
AVWARP $name
AVCLICK $name
EJECT $name

Avatar tracking can now be turned on/off for each individual instance. The AvTracking menu item determines if tracking is on or off for newly created instances.

AVTRACKING @state
changes the menu setting and default state

AVTRACKING_ @state
changes the setting for the current instance

@avtracking_
true when av tracking is on for current instance

More changes:

Macros can now override functions of the same name. In other words, if you create a macro with the same name as an existing function, your macro will get called instead of the function.

Changed how bot aliases work, so each instance can have it's own aliases ( = changed @botcmd macro in userdefs.udf)

I rearranged the Insert Event dialog, putting events in a more logical order.

If error when loading buttons, a popup edit box will let you correct it instead of just stopping the load process. The same thing for errors in the behavior table.

New commands for button categories:

SAVECATEGORY $name $file
DELCATEGORY $name
ADDCATEGORY $name