Jump to content

Bot Version: 1.1.0


Recommended Posts

This bot features several Renegade-X plugins. The nature of this bot is modular in design, so you can easily swap specific features in and out as you please. As such, feel free to post your own additions, as well as feedback.

Major features include an IRC bot and a Renegade X RCON bot. TeamSpeak support may be added at a later date, as well as possibly a number of other mediums for easy and convenient server administration. For now, the primary means of using this bot is still by using IRC.

Please note that you should secure your administrator channels to prevent public display of IP addresses.

Most configuration files are in the Configs folder. The minimal configuration to get the bot to run as intended will be setting up an IRC connection (3 examples are given) in IRC.Core.ini, and setting up RenX server connections in RenX.Core.ini. You can set which plugins to load in Config.ini (in the same folder as the .exe, not in the Configs folder).

Latest Release

Change log:



* Added PackagedBuild CMake target
* Remove Jupiter::ArrayList
* Refactor effort to remove Jupiter string usage started
* Improve GitHub actions usage; both Ubuntu & Windows packages are now built and published as artifacts on every commit
* Readded RenX.Relay (previously removed in 1.0.1) per bug fixes & addressed language considerations
* Fixed various bugs and stability issues with RenX.Relay
* Misc bug fixes and improvements

-- Previous Release Notes --


Removed RenX.Relay plugin


* RenX.Relay plugin
* Various chat logs and commands added (i.e: admin messages, admin warnings, etc)
* New commands: nmode, smode, cancelvote, tchatban, mute (in-game)
* Can now see when bans expire in bsearch
* Various behavioral and crash fixes
* Replaced project files with CMake
* Compilation fixed on Linux as part of CMake refactor
* OpenSSL binaries are no longer included in Windows binary releases. Windows users should download OpenSSL using winget, chocolatey, another package manager of your choice, [ShiningLight](https://slproweb.com/products/Win32OpenSSL.html), or by whatever other means preferred.


Added some missing command permissions settings to IRC.Core.ini

IRC.Core.ini now rehashes correctly

Fixed a bug involving 1-line text files


THIS RELEASE REQUIRES FULL RECONFIGURATION OF THE BOT, AND DELETION OF EXISTING DATABASES. This extreme of an update is unlikely to happen again in the foreseeable future.

Now ISC licensed

Added full RenX RCON v4 support

- Added full Unicode escape sequencing; data is stored as UTF-8

- Added HWID banning

- Level GUIDs are now tracked

Added non-blocking RDNS support for resolving player addresses

Player RDNS bans are fully supported

Added kick/ban exemptions

Added plugins:

- HTTPServer; used by other plugins (such as RenX.Ladder.Web)

- IRC.Core; initializes IRC connections

- RenX.AlwaysRecord; starts demo recordings at match start

- RenX.Ladder

- RenX.Ladder.All-Time

- RenX.Ladder.Yearly

- RenX.Ladder.Monthly

- RenX.Ladder.Weekly

- RenX.Ladder.Daily

- RenX.Ladder.Web; generates web pages on request to display ladder data

- RenX.MinPlayers; regulates bot count to maintain a minimum number of players + bots

- RenX.ServerList; pages suffixed with ".jsp" strictly for consistency:

-- servers.jsp; JSON/Launcher output

-- server.jsp; JSON/Launcher server-specific extended data)

-- browser.jsp; Custom format/Game

-- servers_long.jsp; JSON/Human

Removed plugins:

- RenX.Stats (unused/unfinished/obsolete)

- RenX.DNS (obsolete)

Added commands:

- MineBan (IRC & Game)

- AddBan (IRC)

- AddExemption (IRC)

- GameInfo (IRC)

Changed commands:

- Gameover now accepts parameters "now", "if empty", "empty", "stop"/"cancel",

- Removed "sync"

Added basic game commands (i.e: !ts, !irc, !web)

Added handling & IRC logs for "SpeedHack;" and "Overmine;" warnings

