I and some others run a server for an old, online multiplayer game called RobotRage: Rearmed. The original game server went down a long time ago, but with some help we were able to create an unofficial server emulator to get it back up and running. Conveniently, the game uses the IRC protocol for the multiplayer lobby, so this was a drop-in replacement. After trying some other IRC servers we found that unrealircd was the only one compatible with the game client. We're currently using unrealircd for the game server and it works well - if you're curious our website is robotrage.pro.
However, there is a minor issue: the game client has trouble determining how many players are online, which it is supposed to display on login. By reversing the code I was able to determine it finds this number from IRC response 265 (RPL_LOCALUSERS.) unrealircd does send this response, but not in the format the game client expects. I found this page detailing the response.
The format of the message is like this:
Code: Select all
<client> [<u> <m>] :Current local users <u>, max <m>
Unfortunately, the game client seems to deviate from the spec here. It expects that the optional parameters are not sent, instead finding the seventh word of the message, which it expects to be the number - but in this case it is actually the word "local," which it attempts to convert to an integer, and fails to display the number of online users. Because I don't have the source for the client, only the binary, I can't edit it to fix this problem.The two optional parameters SHOULD be supplied to allow clients to better extract these numbers.
I had a look at the source for unrealircd and found the message defined in numerics.c with seemingly no way to disable the optional parameters. Since these parameters are technically optional, is there a way they could be configured off or at least could there be a compile time flag to modify them, or will I just have to fork and edit the string myself? Thanks very much in advance.