From 92bb5f185e0faa4e8219cd86026b2bbdcf84f925 Mon Sep 17 00:00:00 2001 From: JustinAJ Date: Tue, 14 Oct 2014 05:47:39 -0400 Subject: [PATCH] Added "SteamFormat" config option; added formatSteamID() to RenX::Server; adjusted usage of steamids in strings appropriately. --- Release/Plugins/RenX.Core.lib | Bin 53880 -> 54854 bytes RenX.Commands/RenX_Commands.cpp | 12 ++++++-- RenX.Core/RenX_Server.cpp | 27 ++++++++++++++++-- RenX.Core/RenX_Server.h | 17 +++++++++++ .../ExcessiveHeadshots.cpp | 3 +- RenX.Logging/RenX_Logging.cpp | 5 +++- 6 files changed, 58 insertions(+), 6 deletions(-) diff --git a/Release/Plugins/RenX.Core.lib b/Release/Plugins/RenX.Core.lib index 7158b4be09ef13441c5f94f1fae58373f49c2fc6..b3ccf2bec5f07a6db24bea4eebb320f5c6fbd2c4 100644 GIT binary patch delta 6296 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 SC*IK!;(rVA{|v!*I{ycJ*()vp delta 5469 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 diff --git a/RenX.Commands/RenX_Commands.cpp b/RenX.Commands/RenX_Commands.cpp index d3a0652..6a9c0fc 100644 --- a/RenX.Commands/RenX_Commands.cpp +++ b/RenX.Commands/RenX_Commands.cpp @@ -403,7 +403,11 @@ void PlayerInfoIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableStrin else msg += "IP Not Found" IRCBOLD; } if (player->steamid != 0) - msg.aformat(" - Steam ID: " IRCBOLD "0x%.16llX" IRCBOLD, player->steamid); + { + msg += " - Steam ID: " IRCBOLD; + msg += server->formatSteamID(player); + msg += IRCBOLD; + } if (player->adminType.size() != 0) { msg += " - Admin Type: " IRCBOLD; @@ -460,7 +464,11 @@ void SteamIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &ch Jupiter::String &playerName = RenX::getFormattedPlayerName(player); msg.format(IRCCOLOR "03[Steam] " IRCCOLOR "%.*s (ID: %d) ", playerName.size(), playerName.ptr(), player->id); if (player->steamid != 0) - msg.aformat("is using steam ID " IRCBOLD "0x%.16llX" IRCBOLD, player->steamid); + { + msg += "is using steam ID " IRCBOLD; + msg += server->formatSteamID(player); + msg += IRCBOLD; + } else msg += "is not using steam."; source->sendMessage(channel, msg); } diff --git a/RenX.Core/RenX_Server.cpp b/RenX.Core/RenX_Server.cpp index df5b878..de5440e 100644 --- a/RenX.Core/RenX_Server.cpp +++ b/RenX.Core/RenX_Server.cpp @@ -173,6 +173,28 @@ RenX::PlayerInfo *RenX::Server::getPlayerByPartNameFast(const Jupiter::ReadableS return nullptr; } +Jupiter::StringS RenX::Server::formatSteamID(const RenX::PlayerInfo *player) +{ + return RenX::Server::formatSteamID(player->steamid); +} + +Jupiter::StringS RenX::Server::formatSteamID(uint64_t id) +{ + switch (RenX::Server::steamFormat) + { + default: + case 16: + return Jupiter::StringS::Format("0x%.16llX", id); + break; + case 10: + return Jupiter::StringS::Format("%llu", id); + break; + case 8: + return Jupiter::StringS::Format("0%llo", id); + break; + } +} + void RenX::Server::kickPlayer(int id) { RenX::Server::sock.send(Jupiter::StringS::Format("cadminkick pid%d\n", id)); @@ -698,7 +720,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) default: case 0: if (player->steamid != 0) - player->uuid.format("0x%.16llX", player->steamid); + player->uuid = this->formatSteamID(player); break; case 1: player->uuid = player->name; @@ -801,7 +823,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) default: case 0: if (player->steamid != 0) - player->uuid.format("0x%.16llX", player->steamid); + player->uuid = this->formatSteamID(player); break; case 1: player->uuid = player->name; @@ -934,6 +956,7 @@ RenX::Server::Server(const Jupiter::ReadableString &configurationSection) RenX::Server::rules = Jupiter::IRC::Client::Config->get(RenX::Server::configSection, STRING_LITERAL_AS_REFERENCE("Rules"), STRING_LITERAL_AS_REFERENCE("Anarchy!")); RenX::Server::delay = Jupiter::IRC::Client::Config->getInt(RenX::Server::configSection, STRING_LITERAL_AS_REFERENCE("ReconnectDelay"), 60); RenX::Server::uuidMode = Jupiter::IRC::Client::Config->getInt(RenX::Server::configSection, STRING_LITERAL_AS_REFERENCE("UUIDMode"), 0); + RenX::Server::steamFormat = Jupiter::IRC::Client::Config->getInt(RenX::Server::configSection, STRING_LITERAL_AS_REFERENCE("SteamFormat"), 16); for (size_t i = 0; i < RenX::GameMasterCommandList->size(); i++) RenX::Server::addCommand(RenX::GameMasterCommandList->get(i)->copy()); diff --git a/RenX.Core/RenX_Server.h b/RenX.Core/RenX_Server.h index 261283d..7613da8 100644 --- a/RenX.Core/RenX_Server.h +++ b/RenX.Core/RenX_Server.h @@ -163,6 +163,22 @@ namespace RenX */ RenX::PlayerInfo *getPlayerByPartNameFast(const Jupiter::ReadableString &partName) const; + /** + * @brief Formats a player's Steam ID into a readable string. + * + * @param player Player to fetch Steam ID from + * @return A player's formatted Steam ID on success, an empty string otherwise. + */ + Jupiter::StringS formatSteamID(const RenX::PlayerInfo *player); + + /** + * @brief Formats a Steam ID into a readable string. + * + * @param id Steam ID to format + * @return A player's formatted Steam ID on success, an empty string otherwise. + */ + Jupiter::StringS formatSteamID(uint64_t id); + /** * @brief Kicks a player from the server. * @@ -428,6 +444,7 @@ namespace RenX int adminLogChanType; time_t lastAttempt = 0; time_t delay; + unsigned int steamFormat; /** 16 = hex, 10 = base 10, 8 = octal */ unsigned int uuidMode; /** 0 = steam, 1 = nickname */ Jupiter::TCPSocket sock; Jupiter::CStringS clientHostname; diff --git a/RenX.ExcessiveHeadshots/ExcessiveHeadshots.cpp b/RenX.ExcessiveHeadshots/ExcessiveHeadshots.cpp index a37ed1c..f8be8b4 100644 --- a/RenX.ExcessiveHeadshots/ExcessiveHeadshots.cpp +++ b/RenX.ExcessiveHeadshots/ExcessiveHeadshots.cpp @@ -55,7 +55,8 @@ void RenX_ExcessiveHeadshotsPlugin::RenX_OnKill(RenX::Server *server, const RenX { server->kickPlayer(player); server->sendPubChan(IRCCOLOR "13[Aimbot]" IRCCOLOR " %.*s was banned from the server! Kills: %u - Deaths: %u - Headshots: %u", player->name.size(), player->name.ptr(), player->kills, player->deaths, player->headshots); - server->sendAdmChan(IRCCOLOR "13[Aimbot]" IRCCOLOR " %.*s was banned from the server! Kills: %u - Deaths: %u - Headshots: %u - IP: " IRCBOLD "%.*s" IRCBOLD " - Steam ID: " IRCBOLD "0x%.16llX" IRCBOLD, player->name.size(), player->name.ptr(), player->kills, player->deaths, player->headshots, player->ip.size(), player->ip.ptr(), player->steamid); + const Jupiter::ReadableString &steamid = server->formatSteamID(player); + server->sendAdmChan(IRCCOLOR "13[Aimbot]" IRCCOLOR " %.*s was banned from the server! Kills: %u - Deaths: %u - Headshots: %u - IP: " IRCBOLD "%.*s" IRCBOLD " - Steam ID: " IRCBOLD "%.*s" IRCBOLD, player->name.size(), player->name.ptr(), player->kills, player->deaths, player->headshots, player->ip.size(), player->ip.ptr(), steamid.size(), steamid.ptr()); } } } diff --git a/RenX.Logging/RenX_Logging.cpp b/RenX.Logging/RenX_Logging.cpp index ca4ae7c..d087659 100644 --- a/RenX.Logging/RenX_Logging.cpp +++ b/RenX.Logging/RenX_Logging.cpp @@ -63,7 +63,10 @@ void RenX_LoggingPlugin::RenX_OnJoin(RenX::Server *server, const RenX::PlayerInf if (player->steamid == 0) server->sendAdmChan(IRCCOLOR "12[Join]" IRCCOLOR "%.*s " IRCBOLD "%.*s" IRCBOLD " joined the game fighting for the %.*s from " IRCBOLD "%.*s" IRCBOLD ", but is not using Steam.", teamColor.size(), teamColor.ptr(), player->name.size(), player->name.ptr(), teamName.size(), teamName.ptr(), player->ip.size(), player->ip.ptr()); else - server->sendAdmChan(IRCCOLOR "12[Join]" IRCCOLOR "%.*s " IRCBOLD "%.*s" IRCBOLD " joined the game fighting for the %.*s from " IRCBOLD "%.*s" IRCBOLD " using Steam ID " IRCBOLD "0x%.16llX" IRCBOLD ".", teamColor.size(), teamColor.ptr(), player->name.size(), player->name.ptr(), teamName.size(), teamName.ptr(), player->ip.size(), player->ip.ptr(), player->steamid); + { + const Jupiter::ReadableString &steamid = server->formatSteamID(player); + server->sendAdmChan(IRCCOLOR "12[Join]" IRCCOLOR "%.*s " IRCBOLD "%.*s" IRCBOLD " joined the game fighting for the %.*s from " IRCBOLD "%.*s" IRCBOLD " using Steam ID " IRCBOLD "%.*s" IRCBOLD ".", teamColor.size(), teamColor.ptr(), player->name.size(), player->name.ptr(), teamName.size(), teamName.ptr(), player->ip.size(), player->ip.ptr(), steamid.size(), steamid.ptr()); + } } void RenX_LoggingPlugin::RenX_OnPart(RenX::Server *server, const RenX::PlayerInfo *player)