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
YASBB Version history
yasbb41 V126.96.36.199 - V4 world 06/11/2011
- Rebuild for 5.1 version.
- Added world Attributes save/reload feature
- Improved terrain editing
yasbb41 V188.8.131.52 - V4 world 03/28/2009
- Added smaller terrain merge with target center specification possibility
yasbb41 V184.108.40.206 - V4 world 03/25/2009
yasbb41 V220.127.116.11 - V4 world 10/10/2008
- Added terrain merge feature for identical terrain sizes only
- Added terrain raise or lower function to terrain editing
- Added move selected terrain part within the whole terrain.
- Added more precise rectangle selection method than the cursor.
- Added optimized dump features where the program doesn't dump
those terrain pages where the heights and the textures are both zero.
option to skip those rows to build as a terrain where the heights and
the textures are both zero. (This optimization assumes the world's
terrain is deleted or blank!)
yasbb41 V18.104.22.168 - V4 world 8/26/2008
- Added some bubble help, built with SDK 75
yasbb41 V22.214.171.124 - V4 world 8/26/2008
- Added logfile append switch: -la or --logappend
- Added Attribute dump capability
- Added command line interface/parameters to automatize the survey functions:
filename - if you want to specify a different ini file than the
standard yasbb41.ini. The file name must have the full path specified!
- -p --propdump filename - if you want to do an automated propdump
- -e --elevdump filename - if you want to do an automatic elevation dump
- -a --atdump filename - if you want the attributes dumped automatically
- -l --logsave
filename - you probably want to save the log into a file
because the bot will exit after executed the requested commands.
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 V126.96.36.199 - V4 world
yasbb36 V188.8.131.52 - V3.6 world 03/24/2008
Fixed survey when the "use query" is not selected.
yasbb41 V184.108.40.206 - V4 world
yasbb36 V220.127.116.11 - V3.6 world 11/01/07
Fixed action field modification when replacing by model.
yasbb41 V18.104.22.168 - V4 world
yasbb36 V22.214.171.124 - V3.6 world 11/01/07
Fixed unexpected crash while doing model replace during survey
yasbb41 V126.96.36.199 - V4 world
yasbb36 V188.8.131.52 - V3.6 world 10/13/07
Added latest(build 66) SDK
yasbb41 V184.108.40.206 - V4 world
yasbb36 V220.127.116.11 - V3.6 world 06/05/07
Fixed crash when querying blank terrain
yasbb41 V18.104.22.168 - V4 world
yasbb36 V22.214.171.124 - V3.6 world 02/04/06
Fixed partial terrain build when the originating terrain was not symmetric
V126.96.36.199 - V4 world 12/18/06
Fixed misleading Build count reporting
Added malformed propdump line reporting
V188.8.131.52 - V4 world 11/04/06
Cosmetic GUI changes
V184.108.40.206 - 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.
V220.127.116.11 - V4 world 9/22/2006
- Added build speed automatic throttling
- Linked with SDK 63 DLL.
V18.104.22.168 - 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.
V22.214.171.124 - V4 world
- Linked statically with the latest SDK (build 62) so no aw.dll is required.
V126.96.36.199 - V4 world
- Fixed build error when using Version 3 propfile.
V188.8.131.52 - V4 world
- Fixed strange time out scenario when accessing big areas.
V184.108.40.206 - 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"
- 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
- 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
- Fixed survey problem when the world sends World
Attributes message during the survey (Thanks to Matt888 for discovering
- 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
- 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:
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
- 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
- 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
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
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.
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
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
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.
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:
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: