Xelagot offers two sets of building tools. A simple one-object building tool is explained in the section on verbal commands: Build, Seed. A more complex tool is offered by the Survey Manager, menu Uni item Survey Manager.
Before explaining how the survey manager works, I would like to say a few words on what sort of information is made available to SDK bots by world servers.
Active Worlds worlds are layed out in grid form. The tiniest element of this grid is the cell. A cell is a column of unlimited height which has a horizontal 10m x 10m cross-section, i.e. 20 clicks x 20 clicks. All objects build in a world have one specific coordinate which represents the whole object. This coordinate is situated within one specific cell, even if the object or most of it covers the area of other cells. In extreme cases, a cell might be totally empty, yet covered completely or almost completely, causing the famous 'you may not encroach' notice. And vice-versa, a cell might be quite full, causing the BI to squeak 'build somewhere else', yet seem quite empty.
The sector is a larger unit containing 8 x 8 = 64 cells. It's 80m x 80m.
The next large element is a collection of sectors, called a zone. A zone has a central sector, and a few sectors surrounding it, forming a square around it. There are zones of two sizes: 3x3 sectors and 5x5 sectors. A 3x3 zone has a central sector surrounded by 8 sectors, and is 240m x 240m. A 5x5 zone has a central sector surrounded by 8 sectors like the 3x3 zone, these are surrounded by 16 sectors; it is 400m x 400m.
|In these pictures, the smallest squares represent cells. The larger ones, with thick blue edges, are sectors. Notice that the central sector is in the middle of the picture.|
So what...? Well, a bot cannot see objects, it has no access to the object path. It is only able to query the server for information about the objects within one zone at a time. The server will send information about cells in a requested sector (the central sector), and about cells in the 8 or 24 surrounding sectors. Once all the information is sent, the server sends live updates of the zone: if anything changes, the bot will receive a message saying what has changed. The information the bot gets from the server about these objects is this:
The bot does not get any information about:
When a bot attemps to build or delete objects, it sends a request to the world server, which then sends a failure or success message back to the bot.
They can query a server for information about property, map this information, and make it available to the user in the form of a Survey. The Xelagot user can then make a Project, selecting certain objects from the survey. The project can be kept as a backup for restoring losses, or used to delete the property; or the project can be moved to other areas, rotated, and made ready to copy the property somewhere else.
Overcome the limitations imposed by the SDK, e.g. they cannot accurately show a map of an area, only certain cell properties are shown.
Delete other people's property unless it has ED (Eminent Domain rights). As for tourist property, only a PS (Public Speaker) or ED (Eminent Domain) owner of a xelagot can order it to destroy it (that is a limitation I built in, the SDK allows anyone to delete tourist property, so other bots may or may not do it).
The Survey Manager can query the world server. It will store the information it receives from the server as a Survey. If the user makes a Project from the Survey, that too is stored by the bot. No objects in Active Worlds are built or deleted until the user issues the appropriate commands in tabs Build or Destroy, so the user can safely manipulate his/her project.
Follow the steps in this section: "Survey", "from Survey to Project", "cleaning up", "consolidating, saving, loading". You may not modify the objects in the project, because that would remove the one-to-one correspondence with the objects in the virtual world: omit the section called "transforming".
Same steps as for deleting property, only now you may apply transforms.
The only way to move property is by making two projects: one for deleting the old property, one for rebuilding. Make first the "delete" project and save it (e.g. myoldhouse.xlg).You don't need to make the "rebuild" project from scratch, just reload the delete project and save it with a different name (e.g. mynewhouse.xlg): you can then apply transforms to this new project and save it again under the same name (mynewhouse.xlg). Use myoldhouse.xlg to delete the existing property, rebuild it somewhere else using mynewhouse.xlg.