Game commands can be disabled by setting negative access level

All INI files are now up to date

Numerous bug fixes, optimizations, updates, and improvements


Accidentally skipped this version number!


Added "RenX.Ladder" and "RenX.MinPlayers" plugins

Player proximity placements/disarms are now tracked.

Map rotation is now tracked

Added "rotation" command

"setmap" now uses the map rotation

Fixed a bug in RenX.Medals

RenX.Medals now rewards MVPs

General code improvements


Added parsing and logging for Radio chat.

Added some translations (TS_ namespace).

Fixed a bug where OnPlayerDelete wasn't called when players were deleted on server disconnect (this broke RenX.Medals).

Server connections without a configured hostname or port are not disconnected on Rehash anymore.

Some other stuff


IRCPrefix is now prepended to all IRC output messages (if defined)

Added IRC/Game commands: "Kill", "Disarm", "DisarmC4", "DisarmBeacon"

updateClientList() is now called on a configurable interval (default: 2500 milliseconds)

Added parsing for "map" command response.

Corrected "DonateFormat" key name.

adminType is now set to an empty string if the type "None" is returned in the client list.

Fixed some parsing in BanDatabase.

Fixed name buffer not getting flushed before use.

Players are now rechecked for ban matches on an ID change.

Fixed a minor bug in the "mods" game command.

UUID revamp (removed config option)

Added RenX.NicknameUUID plugin.

Added RenX.HybridUUID plugin.

Added "PlayerTable" IRC command

Added safety check to "addmod" IRC command

Added RenX.Listen plugin.

IRCPrefix is now parsed for tags.


Added configuration options "PrintToConsole", "FilePrefix", "ConsolePrefix", NewDayFormat" to RenX.ExtraLogging

Added another search mechanism for DelIRCCommand.

Added parsing for "serverinfo" command response.

"serverinfo" is now sent on connect.

Moved HostChat logging from command interpretnation to "HostSay;" CHAT log.

Added logging for events: RenX_OnTSVehicleCrate, RenX_OnRAVehicleCrate, RenX_OnMapStart

Added reasons to kicks and bans.

Added reason to BanDatabase entries (old databases are automatically updated).

Added BuildingInfo tracking.

Added BuildingInfo tags: {BNAME}, {BRNAME}, {BHEALTH}, {BMHEALTH}, {BHP}, {BHBAR}, {BCOLOR}, {BTEAMS}, {BTEAML}

Added "BuildingInfo" IRC Command.

Removed default access requirements for "PlayerInfo" IRC Command.

Added server pinging/timeouts.

Added GenericCommand implementation, and swapped many non-RenX IRC commands to GenericCommand.

Updated to Visual Studio 2015 RC


Removed all Beta 1/2/3 code

Fixed kick/ban bots

Added missing spaces around "vs" in default kill message

Removed old debug line


Added RCONv3 (Beta 4) support:

* Added additional weapon translations

* Added some projectile translations

* Added Silo translation

* Replaced RenX::getTeam() with 2 different getTeam() functions

* Removed RenX::sanitizeString() for C-style Strings.

* Added events: OnDisarm, OnExplode, OnCharacterPurchase, OnItemPurchase, OnWeaponPurchase, OnRefillPurchase, OnVehiclePurchase, OnVehicleSpawn, OnSpawn,

OnBotJoin, OnVehicleCrate, OnDeathCrate, OnMoneyCrate, OnCharacterCrate, OnSpyCrate, OnRefillCrate, OnDonate, OnDemoRecordStop

* Added functions to RenX::Server: isSeamless(), gameover(), setMap(), loadMutator(), unloadMutator(), cancelVote(), swapTeams(), recordDemo(), mute(), unmute().

Replaced RenX::Server::changeTeam() parameter "options" with "resetCredits".

* Server profile added for Open Beta 4.

* Updated plugins according to above changes

Added commands: GameOver, SetMap, Mute, UnMute

Fixed some bugs.

eXtendedRCON and RCONv2 (Beta 2/3) support is deprecated, and will be removed in a later release.


Added eXtendedRCON support.

"Team" and "Team2" commands added (Requires eXtendedRCON).

"Refund" command added (Requires eXtendedRCON).

"PlayerInfo" command is now configurable.

"rrcon" console command added.

Numerous eXtendedRCON logging events added.

Added tags system to RenX.Core. See [RenX.Tags] in the example config.

Removed previous message tag implementations; now uses more secure tags system.

Crash/bug fixes.


RenX.Logging output formats are now fully configurable.

Added Plugins: "RenX.IRCJoin", "RenX.ModSystem", "RenX.Warn"

Added configurable tags to RenX.Announcements ({DATE}, {TIME}, {RULES}).

Admin "granted" event now properly logged.

Fixed bug preventing join messages from being displayed.

Fixed bug causing RenX.Medals to delete medals.

Bot no longer messages itself or non-logging channels on modrequest.

Some bug fixes/optimizations regarding INI files.

Various minor bug fixes/safety checks.

Added local ban system to RenX.Core; Please see new settings for servers.

Added IRC Commands: Auth, ForceAuth, DeAuth, TempBan, UnBan, BanSearch, ATM, Add, Del, ModList, Warn, Pardon

Added Game Commands: ForceAuth, Kick, Ban, TempBan, ATM, AddBots, KillBots, PhaseBots, Warn, Pardon


"SteamFormat" per-server configuration option added to determine how Steam IDs are formatted for strings.

"NeverSay" per-server configuration option added to force the bot to private message all players instead of using "say".

"RenX.Greetings" plugin added.

Added proper private message usage.

Added parsing for EVAPrivateSay.

Added "pmsg" command ("page" and "ppage" are valid aliases).

Added "showjoin" game command in RenX.SetJoin.

Reconnect routine is now more reliable.

Added link to player's steam profile to "steam" IRC command.

"steam" IRC command no longer outputs duplicate responses.

Player part/join spam surrounding a map change is no longer sent to IRC for Open Beta 3.

"modrequest" game command now tells players how many staff members were notified.

Jupiter: Fixed off-by-one user access bug.

Jupiter: Fixed wildcard parsing bug.


Fixed kick bug.

Added some missing translations.

Spam blocker exemption for administrators/moderators in RenX.Medals.


Source now available on GitHub.

Added per-server setting "UUIDMode" to toggle between using steamIDs and nicknames where possible.

Added RenX.DNS plugin.

RenX.Medals is now relatively decent.

Fixed a crash dealing with RCON data spread across multiple packets.

For a source changelog, refer to the commit history on GitHub.


Null characters are now properly read from INI files.

String manipulation optimized.


Fixed many bugs.

Added files: String_Type_Imp.h, String.h, String_Imp.h, Readable_String.h, Readable_String_Imp.h, Reference_String.h, Reference_String_Imp.h

Many functions added to String classes.

Jupiter headers are now in the "Jupiter" directory when including, to prevent file name collisions.

Many functions moved into appropriate namespaces.

Many return types and function parameters have changed from various String classes to ReadableString.

Data parsing (IRC, RCON, etc.) optimized such that data is no longer repeatedly and unnecessarily copied.


Fixed a bug in avformat functions returning incorrect offsets. This also fixes a bug causing the bot not to join more than 1 channel.


Added STARTTLS support.

USER/NICK data is now send AFTER Capability negotiation is completed. Connection order is now: Socket connect -> STARTTLS -> Capability negotiation -> Registration -> Wait for RPL_ISUPPORT -> Finished (OnConnect).

Fixed a safety check in !modrequest.

Fixed several channel-related bugs.

Added support for old RPL_BOUNCE token when given prior to registration.

Added support for extremely old IRCds that don't send RPL_ISUPPORT.


Removed preceeding 0s in IRC_Numerics.h to prevent accidental octal interpretation.

Added move constructors to Socket, SecureSocket, TCPSocket, and SecureTCPSocket.

Disabled copy constructor for Socket class and derivatives.

Changed some internals about how channels are actually stored.

Changed many functions to return StringType instead of C-Style strings.

Added "steam" IRC command to fetch a player's Steam ID or statistical information.


Added [shortTeamName] and [LongTeamName] sections to Translations.ini. (Happy now, Goku? ;v)

Added [TeamColor] section to Translations.ini

Replaced many hard-coded GDI/Nod names and colors to fetch the translated names.


Added plugin "RenX.Medals".

Fixed some bugs involving IRC auto-reconnect.

Added RPL_BOUNCE (aka: JumpServer) 010 numeric support.

Improved RenX reconnect mechanism (Added "ReconnectDelay" configuration option).

Added IRC SASL support (Added server configuration options: "SASL.Account" and "SASL.Password").

Added "addbots" and "killbots" IRC commands.

Added RenX.SetJoin plugin.

RenX.Logging public channel logging options added.

Fixed a bug in the Rehash IRC command, causing failure when no file was specified.

IRC "rehash" command no longer takes any parameters, and does a global rehash instead of a server-local rehash.

Preset and win type translations can now be specified in Translations.ini.

Added "hmsg" IRC command.

Fixed a typo in [RenX.ExcessiveHeadshots] -- default value for KillDeathRatio changed from 0.5 to 5.0.


No longer export/import template classes -- warning 4251 is now disabled (Got frustrated with annoying linker errors resulting from conflicting linkage and missing functions).

Jupiter::IRC::Client::readConfigValue return type changed to CStringS.

Replaced str in CString_Type with base and curr.

Added shiftRight() and shiftLeft() to CString_Type.

Value returned by INIFile::remove is now unsigned.

Jupiter::INIFile::get-type functions now support an optional 3rd parameter to define a default return value.

Player beacon placement count is now tracked.

Added files: Base64.h, Rehash.h, IRC_Numerics.h.

Added Jupiter::IRC::Client::User and Jupiter::IRC::Client::Channel::User classes.

Many functions in Jupiter::IRC::Client now return User classes instead of user nicknames.

Numerous class functions have now been properly labeled as const.

Jupiter::INIFile::Section and Jupiter::INIFile::Section::KeyValuePair classes added.

Added file "InvalidIndex.h"

Added kick() and ban() functions to RenX::Server.


Fixed a player data parsing bug when the player was not on any specific team.

Linked in a newer version of OpenSSL - fixes OpenSSL "heartbleed" security bug.

Fixed a bug involving channel passwords while having auto-parting enabled.

Fixed a bug in the "kills" command's output.

Added "modrequest" in-game command.


Jupiter::IRC::Client::Channel now uses int instead of short. Several types changed to unsigned.


Added RenX.Announcements plugin.

Added RenX.Announcements section to configuration file.

Fixed a seemingly-random crash on !kick, !kickban, and log messages.


Fixed a bug in Jupiter::CString_Loose::getWord.

Fixed a bug in Jupiter::CString_Loose::avformat.

Added files (Jupiter): File.h, Timer.h

Added classes (Jupiter): Jupiter::File, Jupiter::Timer


Added RenX.ExtraLogging plugin, which dumps all raw text from RCON to both the console and a file (Disabled by default).

Added translations for KillZDamageType (Kill Zone) and A130 damage types.

Fixed a bug in Jupiter::CString_Loose that caused seemingly random crashes.

Added "Rules" configuration option. Please refer to the new example configuration file.

Added "rules" in-game command; added "rules", "showrules", and "setrules" IRC commands.

Added "version" IRC command.


RenX_OnRaw added to RenX::Plugin - passes every line from the RCON buffer to plugins.

Added get(size_t) to Jupiter::String_Type and moved operator [] to Jupiter::String_Type.

Added static gotoWord() and getWord() to CString_Strict and CString_Loose; non-static versions now forward.


Fixed multiple outputs for various commands when using multiple servers.


Updated for Open Beta 1.1 (RCON v2).

Log output moved to separate plugin. (RenX.Logging)

Log output made far cleaner and finalized.

Fixed a bug involving variable digit length player IDs.

Fixed extra newlines in the log output.

Admin channels added for output of verbose and potentially sensitive information.

AdminChanType configuration option added for RenX servers.

ClientAddress configuration option added for servers and RenX.

"playerinfo" command now outputs kills, deaths, vehicle kills, and building kills.

Increased CTCP compliance (CTCP ERRMSG now echoes back input).

"reconnect" command now works.

"kick" and "kickban" commands added. (If they weren't already)

"mute" and "unmute" commands added, but do not appear to function.

"playerinfo" command is now far more verbose, and only outputs IP addresses for access level 2 (%) users and up.

"players" command now looks cleaner, and includes bot counts next to player counts.

In-game chat command system added.

"help" game command added.

IRCPrefix configuration option added. This option prefixes log messages from a server with the value specified.

CommandPrefix configuration option added. This sets the command prefix for in-game chat commands.

Bots are now prefixed with a brown in IRC output.

Configuration for RenX plugin changed to this:

Fixed an exploit involving pipe characters in the "kick" and "kickban" commands.

Statistics-driven anti-cheat plugin "RenX.ExcessiveHeadshots" added.

IRC client "AutoReconnect" configuration option removed. Use "MaxReconnectAttempts" instead.

Fixed a potential glitch where an A10 could potentially cause an extra client in the player list.


Jupiter Files added: CString.h, String_Type.h, CString_Imp.h.

Jupiter::String_Type abstract type added in String_Type.h

Jupiter::CString_Type abstract type added in CString.h

Jupiter::CString_Strict, Jupiter::CString_Loose classes added.

Typedefs added: Jupiter::CStringL (Jupiter::CString_Loose), Jupiter::CStringS (Jupiter::CString_Strict), Jupiter::CString (Jupiter::CStringL), Jupiter::WCStringL (Jupiter::CString_Loose), Jupiter::WCStringS (Jupiter::CString_Strict), Jupiter::WCString (Jupiter::WCStringL).

Many functions added to Functions.h, including C++ functions.

RenX::Player renamed to RenX::PlayerInfo and moved to RenX_PlayerInfo.h

RenX::Plugin modified heavily.

Plugin class and related functions moved to Jupiter namespace, and now use Jupiter::IRC::Client instead of IRC_Bot.

Added OnNumeric() event to IRC::Client and Plugins.

Jupiter::Socket::connectToHost now has optional 3rd parameter "clientAddress".

Player kill count is now tracked. (PlayerInfo::kills)

Player head-shot kill count is not tracked. ((PlayerInfo::headshots)

Player death count is now tracked. (PlayerInfo::deaths)

Player suicide count is now tracked. (PlayerInfo::suicides)

Player building kill count is now tracked. (PlayerInfo::buildingKills)

Player secondary defense structure kill count is now tracked. (PlayerInfo::defenceKills)

Player Vehicle kill count is now tracked. (PlayerInfo::vehicleKills)

Player wins are now tracked. (PlayerInfo::wins)

Player loses are now tracked. (PlayerInfo::loses)

Player administrator-type is now tracked (PlayerInfo::adminType)

Indicator added for if a player is or is not a bot.

RenX::WinType enumerated type added.

RenX::TeamType enumerated type added.

RenX::OjbectType enumerated type added.

RenX::Server moved to RenX_Server.h

Jupiter::IRC::Client::setAutoReconnect behavior changed: Now takes integer value and sets maximum reconnect attempts.

Large amounts of header documentation added.

Other stuff that I forgot to list.


Exploit involving pipe character '|' resolved - inputs are sanitized by replacing with '/'.


SSL Client Certificate Support

Fixed a crash when non-compliant (Janus) servers send channel MODE data without ever sending JOIN.

Fixed a bug where users would not be renamed properly after changing their nickname on InspIRCD.

Player information is now stored.

Commands added: players, playerinfo, reconnect

Fancier channel output.

Made Jupiter::DLList useful.

Added RenX namespace.

Class "RenX" renamed "RenX::Core".

RenX::Plugin class added in RenX_Plugin.h.

RenX.h renamed to RenX_Core.h.

Added RenX.h for imports/exports.

Added RenX_Functions.h - Moved several functions to here.

Commands moved into a plugin named RenX.Commands.


Fixed bizarre memory related crashes.

Fixed a file not found compilation error (corrected include directories).


Initial release.


  • Like 1
Link to comment
Share on other sites

Never mind. Forgot to update Config.ini with the new namespace.

Edited my "Update!" to mention this. :P

Nice update, Great bot!! good work!! Really organized now, love it!

Thanks! :)

Special characters need to be escaped. For example, I have a friend with a pipe "|" in his nick in IRC, and whenever he does !msg, the game cuts it off. This can probably be exploited with really bad consequences.

I see what you're talking about. I'll see if there isn't a way to transmit that character with some degree of safety; if not I'll just replace it with a / or something. Other characters don't appear to have the same effect, however.

Link to comment
Share on other sites

  • 3 weeks later...

Updated! Note: This update will NOT function on Open Beta 1 servers; this is an update for Open Beta 2.

Also note that there have been significant changes to the configuration file that require you to modify any existing configs. This mostly (if not entirely) applies to the [RenX] section being changed, and several other sections being added.

Link to comment
Share on other sites

The bot will part channels when their type is configured as negative. The default config sets the default type to -1. You can change this by removing the line "Channel.Type=-1" under [Default], but RenX still will not report to those channels.

If you need help configuring, I can help ye with that.

Link to comment
Share on other sites

  • 2 weeks later...
The bot will part channels when their type is configured as negative. The default config sets the default type to -1. You can change this by removing the line "Channel.Type=-1" under [Default], but RenX still will not report to those channels.

If you need help configuring, I can help ye with that.

I have the channel set to 2, but the default seems to override it when I add the channel key. It works fine when I remove the key.

Link to comment
Share on other sites

The ports were definitely correct, I must have deleted a character or bracket or something because I started with a fresh config and its all working now :)

What's the easiest way to set it as the admin channel has a password to join? :)

I tried doing a raw join, but it quits the channel

Link to comment
Share on other sites

I still need to fix a bug involving passworded channels actually, but in the mean time something like this should work:

Configure the admin channel as normal.

Add something like this line to the same section: RawData.1=JOIN #Channel PASSWORD

Edit: When I get around to fixing this, you'll be able to just add the password after the channel name (i.e: Channel.1=#adminChannel superSecurePassword ).

Edit 2: This is fixed for the next update.

Link to comment
Share on other sites

  • 3 weeks later...


This build should also be compatible with the upcoming RenX patch.

New plugin: RenX.Medals -- Players are given recommendations for destroying buildings, having the most vehicle kills, and having the most kills.

New file: Translations.ini -- Allows you to override preset translations or specify ones that aren't already translated.

Link to comment
Share on other sites

  • 2 weeks later...
  • 3 months later...

Updated! Some bug fixes and feature additions.

Personal update:

I haven't been able to dedicate nearly as much time to maintaining this as I had previously due to my father having a stroke; a huge part of my schedule has been carved out to help take care of his needs, as well as manage a business that suddenly got thrown at me while he was incapable of speaking and bedridden. He's faring far better now, and since I'm no longer busy 24/7 (I actually have time to sleep now! :D), I plan to put some time back into this project again.

Link to comment
Share on other sites

  • 3 weeks later...
  • 3 weeks later...
  • Agent changed the title to Bot Version: 1.1.0
  • Whistle unpinned and locked this topic
  • Whistle unlocked this topic

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Create New...