------------------
SSB2 Documentation
------------------

Subspace Biller 2 is very similar to BanG (SSC)... yet there are enough differences to warrant some documentation.  The biller manages all of the databases (user, score, squad, ban) for one or more servers - and ties servers together.

There are 6 operator levels in SSB2:
----------------------------------
-General Users (no access - what normal players get)
-Level 4 Op (Moderator)
-Level 3 Op (SModerator)
-Level 2 Op (SysOp)
-Level 1 Op (Group Operator)
-Level 0 Op (Billing Operator)

SSB2 also introduces the concept of groups - for a collection of zones.  All zones in SSB2 have a ZoneID and GroupID, allowing them to be grouped together for managability by a single operator account.  SSB2 also does away with the single biller password.  Zones may have unique passwords controlled by their group operator.

There are 3 group influence levels:
-----------------------------------
-Zone wide (influence in one zone only)
-Group wide (every zone sharing the same GroupID - indicated by a $)
-Network wide (all zones - indicated by a *)

Some commands show different results based on the operator level of the person using them.  Below are some commands with restrictions on different operator levels.

?addop (levels allowed to designate)
------------------------------------
-Level 0 Op (any)
-Level 1 Op (1-4)
-Level 2 Op (2-4)
-Level 3 Op (4)
-Level 4 Op (none)

?listop (levels allowed to list)
--------------------------------
-Level 0 Op (any)
-Level 1 Op (any)
-Level 2 Op (1-4)
-Level 3 Op (2-4)
-Level 4 Op (2-4)

?changeop (levels allowed to change)
------------------------------------
-Level 0 Op (1-4)
-Level 1 Op (2-4)
-Level 2 Op (3-4)
-Level 3 Op (4)
-Level 4 Op (none)

Finally we come to the command list.  Some commands require a certain operator level (or higher) to work.  Using ?man will display only the commands you have access to use (try it without logging in).

Command List:
-------------
-General Users-

?man (Command listing and help system.  Also can be used to get detailed help on other commands by using the syntax "?man <command>")
?password (Changes player login password.  Max 24 characters.  Syntax: "?password=<new password>")
?details (Displays your personal details.  Syntax: "?details=<personal commentary>")
?setemail (Change email address set in registration form.  Syntax: "?setemail=<new email address>")
?setname (Change name set in registration form.  Syntax: "?setname=<real name>")
?chat (Lists and sets chat channels.  Use the format ";<#>;<message>" to talk chat on channels.  Syntax: "?chat=<chat1>,<chat2>")
?addchat (Adds chat channels to your chat list.  Syntax: "?addchat=<chat1>,<chat2>")
?leavechat (Removes a chat channel from your list.  Syntax: "?leavechat <chat1>" or "?leavechat #")
?notifychat (Notifies you when somebody joins or leaves a chat channel that you are on.  Syntax: "?notifychat")
?squadcreate (Creates a squad and makes you the owner.  Syntax: "?squadcreate=<squad name>:<squad password>")
?squadjoin (Joins a squad.  Password is optional for the squad owner.  Syntax: "?squadjoin=<squad name>:<squad password>")
?squadleave (Leaves a squad.  Will not remove squad owner status or delete a squad.  Syntax: "?squadleave")
?squadlist (List the members of your squad.  Syntax: "?squadlist")
?squadowner (Show the owner of a squad.  Syntax: "?squadowner <squad name>")
?squad (Show which squad a player belongs to.  Syntax: "?squad <player name>")
?find (Find a player.  Syntax: "?find <part of player name>" or "?find :<exact player name>")
?ghost (Become invisible to ?find and ?whois.  Level 0 ops become invisible on chats as well.  Syntax: "?ghost")
?seen (Show the last time a player was online.  Syntax: "?seen <player name>")

-Level 4 Op-

?login (Logs into SSB2.  Syntax: "?login <password>")
?changeop (Changes SSB2 password.  Syntax: "?changeop <new password>" or "?changeop <operator #>:<new password>")
?whois (Show another person's operator level.  Syntax: "?whois <player name>")
?dop (Log out from SSB2.  Syntax: "?dop")
?banfree (Add a player to the banfree list.  Syntax: ?banfree <player name>")
?listbanfree (Show players on the banfree list.  Syntax: "?listbanfree")
?liftbanfree (Remove a player from the banfree list.  Syntax: "?liftbanfree <banfree #>")
?ban (Ban a player from the zone.  See "?man ban" for detailed info.  Syntax (recommended): "?ban -d# -k <player name>" - where # is the number of days to ban)
?listban (show active bans.  Syntax (recommended): "?listban -d" - the "-d" switch seems to be undocumented)
?liftban (Remove a ban.  Syntax: "?liftban <ban #>")
?commentban (Add comments to a ban.  Syntax: "?commentban <ban #>:<comments>")
?notifyban (Show a message when banned players try and enter the zone.  Syntax: "?notifyban")
?alias (List other names a player has used.  Will match by IP, MacID, ID2.  Syntax: "?alias <player name>")
?adduser (Create a user account.  Syntax: "?adduser=<player name>:<player password>")
?listop (List SSB2 operators.  A * indicates network-op and a $ indicates a group-op.  Syntax: "?listop")

-Level 3 Op-

?addop (Adds an operator to SSB2.  Syntax (recommended): "?addop -# <name>:<password>" - where # is the operator level)
?removeop (Removes an operator from SSB2.  Syntax: "?removeop <operator #>")
?info (Shows information for a given user including ban info.  Syntax: "?info <player name>")

-Level 2 Op-

**<message> (Broadcasts <message> to all zones.)
?bantext (Changes or shows the message banned players see.  Syntax: "?bantext" or "?bantext=<message>")
?extchat (Toggle on/off private and chat messages from other zones.  Syntax: "?extchat")
?groupid (Show this zone's group id.  Syntax: "?groupid")
?scoreid (Show this zone's score id.  Syntax: "?scoreid")

-Level 1 Op-

?addzone (Adds a zone to your group.  Syntax: "?addzone <score id>:<biller password>")
?listzone (Lists all zones in your group.  Syntax: "?listzone")
?removezone (Removes a zone from your group.  Does not disconnect.  Syntax: "?removezone=<score id>")
?recyclezone (Recycles a zone in your group.  Syntax: "?recyclezone=<score id>")
?changezone (Changes the current zone's password.  Syntax: "?changezone=<new password>")
?closezone (Shuts down a zone.  Syntax: "?closezone <score id>")
?notifyzone (Monitor zones connecting and disconnecting.  Syntax: "?notifyzone")
?groupreset (Resets scores group wide.  Syntax: "?groupreset")

-Level 0 Op-

?write (Saves all current database buffers to disk (SSB2 does this periodically anyways).  Syntax: "?write")
?read (Re-reads subbill.ini from disk to update biller settings without a network recycle.  Syntax: "?read")
?block (Toggles player block states (old - use ?banfree instead).  Syntax: "?block <player name>")
?networkreset (Resets scores network wide.  Syntax: "?networkreset")
?changepassword (Changes a player's password.  Syntax: "?changepassword=<player name>:<new password>")
?changename (Changes a player's name.  Syntax: "?changename=<old name>:<new name>")
?changesquad (Changes a squad's owner.  Syntax: "?changesquad=<squad name>:<new owner>")