YASBB - Yet Another Survey Build Bot

YASBB started as a small project to survey/build inworld with a simple GUI bot. It grew out it's short description in my tools webpage, so I created this more detailed webpage for those who want to explore it's capabilities.

YASBB Version history

yasbb41 V3.4.10.113 - V4 world  06/11/2011

yasbb41 V3.4.2.104 - V4 world  03/28/2009

yasbb41 V3.4.1.103 - V4 world  03/25/2009
yasbb41 V3.3.10.101 - V4 world 10/10/2008
yasbb41 V3.3.9.99 - V4 world 8/26/2008
yasbb41 V3.3.8.98 - V4 world 8/26/2008
yasbb41.exe -p c:\alldumps\abpropdump2.txt -e "c:\elev dumps\abelevdump.txt" -a abatdump1.txt --logsave autolog.log
Always use "space" between all the parameters. Their sequence is indifferent. If the file name contains a space, use the " " quoting

yasbb41 V3.3.7.96 - V4 world
yasbb36 V3.3.7.96 - V3.6 world 03/24/2008
  • Fixed survey when the "use query" is not selected.

  • yasbb41 V3.3.4.93 - V4 world
    yasbb36 V3.3.3.91 - V3.6 world 11/01/07
  • Fixed action field modification when replacing by model.

  • yasbb41 V3.3.3.91 - V4 world
    yasbb36 V3.3.3.91 - V3.6 world 11/01/07
  • Fixed unexpected crash while doing model replace during survey

  • yasbb41 V3.3.2.90 - V4 world
    yasbb36 V3.3.1.89 - V3.6 world 10/13/07
  • Added latest(build 66) SDK

  • yasbb41 V3.3.1.89 - V4 world
    yasbb36 V3.3.1.89 - V3.6 world 06/05/07
  • Fixed crash when querying blank terrain

  • yasbb41 V3.2.9.88 - V4 world
    yasbb36 V3.2.9.88 - V3.6 world 02/04/06
  • Fixed partial terrain build when the originating terrain was not symmetric

  • V3.2.8.85 - V4 world  12/18/06
  • Fixed misleading Build count reporting
  • Added malformed propdump line reporting

  • V3.2.7.83 - V4 world  11/04/06
  • Cosmetic GUI changes

  • V3.2.6.82 - V4 world 10/25/2006
        - Added Terrain tiled texturing. This feature is useful if you want to cover your terrain with a larger texture. The program is capable to put/replace original textures with a tile matrix. The splitjpg utility can create the terrain textures according to this naming convention (only square jpg format is accepted). This table shows how the textures placed when you define the TileStart=0 and TileSize=4 (4*4=16 textures total) :
    4N 4W   terrain0.jpg 4N 3W   terrain12.jpg 4N 2W   terrain8.jpg 4N 1W   terrain4.jpg 4N 0W   terrain0.jpg
    3N 4W   terrain3.jpg 3N 3W   terrain15.jpg 3N 2W   terrain11.jpg 3N 1W   terrain7.jpg 3N 0W   terrain3.jpg
    2N 4W   terrain2.jpg 2N 3W   terrain14.jpg 2N 2W   terrain10.jpg 2N 1W   terrain6.jpg 2N 0W   terrain2.jpg
    1N 4W   terrain1.jpg 1N 3W   terrain13.jpg 1N 2W   terrain9.jpg 1N 1W   terrain5.jpg 1N 0W   terrain1.jpg
    0N 4W   terrain0.jpg 0N 3W   terrain12.jpg 0N 2W   terrain8.jpg 0N 1W   terrain4.jpg 0N 0W   terrain0.jpg

        - Fixed terrain build when the original rectangle was different then the world size.

    V3.2.4.78 - V4 world 9/22/2006
        - Added build speed automatic throttling
        - Linked with SDK 63 DLL.

    V3.2.1.71 - V4 world
        - Fixed several terrain related bug due to the 4.1 conversion.
        - Added a few terrain texture editing feature.
        - The program can read 3.6 and 4.1 terrain versions properly.

    V3.1.4.68 - V4 world
        - Linked statically with the latest SDK (build 62) so no aw.dll is required.

    V3.1.3.67 - V4 world
        - Fixed build error when using Version 3 propfile.

    V3.1.2.66 - V4 world
        - Fixed strange time out scenario when accessing big areas.

    V3.1.1.65 - V4 world
        - Modified for use in V41 universe. This is a beta - please test thoroughly!

        - Fixed time out when doing plain query 5x5.

        - Added a different covered area selection type for the survey module. One can now specify the survey area by a rectange with the upper left and lower right corner coordinates by selecting the "Use Corners" checkbox.
        - Added an automatic model replacement/deletion option for the survey.
        - Added an automatic Citizen deletion option to the survey.

        - Added checkbox for Terrain texture editing to ignore the original texture (useful for replacing ALL textures within the rectangle)

        - Added "Batch build" feature. The batch building is reading from a list file the target coordinates and the source rotation parameters together with the propfile name. This feature is excellent to make a proper Bingo world e.g.
    Format is (the values are in AW Coordinates and degree):
    # North     West       Height       RotN      RotW       RotAngle     Filename
    -11.0            6.3           0            0              0            -90           d:\emm\bingobot\1.txt
      2.0            -13            0            0              0            180           c:\mycrwxs\centerobj\multiple.txt

        - Fixed survey problem when the world sends World Attributes message during the survey (Thanks to Matt888 for discovering it)
        - Added checking to the survey range so it will always be within the world's boundary

        - Added ownership change while surveying. The bot should have ED rights to be able to do that!

        - Refined the ReplaceWhileSurvey feature

        - Added sanity check on the terrain sizes. The program now will limit the saveable/viewable terrain to a P3200 world size.

        - Added "PreClear" option when appending an area onto an existing prop. The program will preclear all objects which are within the newly surveyed rectangle.

        - Fixed bug when doing survey and accidentaly closed the target file resulting an empty propfile.
        Advice if you are surveying only a part of a world: Use the "Use Query5" checkbox - the CellSequence method is flawed by AWI's server :(
        - Added a "Save InReadableForm" checkbox which modifies the propdump format to a human readable version like:
            Owner=307626 1801.45S 2659.41E  0.00a  -90.0 model=walk009h.rwx     desc=Druid Way

        - Added terrain texture changing feature (further terrain manipulation will follow sometimes).

        Click on View/Edit ElevDump and provide a previously obtained elevdump's filename and location.
        Doubleclick on the little picture to get a bigger and editable one.
        On the top menu select terrain view - (default is elevation view)
        With the left mouse button you can select an area you want the texture modification taking place.
        Right click on the picture and you'll get aChange Texture ... popup menu.
        In the Change Texture Dialog box you specify the old and the new terrain values and you can force it to the whole world or only to the selected area.
        After several changes made, just click on the Save Edited ElevDump button on the main window (you can close the picture)

    The resulting file is a standard elevdump, so you can put it back to the world with the admin tool, or you can do it with the same YASBB program.

        - Cosmetic changes while doing the tutorial.
        - Automatic elevdump file creation when clicking on the SaveWholeWorldAsElevdump.

        - Disable Borland's CodeGuard feature causing GPF in cg32.dll .

        - Added terrain building feature. It can build a part of an elevdump to anywhere in the world (moving terrain);
        - Added terrain survey where the terrain is saved from the world in elevdump format (the original query method doesn't work due to a bug in the SDK/Server)

        - Added "Replace" in action field feature. Usefull for mass-replacement of URLs.

        - Added Rotate option to the build tab. One has to specify the original prop's center and the angle for the rotate
        - It can read the huntbot's object files for delete now
        - Warning: seems like the survey has some serious problem! If there is an isolated building spot beyond the regulad building areas - the survey can either go into an infinite loop or just simply misses the surveying completely. I'm still working on the solution :)

        - Added terrain survey option. The program queries the terrain within the given range and it can be saved as a bitmap or as a terragen .ter file

        -   Added search and delete feature where if an object's action field contains the given string, the object is deleted while surveying (excellent tool to handle mass vandalism)
        -   Added Delete tab - where one can delete objects based on the given propfile.

        - Added "AppendProp" feature so one can survey the world in chunks.
           The program now saves the last surveyed coordinates, so you can continue from there anytime by clicking on the Survey button with AppendProp checked.

        - Added "WholeWorld" option for survey . This feature greatly speeds up the whole world survey (about 10x or more) .
        - fixed access to OW when only the port specified.
        - Eliminated missing DLL (thanks to Ptolemy)
        - added old propfile recognition.
        - initial release

    How to use YASBB? A simple tutorial.

    There are features you won't be able to use if you are not a caretaker of your world - like terrain modification or build under different credentials. You should have bot right in the worlds you want YASBB to operate (duh). The numeric fields/parameters are in AW units (dekameters) if othervise stated, angles are given in degrees. N-S or W-E directions can be given by the appropriate radio boxes. The log area is editable with the standard Windows RichEdit tools, you can copy it to the clipboard for later processing, delete it to clear the log field.

    Let start with the default window once YASBB starts first time:

    First you want to fill out the bot credential fields, so anytime you run it, it will know where to run. You can leave the Universe and Port fields blank, if you use it in the AW universe but put the authorization server and port into those fields when running in a different universe. Fill the Citizen and PrivPass fields with your credentials in the given universe. You can put any worldrs into the World field where you have Bot rights.
    The bot has 4 major functions separated into tabs where you can navigate simply selecting the appropriate tabs at the top-left. When you logged in into the world, you still can switch between the tabs performing multiple actions.
    Note that the log field you'll get the relevant information of the world you are logging in, where the terrain min value indicate the calculated minimum terrain page index (128x128 cell size pages).

    1, Build tab.

    The bot can either seed an object for you, build from a propfile or build a terrain from an elevdump file


    You are in the middle of a desert in the world and there is no objects around for starting the build. You can place a seed object there with checking the SeedOnly checkbox. You are presented then with a new field where you can specify the object name you want to use as a seed object. You need to fill the Offset Values with your current coordinate (or with the desired one) which tells the bot where to place the seed object. Clicking the SEED! button will place the object to the given location. (Don't forget to start the bot in the desired world othervise you won't be able to click on any action button:)


    Note that the log field you'll get the newly built seed object's detailed information.


    The bot will build the WHOLE propdump you provide for it! You are presented with a plethora of parameters you have to fill out.
    First you have to specify the center location of the new building area. The old prop's GZ will go there. You have the opportunity to rotate the given prop around any point before the build takes place if you select the Rotate Before Build checkbox. You have to specify the center of the rotation based on the old prop's coordinates and the rotating angle in degrees. Positive angle will rotate counterclockwise (to the west).

    If you select the Simulate checkbox, the bot will not actually build but only lists it's result in the log box.


    You have an opportunity to delete the whole terrain from your world by clicking on the DeleteOldTerrain button. You have to confirm your action of course.

    The bot builds a new terrain to your world from a previously aquired elevdump. You can use any elevdump from any world as your source database. You should specify the center location of the old terrain and its size in both direction in dekameters (10m=AW Unit) and you have to give the target center coordinate with an optional height offset. Clicking the Build Terrain button, you have to provide the elevdump file.

    The bot will then calculate if the available database covers the given area and will ask you for confirmation if there is insufficient data to build. You have the choice to continue with the newly calculated sizes or simply quit.

    2, Get Terrain tab.

    This tab has a few features which turned out flawed because a bug in the world server. The primary purpose was not to query the whole world's elevation but only a smaller range around GZ but the world server simply misses several elevation gridpoints with that method. When used, you'll get a visual representation of your world's terrain and you can save it as a Terragen or as a Windows Bitmap file for processing in DEM2Rwx later. Selecting the SaveAsElevDump checkbox, the program will automatically save the queried area as an elevdump file.
    To fully query the world, you simply click on the Save Whole World.. button which will query the whole world, create and elevdump file but you won't get the visual representation.
    I'm not planning to modify this part of the program until AWI fixes the world server.

    During the whole world dump, you'll have a small progress indicator which page the program currently saves.

    Terrain Editing:

    YASBB has a limited terrain editing capability. One can edit the terrain region by changing its texture either from an existing one of all of them.

    There is a new editing feature where you can move or copy the selected rectangle and change its elevation meanwhile.

    The Safe Move usage is necessary when the source and target rectangles are overlapping.
    The program uses a temporary file to make the move/copy when this checkbox is selected. This feature has significant speed implication on huge terrains!
    When moving the rectangle, the program will blank out (set the elevation to 0.0m and the texture to 0) the originating area.
    Example of several copies:

    Switch between the Elevation or Textures by the menu and you can edit both.

    Merging another terrain inside the existing one you should check the "Merge Terrain" checkbox before loading the second terrain.

    There is a limitation of merging: Only smaller or equal size terrains can be merged. When a smaller terrain merge requested, you can offset it within the current terrain by specifying the new terrain's new center location: If the coordinates are negative, it means South and East respectively. The elevation offset should be specified in centimeter.

    The merged terrain with those parameters would look like:

    3, Delete By File tab.

    This is the simplest function yet within this bot. You can delete certain objects from the world if you surveyed first with the so called object numbers. This is an extended propdump format created by YASBB and I use this format in several other bots I made (huntbot, guardbot, proptool, etc)

    4, Survey tab.

    The survey tab has several special feature. To do a simple survey (propdump copy of a region) you have to specify the center coordinate of the surveyed area and the rectangle size you want to cover. Use the Single Cell Query if you have trouble to obtain the full database or select the UseQuery5 for a potentially faster method.

    Plain survey:

    If you select the WholeWorld, the coordinates doesn't have any meaning. Selecting the ObjectNumForDelete, the bot will create the extended propdump, which you can manipulate with the proptool and do a deletion later with the Delete By File tab. using the AppendProp, you are able to survey separate areas into a single propfile.

    Delete While Survey

    Another great feature of the survey tab that you can delete certain objects while doing the survey itself. It is very handy to deal with certain type of vandalism.
    When you select the DeleteWhileSurvey, the bot checks each objects if its action or description lines has a match with the given string. If match found, it deletes those objects. The matching happens with case insesitive search within those lines. All of the surveyed objects (even the deleted ones!) are recorded in the propfile. With selecting the DeleteOnly checkbox, the program will record only the deleted objects into the propfile, so you can rebuild later if you made a mistake.

    You can use the ClearAction checkbox together with the DeleteOnly box for modifying (NOT DELETING) the matching objects  inworld, explicitly clearing the action field. The log file will still contain the original action field. This is the best method for the HuntBot's score field clearing while the bot still can maintain the scores.

    Replace While Survey

    There is one more process you can execute while surveying is to replace a part of the action field with another action or to change the object's ownership from one citizen number to another one.
    Action change can be useful to change the appearance of an area:

    Taking ownership:

    5, GetAttribute tab.

    That is nothing else but a button which you click to save the world attributes in atdump version 4 format.

    That's all folks.

    Page visited since 11/23/2003: