BRenBot 1.41 01/17/2005 Whats New 1.41 (01/17/2005) 1. Fixed various half renguard issues (spamming, not properly detecting etc) 2. Fixed cpu lockup/cpu performance issues 3. Added !rgplayers and !nonrgplayers 4. Added support for configurable minelimit via scripts.dll 2.0 5. Added support for donation limitations 6. Added support for crate messages in gamelog in SSAOW 7. Added modules !kickmessage and cratemsg, to filter specific gamelog messages Table of Contents 1. Installing 2. Other Configuration Files 3. RenGuard Supprt 4. Commands 5. Modules 6. Player Guide 7. GSA Specific Features 8. WOL Specific Features 9. WOLSpy Clone (aka module gamespy_players) 10. Minelimit 11. Donation Limits 11. Changelog 12. Tips & Troubleshooting 13. Credits 1. Installing Win32: 1. Extract the archive 2. Edit brenbot.cfg and the config files 3. Be sure to input your remote admin options (IP, port, password). As stated in the server.ini file, even though it says "RenRemLinuxPort" you still use it for Win32 mode. 4. Read through the sections of brenbot.cfg and make sure you have customized everything that needs to be. 5. Start brenbot. Linux: 1. Start the LFDS with LFDS wrapper available at http://www.brenbot.com/wrapper. 2. Be sure that the wrapper responds to telnet connections, otherwise brenbot will not work 3. Extract the archive. 4. Edit brenbot.cfg and the config files. Be sure to set RenRemLinuxPort to the Wrapper's telnet port 5. Start brenbot If you want irc kill messages, auto recommendations, building stats and much more, you need to install support for gamelog on your server. Gamelog is included in a custom version of the SSAOW Mod by vloktboky. You can get it (for all OS's) on http://www.blackhand-studios.org If you have CP1 installed on your server, it is most likley that gamelog support has been allready installed. 2. Other Configuration Files masters.brf This file is a list of SERVER OWNERS or ADMINISTRATORS. The persons in this list have the highest access. Do not put normal moderators in this file. Be sure not to put any spaces before or after the name, and put each name on a line by itself. admins.brf This file is a list MODERATORS. Be sure to put only one name on each line, and do not have any spaces before or after the name. autoannounce.brf This file should contain strings of text you want announced at random times. There are several "cookies" you can use in the strings. Cookies are placeholders that are automatically replaced with variable information. Valid cookies are: MOSTKILLCOOKIE - Replaced with "Most KILLS last game was with frags" MOSTKDCOOKIE - Replaced with "The highest Kill/Death ratio last game was with " TIMECOOKIE - Replaced with "The local server time is hh:mm:ss" If you want some items to be seen more than others, just put more of them in the file, even one after another, it won't matter as the lines are chosen at random. brenbot.cfg Configuration file for brenbot. Read the file, its comments should guide you to configure it properly. recs.txt Can be used for the !recommend module to add/remove comments of the bot to players joining. brenbot.dat This is brenbots SQLlite database. It is not a normal textfile. Editing it with notepad or anything similar will most likely result in a corrupted database. If you really want to edit the contents you can download a demo version of (for example) SQLite from SQLabs at http://sqlabs.net/index.shtml?sqlitemanager help.txt This is the file that is referenced by the !help from IRC. messages.brf This file is a list of messages which IRC and in-game admins/moderators can display via the !postmsg command. Note that the first line/message is used as a response to !rules, so please put your game rules here. Be sure and make each line one long string. Example: No cheating! Rule #1 blah, Rule #2 blah, rule #3 blah blah blah blah blah Thank you for playing on blahserver. Visit our website at http://www.blah.com Do not put: Rule #1 Rule #2 etc. kicklog.brf This file is auto-generated and contains a list of players kicked along with the date they were kicked, who kicked them, and their IP address. It is safe to delete this file at any time, it will be recreated on the next kick. html (directory) This directory contains HTML versions of the log/IRC output. If you do not have this directoy or if the html module is not !set on then files will not accumulate here. 3. RenGuard Support See renguard.txt :-) NOTE: If you do not like to RenGuard to kick all players that use no RenGuard, you can turn on "Half-RenGuard". To do that, turn on halfrenguard = 1 in renguard.cfg Using Half-RenGuard, non RG Users will be publically announced that they are not using RenGuard, and they get an pamsg, explaining why they should install RenGuard. This message is configurable. Non-RG users may not use any !commands (except !help and !showmods), to encourage them to install RenGuard. Admins can use !forcerg to force a user to use RenGuard. Regular RenGuard users have access to !forcerg too. If 3 RenGuard users decided to !forcetc a suspected cheater, he or she will be forced to use RenGuard. You can use !rgstats to view your local RenGuard acceptance rate (rg users vs non-rg users). If it is over >85%, you should consider to upgrade too full-renguard mode, preventing any cheats on your server. If you ban a user using !ban and RenGuard is enabled, it will automatically ban by serial hash that was transmitted by RenGuard. 4. Commands All commands are prefixed with an ! statsme:Will display the player statistics (ingame only). restart:restart the Server (Take a note that anyone with a voice (+v) can execute this command) vehicles:Displays the vehicles that are in-game at the moment (gamelog must be enabled) ve:Displays the vehicles that are in-game at the moment (gamelog must be enabled) forcetc:Using this you can force people to change team even when the game is laddered, people will lose their points and money when you use this command (gamelog must be enabled) buildings:Will display the health of the buildings in game (gamelog must be enabled) bl:Will display the health of the buildings in game (gamelog must be enabled) stats :Will display the character information, health, armor, deaths, kills, building kills, vehicle driven (if any) of the player in question, ammount of destroyed vehicles donate :Players can donate money to players on their team example: !donate player 200 (gamelog must be enabled) page:Ability to page players connecting from GameSpy/ASE/ (bhs.dll support must be enabled). On WOL mode, this just wol-pages a user. msg: Sends a message in game from IRC. pamsg:Send an Personal Admin Message to a specific player (popup window in game) (bhs.dll support must be enabled) amsg:Send an global Admin Message into game, popup window. adminlist:Displays the list of moderators. addtempmod:Adds a temp-moderator. autoannounce:Plays a random autoannounce. deltempmod:Deletes a temp moderator. playerinfo:!playerinfo - Displays detailed playerlist (only of when given). gameinfo:Displays gameinfo. hostmsg:Relays a message to all players ingame. kicklog:Displays a log of recent kicks. banlog:!banlog - Displays a list of all bans for the given player. logsearch:Allows to keyword search for kicks and bans. gameover:Ends the current round. Usage: !gameover NOW gameover NOW:Ends the current round. Usage: !gameover NOW showmsgs:Shows a list of pre-defined messages. players:Shows a list of ingame players. nextmap:Displays the next map. shownextmap:Displays the next map. shownext:Displays the next map. showmods:Displays a list of ingame admins. status:displays a list of all commands. vote:Allows to vote. Use !vote help for more information. help:This help. setnextmap:Sets the next map. Use !gameover NOW to switch to it. delban:Removes a ban. Usage: !delban rotation:Displays the maprotation. maplist:Displays a list of all installed maps. seen:Displays how much time has passed since a person has been on this server. setjoin:Allows you to set a join message that will be played when you join the server. viewjoin:Displays your join message. recommend:!recommend - Recommends another player for good teamplay etc. rec:Alias for !recommend - see !help recommend. teamplayers:Displays a list of good known teamplayers based on recommendations. tp:Alias for !teamplayers - see !help teamplayers. kick:!kick - Kicks a player from the server. qkick:Kicks a user from the server and sends an auto-allow. (WOL only) ban:!ban - Permanently bans a player from the server. auth:!auth - Authorizes a protected user. modules:Displays the state of all modules. set:!set - Sets a module to on or off. teams:Checks if the teams are even and kicks players which made teams uneven! noob:[InGame] !noob - Adds a user to list of n00bs! n00b:[InGame] !n00b - Adds a user to list of n00bs! shownoobs:List all n00b players in the current game. shown00bs:List all n00b players in the current game. rules:Shows the server's rules. rank:Currently not avaible. version:Displays the bot's current version. uptime:Shows how long the bot is up since last restart. atm:Alias for !addtempmod - see !help addtempmod dtm:Alias for !deltempmod - see !help deltempmod pi:Alias for !playerinfo - see !help playerinfo gi:Alias for !gameinfo - see !help gameinfo kickban:!kickban - bans AND kicks a player from the server kb:Alias for !kickban - see !help kickban pl:Alias for !players - see !help players allow:Allows a player to join the server again after kick (WOL only) ids:Like !players but shows the ID of each player. msg:Alias for !hostmsg - see !help hostmsg atm:Alias for !addtempmod - see !help addtempmod dtm:Alias for !deltempmod - see !help deltempmod rehash:Reload all server configs. rginfo:Display RenGuard Network Info rglocate:Locates a user on the RenGuard Network cp:Displays all Core Patch Users, and their version rgstats:Displays RenGuard Acceptance Statistics 5. Modules Modules are program parts that can be disabled/enabled by the administrators. Use !modules to find out, what modules are supported: gamelog: This module provides detailed FDS gameplay logging and with this enabled !donate, !forcetc, irc "player killed victim" messages, auto-recommendations for players that repair tanks/buildings and player-specific info will be available. htmloutput: Produces HTML Logfiles. Be sure that a "html" subdirectory exists in your brenbot directory. gamespy_players: Displays a playerlist inside of ASE/Gamespy. Note that this is Linux only at the time of this writing. bhs: Enables BHS.dll support. donate: Donate money to team players (bhs only) seen: Enables !seen on the server. usermessages: Enables !setjoin / !viewjoin on the server teammessages: Displays Team Messages in IRC new_gi: New oneline gameinfo instead of old 5line-!gi recommend: Enables the recommendation System. This also includes the messages when a user joins. !n00b is included here. Pingresponse: BR reports ping when players request it teams: Automatically evens teams by warning recent teamchangers and then kicking them, if they do not change back. Good for big public servers with teamchoose on. gameresults: Enables/disables automatic recommendations after the round. autorecs: Automatic recommendations based on gameplay (gamelog only) renguard: RenGuard 6. Player Guide (by Sidetone1) The server bot, brenbot, is a tool which is not only useful for admin but for the players too. To talk to the bot while in game, use the F2 button (like typing to all players) Here are some of the player commands: !help requests the bot to list all commands !nextmap displays map coming up next !shownext same as !nextmap !shownextmap same as !nextmap !showmods displays all in game moderators !rotation displays maps currently on server (in order) !maplist list all maps installed on server !seen this with a player name (!seen sidetone1) tells when that player has last played on this server !setjoin this with a message (!setjoin I’m an asshole) sets that message to be displayed automatically everytime you join the server !viewjoin this command displays your current message !rec this gives honor points to a player and must be coupled with a reason (!rec sidetone awesome defense) gives sidetone 1 honor point, these are important and should not be abused !recommend same as !rec !teamplayers calls on bot to display all players honor points (who are in game) !rules displays server rules !rank displays rank (currently disabled) !n00b this command coupled with a name and a reason (!noob sidetone for putting mines on my stealth tank) marks a player as an idiot (like opposite of honor points) this should also be used only for a good reason !shown00bs displays current n00bs in game *note 00 is zero’s !noob same as !n00b !vote this is a voting system, you can vote for a kick, a ban, etc. to vote for a kick, do like this (!vote kick sidetone for being a cheating bastard). If someone else starts a vote, please vote as follows (!vote yes, or !vote no) after a short period the votes will be tallyed and a message will be displayed (vote passed or vote did not pass) and action will happen. You can also vote for a map as follows (!vote nextmap under) the difference is if this game will terminate or wait until it is over to go to the map. You may vote only 1 time per vote. !version this causes bot to display it's version !uptime tells how long bot has been running 7. GSA Specific Features Module gamespy_players: This module (LFDS only atm) creates a new UDP server that will be listed on Gamespy/ASE along with the orginal. This server on Gamespy/ASE shows exactly the same information as the orginal query Server but it additionally shows players that are playing on the server as well. In the future, we plan to enhance this feature, so it can completly replace the orginal query handler and add wolspy-like functionality. Protected Nicknames for GSA: On Gamespy Arcade, everyone can take your nickname by just joining your server. If your nicknames has admin access on your server, the fake user will have admin rights. Hence, we added the option to register your nickname with brenbot. To register your nickname with brenbot do in IRC: /msg botnickname register . So if your game-nickname is [CLAN]User and your password is "test", do: /msg botnickname register [CLAN]User test To authenticate your nickname with brenbot when playing on the server: /msg botnickname auth password If your game nickname is [CLAN]User and your password is "test", do: /msg botnickname auth [CLAN]User test People that have op/voice in the IRC Channel can auth any user without password. Usage. !auth where can be also be just a part of the username. e.g !auth User Notes: /msg botnickname means to open a query with brenbot in IRC (Nobody but you and the bot can see it). 8. WOL Specific Features Auto Invite - if a WOL user pages the server with "letmein", brenbot will automatically invite them whenever there is a free slot (maxplayers-1). If they decline the invitation via the decline button in renegade it will stop inviting them. If they sign off without declining, brenbot will clean up old invitations after one hour. Native RenRem Support - This is transparent to the user, but was quite a feat to accomplish. BRenBot can communicate with the Win32 RenegadeFDS without using renrem.exe or fdstalk.dll. This makes brenbot more stable, secure, and fast as it does not have to launch an external program every time it sends a message to the FDS. 9. WOLSpy Clone Since 1.36 adds the option to announce your WOL Server on Gamespy. There is an app called "WOLSpy" that does essentially the same. This is basically a clone. To enable Gamespy Announcing of your server, you must enable the gamespy_players module, and restart brenbot. You need to have these cvars in your brenbot.cfg Generate_Gamespy_Queries = 1 GameSpyQueryPort = 23500 Broadcast_Server_To_Gamespy = 1 Without Broadcast_Server_To_Gamespy, the open gamespy query port will not be announced to the gamespy master servers. This is usefull if you want an un-announced query port open for e.g php query scripts. If you are getting a warning that no primary IP can be found, setup Gamespy_IP = in your brenbot.cfg file, where the ip is your IP visible to the internet, binded to your local system brenbot reports much more information than a normal GSA server. For example, it displays all in-game players along with their scores and side. Even when you're using GSA (or Linux, for that matter). It might be good to block your orginal Renegade Gamespy Query Port Handler and let brenbot take over. To do this, you need to block incoming connections to your orginal Gamespy Query port (23500, for example). Then, setup brenbot to listen on another query port, and configure it to broadcast it's open port to Gamespy too. 10. Minelimit If you want to change your mine limit for specific maps, take a look at the included minelimit.cfg file. You need a scripts.dll 2.0 compatible server side mod for that. SSCP1 1.3 and higher comes with a SSAOW version that supports this. The syntax is: : ie C&C_Field.mix:30 You can check the current minelimit with !minelimit 11. Donation Limits You can set the amount of time that has passed before players can donate. This prevents early apc rushes via the included donate.cfg file. The syntax is: : ie C&C_Field:180 12. Changelog 1.41 (01/17/2005) 1. Fixed various half renguard issues (spamming, not properly detecting etc) 2. Fixed cpu lockup/cpu performance issues 3. Added !rgplayers and !nonrgplayers 4. Added support for configurable minelimit via scripts.dll 2.0 5. Added support for donation limitations 6. Added support for crate messages in gamelog in SSAOW 7. Added modules !kickmessage and cratemsg, to filter specific gamelog messages 1.40 (11/29/2004) 1. Added detailed fds logging (gamelog) to display various ingame live statistics. 2. Added BHS.dll support. (pamsg, ppage, forcetc etc) 3. Added auto recommendations for various gameplay actions 4. Added !amsg command to enable people on IRC to send an Admin Message into the game. 5. Added !restart, !shutdown command for restarting the FDS. 6. Added !gi command for a new one-line Game Info status command. It will display playercount/teamscore on one line. 7. Added IRC Channel keys are now supported, you can set this in the brenbot.cfg file. 8. Added !vote stop command to stop any votes in progress when voting is enabled. 9. Resolved various minor problems and optimized code. 10. When people type !help the response will now be paged to them instead of being displayed publically and cause some 'flooding' in some cases. 11. General code optimizations. 12. LOTS OF BUGFIXES 13. Added !donate command to give players the ability to donate money to their teammates (gamelog and bhs.dll required) 14. Revamped RenGuard Support, much more stable now 15. Added bhs.dll enforcement via a server config cvar. (set Force_bhs_dll = 1 in brenbot.cfg) 16. Added IP Banning feature (!ban automatically bans by IP too) 17. Added WOLSpy Clone for WOL Based servers (see section for install guide) 18. Added "Half-RenGuard" mode, that allows non-RG players into the server 1.36 (11/01/2004) Public Testing release, which turned into BRenBot 1.40 1.35 (04/14/2004) 1. WOL related RenGuard bugfix 1.34 (04/14/2004) 1. Various RenGuard Fixes 2. Added ability to ban by serial hash (RenGuard only) 3. Added !rglocate (RenGuard only) 1.33 (04/07/2004) 1. RenGuard Support (see RenGuard section) 2. Added !rehash command which reloads all configs (so you dont have to restart the bot after adding moderators etc.) 3. BRenbot now rejoins channel if kicked. 4. Reconnects to IRC if disconnected. 5. Proper spacing of name column in !playerinfo 6. Removed bogus !status command. 7. Removed dependency on perlglob.exe. Now using internal directory scanning code to get mapnames. 8. The above also fixes the "!shownextmap doesn't work" issue, as well as the "!setnextmap or !vote map blah" sets to an invalid map issue. 9. Removed BAN powers from TEMP mods. 10. Added code to make brenbot rejoin its home channel if kicked. 11. Minor code cleanup (removing debug code, cosmetic indention, etc) 12. Fixed bug where config file was not parsed correctly depending on spaces around the equal signs. 13. Removed hard coded autoresponses for "refill", "base to base", and "spawn kill". 14. Fixed issue with not getting a rec for most kills if you have zero deaths. 15. Removed !ban powers from TempMods. 16. Added highlighting of mods/tempmods names in !playerinfo 17. Added bounds checking for all msg commands to prevent buffer overflow/FDS crash exploit (including !setjoin/!viewjoin). 18. General code optimizations. 1.31 (04/01/2004) Fixed problem with auto-recommendations not working for LFDS or Win32+GSA. Fixed problem with LFDS not detecting the host IP. 1.30 (03/01/2003) lots of bugfixes migration of win32 code into one code base added native win32 renrem support added filter to !playerinfo (!pi ) made !playerinfo formatted nicely added !ids added !version added !uptime added !kickban (!kb) added !kick, !ban, !kickban by id added vehicle purchases added automatic recommendations after a round has ended added bold/underline nicknames for mods/tempmods added nickserv authentification added INVITE function (WOL mode only) 1.29 (10/09/2003) bugfixes added !shown00bs added !n00b changed gamespy broadcasting to every 5 mins Automatic IRC disconnect when disconnected from server 1.28 (10/05/2003) runtime Error Detection module support new gamespy query handler for extended information on ASE/Gamespy !teams !deltempmod bugfix !auth bugfix playing of random (nasty) recommendation messages when a player joins 1.24 (08/04/2003) irc channel bugfix 1.23 (07/24/2003) !auth playerlist being exported to htmlpages 1.22 (07/10/2003) bugfixes detection of Fakenicknames (extension) 1.21 (07/07/2003) !delban CTCP Version Reply detection of Fakenicknames 1.19 (07/06/2003) html export 1.18 (07/07/2003) distrinction of normal and oppped/voiced users on IRC 1.14 (07/05/2003) new banlist 1.13 (07/03/2003) added !teamplayers added !seen added !setjoin added !viewjoin 1.11 (06/16/2003) added "!vote map cyclemap" to change to the next map in rotation 1.10 (06/13/2003) added Mapvoting 1.9 (06/12/2003) first public release to selected testers added Q auth added !setnextmap added !maplist added !help 13. Tips and Troubleshooting If you have problems getting the bot to get on IRC, go back and check the brenbot.cfg line by line. If you failed to specify a unique botname, the IRC initialization will hang as it tries over and over to use that nick. Please note that if you are using Nickserv auth, the "NickServName" refers to the name of Nickserv on your network, not YOUR name. Some servers require you to message Nickserv, or AuthServ, or Nickserv@host, etc. If the bot works but you cannot send messages to the server (!msg test), then most likely you did not enter the correct info for Remote Admin Settings. Doublecheck your server.ini and make sure you are using the same port and password that is listed there, and make sure you are using the RemoteAdmin password and not the FDS password. The Host IP of 127.0.0.1 should work for most everyone. Note: The native RenRem support is such that your REMOTE ADMIN PASSWORD MUST BE EXACTLY 8 (EIGHT) characters in length. If yours is not you will get an error. Simply change the password in your server.ini and in brenbot.cfg to a new 8 character password. If you are still having trouble, post on the forums: http://www.renforums.com/viewforum.php?f=6 14. Credits Code & Design: Mac & Blazer brenbot is Copyright 2003-2005 by Blackhand Studios. All Rights reserved. Thanks to zunnie for helping with the documentation Thanks to zunnie & mcEGA for beta testing the win32 version Thanks to Sidetone1 for the player documentation Thanks to the Serveradmins of Teamplay@1Shell, StuTu, TeFoN, BKL, and n00bstories for beta-testing brenbot over a long period of time and suggesting many features. Also thanks to Sc0rian for beta testing the Win32 build. Thanks to Scorpio9a and Silent_Kane for deciphering RenRem/FDSTALK protocol, and to Jeff T. Parsons aka bynari (Jeff.Parsons@Webgeeks.co.uk) for helping convert the deciphered renrem to Perl.