From df1052d5aa7363a9a7da1f52337cbd012c2f7756 Mon Sep 17 00:00:00 2001 From: Jessica James Date: Mon, 29 Nov 2021 23:15:55 -0600 Subject: [PATCH] Update Jupiter submodule; adjust code accordingly --- src/Bot/src/IRC_Bot.cpp | 10 +- src/Bot/src/Main.cpp | 4 +- src/Jupiter | 2 +- src/Plugins/CoreCommands/CoreCommands.cpp | 3 +- src/Plugins/ExtraCommands/ExtraCommands.cpp | 9 +- src/Plugins/FunCommands/FunCommands.cpp | 4 +- .../RenX.ChatLogging/RenX_ChatLogging.cpp | 2 +- .../RenX_CommandLogging.cpp | 2 +- .../RenX/RenX.Commands/RenX_Commands.cpp | 76 ++-- src/Plugins/RenX/RenX.Core/RenX_Functions.cpp | 40 +- src/Plugins/RenX/RenX.Core/RenX_Server.cpp | 141 +++--- src/Plugins/RenX/RenX.Core/RenX_Server.h | 4 +- .../RenX_ExcessiveHeadshots.cpp | 3 +- .../RenX.ExtraLogging/RenX_ExtraLogging.cpp | 20 +- .../RenX/RenX.Logging/RenX_Logging.cpp | 416 ++++++++++++++---- .../RenX/RenX.ModSystem/RenX_ModSystem.cpp | 3 +- .../RenX/RenX.ServerList/RenX_ServerList.cpp | 20 +- .../RenX/RenX.SetJoin/RenX_SetJoin.cpp | 3 +- src/Plugins/RenX/RenX.Warn/RenX_Warn.cpp | 6 +- src/Plugins/SetJoin/SetJoin.cpp | 6 +- 20 files changed, 529 insertions(+), 245 deletions(-) diff --git a/src/Bot/src/IRC_Bot.cpp b/src/Bot/src/IRC_Bot.cpp index ec4d77d..d074bf0 100644 --- a/src/Bot/src/IRC_Bot.cpp +++ b/src/Bot/src/IRC_Bot.cpp @@ -116,16 +116,16 @@ void IRC_Bot::setCommandAccessLevels(IRCCommand *in_command) { IRCCommand *command; tmp_index = entry.first.find('.'); - if (tmp_index != Jupiter::INVALID_INDEX) { + if (tmp_index != std::string_view::npos) { // non-default access assignment - tmp_key.set(entry.first.data(), tmp_index); + tmp_key = std::string_view(entry.first.data(), tmp_index); tmp_sub_key = entry.first; - tmp_sub_key.shiftRight(tmp_index + 1); + tmp_sub_key.remove_prefix(tmp_index + 1); if (jessilib::starts_withi(tmp_sub_key, "Type."sv)) { - tmp_sub_key.shiftRight(5); // shift beyond "Type." + tmp_sub_key.remove_prefix(5); // strip "Type." command = this->getCommand(tmp_key); if (command != nullptr && (in_command == nullptr || in_command == command)) { @@ -133,7 +133,7 @@ void IRC_Bot::setCommandAccessLevels(IRCCommand *in_command) { } } else if (jessilib::starts_withi(tmp_sub_key, "Channel."sv)) { - tmp_sub_key.shiftRight(8); // shift beyond "Channel." + tmp_sub_key.remove_prefix(8); // strip "Channel." // Assign access level to command (if command exists) command = this->getCommand(tmp_key); diff --git a/src/Bot/src/Main.cpp b/src/Bot/src/Main.cpp index 918ca4a..80976ce 100644 --- a/src/Bot/src/Main.cpp +++ b/src/Bot/src/Main.cpp @@ -219,12 +219,12 @@ int main(int argc, const char **args) { if (plugins_directory.isNotEmpty()) { Jupiter::Plugin::setDirectory(plugins_directory); - printf("Plugins will be loaded from \"%.*s\"." ENDL, static_cast(plugins_directory.size()), plugins_directory.ptr()); + printf("Plugins will be loaded from \"%.*s\"." ENDL, static_cast(plugins_directory.size()), plugins_directory.data()); } if (configs_directory.isNotEmpty()) { Jupiter::Plugin::setConfigDirectory(configs_directory); - printf("Plugin configs will be loaded from \"%.*s\"." ENDL, static_cast(configs_directory.size()), configs_directory.ptr()); + printf("Plugin configs will be loaded from \"%.*s\"." ENDL, static_cast(configs_directory.size()), configs_directory.data()); } initialize_plugins(); diff --git a/src/Jupiter b/src/Jupiter index 9db2fd9..cee0c7e 160000 --- a/src/Jupiter +++ b/src/Jupiter @@ -1 +1 @@ -Subproject commit 9db2fd92b8d7316d6b15a11b60c35036a010eaef +Subproject commit cee0c7ef7d5522c44100848c4f64c92fbeebdfaf diff --git a/src/Plugins/CoreCommands/CoreCommands.cpp b/src/Plugins/CoreCommands/CoreCommands.cpp index 2e5904a..5cb4bef 100644 --- a/src/Plugins/CoreCommands/CoreCommands.cpp +++ b/src/Plugins/CoreCommands/CoreCommands.cpp @@ -76,7 +76,8 @@ void HelpIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &in_ if (cmds.size() != 0) { Jupiter::StringL triggers = source->getTriggers(cmds); if (triggers.size() >= 0) { - source->sendNotice(nick, Jupiter::StringS::Format("Access level %d commands: %.*s", i, triggers.size(), triggers.ptr())); + source->sendNotice(nick, Jupiter::StringS::Format("Access level %d commands: %.*s", i, triggers.size(), + triggers.data())); } } } diff --git a/src/Plugins/ExtraCommands/ExtraCommands.cpp b/src/Plugins/ExtraCommands/ExtraCommands.cpp index d4db148..bac0825 100644 --- a/src/Plugins/ExtraCommands/ExtraCommands.cpp +++ b/src/Plugins/ExtraCommands/ExtraCommands.cpp @@ -269,12 +269,17 @@ Jupiter::GenericCommand::ResponseLine *DebugInfoGenericCommand::trigger(const Ju for (auto& channel_pair : server->getChannels()) { auto& channel = channel_pair.second; - line->next = new Jupiter::GenericCommand::ResponseLine(Jupiter::StringS::Format("Channel %.*s - Type: %d", channel.getName().size(), channel.getName().ptr(), channel.getType()), GenericCommand::DisplayType::PublicSuccess); + line->next = new Jupiter::GenericCommand::ResponseLine(Jupiter::StringS::Format("Channel %.*s - Type: %d", channel.getName().size(), + channel.getName().data(), channel.getType()), GenericCommand::DisplayType::PublicSuccess); line = line->next; for (auto& user_pair : channel.getUsers()) { Jupiter::IRC::Client::User *user = user_pair.second->getUser(); - line->next = new Jupiter::GenericCommand::ResponseLine(Jupiter::StringS::Format("User %.*s!%.*s@%.*s (prefix: %c) of channel %.*s (of %u shared)", user->getNickname().size(), user->getNickname().ptr(), user->getUsername().size(), user->getUsername().ptr(), user->getHostname().size(), user->getHostname().ptr(), channel.getUserPrefix(*user_pair.second) ? channel.getUserPrefix(*user_pair.second) : ' ', channel.getName().size(), channel.getName().ptr(), user->getChannelCount()), GenericCommand::DisplayType::PublicSuccess); + line->next = new Jupiter::GenericCommand::ResponseLine(Jupiter::StringS::Format("User %.*s!%.*s@%.*s (prefix: %c) of channel %.*s (of %u shared)", user->getNickname().size(), + user->getNickname().data(), user->getUsername().size(), + user->getUsername().data(), user->getHostname().size(), + user->getHostname().data(), channel.getUserPrefix(*user_pair.second) ? channel.getUserPrefix(*user_pair.second) : ' ', channel.getName().size(), + channel.getName().data(), user->getChannelCount()), GenericCommand::DisplayType::PublicSuccess); line = line->next; }; }; diff --git a/src/Plugins/FunCommands/FunCommands.cpp b/src/Plugins/FunCommands/FunCommands.cpp index 352d7dd..0fcc117 100644 --- a/src/Plugins/FunCommands/FunCommands.cpp +++ b/src/Plugins/FunCommands/FunCommands.cpp @@ -72,10 +72,10 @@ void EightBallIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString msg.set("Good thing I bend that way!"_jrs); break; case 10: - msg.format("Hai %.*s ;)", nick.size(), nick.ptr()); + msg.format("Hai %.*s ;)", nick.size(), nick.data()); break; case 11: - msg.format("Let's ban %.*s!", nick.size(), nick.ptr()); + msg.format("Let's ban %.*s!", nick.size(), nick.data()); break; case 12: msg.set("Fuck your lineage."_jrs); diff --git a/src/Plugins/RenX/RenX.ChatLogging/RenX_ChatLogging.cpp b/src/Plugins/RenX/RenX.ChatLogging/RenX_ChatLogging.cpp index 309e21b..5c8699b 100644 --- a/src/Plugins/RenX/RenX.ChatLogging/RenX_ChatLogging.cpp +++ b/src/Plugins/RenX/RenX.ChatLogging/RenX_ChatLogging.cpp @@ -56,7 +56,7 @@ RenX_ChatLogPlugin::~RenX_ChatLogPlugin() } std::ostream& operator<<(std::ostream& in_stream, const Jupiter::ReadableString& in_string) { - in_stream.write(in_string.ptr(), in_string.size()); + in_stream.write(in_string.data(), in_string.size()); return in_stream; } diff --git a/src/Plugins/RenX/RenX.CommandLogging/RenX_CommandLogging.cpp b/src/Plugins/RenX/RenX.CommandLogging/RenX_CommandLogging.cpp index 6dd4659..de86894 100644 --- a/src/Plugins/RenX/RenX.CommandLogging/RenX_CommandLogging.cpp +++ b/src/Plugins/RenX/RenX.CommandLogging/RenX_CommandLogging.cpp @@ -71,7 +71,7 @@ void RenX_CommandLoggingPlugin::RenX_OnCommandTriggered(RenX::Server& server, co } std::ostream& operator<<(std::ostream& in_stream, const Jupiter::ReadableString& in_string) { - in_stream.write(in_string.ptr(), in_string.size()); + in_stream.write(in_string.data(), in_string.size()); return in_stream; } diff --git a/src/Plugins/RenX/RenX.Commands/RenX_Commands.cpp b/src/Plugins/RenX/RenX.Commands/RenX_Commands.cpp index fed8b3b..1cde1e4 100644 --- a/src/Plugins/RenX/RenX.Commands/RenX_Commands.cpp +++ b/src/Plugins/RenX/RenX.Commands/RenX_Commands.cpp @@ -77,10 +77,11 @@ void RenX_CommandsPlugin::RenX_OnDie(RenX::Server &server, const RenX::PlayerInf bool RenX_CommandsPlugin::initialize() { auto default_tban_time = this->config.get("DefaultTBanTime"_jrs, "1d"_jrs); auto max_tban_time = this->config.get("MaxTBanTime"_jrs, "1w"_jrs); - m_defaultTempBanTime = jessilib::duration_from_string(default_tban_time.ptr(), default_tban_time.ptr() + default_tban_time.size()).duration; - m_maxTempBanTime = std::max(jessilib::duration_from_string(max_tban_time.ptr(), max_tban_time.ptr() + max_tban_time.size()).duration, m_defaultTempBanTime); + m_defaultTempBanTime = jessilib::duration_from_string(default_tban_time.data(), default_tban_time.data() + default_tban_time.size()).duration; + m_maxTempBanTime = std::max(jessilib::duration_from_string(max_tban_time.data(), max_tban_time.data() + max_tban_time.size()).duration, m_defaultTempBanTime); m_playerInfoFormat = this->config.get("PlayerInfoFormat"_jrs, IRCCOLOR "03[Player Info]" IRCCOLOR "{TCOLOR} Name: " IRCBOLD "{RNAME}" IRCBOLD " - ID: {ID} - Team: " IRCBOLD "{TEAML}" IRCBOLD " - Vehicle Kills: {VEHICLEKILLS} - Building Kills {BUILDINGKILLS} - Kills {KILLS} - Deaths: {DEATHS} - KDR: {KDR} - Access: {ACCESS}"_jrs); - m_adminPlayerInfoFormat = this->config.get("AdminPlayerInfoFormat"_jrs, Jupiter::StringS::Format("%.*s - IP: " IRCBOLD "{IP}" IRCBOLD " - HWID: " IRCBOLD "{HWID}" IRCBOLD " - RDNS: " IRCBOLD "{RDNS}" IRCBOLD " - Steam ID: " IRCBOLD "{STEAM}", m_playerInfoFormat.size(), m_playerInfoFormat.ptr())); + m_adminPlayerInfoFormat = this->config.get("AdminPlayerInfoFormat"_jrs, Jupiter::StringS::Format("%.*s - IP: " IRCBOLD "{IP}" IRCBOLD " - HWID: " IRCBOLD "{HWID}" IRCBOLD " - RDNS: " IRCBOLD "{RDNS}" IRCBOLD " - Steam ID: " IRCBOLD "{STEAM}", m_playerInfoFormat.size(), + m_playerInfoFormat.data())); m_buildingInfoFormat = this->config.get("BuildingInfoFormat"_jrs, ""_jrs IRCCOLOR + RenX::tags->buildingTeamColorTag + RenX::tags->buildingNameTag + IRCCOLOR " - " IRCCOLOR "07"_jrs + RenX::tags->buildingHealthPercentageTag + "%"_jrs); m_staffTitle = this->config.get("StaffTitle"_jrs, "Moderator"_jrs); @@ -482,10 +483,12 @@ void PlayersIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString & if (nCurrent == nullptr || nCurrent->size() + name.size() > STRING_LENGTH) { nCurrent = new Jupiter::StringL(STRING_LENGTH); - nCurrent->format(IRCCOLOR "%.*s[%.*s]: " IRCBOLD "%.*s" IRCBOLD, nTeamColor.size(), nTeamColor.ptr(), nTeam.size(), nTeam.ptr(), name.size(), name.ptr()); + nCurrent->format(IRCCOLOR "%.*s[%.*s]: " IRCBOLD "%.*s" IRCBOLD, nTeamColor.size(), + nTeamColor.data(), nTeam.size(), + nTeam.data(), name.size(), name.data()); nStrings.push_back(nCurrent); } - else nCurrent->aformat(IRCCOLOR ", " IRCBOLD "%.*s" IRCBOLD, name.size(), name.ptr()); + else nCurrent->aformat(IRCCOLOR ", " IRCBOLD "%.*s" IRCBOLD, name.size(), name.data()); nTotal++; if (node->isBot) nBots++; @@ -494,10 +497,12 @@ void PlayersIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString & if (gCurrent == nullptr || gCurrent->size() + name.size() > STRING_LENGTH) { gCurrent = new Jupiter::StringL(STRING_LENGTH); - gCurrent->format(IRCCOLOR "%.*s[%.*s]: " IRCBOLD "%.*s" IRCBOLD, gTeamColor.size(), gTeamColor.ptr(), gTeam.size(), gTeam.ptr(), name.size(), name.ptr()); + gCurrent->format(IRCCOLOR "%.*s[%.*s]: " IRCBOLD "%.*s" IRCBOLD, gTeamColor.size(), + gTeamColor.data(), gTeam.size(), + gTeam.data(), name.size(), name.data()); gStrings.push_back(gCurrent); } - else gCurrent->aformat(IRCCOLOR ", " IRCBOLD "%.*s" IRCBOLD, name.size(), name.ptr()); + else gCurrent->aformat(IRCCOLOR ", " IRCBOLD "%.*s" IRCBOLD, name.size(), name.data()); gTotal++; if (node->isBot) gBots++; @@ -506,10 +511,12 @@ void PlayersIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString & if (oCurrent == nullptr || oCurrent->size() + name.size() > STRING_LENGTH) { oCurrent = new Jupiter::StringL(STRING_LENGTH); - oCurrent->format(IRCCOLOR "%.*s[%.*s]: " IRCBOLD "%.*s" IRCBOLD, oTeamColor.size(), oTeamColor.ptr(), oTeam.size(), oTeam.ptr(), name.size(), name.ptr()); + oCurrent->format(IRCCOLOR "%.*s[%.*s]: " IRCBOLD "%.*s" IRCBOLD, oTeamColor.size(), + oTeamColor.data(), oTeam.size(), + oTeam.data(), name.size(), name.data()); oStrings.push_back(oCurrent); } - else oCurrent->aformat(IRCCOLOR ", " IRCBOLD "%.*s" IRCBOLD, name.size(), name.ptr()); + else oCurrent->aformat(IRCCOLOR ", " IRCBOLD "%.*s" IRCBOLD, name.size(), name.data()); oTotal++; if (node->isBot) oBots++; @@ -548,19 +555,25 @@ void PlayersIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString & out.aformat(" (%u bots)", gBots + nBots + oBots); if (gTotal > 0) { - out.aformat(IRCCOLOR "02 | " IRCCOLOR "%.*s%.*s" IRCCOLOR ": %u", gTeamColor.size(), gTeamColor.ptr(), gTeam.size(), gTeam.ptr(), gTotal); + out.aformat(IRCCOLOR "02 | " IRCCOLOR "%.*s%.*s" IRCCOLOR ": %u", gTeamColor.size(), + gTeamColor.data(), gTeam.size(), + gTeam.data(), gTotal); if (gBots > 0) out.aformat(" (%u bots)", gBots); } if (nTotal > 0) { - out.aformat(IRCCOLOR "02 | " IRCCOLOR "%.*s%.*s" IRCCOLOR ": %u", nTeamColor.size(), nTeamColor.ptr(), nTeam.size(), nTeam.ptr(), nTotal); + out.aformat(IRCCOLOR "02 | " IRCCOLOR "%.*s%.*s" IRCCOLOR ": %u", nTeamColor.size(), + nTeamColor.data(), nTeam.size(), + nTeam.data(), nTotal); if (nBots > 0) out.aformat(" (%u bots)", nBots); } if (oTotal > 0) { - out.aformat(IRCCOLOR "02 | " IRCCOLOR "%.*s%.*s" IRCCOLOR ": %u", oTeamColor.size(), oTeamColor.ptr(), oTeam.size(), oTeam.ptr(), oTotal); + out.aformat(IRCCOLOR "02 | " IRCCOLOR "%.*s%.*s" IRCCOLOR ": %u", oTeamColor.size(), + oTeamColor.data(), oTeam.size(), + oTeam.data(), oTotal); if (oBots > 0) out.aformat(" (%u bots)", oBots); } @@ -667,16 +680,18 @@ void PlayerTableIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableStri ++creditColLen; if (server->isAdminLogChanType(type)) - source->sendMessage(channel, Jupiter::StringS::Format(IRCUNDERLINE IRCCOLOR "03%*.*s | %*s | %*s | %*s | IP Address", maxNickLen, NICK_COL_HEADER.size(), NICK_COL_HEADER.ptr(), idColLen, "ID", scoreColLen, "Score", creditColLen, "Credits")); + source->sendMessage(channel, Jupiter::StringS::Format(IRCUNDERLINE IRCCOLOR "03%*.*s | %*s | %*s | %*s | IP Address", maxNickLen, NICK_COL_HEADER.size(), NICK_COL_HEADER.data(), idColLen, "ID", scoreColLen, "Score", creditColLen, "Credits")); else - source->sendMessage(channel, Jupiter::StringS::Format(IRCUNDERLINE IRCCOLOR "03%*.*s | %*s | %*s | %*s", maxNickLen, NICK_COL_HEADER.size(), NICK_COL_HEADER.ptr(), idColLen, "ID", scoreColLen, "Score", creditColLen, "Credits")); + source->sendMessage(channel, Jupiter::StringS::Format(IRCUNDERLINE IRCCOLOR "03%*.*s | %*s | %*s | %*s", maxNickLen, NICK_COL_HEADER.size(), NICK_COL_HEADER.data(), idColLen, "ID", scoreColLen, "Score", creditColLen, "Credits")); auto output_player = [server, type, source, &channel, maxNickLen, idColLen, scoreColLen, creditColLen](RenX::PlayerInfo *player, const Jupiter::ReadableString &color) { if (server->isAdminLogChanType(type)) - source->sendMessage(channel, Jupiter::StringS::Format(IRCCOLOR "%.*s%*.*s" IRCCOLOR " " IRCCOLOR "03|" IRCCOLOR " %*d " IRCCOLOR "03|" IRCCOLOR " %*.0f " IRCCOLOR "03|" IRCCOLOR " %*.0f " IRCCOLOR "03|" IRCNORMAL " %.*s", color.size(), color.ptr(), maxNickLen, player->name.size(), player->name.data(), idColLen, player->id, scoreColLen, player->score, creditColLen, player->credits, player->ip.size(), player->ip.data())); + source->sendMessage(channel, Jupiter::StringS::Format(IRCCOLOR "%.*s%*.*s" IRCCOLOR " " IRCCOLOR "03|" IRCCOLOR " %*d " IRCCOLOR "03|" IRCCOLOR " %*.0f " IRCCOLOR "03|" IRCCOLOR " %*.0f " IRCCOLOR "03|" IRCNORMAL " %.*s", color.size(), + color.data(), maxNickLen, player->name.size(), player->name.data(), idColLen, player->id, scoreColLen, player->score, creditColLen, player->credits, player->ip.size(), player->ip.data())); else - source->sendMessage(channel, Jupiter::StringS::Format(IRCCOLOR "%.*s%*.*s" IRCCOLOR " " IRCCOLOR "03|" IRCCOLOR " %*d " IRCCOLOR "03|" IRCCOLOR " %*.0f " IRCCOLOR "03|" IRCCOLOR " %*.0f", color.size(), color.ptr(), maxNickLen, player->name.size(), player->name.data(), idColLen, player->id, scoreColLen, player->score, creditColLen, player->credits)); + source->sendMessage(channel, Jupiter::StringS::Format(IRCCOLOR "%.*s%*.*s" IRCCOLOR " " IRCCOLOR "03|" IRCCOLOR " %*d " IRCCOLOR "03|" IRCCOLOR " %*.0f " IRCCOLOR "03|" IRCCOLOR " %*.0f", color.size(), + color.data(), maxNickLen, player->name.size(), player->name.data(), idColLen, player->id, scoreColLen, player->score, creditColLen, player->credits)); }; for (auto node = gPlayers.begin(); node != gPlayers.end(); ++node) @@ -1041,7 +1056,8 @@ void SteamIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &ch if (jessilib::findi(node->name, Jupiter::ReferenceString{parameters}) != std::string::npos) { Jupiter::String playerName = RenX::getFormattedPlayerName(*node); - msg.format(IRCCOLOR "03[Steam] " IRCCOLOR "%.*s (ID: %d) ", playerName.size(), playerName.ptr(), node->id); + msg.format(IRCCOLOR "03[Steam] " IRCCOLOR "%.*s (ID: %d) ", playerName.size(), + playerName.data(), node->id); if (node->steamid != 0) { msg += "is using steam ID " IRCBOLD; @@ -1127,7 +1143,8 @@ void KillDeathRatioIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableS if (jessilib::findi(node->name, Jupiter::ReferenceString{parameters}) != std::string::npos) { Jupiter::String playerName = RenX::getFormattedPlayerName(*node); - msg.format(IRCBOLD "%.*s" IRCBOLD IRCCOLOR ": Kills: %u - Deaths: %u - KDR: %.2f", playerName.size(), playerName.ptr(), node->kills, node->deaths, static_cast(node->kills) / (node->deaths == 0 ? 1.0f : static_cast(node->deaths))); + msg.format(IRCBOLD "%.*s" IRCBOLD IRCCOLOR ": Kills: %u - Deaths: %u - KDR: %.2f", playerName.size(), + playerName.data(), node->kills, node->deaths, static_cast(node->kills) / (node->deaths == 0 ? 1.0f : static_cast(node->deaths))); source->sendMessage(channel, msg); } } @@ -1997,8 +2014,8 @@ void BanSearchIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString } out.format("ID: %lu (" IRCCOLOR "%sactive" IRCCOLOR "); Added: %s; Expires: %s; IP: %.*s/%u; HWID: %.*s; Steam: %llu; Types:%.*s Name: %.*s; Banner: %.*s", - i, entry->is_active() ? "12" : "04in", dateStr, expireStr, ip_str.size(), ip_str.ptr(), entry->prefix_length, entry->hwid.size(), entry->hwid.data(), entry->steamid, - types.size(), types.ptr(), entry->name.size(), entry->name.data(), entry->banner.size(), entry->banner.data()); + i, entry->is_active() ? "12" : "04in", dateStr, expireStr, ip_str.size(), ip_str.data(), entry->prefix_length, entry->hwid.size(), entry->hwid.data(), entry->steamid, + types.size(), types.data(), entry->name.size(), entry->name.data(), entry->banner.size(), entry->banner.data()); if (!entry->rdns.empty()) { @@ -2563,8 +2580,8 @@ void ExemptionSearchIRCCommand::trigger(IRC_Bot *source, const Jupiter::Readable } out.format("ID: %lu (%sactive); Date: %s; IP: %.*s/%u; Steam: %llu; Types:%.*s Setter: %.*s", - i, entry->is_active() ? "" : "in", timeStr, ip_str.size(), ip_str.ptr(), entry->prefix_length, entry->steamid, - types.size(), types.ptr(), entry->setter.size(), entry->setter.data()); + i, entry->is_active() ? "" : "in", timeStr, ip_str.size(), ip_str.data(), entry->prefix_length, entry->steamid, + types.size(), types.data(), entry->setter.size(), entry->setter.data()); source->sendNotice(nick, out); } @@ -3084,7 +3101,7 @@ void RefundIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &c player = server->getPlayerByPartName(playerName); if (player != nullptr) { if (server->giveCredits(*player, credits)) { - msg.format("You have been refunded %.0f credits by %.*s.", credits, nick.size(), nick.ptr()); + msg.format("You have been refunded %.0f credits by %.*s.", credits, nick.size(), nick.data()); server->sendMessage(*player, msg); msg.format("%.*s has been refunded %.0f credits.", player->name.size(), player->name.data(), credits); } @@ -3487,7 +3504,7 @@ void RulesGameCommand::create() { } void RulesGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, const Jupiter::ReadableString ¶meters) { - source->sendMessage(Jupiter::StringS::Format("Rules: %.*s", source->getRules().size(), source->getRules().ptr())); + source->sendMessage(Jupiter::StringS::Format("Rules: %.*s", source->getRules().size(), source->getRules().data())); } const Jupiter::ReadableString &RulesGameCommand::getHelp(const Jupiter::ReadableString &) { @@ -3513,8 +3530,12 @@ void ModRequestGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *play const Jupiter::ReadableString &staff_word = pluginInstance.getStaffTitle(); Jupiter::String fmtName = RenX::getFormattedPlayerName(*player); - Jupiter::StringL user_message = Jupiter::StringL::Format(IRCCOLOR "12[%.*s Request] " IRCCOLOR IRCBOLD "%.*s" IRCBOLD IRCCOLOR "07 has requested assistance in-game for \"%.*s\"; please look in ", staff_word.size(), staff_word.ptr(), fmtName.size(), fmtName.ptr(), parameters.size(), parameters.ptr()); - Jupiter::StringS channel_message = Jupiter::StringS::Format(IRCCOLOR "12[%.*s Request] " IRCCOLOR IRCBOLD "%.*s" IRCBOLD IRCCOLOR "07 has requested assistance in-game! Reason: %.*s" IRCCOLOR, staff_word.size(), staff_word.ptr(), fmtName.size(), fmtName.ptr(), parameters.size(), parameters.ptr()); + Jupiter::StringL user_message = Jupiter::StringL::Format(IRCCOLOR "12[%.*s Request] " IRCCOLOR IRCBOLD "%.*s" IRCBOLD IRCCOLOR "07 has requested assistance in-game for \"%.*s\"; please look in ", staff_word.size(), + staff_word.data(), fmtName.size(), fmtName.data(), parameters.size(), + parameters.data()); + Jupiter::StringS channel_message = Jupiter::StringS::Format(IRCCOLOR "12[%.*s Request] " IRCCOLOR IRCBOLD "%.*s" IRCBOLD IRCCOLOR "07 has requested assistance in-game! Reason: %.*s" IRCCOLOR, staff_word.size(), + staff_word.data(), fmtName.size(), fmtName.data(), parameters.size(), + parameters.data()); // Alerts a channel and all relevant users in the channel auto alert_channel = [&user_message, &channel_message](Jupiter::IRC::Client& server, const Jupiter::IRC::Client::Channel& channel) { @@ -3554,7 +3575,8 @@ void ModRequestGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *play } // Inform the user of the result - source->sendMessage(*player, Jupiter::StringS::Format("A total of %u %.*ss have been notified of your assistance request.", total_user_alerts, staff_word.size(), staff_word.ptr())); + source->sendMessage(*player, Jupiter::StringS::Format("A total of %u %.*ss have been notified of your assistance request.", total_user_alerts, staff_word.size(), + staff_word.data())); } const Jupiter::ReadableString &ModRequestGameCommand::getHelp(const Jupiter::ReadableString &) { diff --git a/src/Plugins/RenX/RenX.Core/RenX_Functions.cpp b/src/Plugins/RenX/RenX.Core/RenX_Functions.cpp index 85e7ec7..8bc1a14 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_Functions.cpp +++ b/src/Plugins/RenX/RenX.Core/RenX_Functions.cpp @@ -439,11 +439,11 @@ const Jupiter::ReadableString &RenX::getCharacter(const Jupiter::ReadableString object = chr; if (object.find(STRING_LITERAL_AS_REFERENCE("Rx_")) == 0) - object.shiftRight(3); + object.remove_prefix(3); if (object.find(STRING_LITERAL_AS_REFERENCE("InventoryManager_")) == 0) - object.shiftRight(17); + object.remove_prefix(17); else if (object.find(STRING_LITERAL_AS_REFERENCE("FamilyInfo_")) == 0) - object.shiftRight(11); + object.remove_prefix(11); return object; } @@ -452,7 +452,7 @@ const Jupiter::ReferenceString &translateCharacter(Jupiter::ReferenceString &obj { if (object.find(STRING_LITERAL_AS_REFERENCE("GDI_")) == 0) { - object.shiftRight(4); + object.remove_prefix(4); if (object == "Deadeye"sv) return translated_GDI_Deadeye; if (object == "Engineer"sv) return translated_GDI_Engineer; if (object == "Grenadier"sv) return translated_GDI_Grenadier; @@ -471,7 +471,7 @@ const Jupiter::ReferenceString &translateCharacter(Jupiter::ReferenceString &obj } else if (object.find(STRING_LITERAL_AS_REFERENCE("Nod_")) == 0) { - object.shiftRight(4); + object.remove_prefix(4); if (object == "BlackHandSniper"sv) return translated_Nod_BlackHandSniper; if (object == "ChemicalTrooper"sv) return translated_Nod_ChemicalTrooper; if (object == "Engineer"sv) return translated_Nod_Engineer; @@ -504,16 +504,16 @@ std::string_view RenX::translateName(std::string_view obj) Jupiter::ReferenceString object = obj; if (object.find(STRING_LITERAL_AS_REFERENCE("nBab_")) == 0) - object.shiftRight(5); + object.remove_prefix(5); if (object.find(STRING_LITERAL_AS_REFERENCE("Rx_")) == 0) - object.shiftRight(3); + object.remove_prefix(3); else if (object.find(STRING_LITERAL_AS_REFERENCE("TS_")) == 0) - object.shiftRight(3); + object.remove_prefix(3); if (object.find(STRING_LITERAL_AS_REFERENCE("Vehicle_")) == 0) { - object.shiftRight(8); + object.remove_prefix(8); /** Nod Vehicles */ if (object == "Harvester_Nod"sv) return translated_Vehicle_Harvester_Nod; @@ -551,7 +551,7 @@ std::string_view RenX::translateName(std::string_view obj) } else if (object.find(STRING_LITERAL_AS_REFERENCE("Weapon_")) == 0) { - object.shiftRight(7); + object.remove_prefix(7); if (object == "HeavyPistol"sv) return translated_Weapon_HeavyPistol; if (object == "Carbine"sv) return translated_Weapon_Carbine; if (object == "Airstrike_GDI"sv) return translated_Weapon_Airstrike_GDI; @@ -578,23 +578,23 @@ std::string_view RenX::translateName(std::string_view obj) } else if (object.find(STRING_LITERAL_AS_REFERENCE("Projectile_")) == 0) { - object.shiftRight(11); + object.remove_prefix(11); if (object == "EMPGrenade"sv) return translated_Projectile_EMPGrenade; if (object == "SmokeGrenade"sv) return translated_Projectile_SmokeGrenade; } else if (object.find(STRING_LITERAL_AS_REFERENCE("InventoryManager_")) == 0) { - object.shiftRight(17); + object.remove_prefix(17); return translateCharacter(object); } else if (object.find(STRING_LITERAL_AS_REFERENCE("FamilyInfo_")) == 0) { - object.shiftRight(11); + object.remove_prefix(11); return translateCharacter(object); } else if (object.find(STRING_LITERAL_AS_REFERENCE("DmgType_")) == 0) { - object.shiftRight(8); + object.remove_prefix(8); /** Non-weapon damage types */ if (object == "Suicided"sv) return translated_DmgType_Suicided; @@ -706,7 +706,7 @@ std::string_view RenX::translateName(std::string_view obj) } else if (object.find(STRING_LITERAL_AS_REFERENCE("Building_")) == 0) { - object.shiftRight(9); + object.remove_prefix(9); /** Nod structures */ if (object == "HandOfNod"sv) return translated_Building_HandOfNod; if (object == "AirTower"sv) return translated_Building_AirTower; @@ -743,7 +743,7 @@ std::string_view RenX::translateName(std::string_view obj) } else if (object.find(STRING_LITERAL_AS_REFERENCE("CapturableMCT_")) == 0) { - object.shiftRight(14); + object.remove_prefix(14); if (object == "Fort"sv) return translated_CapturableMCT_Fort; if (object == "MC"sv) return translated_CapturableMCT_MC; if (object == "Fort_Internals"sv) return translated_CapturableMCT_Fort_Internals; @@ -751,7 +751,7 @@ std::string_view RenX::translateName(std::string_view obj) } else if (object.find(STRING_LITERAL_AS_REFERENCE("Defence_")) == 0) { - object.shiftRight(8); + object.remove_prefix(8); if (object == "GuardTower"sv) return translated_Defence_GuardTower; if (object == "Turret"sv) return translated_Defence_Turret; if (object == "SAMSite"sv) return translated_Defence_SAMSite; @@ -761,20 +761,20 @@ std::string_view RenX::translateName(std::string_view obj) } else if (object.find(STRING_LITERAL_AS_REFERENCE("Sentinel_")) == 0) { - object.shiftRight(9); + object.remove_prefix(9); if (object == "AGT_MG_Base"sv) return translated_Sentinel_AGT_MG_Base; if (object == "AGT_Rockets_Base"sv) return translated_Sentinel_AGT_Rockets_Base; if (object == "Obelisk_Laser_Base"sv) return translated_Sentinel_Obelisk_Laser_Base; } else if (object.find(STRING_LITERAL_AS_REFERENCE("UTDmgType_")) == 0) { - object.shiftRight(10); + object.remove_prefix(10); if (object == "VehicleExplosion"sv) return translated_UTDmgType_VehicleExplosion; if (object == "Drowned"sv) return translated_UTDmgType_Drowned; } else if (object.find(STRING_LITERAL_AS_REFERENCE("VoteMenuChoice_")) == 0) { - object.shiftRight(15); + object.remove_prefix(15); if (object == "AddBots"sv) return translated_VoteMenuChoice_AddBots; if (object == "ChangeMap"sv) return translated_VoteMenuChoice_ChangeMap; if (object == "Donate"sv) return translated_VoteMenuChoice_Donate; diff --git a/src/Plugins/RenX/RenX.Core/RenX_Server.cpp b/src/Plugins/RenX/RenX.Core/RenX_Server.cpp index 153aa96..5401272 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_Server.cpp +++ b/src/Plugins/RenX/RenX.Core/RenX_Server.cpp @@ -275,7 +275,8 @@ int RenX::Server::sendMessage(std::string_view message) { if (this->players.size() != 0) { for (auto node = this->players.begin(); node != this->players.end(); ++node) { if (node->isBot == false) { - result += sendSocket(Jupiter::StringS::Format("chostprivatesay pid%d %.*s\n", node->id, msg.size(), msg.ptr())); + result += sendSocket(Jupiter::StringS::Format("chostprivatesay pid%d %.*s\n", node->id, msg.size(), + msg.data())); } } } @@ -581,10 +582,12 @@ void RenX::Server::banCheck(RenX::PlayerInfo &player) { time_t current_time = std::chrono::system_clock::to_time_t(last_to_expire[0]->timestamp + last_to_expire[0]->length); strftime(timeStr, sizeof(timeStr), "%b %d %Y at %H:%M:%S", localtime(¤t_time)); if (last_to_expire[0]->length == std::chrono::seconds::zero()) { - forceKickPlayer(player, Jupiter::StringS::Format("You were permanently banned from %.*s on %s for: %.*s", m_ban_from_str.size(), m_ban_from_str.ptr(), timeStr, last_to_expire[0]->reason.size(), last_to_expire[0]->reason.data())); + forceKickPlayer(player, Jupiter::StringS::Format("You were permanently banned from %.*s on %s for: %.*s", m_ban_from_str.size(), + m_ban_from_str.data(), timeStr, last_to_expire[0]->reason.size(), last_to_expire[0]->reason.data())); } else { - forceKickPlayer(player, Jupiter::StringS::Format("You are banned from %.*s until %s for: %.*s", m_ban_from_str.size(), m_ban_from_str.ptr(), timeStr, last_to_expire[0]->reason.size(), last_to_expire[0]->reason.data())); + forceKickPlayer(player, Jupiter::StringS::Format("You are banned from %.*s until %s for: %.*s", m_ban_from_str.size(), + m_ban_from_str.data(), timeStr, last_to_expire[0]->reason.size(), last_to_expire[0]->reason.data())); } player.ban_flags |= RenX::BanDatabase::Entry::FLAG_TYPE_BOT; // implies FLAG_TYPE_BOT @@ -595,9 +598,11 @@ void RenX::Server::banCheck(RenX::PlayerInfo &player) { strftime(timeStr, sizeof(timeStr), "%b %d %Y at %H:%M:%S", localtime(¤t_time)); mute(player); if (last_to_expire[1]->length == std::chrono::seconds::zero()) - sendMessage(player, Jupiter::StringS::Format("You were permanently muted from %.*s on %s for: %.*s", m_ban_from_str.size(), m_ban_from_str.ptr(), timeStr, last_to_expire[1]->reason.size(), last_to_expire[1]->reason.data())); + sendMessage(player, Jupiter::StringS::Format("You were permanently muted from %.*s on %s for: %.*s", m_ban_from_str.size(), + m_ban_from_str.data(), timeStr, last_to_expire[1]->reason.size(), last_to_expire[1]->reason.data())); else - sendMessage(player, Jupiter::StringS::Format("You are muted from %.*s until %s for: %.*s", m_ban_from_str.size(), m_ban_from_str.ptr(), timeStr, last_to_expire[1]->reason.size(), last_to_expire[1]->reason.data())); + sendMessage(player, Jupiter::StringS::Format("You are muted from %.*s until %s for: %.*s", m_ban_from_str.size(), + m_ban_from_str.data(), timeStr, last_to_expire[1]->reason.size(), last_to_expire[1]->reason.data())); player.ban_flags |= RenX::BanDatabase::Entry::FLAG_TYPE_BOT; // implies FLAG_TYPE_BOT } @@ -605,40 +610,50 @@ void RenX::Server::banCheck(RenX::PlayerInfo &player) { time_t current_time = std::chrono::system_clock::to_time_t(last_to_expire[2]->timestamp + last_to_expire[2]->length); strftime(timeStr, sizeof(timeStr), "%b %d %Y at %H:%M:%S", localtime(¤t_time)); if (last_to_expire[2]->length == std::chrono::seconds::zero()) - sendMessage(player, Jupiter::StringS::Format("You were permanently bot-muted from %.*s on %s for: %.*s", m_ban_from_str.size(), m_ban_from_str.ptr(), timeStr, last_to_expire[2]->reason.size(), last_to_expire[2]->reason.data())); + sendMessage(player, Jupiter::StringS::Format("You were permanently bot-muted from %.*s on %s for: %.*s", m_ban_from_str.size(), + m_ban_from_str.data(), timeStr, last_to_expire[2]->reason.size(), last_to_expire[2]->reason.data())); else - sendMessage(player, Jupiter::StringS::Format("You are bot-muted from %.*s until %s for: %.*s", m_ban_from_str.size(), m_ban_from_str.ptr(), timeStr, last_to_expire[2]->reason.size(), last_to_expire[2]->reason.data())); + sendMessage(player, Jupiter::StringS::Format("You are bot-muted from %.*s until %s for: %.*s", m_ban_from_str.size(), + m_ban_from_str.data(), timeStr, last_to_expire[2]->reason.size(), last_to_expire[2]->reason.data())); } if (last_to_expire[3] != nullptr) { // Vote ban time_t current_time = std::chrono::system_clock::to_time_t(last_to_expire[3]->timestamp + last_to_expire[3]->length); strftime(timeStr, sizeof(timeStr), "%b %d %Y at %H:%M:%S", localtime(¤t_time)); if (last_to_expire[3]->length == std::chrono::seconds::zero()) - sendMessage(player, Jupiter::StringS::Format("You were permanently vote-muted from %.*s on %s for: %.*s", m_ban_from_str.size(), m_ban_from_str.ptr(), timeStr, last_to_expire[3]->reason.size(), last_to_expire[3]->reason.data())); + sendMessage(player, Jupiter::StringS::Format("You were permanently vote-muted from %.*s on %s for: %.*s", m_ban_from_str.size(), + m_ban_from_str.data(), timeStr, last_to_expire[3]->reason.size(), last_to_expire[3]->reason.data())); else - sendMessage(player, Jupiter::StringS::Format("You are vote-muted from %.*s until %s for: %.*s", m_ban_from_str.size(), m_ban_from_str.ptr(), timeStr, last_to_expire[3]->reason.size(), last_to_expire[3]->reason.data())); + sendMessage(player, Jupiter::StringS::Format("You are vote-muted from %.*s until %s for: %.*s", m_ban_from_str.size(), + m_ban_from_str.data(), timeStr, last_to_expire[3]->reason.size(), last_to_expire[3]->reason.data())); } if (last_to_expire[4] != nullptr) { // Mine ban time_t current_time = std::chrono::system_clock::to_time_t(last_to_expire[4]->timestamp + last_to_expire[4]->length); mineBan(player); strftime(timeStr, sizeof(timeStr), "%b %d %Y at %H:%M:%S", localtime(¤t_time)); if (last_to_expire[4]->length == std::chrono::seconds::zero()) - sendMessage(player, Jupiter::StringS::Format("You were permanently mine-banned from %.*s on %s for: %.*s", m_ban_from_str.size(), m_ban_from_str.ptr(), timeStr, last_to_expire[4]->reason.size(), last_to_expire[4]->reason.data())); + sendMessage(player, Jupiter::StringS::Format("You were permanently mine-banned from %.*s on %s for: %.*s", m_ban_from_str.size(), + m_ban_from_str.data(), timeStr, last_to_expire[4]->reason.size(), last_to_expire[4]->reason.data())); else - sendMessage(player, Jupiter::StringS::Format("You are mine-banned from %.*s until %s for: %.*s", m_ban_from_str.size(), m_ban_from_str.ptr(), timeStr, last_to_expire[4]->reason.size(), last_to_expire[4]->reason.data())); + sendMessage(player, Jupiter::StringS::Format("You are mine-banned from %.*s until %s for: %.*s", m_ban_from_str.size(), + m_ban_from_str.data(), timeStr, last_to_expire[4]->reason.size(), last_to_expire[4]->reason.data())); } if (last_to_expire[5] != nullptr) { // Ladder ban time_t current_time = std::chrono::system_clock::to_time_t(last_to_expire[5]->timestamp + last_to_expire[5]->length); strftime(timeStr, sizeof(timeStr), "%b %d %Y at %H:%M:%S", localtime(¤t_time)); if (last_to_expire[5]->length == std::chrono::seconds::zero()) - sendMessage(player, Jupiter::StringS::Format("You were permanently ladder-banned from %.*s on %s for: %.*s", m_ban_from_str.size(), m_ban_from_str.ptr(), timeStr, last_to_expire[5]->reason.size(), last_to_expire[5]->reason.data())); + sendMessage(player, Jupiter::StringS::Format("You were permanently ladder-banned from %.*s on %s for: %.*s", m_ban_from_str.size(), + m_ban_from_str.data(), timeStr, last_to_expire[5]->reason.size(), last_to_expire[5]->reason.data())); else - sendMessage(player, Jupiter::StringS::Format("You are ladder-banned from %.*s until %s for: %.*s", m_ban_from_str.size(), m_ban_from_str.ptr(), timeStr, last_to_expire[5]->reason.size(), last_to_expire[5]->reason.data())); + sendMessage(player, Jupiter::StringS::Format("You are ladder-banned from %.*s until %s for: %.*s", m_ban_from_str.size(), + m_ban_from_str.data(), timeStr, last_to_expire[5]->reason.size(), last_to_expire[5]->reason.data())); } if (last_to_expire[6] != nullptr) { // Alert IRC_Bot *server; Jupiter::String fmtName = RenX::getFormattedPlayerName(player); - Jupiter::StringL user_message = Jupiter::StringL::Format(IRCCOLOR "04[Alert] " IRCCOLOR IRCBOLD "%.*s" IRCBOLD IRCCOLOR " is marked for monitoring by %.*s for: \"%.*s\". Please keep an eye on them in ", fmtName.size(), fmtName.ptr(), last_to_expire[6]->banner.size(), last_to_expire[6]->banner.data(), last_to_expire[6]->reason.size(), last_to_expire[6]->reason.data()); - Jupiter::StringS channel_message = Jupiter::StringS::Format(IRCCOLOR "04[Alert] " IRCCOLOR IRCBOLD "%.*s" IRCBOLD IRCCOLOR " is marked for monitoring by %.*s for: \"%.*s\"." IRCCOLOR, fmtName.size(), fmtName.ptr(), last_to_expire[6]->banner.size(), last_to_expire[6]->banner.data(), last_to_expire[6]->reason.size(), last_to_expire[6]->reason.data()); + Jupiter::StringL user_message = Jupiter::StringL::Format(IRCCOLOR "04[Alert] " IRCCOLOR IRCBOLD "%.*s" IRCBOLD IRCCOLOR " is marked for monitoring by %.*s for: \"%.*s\". Please keep an eye on them in ", fmtName.size(), + fmtName.data(), last_to_expire[6]->banner.size(), last_to_expire[6]->banner.data(), last_to_expire[6]->reason.size(), last_to_expire[6]->reason.data()); + Jupiter::StringS channel_message = Jupiter::StringS::Format(IRCCOLOR "04[Alert] " IRCCOLOR IRCBOLD "%.*s" IRCBOLD IRCCOLOR " is marked for monitoring by %.*s for: \"%.*s\"." IRCCOLOR, fmtName.size(), + fmtName.data(), last_to_expire[6]->banner.size(), last_to_expire[6]->banner.data(), last_to_expire[6]->reason.size(), last_to_expire[6]->reason.data()); for (size_t server_index = 0; server_index < serverManager->size(); ++server_index) { server = serverManager->getServer(server_index); @@ -662,7 +677,7 @@ void RenX::Server::banCheck(RenX::PlayerInfo &player) { void RenX::Server::banPlayer(int id, std::string_view banner, std::string_view reason) { if (m_rconBan) { Jupiter::String out_reason = RenX::escapifyRCON(reason); - sendSocket(Jupiter::StringS::Format("ckickban pid%d %.*s\n", id, out_reason.size(), out_reason.ptr())); + sendSocket(Jupiter::StringS::Format("ckickban pid%d %.*s\n", id, out_reason.size(), out_reason.data())); } else { RenX::PlayerInfo *player = getPlayer(id); @@ -681,21 +696,26 @@ void RenX::Server::banPlayer(const RenX::PlayerInfo &player, std::string_view ba if (length == std::chrono::seconds::zero()) { if (m_rconBan) { Jupiter::String out_reason = RenX::escapifyRCON(reason); - sendSocket(Jupiter::StringS::Format("ckickban pid%d %.*s\n", player.id, out_reason.size(), out_reason.ptr())); + sendSocket(Jupiter::StringS::Format("ckickban pid%d %.*s\n", player.id, out_reason.size(), + out_reason.data())); } else if (!banner.empty()) { - forceKickPlayer(player, Jupiter::StringS::Format("You are permanently banned from %.*s by %.*s for: %.*s", m_ban_from_str.size(), m_ban_from_str.ptr(), banner.size(), banner.data(), reason.size(), reason.data())); + forceKickPlayer(player, Jupiter::StringS::Format("You are permanently banned from %.*s by %.*s for: %.*s", m_ban_from_str.size(), + m_ban_from_str.data(), banner.size(), banner.data(), reason.size(), reason.data())); } else { - forceKickPlayer(player, Jupiter::StringS::Format("You are permanently banned from %.*s for: %.*s", m_ban_from_str.size(), m_ban_from_str.ptr(), reason.size(), reason.data())); + forceKickPlayer(player, Jupiter::StringS::Format("You are permanently banned from %.*s for: %.*s", m_ban_from_str.size(), + m_ban_from_str.data(), reason.size(), reason.data())); } } else if (!banner.empty()) { // TODO: make the time formatting not complete nonsense - forceKickPlayer(player, Jupiter::StringS::Format("You are banned from %.*s by %.*s for the next %lld days, %.2d:%.2d:%.2d for: %.*s", m_ban_from_str.size(), m_ban_from_str.ptr(), banner.size(), banner.data(), static_cast(length.count() / 86400), static_cast(length.count() % 3600), static_cast((length.count() % 3600) / 60), static_cast(length.count() % 60), reason.size(), reason.data())); + forceKickPlayer(player, Jupiter::StringS::Format("You are banned from %.*s by %.*s for the next %lld days, %.2d:%.2d:%.2d for: %.*s", m_ban_from_str.size(), + m_ban_from_str.data(), banner.size(), banner.data(), static_cast(length.count() / 86400), static_cast(length.count() % 3600), static_cast((length.count() % 3600) / 60), static_cast(length.count() % 60), reason.size(), reason.data())); } else { - forceKickPlayer(player, Jupiter::StringS::Format("You are banned from %.*s for the next %lld days, %.2d:%.2d:%.2d for: %.*s", m_ban_from_str.size(), m_ban_from_str.ptr(), static_cast(length.count() / 86400), static_cast(length.count() % 3600), static_cast((length.count() % 3600) / 60), static_cast(length.count() % 60), reason.size(), reason.data())); + forceKickPlayer(player, Jupiter::StringS::Format("You are banned from %.*s for the next %lld days, %.2d:%.2d:%.2d for: %.*s", m_ban_from_str.size(), + m_ban_from_str.data(), static_cast(length.count() / 86400), static_cast(length.count() % 3600), static_cast((length.count() % 3600) / 60), static_cast(length.count() % 60), reason.size(), reason.data())); } } } @@ -808,11 +828,11 @@ bool RenX::Server::setMap(std::string_view map) { } bool RenX::Server::loadMutator(const Jupiter::ReadableString &mutator) { - return send(Jupiter::StringS::Format("loadmutator %.*s", mutator.size(), mutator.ptr())) > 0; + return send(Jupiter::StringS::Format("loadmutator %.*s", mutator.size(), mutator.data())) > 0; } bool RenX::Server::unloadMutator(const Jupiter::ReadableString &mutator) { - return send(Jupiter::StringS::Format("unloadmutator %.*s", mutator.size(), mutator.ptr())) > 0; + return send(Jupiter::StringS::Format("unloadmutator %.*s", mutator.size(), mutator.data())) > 0; } bool RenX::Server::cancelVote(const RenX::TeamType team) { @@ -1018,7 +1038,7 @@ const Jupiter::ReadableString &RenX::Server::getPassword() const { return m_pass; } -const Jupiter::ReadableString &RenX::Server::getUser() const { +std::string_view RenX::Server::getUser() const { return m_rconUser; } @@ -1307,11 +1327,12 @@ void process_escape_sequences(std::string& out_string) { } void RenX::Server::processLine(const Jupiter::ReadableString &line) { + std::string_view in_line = line; if (line.empty()) return; auto& xPlugins = RenX::getCore()->getPlugins(); - auto tokens_view = jessilib::split_view(std::string_view{line}, m_rconVersion == 3 ? RenX::DelimC3 : RenX::DelimC); + auto tokens_view = jessilib::split_view(in_line, m_rconVersion == 3 ? RenX::DelimC3 : RenX::DelimC); std::vector tokens; for (auto& token : tokens_view) { @@ -1435,7 +1456,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) { result.name = player_tokens[2]; result.team = RenX::getTeam(player_tokens[0]); if (idToken.isNotEmpty() && idToken[0] == 'b') { - idToken.shiftRight(1); + idToken.remove_prefix(1); result.isBot = true; result.isPlayer = true; } @@ -1570,17 +1591,17 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) { { auto parsed_token = parsePlayerData(token); if (parsed_token.id == 0 && parsed_token.name.empty()) { - sendAdmChan(IRCCOLOR "04[Error]" IRCCOLOR" Failed to parse player token: %.*s", token.size(), token.ptr()); + sendAdmChan(IRCCOLOR "04[Error]" IRCCOLOR" Failed to parse player token: %.*s", token.size(), token.data()); } return getPlayerOrAdd(parsed_token.name, parsed_token.id, parsed_token.team, parsed_token.isBot, 0U, ""_jrs, ""_jrs); }; - auto gotoToken = [&line, &tokens, this](size_t index) + auto gotoToken = [&in_line, &tokens, this](size_t index) { if (index >= tokens.size()) - return ""_jrs; + return ""sv; const char delim = getVersion() >= 4 ? RenX::DelimC : RenX::DelimC3; - const char *itr = line.ptr(); + const char *itr = in_line.data(); while (index != 0) { @@ -1589,7 +1610,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) { ++itr; } - return Jupiter::ReferenceString::substring(line, itr - line.ptr()); + return in_line.substr(itr - in_line.data()); }; auto finished_connecting = [this, &xPlugins]() { @@ -1602,7 +1623,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) { if (tokens[0].isNotEmpty()) { - char header = tokens[0].get(0); + char header = tokens[0][0]; tokens[0].shiftRight(1); switch (header) { @@ -1619,7 +1640,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) { Jupiter::ReferenceString steamToken = getToken(2); Jupiter::ReferenceString adminToken = getToken(3); Jupiter::ReferenceString teamToken = getToken(4); - if (tokens[0].get(0) == 'b') + if (tokens[0][0] == 'b') { isBot = true; tokens[0].shiftRight(1); @@ -2007,8 +2028,8 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) { const Jupiter::ReferenceString guid_token = getToken(1); if (guid_token.size() == 32U) { - m_map.guid[0] = Jupiter::asUnsignedLongLong(guid_token.substring(size_t{ 0 }, 16U), 16); - m_map.guid[1] = Jupiter::asUnsignedLongLong(guid_token.substring(16U), 16); + m_map.guid[0] = Jupiter::asUnsignedLongLong(guid_token.substr(size_t{ 0 }, 16U), 16); + m_map.guid[1] = Jupiter::asUnsignedLongLong(guid_token.substr(16U), 16); } } else if (jessilib::equalsi(m_lastCommand, "serverinfo"sv)) @@ -2023,8 +2044,8 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) { const Jupiter::ReferenceString guid_token = getToken(11); if (guid_token.size() == 32U) { - m_map.guid[0] = Jupiter::asUnsignedLongLong(guid_token.substring(size_t{ 0 }, 16U), 16); - m_map.guid[1] = Jupiter::asUnsignedLongLong(guid_token.substring(16U), 16); + m_map.guid[0] = Jupiter::asUnsignedLongLong(guid_token.substr(size_t{ 0 }, 16U), 16); + m_map.guid[1] = Jupiter::asUnsignedLongLong(guid_token.substr(16U), 16); } } } @@ -2089,8 +2110,8 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) { const Jupiter::ReferenceString guid_token = getToken(1); if (guid_token.size() == 32U) { - this->maps.back().guid[0] = Jupiter::asUnsignedLongLong(guid_token.substring(size_t{ 0 }, 16U), 16); - this->maps.back().guid[1] = Jupiter::asUnsignedLongLong(guid_token.substring(16U), 16); + this->maps.back().guid[0] = Jupiter::asUnsignedLongLong(guid_token.substr(size_t{ 0 }, 16U), 16); + this->maps.back().guid[1] = Jupiter::asUnsignedLongLong(guid_token.substr(16U), 16); } } } @@ -3187,7 +3208,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) { RenX::PlayerInfo *player = parseGetPlayerOrAdd(getToken(tokens.size() - 1)); if ((player->ban_flags & RenX::BanDatabase::Entry::FLAG_TYPE_VOTE) != 0) - sendData(Jupiter::StringS::Format("ccancelvote %.*s\n", teamToken.size(), teamToken.ptr())); + sendData(Jupiter::StringS::Format("ccancelvote %.*s\n", teamToken.size(), teamToken.data())); for (const auto& plugin : xPlugins) { plugin->RenX_OnVoteOther(*this, team, voteType, *player); @@ -3198,13 +3219,13 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) { RenX::PlayerInfo *player = parseGetPlayerOrAdd(getToken(5)); if ((player->ban_flags & RenX::BanDatabase::Entry::FLAG_TYPE_VOTE) != 0) - sendData(Jupiter::StringS::Format("ccancelvote %.*s\n", teamToken.size(), teamToken.ptr())); + sendData(Jupiter::StringS::Format("ccancelvote %.*s\n", teamToken.size(), teamToken.data())); // PARSE PARAMETERS HERE if (voteType.find("Rx_VoteMenuChoice_"_jrs) == 0) { - voteType.shiftRight(18); + voteType.remove_prefix(18); if (voteType == "AddBots"sv) { @@ -3286,7 +3307,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) { } else { - voteType.shiftLeft(18); + voteType = getToken(3); for (const auto& plugin : xPlugins) { plugin->RenX_OnVoteOther(*this, team, voteType, *player); } @@ -3323,7 +3344,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) { Jupiter::ReferenceString votes_token = getToken(5); if (votes_token.size() > 4) { - votes_token.shiftRight(4); + votes_token.remove_prefix(4); yesVotes = Jupiter::from_string(votes_token); } @@ -3331,7 +3352,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) { votes_token = getToken(6); if (votes_token.size() > 3) { - votes_token.shiftRight(3); + votes_token.remove_prefix(3); noVotes = Jupiter::from_string(votes_token); } @@ -3465,7 +3486,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) { }*/ else { - Jupiter::ReferenceString raw = Jupiter::ReferenceString::substring(line, 1); + Jupiter::ReferenceString raw = in_line.substr(1); for (const auto& plugin : xPlugins) { plugin->RenX_OnLog(*this, raw); } @@ -3481,7 +3502,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) { case 'c': { - Jupiter::ReferenceString raw = Jupiter::ReferenceString::substring(line, 1); + Jupiter::ReferenceString raw = in_line.substr(1); for (const auto& plugin : xPlugins) { plugin->RenX_OnCommand(*this, raw); } @@ -3493,7 +3514,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) { case 'e': { - Jupiter::ReferenceString raw = Jupiter::ReferenceString::substring(line, 1); + Jupiter::ReferenceString raw = in_line.substr(1); for (const auto& plugin : xPlugins) { plugin->RenX_OnError(*this, raw); } @@ -3502,15 +3523,17 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) { case 'v': { - Jupiter::ReferenceString raw = Jupiter::ReferenceString::substring(line, 1); + Jupiter::ReferenceString raw = in_line.substr(1); m_rconVersion = Jupiter::asInt(raw, 10); if (m_rconVersion >= 3) { - if (m_rconVersion == 3) // Old format: 003Open Beta 5.12 - m_gameVersion = raw.substring(3); - else // New format: 004 | Game Version Number | Game Version - { + if (m_rconVersion == 3) { // Old format: 003Open Beta 5.12 + if (raw.size() > 3) { + m_gameVersion = raw.substr(3); + } + } + else { // New format: 004 | Game Version Number | Game Version m_gameVersionNumber = Jupiter::asInt(getToken(1), 10); m_gameVersion = getToken(2); @@ -3549,19 +3572,19 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) { case 'a': { - m_rconUser = Jupiter::ReferenceString::substring(line, 1); + m_rconUser = in_line.substr(1); if (m_rconUser == RenX::DevBotName) m_devBot = true; for (const auto& plugin : xPlugins) { - plugin->RenX_OnAuthorized(*this, m_rconUser); + plugin->RenX_OnAuthorized(*this, Jupiter::ReferenceString{m_rconUser}); } } break; default: { - Jupiter::ReferenceString raw = Jupiter::ReferenceString::substring(line, 1); + Jupiter::ReferenceString raw = in_line.substr(1); for (const auto& plugin : xPlugins) { plugin->RenX_OnOther(*this, header, raw); } @@ -3590,7 +3613,7 @@ bool RenX::Server::connect() { if (m_sock.connect(m_hostname.c_str(), m_port, m_clientHostname.empty() ? nullptr : m_clientHostname.c_str())) { m_sock.setBlocking(false); - sendSocket(Jupiter::StringS::Format("a%.*s\n", m_pass.size(), m_pass.ptr())); + sendSocket(Jupiter::StringS::Format("a%.*s\n", m_pass.size(), m_pass.data())); m_connected = true; m_attempts = 0; return true; @@ -3622,7 +3645,7 @@ void RenX::Server::wipeData() { this->maps.clear(); m_awaitingPong = false; m_rconVersion = 0; - m_rconUser.truncate(m_rconUser.size()); + m_rconUser.clear(); } void RenX::Server::wipePlayers() { @@ -3665,7 +3688,7 @@ std::string_view RenX::Server::getRCONUsername() const { RenX::Server::Server(Jupiter::Socket &&socket, std::string_view configurationSection) : Server(configurationSection) { m_sock = std::move(socket); m_hostname = m_sock.getRemoteHostname(); - sendSocket(Jupiter::StringS::Format("a%.*s\n", m_pass.size(), m_pass.ptr())); + sendSocket(Jupiter::StringS::Format("a%.*s\n", m_pass.size(), m_pass.data())); m_connected = true; } diff --git a/src/Plugins/RenX/RenX.Core/RenX_Server.h b/src/Plugins/RenX/RenX.Core/RenX_Server.h index 3f8f377..b99c450 100644 --- a/src/Plugins/RenX/RenX.Core/RenX_Server.h +++ b/src/Plugins/RenX/RenX.Core/RenX_Server.h @@ -827,7 +827,7 @@ namespace RenX * * @return String containing the RCON user name. */ - const Jupiter::ReadableString &getUser() const; + std::string_view getUser() const; /** * @brief Checks if this connection is a DevBot connection. @@ -1111,7 +1111,7 @@ namespace RenX std::chrono::steady_clock::time_point m_lastSendActivity = std::chrono::steady_clock::now(); std::chrono::steady_clock::time_point m_gameover_time; std::string m_lastLine; - Jupiter::StringS m_rconUser; + std::string m_rconUser; std::string m_gameVersion; Jupiter::StringS m_serverName; std::string m_lastCommand; diff --git a/src/Plugins/RenX/RenX.ExcessiveHeadshots/RenX_ExcessiveHeadshots.cpp b/src/Plugins/RenX/RenX.ExcessiveHeadshots/RenX_ExcessiveHeadshots.cpp index dea849c..6f2436b 100644 --- a/src/Plugins/RenX/RenX.ExcessiveHeadshots/RenX_ExcessiveHeadshots.cpp +++ b/src/Plugins/RenX/RenX.ExcessiveHeadshots/RenX_ExcessiveHeadshots.cpp @@ -60,7 +60,8 @@ void RenX_ExcessiveHeadshotsPlugin::RenX_OnKill(RenX::Server &server, const RenX server.banPlayer(player, "Jupiter Bot"_jrs, "Aimbot detected"_jrs); server.sendPubChan(IRCCOLOR "13[Aimbot]" IRCCOLOR " %.*s was banned from the server! Kills: %u - Deaths: %u - Headshots: %u", player.name.size(), player.name.data(), player.kills, player.deaths, player.headshots); 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.data(), player.kills, player.deaths, player.headshots, player.ip.size(), player.ip.data(), steamid.size(), steamid.ptr()); + 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.data(), player.kills, player.deaths, player.headshots, player.ip.size(), player.ip.data(), steamid.size(), + steamid.data()); } } } diff --git a/src/Plugins/RenX/RenX.ExtraLogging/RenX_ExtraLogging.cpp b/src/Plugins/RenX/RenX.ExtraLogging/RenX_ExtraLogging.cpp index 13c7f8a..8f7a3f0 100644 --- a/src/Plugins/RenX/RenX.ExtraLogging/RenX_ExtraLogging.cpp +++ b/src/Plugins/RenX/RenX.ExtraLogging/RenX_ExtraLogging.cpp @@ -46,9 +46,13 @@ int RenX_ExtraLoggingPlugin::OnRehash() } bool RenX_ExtraLoggingPlugin::initialize() { - RenX_ExtraLoggingPlugin::filePrefix = this->config.get("FilePrefix"_jrs, Jupiter::StringS::Format("[%.*s] %.*s", RenX::tags->timeTag.size(), RenX::tags->timeTag.ptr(), RenX::tags->serverPrefixTag.size(), RenX::tags->serverPrefixTag.ptr())); + RenX_ExtraLoggingPlugin::filePrefix = this->config.get("FilePrefix"_jrs, Jupiter::StringS::Format("[%.*s] %.*s", RenX::tags->timeTag.size(), + RenX::tags->timeTag.data(), RenX::tags->serverPrefixTag.size(), + RenX::tags->serverPrefixTag.data())); RenX_ExtraLoggingPlugin::consolePrefix = this->config.get("ConsolePrefix"_jrs, RenX_ExtraLoggingPlugin::filePrefix); - RenX_ExtraLoggingPlugin::newDayFmt = this->config.get("NewDayFormat"_jrs, Jupiter::StringS::Format("Time: %.*s %.*s", RenX::tags->timeTag.size(), RenX::tags->timeTag.ptr(), RenX::tags->dateTag.size(), RenX::tags->dateTag.ptr())); + RenX_ExtraLoggingPlugin::newDayFmt = this->config.get("NewDayFormat"_jrs, Jupiter::StringS::Format("Time: %.*s %.*s", RenX::tags->timeTag.size(), + RenX::tags->timeTag.data(), RenX::tags->dateTag.size(), + RenX::tags->dateTag.data())); RenX_ExtraLoggingPlugin::printToConsole = this->config.get("PrintToConsole"_jrs, true); const std::string logFile = static_cast(this->config.get("LogFile"_jrs)); @@ -61,7 +65,7 @@ bool RenX_ExtraLoggingPlugin::initialize() { if (RenX_ExtraLoggingPlugin::file != nullptr && RenX_ExtraLoggingPlugin::newDayFmt.isNotEmpty()) { Jupiter::String line = RenX_ExtraLoggingPlugin::newDayFmt; RenX::processTags(line); - fwrite(line.ptr(), sizeof(char), line.size(), file); + fwrite(line.data(), sizeof(char), line.size(), file); fputs("\r\n", file); } } @@ -80,7 +84,7 @@ int RenX_ExtraLoggingPlugin::think() { RenX_ExtraLoggingPlugin::day = currentDay; Jupiter::String line = RenX_ExtraLoggingPlugin::newDayFmt; RenX::processTags(line); - fwrite(line.ptr(), sizeof(char), line.size(), file); + fwrite(line.data(), sizeof(char), line.size(), file); fputs("\r\n", file); } } @@ -92,10 +96,10 @@ void RenX_ExtraLoggingPlugin::RenX_OnRaw(RenX::Server &server, const Jupiter::Re if (RenX_ExtraLoggingPlugin::consolePrefix.isNotEmpty()) { Jupiter::StringS cPrefix = RenX_ExtraLoggingPlugin::consolePrefix; RenX::processTags(cPrefix, &server); - fwrite(cPrefix.ptr(), sizeof(char), cPrefix.size(), stdout); + fwrite(cPrefix.data(), sizeof(char), cPrefix.size(), stdout); fputc(' ', stdout); } - fwrite(raw.ptr(), sizeof(char), raw.size(), stdout); + fwrite(raw.data(), sizeof(char), raw.size(), stdout); fputs("\r\n", stdout); } @@ -103,10 +107,10 @@ void RenX_ExtraLoggingPlugin::RenX_OnRaw(RenX::Server &server, const Jupiter::Re if (RenX_ExtraLoggingPlugin::filePrefix.isNotEmpty()) { Jupiter::StringS fPrefix = RenX_ExtraLoggingPlugin::filePrefix; RenX::processTags(fPrefix, &server); - fwrite(fPrefix.ptr(), sizeof(char), fPrefix.size(), file); + fwrite(fPrefix.data(), sizeof(char), fPrefix.size(), file); fputc(' ', RenX_ExtraLoggingPlugin::file); } - fwrite(raw.ptr(), sizeof(char), raw.size(), file); + fwrite(raw.data(), sizeof(char), raw.size(), file); fputs("\r\n", file); fflush(RenX_ExtraLoggingPlugin::file); } diff --git a/src/Plugins/RenX/RenX.Logging/RenX_Logging.cpp b/src/Plugins/RenX/RenX.Logging/RenX_Logging.cpp index 9cdcfce..486b9db 100644 --- a/src/Plugins/RenX/RenX.Logging/RenX_Logging.cpp +++ b/src/Plugins/RenX/RenX.Logging/RenX_Logging.cpp @@ -115,10 +115,18 @@ bool RenX_LoggingPlugin::initialize() ""_jrs); RenX_LoggingPlugin::playerIdentifyFmt = this->config.get("PlayerIdentifyFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "12[Join] " IRCBOLD "%.*s" IRCBOLD " (" IRCBOLD "%.*s" IRCBOLD ") joined the game fighting for the %.*s from " IRCBOLD "%.*s" IRCBOLD " (" IRCBOLD "%.*s" IRCBOLD ") with HWID " IRCBOLD "%.*s" IRCBOLD ".", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->steamTag.size(), RenX::tags->steamTag.ptr(), RenX::tags->teamLongTag.size(), RenX::tags->teamLongTag.ptr(), RenX::tags->ipTag.size(), RenX::tags->ipTag.ptr(), RenX::tags->rdnsTag.size(), RenX::tags->rdnsTag.ptr(), RenX::tags->hwidTag.size(), RenX::tags->hwidTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "12[Join] " IRCBOLD "%.*s" IRCBOLD " (" IRCBOLD "%.*s" IRCBOLD ") joined the game fighting for the %.*s from " IRCBOLD "%.*s" IRCBOLD " (" IRCBOLD "%.*s" IRCBOLD ") with HWID " IRCBOLD "%.*s" IRCBOLD ".", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->steamTag.size(), + RenX::tags->steamTag.data(), RenX::tags->teamLongTag.size(), + RenX::tags->teamLongTag.data(), RenX::tags->ipTag.size(), + RenX::tags->ipTag.data(), RenX::tags->rdnsTag.size(), + RenX::tags->rdnsTag.data(), RenX::tags->hwidTag.size(), + RenX::tags->hwidTag.data())); RenX_LoggingPlugin::joinPublicFmt = this->config.get("JoinPublicFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "12[Join] " IRCBOLD "%.*s" IRCBOLD " joined the game fighting for the %.*s!", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->teamLongTag.size(), RenX::tags->teamLongTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "12[Join] " IRCBOLD "%.*s" IRCBOLD " joined the game fighting for the %.*s!", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->teamLongTag.size(), + RenX::tags->teamLongTag.data())); RenX_LoggingPlugin::joinAdminFmt = this->config.get("JoinAdminFormat"_jrs, ""_jrs); @@ -127,153 +135,268 @@ bool RenX_LoggingPlugin::initialize() ""_jrs); RenX_LoggingPlugin::partFmt = this->config.get("PartFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "12[Part] " IRCBOLD "%.*s" IRCBOLD " left the %.*s.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->teamLongTag.size(), RenX::tags->teamLongTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "12[Part] " IRCBOLD "%.*s" IRCBOLD " left the %.*s.", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->teamLongTag.size(), + RenX::tags->teamLongTag.data())); RenX_LoggingPlugin::kickFmt = this->config.get("KickFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "04[Kick] " IRCBOLD "%.*s" IRCCOLOR IRCBOLD " was " IRCBOLD IRCCOLOR "04kicked" IRCCOLOR IRCBOLD " (" IRCCOLOR "04%.*s" IRCCOLOR ")", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "04[Kick] " IRCBOLD "%.*s" IRCCOLOR IRCBOLD " was " IRCBOLD IRCCOLOR "04kicked" IRCCOLOR IRCBOLD " (" IRCCOLOR "04%.*s" IRCCOLOR ")", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->messageTag.size(), + RenX::tags->messageTag.data())); RenX_LoggingPlugin::playerExecuteFmt = this->config.get("PlayerExecuteFormat"_jrs, - Jupiter::StringS::Format("%.*s" IRCCOLOR "07 executed: %.*s", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + Jupiter::StringS::Format("%.*s" IRCCOLOR "07 executed: %.*s", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->messageTag.size(), + RenX::tags->messageTag.data())); RenX_LoggingPlugin::playerCommandSuccessFmt = this->config.get("PlayerCommandSuccessFormat"_jrs, - Jupiter::StringS::Format("%.*s" IRCCOLOR ": " IRCCOLOR "10%.*s", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + Jupiter::StringS::Format("%.*s" IRCCOLOR ": " IRCCOLOR "10%.*s", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->messageTag.size(), + RenX::tags->messageTag.data())); RenX_LoggingPlugin::playerCommandFailFmt = this->config.get("PlayerCommandFailFormat"_jrs, ""_jss); RenX_LoggingPlugin::playerFmt = this->config.get("PlayerFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "12[Player]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "12[Player]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), + RenX::tags->messageTag.data())); RenX_LoggingPlugin::nameChangeFmt = this->config.get("NameChangeFormat"_jrs, - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCBOLD " changed their name to " IRCBOLD "%.*s" IRCBOLD ".", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->newNameTag.size(), RenX::tags->newNameTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCBOLD " changed their name to " IRCBOLD "%.*s" IRCBOLD ".", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->newNameTag.size(), + RenX::tags->newNameTag.data())); RenX_LoggingPlugin::teamChangeFmt = this->config.get("TeamChangeFormat"_jrs, - Jupiter::StringS::Format("%.*s" IRCCOLOR " switched teams!", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr())); + Jupiter::StringS::Format("%.*s" IRCCOLOR " switched teams!", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data())); RenX_LoggingPlugin::speedHackFmt = this->config.get("SpeedHackFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "04[SpeedHack] " IRCBOLD "%.*s" IRCBOLD " has thrown a Speed Hack warning!", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "04[SpeedHack] " IRCBOLD "%.*s" IRCBOLD " has thrown a Speed Hack warning!", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data())); RenX_LoggingPlugin::chatFmt = this->config.get("ChatFormat"_jrs, - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD ": %.*s", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD ": %.*s", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->messageTag.size(), + RenX::tags->messageTag.data())); RenX_LoggingPlugin::teamChatFmt = this->config.get("TeamChatFormat"_jrs, - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCBOLD ": %.*s", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCBOLD ": %.*s", RenX::tags->nameTag.size(), RenX::tags->nameTag.data(), RenX::tags->messageTag.size(), + RenX::tags->messageTag.data())); RenX_LoggingPlugin::radioChatFmt = this->config.get("RadioChatFormat"_jrs, - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCBOLD ": \x1D%.*s", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCBOLD ": \x1D%.*s", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->messageTag.size(), + RenX::tags->messageTag.data())); RenX_LoggingPlugin::hostChatFmt = this->config.get("HostChatFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "12Host" IRCCOLOR "0: %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "12Host" IRCCOLOR "0: %.*s", RenX::tags->messageTag.size(), + RenX::tags->messageTag.data())); RenX_LoggingPlugin::hostPageFmt = this->config.get("HostPageFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "12(Host -> %.*s): %.*s", RenX::tags->rawNameTag.size(), RenX::tags->rawNameTag.ptr(), RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "12(Host -> %.*s): %.*s", RenX::tags->rawNameTag.size(), + RenX::tags->rawNameTag.data(), RenX::tags->messageTag.size(), + RenX::tags->messageTag.data())); RenX_LoggingPlugin::adminMsgFmt = this->config.get("AdminMsgFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "10%.*s: %.*s", RenX::tags->rawNameTag.size(), RenX::tags->rawNameTag.ptr(), RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "10%.*s: %.*s", RenX::tags->rawNameTag.size(), RenX::tags->rawNameTag.data(), RenX::tags->messageTag.size(), + RenX::tags->messageTag.data())); RenX_LoggingPlugin::warnMsgFmt = this->config.get("WarnMsgFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "07%.*s: %.*s", RenX::tags->rawNameTag.size(), RenX::tags->rawNameTag.ptr(), RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "07%.*s: %.*s", RenX::tags->rawNameTag.size(), RenX::tags->rawNameTag.data(), RenX::tags->messageTag.size(), + RenX::tags->messageTag.data())); RenX_LoggingPlugin::pAdminMsgFmt = this->config.get("PAdminMsgFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "10(%.*s -> %.*s): %.*s", RenX::tags->rawNameTag.size(), RenX::tags->rawNameTag.ptr(), RenX::tags->victimRawNameTag.size(), RenX::tags->victimRawNameTag.ptr(), RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "10(%.*s -> %.*s): %.*s", RenX::tags->rawNameTag.size(), + RenX::tags->rawNameTag.data(), RenX::tags->victimRawNameTag.size(), + RenX::tags->victimRawNameTag.data(), RenX::tags->messageTag.size(), + RenX::tags->messageTag.data())); RenX_LoggingPlugin::pWarnMsgFmt = this->config.get("PWarnMsgFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "07(%.*s -> %.*s): %.*s", RenX::tags->rawNameTag.size(), RenX::tags->rawNameTag.ptr(), RenX::tags->victimRawNameTag.size(), RenX::tags->victimRawNameTag.ptr(), RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "07(%.*s -> %.*s): %.*s", RenX::tags->rawNameTag.size(), + RenX::tags->rawNameTag.data(), RenX::tags->victimRawNameTag.size(), + RenX::tags->victimRawNameTag.data(), RenX::tags->messageTag.size(), + RenX::tags->messageTag.data())); RenX_LoggingPlugin::otherChatFmt = this->config.get("OtherChatFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "06[Other Chat]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "06[Other Chat]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), + RenX::tags->messageTag.data())); RenX_LoggingPlugin::deployFmt = this->config.get("DeployFormat"_jrs, - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " deployed a " IRCBOLD IRCCOLOR "12%.*s" IRCBOLD, RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " deployed a " IRCBOLD IRCCOLOR "12%.*s" IRCBOLD, RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->objectTag.size(), + RenX::tags->objectTag.data())); RenX_LoggingPlugin::mineDeployFmt = this->config.get("MineDeployFormat"_jrs, RenX_LoggingPlugin::deployFmt); RenX_LoggingPlugin::overMineFmt = this->config.get("OverMineFormat"_jrs, - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " is " IRCCOLOR "04over-mining" IRCCOLOR ": " IRCBOLD IRCCOLOR "12%.*s" IRCBOLD, RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " is " IRCCOLOR "04over-mining" IRCCOLOR ": " IRCBOLD IRCCOLOR "12%.*s" IRCBOLD, RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->objectTag.size(), + RenX::tags->objectTag.data())); RenX_LoggingPlugin::disarmFmt = this->config.get("DisarmFormat"_jrs, - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " disarmed %.*s" IRCBOLD IRCCOLOR "'s " IRCCOLOR "12%.*s" IRCBOLD, RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->victimNameTag.size(), RenX::tags->victimNameTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " disarmed %.*s" IRCBOLD IRCCOLOR "'s " IRCCOLOR "12%.*s" IRCBOLD, RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->victimNameTag.size(), + RenX::tags->victimNameTag.data(), RenX::tags->objectTag.size(), + RenX::tags->objectTag.data())); RenX_LoggingPlugin::mineDisarmFmt = this->config.get("MineDisarmFormat"_jrs, RenX_LoggingPlugin::disarmFmt); RenX_LoggingPlugin::disarmNoOwnerFmt = this->config.get("DisarmNoOwnerFormat"_jrs, - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCBOLD " disarmed a " IRCBOLD "%.*s" IRCBOLD, RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCBOLD " disarmed a " IRCBOLD "%.*s" IRCBOLD, RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->objectTag.size(), + RenX::tags->objectTag.data())); RenX_LoggingPlugin::mineDisarmNoOwnerFmt = this->config.get("MineDisarmNoOwnerFormat"_jrs, RenX_LoggingPlugin::disarmNoOwnerFmt); RenX_LoggingPlugin::explodeFmt = this->config.get("ExplodeFormat"_jrs, - Jupiter::StringS::Format("%.*s" IRCCOLOR " detonated a " IRCCOLOR "07%.*s" IRCCOLOR ".", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.ptr())); + Jupiter::StringS::Format("%.*s" IRCCOLOR " detonated a " IRCCOLOR "07%.*s" IRCCOLOR ".", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->weaponTag.size(), + RenX::tags->weaponTag.data())); RenX_LoggingPlugin::explodeNoOwnerFmt = this->config.get("ExplodeNoOwnerFormat"_jrs, - Jupiter::StringS::Format("A " IRCCOLOR "07%.*s" IRCCOLOR " detonated.", RenX::tags->weaponTag.size(), RenX::tags->weaponTag.ptr())); + Jupiter::StringS::Format("A " IRCCOLOR "07%.*s" IRCCOLOR " detonated.", RenX::tags->weaponTag.size(), + RenX::tags->weaponTag.data())); RenX_LoggingPlugin::suicideFmt = this->config.get("SuicideFormat"_jrs, - Jupiter::StringS::Format("%.*s" IRCCOLOR " suicided (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.ptr())); + Jupiter::StringS::Format("%.*s" IRCCOLOR " suicided (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->weaponTag.size(), + RenX::tags->weaponTag.data())); RenX_LoggingPlugin::killFmt = this->config.get("KillFormat"_jrs, - Jupiter::StringS::Format("%.*s" IRCCOLOR " killed %.*s" IRCCOLOR " (" IRCCOLOR "%.*s%.*s/%.*s" IRCCOLOR " vs " IRCCOLOR "%.*s%.*s" IRCCOLOR ").", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->victimNameTag.size(), RenX::tags->victimNameTag.ptr(), RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.ptr(), RenX::tags->characterTag.size(), RenX::tags->characterTag.ptr(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.ptr(), RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.ptr(), RenX::tags->victimCharacterTag.size(), RenX::tags->victimCharacterTag.ptr())); + Jupiter::StringS::Format("%.*s" IRCCOLOR " killed %.*s" IRCCOLOR " (" IRCCOLOR "%.*s%.*s/%.*s" IRCCOLOR " vs " IRCCOLOR "%.*s%.*s" IRCCOLOR ").", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->victimNameTag.size(), + RenX::tags->victimNameTag.data(), RenX::tags->teamColorTag.size(), + RenX::tags->teamColorTag.data(), RenX::tags->characterTag.size(), + RenX::tags->characterTag.data(), RenX::tags->weaponTag.size(), + RenX::tags->weaponTag.data(), RenX::tags->victimTeamColorTag.size(), + RenX::tags->victimTeamColorTag.data(), RenX::tags->victimCharacterTag.size(), + RenX::tags->victimCharacterTag.data())); RenX_LoggingPlugin::killFmt2 = this->config.get("KillFormat2"_jrs, - Jupiter::StringS::Format(IRCCOLOR "%.*s%.*s" IRCCOLOR " killed %.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.ptr(), RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->victimNameTag.size(), RenX::tags->victimNameTag.ptr(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "%.*s%.*s" IRCCOLOR " killed %.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->teamColorTag.size(), + RenX::tags->teamColorTag.data(), RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->victimNameTag.size(), + RenX::tags->victimNameTag.data(), RenX::tags->weaponTag.size(), + RenX::tags->weaponTag.data())); RenX_LoggingPlugin::dieFmt = this->config.get("DieFormat"_jrs, - Jupiter::StringS::Format("%.*s" IRCCOLOR " died (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.ptr())); + Jupiter::StringS::Format("%.*s" IRCCOLOR " died (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->weaponTag.size(), + RenX::tags->weaponTag.data())); RenX_LoggingPlugin::dieFmt2 = this->config.get("DieFormat2"_jrs, - Jupiter::StringS::Format(IRCCOLOR "%.*s%.*s" IRCCOLOR " died (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.ptr(), RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "%.*s%.*s" IRCCOLOR " died (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->teamColorTag.size(), + RenX::tags->teamColorTag.data(), RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->weaponTag.size(), + RenX::tags->weaponTag.data())); RenX_LoggingPlugin::destroyBuildingFmt = this->config.get("DestroyBuildingFormat"_jrs, - Jupiter::StringS::Format("%.*s" IRCCOLOR " destroyed the " IRCCOLOR "%.*s%.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.ptr())); + Jupiter::StringS::Format("%.*s" IRCCOLOR " destroyed the " IRCCOLOR "%.*s%.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->victimTeamColorTag.size(), + RenX::tags->victimTeamColorTag.data(), RenX::tags->objectTag.size(), + RenX::tags->objectTag.data(), RenX::tags->weaponTag.size(), + RenX::tags->weaponTag.data())); RenX_LoggingPlugin::destroyBuildingFmt2 = this->config.get("DestroyBuildingFormat2"_jrs, - Jupiter::StringS::Format(IRCCOLOR "%.*s%.*s" IRCCOLOR " destroyed the " IRCCOLOR "%.*s%.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.ptr(), RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "%.*s%.*s" IRCCOLOR " destroyed the " IRCCOLOR "%.*s%.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->teamColorTag.size(), + RenX::tags->teamColorTag.data(), RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->victimTeamColorTag.size(), + RenX::tags->victimTeamColorTag.data(), RenX::tags->objectTag.size(), + RenX::tags->objectTag.data(), RenX::tags->weaponTag.size(), + RenX::tags->weaponTag.data())); RenX_LoggingPlugin::destroyDefenceFmt = this->config.get("DestroyDefenceFormat"_jrs, - Jupiter::StringS::Format("%.*s" IRCCOLOR " destroyed a " IRCCOLOR "%.*s%.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.ptr())); + Jupiter::StringS::Format("%.*s" IRCCOLOR " destroyed a " IRCCOLOR "%.*s%.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->victimTeamColorTag.size(), + RenX::tags->victimTeamColorTag.data(), RenX::tags->objectTag.size(), + RenX::tags->objectTag.data(), RenX::tags->weaponTag.size(), + RenX::tags->weaponTag.data())); RenX_LoggingPlugin::destroyDefenceFmt2 = this->config.get("DestroyDefenceFormat2"_jrs, - Jupiter::StringS::Format(IRCCOLOR "%.*s%.*s" IRCCOLOR " destroyed a " IRCCOLOR "%.*s%.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.ptr(), RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "%.*s%.*s" IRCCOLOR " destroyed a " IRCCOLOR "%.*s%.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->teamColorTag.size(), + RenX::tags->teamColorTag.data(), RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->victimTeamColorTag.size(), + RenX::tags->victimTeamColorTag.data(), RenX::tags->objectTag.size(), + RenX::tags->objectTag.data(), RenX::tags->weaponTag.size(), + RenX::tags->weaponTag.data())); RenX_LoggingPlugin::destroyVehicleFmt = this->config.get("DestroyVehicleFormat"_jrs, - Jupiter::StringS::Format("%.*s" IRCCOLOR " destroyed a " IRCCOLOR "%.*s%.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.ptr())); + Jupiter::StringS::Format("%.*s" IRCCOLOR " destroyed a " IRCCOLOR "%.*s%.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->victimTeamColorTag.size(), + RenX::tags->victimTeamColorTag.data(), RenX::tags->objectTag.size(), + RenX::tags->objectTag.data(), RenX::tags->weaponTag.size(), + RenX::tags->weaponTag.data())); RenX_LoggingPlugin::destroyVehicleFmt2 = this->config.get("DestroyVehicleFormat2"_jrs, - Jupiter::StringS::Format(IRCCOLOR "%.*s%.*s" IRCCOLOR " destroyed a " IRCCOLOR "%.*s%.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.ptr(), RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "%.*s%.*s" IRCCOLOR " destroyed a " IRCCOLOR "%.*s%.*s" IRCCOLOR " (" IRCCOLOR "12%.*s" IRCCOLOR ").", RenX::tags->teamColorTag.size(), + RenX::tags->teamColorTag.data(), RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->victimTeamColorTag.size(), + RenX::tags->victimTeamColorTag.data(), RenX::tags->objectTag.size(), + RenX::tags->objectTag.data(), RenX::tags->weaponTag.size(), + RenX::tags->weaponTag.data())); RenX_LoggingPlugin::captureFmt = this->config.get("CaptureFormat"_jrs, - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " captured the " IRCBOLD IRCCOLOR "%.*s%.*s" IRCCOLOR IRCBOLD ".", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " captured the " IRCBOLD IRCCOLOR "%.*s%.*s" IRCCOLOR IRCBOLD ".", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->victimTeamColorTag.size(), + RenX::tags->victimTeamColorTag.data(), RenX::tags->objectTag.size(), + RenX::tags->objectTag.data())); RenX_LoggingPlugin::neutralizeFmt = this->config.get("NeutralizeFormat"_jrs, - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " neutralized the " IRCBOLD IRCCOLOR "%.*s%.*s" IRCCOLOR IRCBOLD ".", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " neutralized the " IRCBOLD IRCCOLOR "%.*s%.*s" IRCCOLOR IRCBOLD ".", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->victimTeamColorTag.size(), + RenX::tags->victimTeamColorTag.data(), RenX::tags->objectTag.size(), + RenX::tags->objectTag.data())); RenX_LoggingPlugin::characterPurchaseFmt = this->config.get("CharacterPurchaseFormat"_jrs, - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " purchased a " IRCBOLD IRCCOLOR "%.*s%.*s" IRCCOLOR IRCBOLD ".", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.ptr(), RenX::tags->victimCharacterTag.size(), RenX::tags->victimCharacterTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " purchased a " IRCBOLD IRCCOLOR "%.*s%.*s" IRCCOLOR IRCBOLD ".", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->teamColorTag.size(), + RenX::tags->teamColorTag.data(), RenX::tags->victimCharacterTag.size(), + RenX::tags->victimCharacterTag.data())); RenX_LoggingPlugin::itemPurchaseFmt = this->config.get("ItemPurchaseFormat"_jrs, - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " purchased a " IRCBOLD IRCCOLOR "%.*s%.*s" IRCCOLOR IRCBOLD ".", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " purchased a " IRCBOLD IRCCOLOR "%.*s%.*s" IRCCOLOR IRCBOLD ".", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->teamColorTag.size(), + RenX::tags->teamColorTag.data(), RenX::tags->objectTag.size(), + RenX::tags->objectTag.data())); RenX_LoggingPlugin::weaponPurchaseFmt = this->config.get("WeaponPurchaseFormat"_jrs, - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " purchased a " IRCBOLD IRCCOLOR "%.*s%.*s" IRCCOLOR IRCBOLD ".", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.ptr(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " purchased a " IRCBOLD IRCCOLOR "%.*s%.*s" IRCCOLOR IRCBOLD ".", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->teamColorTag.size(), + RenX::tags->teamColorTag.data(), RenX::tags->weaponTag.size(), + RenX::tags->weaponTag.data())); RenX_LoggingPlugin::refillPurchaseFmt = this->config.get("RefillPurchaseFormat"_jrs, - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " purchased a " IRCBOLD IRCCOLOR "%.*srefill" IRCCOLOR IRCBOLD ".", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " purchased a " IRCBOLD IRCCOLOR "%.*srefill" IRCCOLOR IRCBOLD ".", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->teamColorTag.size(), + RenX::tags->teamColorTag.data())); RenX_LoggingPlugin::vehiclePurchaseFmt = this->config.get("VehiclePurchaseFormat"_jrs, - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " purchased a " IRCBOLD IRCCOLOR "%.*s%.*s" IRCCOLOR IRCBOLD ".", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.ptr(), RenX::tags->victimVehicleTag.size(), RenX::tags->victimVehicleTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " purchased a " IRCBOLD IRCCOLOR "%.*s%.*s" IRCCOLOR IRCBOLD ".", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->teamColorTag.size(), + RenX::tags->teamColorTag.data(), RenX::tags->victimVehicleTag.size(), + RenX::tags->victimVehicleTag.data())); RenX_LoggingPlugin::vehicleSpawnFmt = this->config.get("VehicleSpawnFormat"_jrs, - Jupiter::StringS::Format("A " IRCBOLD IRCCOLOR "%.*s%.*s" IRCCOLOR IRCBOLD " has spawned.", RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.ptr(), RenX::tags->vehicleTag.size(), RenX::tags->vehicleTag.ptr())); + Jupiter::StringS::Format("A " IRCBOLD IRCCOLOR "%.*s%.*s" IRCCOLOR IRCBOLD " has spawned.", RenX::tags->teamColorTag.size(), + RenX::tags->teamColorTag.data(), RenX::tags->vehicleTag.size(), + RenX::tags->vehicleTag.data())); RenX_LoggingPlugin::spawnFmt = this->config.get("SpawnFormat"_jrs, - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " spawned as a " IRCCOLOR "%.*s%.*s.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.ptr(), RenX::tags->victimCharacterTag.size(), RenX::tags->victimCharacterTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " spawned as a " IRCCOLOR "%.*s%.*s.", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->teamColorTag.size(), + RenX::tags->teamColorTag.data(), RenX::tags->victimCharacterTag.size(), + RenX::tags->victimCharacterTag.data())); RenX_LoggingPlugin::botJoinFmt = this->config.get("BotJoinFormat"_jrs, - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " online.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " online.", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data())); RenX_LoggingPlugin::vehicleCrateFmt = this->config.get("VehicleCrateFormat"_jrs, - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "12%.*s" IRCCOLOR " vehicle crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "12%.*s" IRCCOLOR " vehicle crate.", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->objectTag.size(), + RenX::tags->objectTag.data())); RenX_LoggingPlugin::TSVehicleCrateFmt = this->config.get("TSVehicleCrateFormat"_jrs, RenX_LoggingPlugin::vehicleCrateFmt); @@ -282,138 +405,231 @@ bool RenX_LoggingPlugin::initialize() RenX_LoggingPlugin::vehicleCrateFmt); RenX_LoggingPlugin::deathCrateFmt = this->config.get("DeathCrateFormat"_jrs, - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "12death" IRCCOLOR " crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "12death" IRCCOLOR " crate.", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data())); RenX_LoggingPlugin::moneyCrateFmt = this->config.get("MoneyCrateFormat"_jrs, - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up " IRCCOLOR "09%.*s credits" IRCCOLOR " from a " IRCCOLOR "12money" IRCCOLOR " crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up " IRCCOLOR "09%.*s credits" IRCCOLOR " from a " IRCCOLOR "12money" IRCCOLOR " crate.", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->objectTag.size(), + RenX::tags->objectTag.data())); RenX_LoggingPlugin::characterCrateFmt = this->config.get("CharacterCrateFormat"_jrs, - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "%.*s%.*s" IRCCOLOR " " IRCCOLOR "12character" IRCCOLOR " crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.ptr(), RenX::tags->victimCharacterTag.size(), RenX::tags->victimCharacterTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "%.*s%.*s" IRCCOLOR " " IRCCOLOR "12character" IRCCOLOR " crate.", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->teamColorTag.size(), + RenX::tags->teamColorTag.data(), RenX::tags->victimCharacterTag.size(), + RenX::tags->victimCharacterTag.data())); RenX_LoggingPlugin::spyCrateFmt = this->config.get("SpyCrateFormat"_jrs, - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "%.*s%.*s" IRCCOLOR " " IRCCOLOR "12spy" IRCCOLOR " crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.ptr(), RenX::tags->victimCharacterTag.size(), RenX::tags->victimCharacterTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "%.*s%.*s" IRCCOLOR " " IRCCOLOR "12spy" IRCCOLOR " crate.", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->victimTeamColorTag.size(), + RenX::tags->victimTeamColorTag.data(), RenX::tags->victimCharacterTag.size(), + RenX::tags->victimCharacterTag.data())); RenX_LoggingPlugin::refillCrateFmt = this->config.get("RefillCrateFormat"_jrs, - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "%.*srefill" IRCCOLOR " crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "%.*srefill" IRCCOLOR " crate.", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->teamColorTag.size(), + RenX::tags->teamColorTag.data())); RenX_LoggingPlugin::timeBombCrateFmt = this->config.get("TimeBombCrateFormat"_jrs, - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "11time-bomb" IRCCOLOR " crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "11time-bomb" IRCCOLOR " crate.", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data())); RenX_LoggingPlugin::speedCrateFmt = this->config.get("SpeedCrateFormat"_jrs, - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "11speed" IRCCOLOR " crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "11speed" IRCCOLOR " crate.", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data())); RenX_LoggingPlugin::nukeCrateFmt = this->config.get("NukeCrateFormat"_jrs, - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "04nuke" IRCCOLOR " crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "04nuke" IRCCOLOR " crate.", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data())); RenX_LoggingPlugin::abductionCrateFmt = this->config.get("AbductionCrateFormat"_jrs, - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " has been " IRCBOLD IRCCOLOR "06abducted" IRCCOLOR IRCBOLD " by the " IRCBOLD IRCCOLOR "06Scrin" IRCCOLOR IRCBOLD "!", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " has been " IRCBOLD IRCCOLOR "06abducted" IRCCOLOR IRCBOLD " by the " IRCBOLD IRCCOLOR "06Scrin" IRCCOLOR IRCBOLD "!", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data())); RenX_LoggingPlugin::unspecifiedCrateFmt = this->config.get("UnspecifiedCrateFormat"_jrs, - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up an " IRCCOLOR "13unspecified" IRCCOLOR " crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up an " IRCCOLOR "13unspecified" IRCCOLOR " crate.", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data())); RenX_LoggingPlugin::otherCrateFmt = this->config.get("OtherCrateFormat"_jrs, - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "13%.*s" IRCCOLOR " crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "13%.*s" IRCCOLOR " crate.", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->objectTag.size(), + RenX::tags->objectTag.data())); RenX_LoggingPlugin::stealFmt = this->config.get("StealFormat"_jrs, - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " stole " IRCBOLD "%.*s" IRCBOLD "'s " IRCBOLD "%.*s" IRCBOLD "!", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->victimNameTag.size(), RenX::tags->victimNameTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " stole " IRCBOLD "%.*s" IRCBOLD "'s " IRCBOLD "%.*s" IRCBOLD "!", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->victimNameTag.size(), + RenX::tags->victimNameTag.data(), RenX::tags->objectTag.size(), + RenX::tags->objectTag.data())); RenX_LoggingPlugin::stealNoOwnerFmt = this->config.get("StealNoOwnerFormat"_jrs, - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " stole a " IRCBOLD IRCCOLOR "12%.*s" IRCBOLD "!", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " stole a " IRCBOLD IRCCOLOR "12%.*s" IRCBOLD "!", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->objectTag.size(), + RenX::tags->objectTag.data())); RenX_LoggingPlugin::donateFmt = this->config.get("DonateFormat"_jrs, - Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " donated " IRCCOLOR "09%.*s credits" IRCCOLOR " to " IRCBOLD "%.*s" IRCBOLD ".", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr(), RenX::tags->victimNameTag.size(), RenX::tags->victimNameTag.ptr())); + Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " donated " IRCCOLOR "09%.*s credits" IRCCOLOR " to " IRCBOLD "%.*s" IRCBOLD ".", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->objectTag.size(), + RenX::tags->objectTag.data(), RenX::tags->victimNameTag.size(), + RenX::tags->victimNameTag.data())); RenX_LoggingPlugin::gameOverFmt = this->config.get("GameOverFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "03[Game]" IRCCOLOR "%.*s The " IRCBOLD "%.*s" IRCBOLD " won by " IRCBOLD "%.*s" IRCBOLD, RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.ptr(), RenX::tags->teamLongTag.size(), RenX::tags->teamLongTag.ptr(), RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "03[Game]" IRCCOLOR "%.*s The " IRCBOLD "%.*s" IRCBOLD " won by " IRCBOLD "%.*s" IRCBOLD, RenX::tags->teamColorTag.size(), + RenX::tags->teamColorTag.data(), RenX::tags->teamLongTag.size(), + RenX::tags->teamLongTag.data(), RenX::tags->messageTag.size(), + RenX::tags->messageTag.data())); RenX_LoggingPlugin::gameOverTieFmt = this->config.get("GameOverTieNoWinFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "03[Game]" IRCCOLOR "10 The battle ended in a " IRCBOLD "%.*s" IRCBOLD " - Victory handed to " IRCBOLD IRCCOLOR "%.*s%.*s" IRCBOLD, RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr(), RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.ptr(), RenX::tags->teamLongTag.size(), RenX::tags->teamLongTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "03[Game]" IRCCOLOR "10 The battle ended in a " IRCBOLD "%.*s" IRCBOLD " - Victory handed to " IRCBOLD IRCCOLOR "%.*s%.*s" IRCBOLD, RenX::tags->messageTag.size(), + RenX::tags->messageTag.data(), RenX::tags->teamColorTag.size(), + RenX::tags->teamColorTag.data(), RenX::tags->teamLongTag.size(), + RenX::tags->teamLongTag.data())); RenX_LoggingPlugin::gameOverTieNoWinFmt = this->config.get("GameOverTieFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "03[Game]" IRCCOLOR "10 The battle ended in a " IRCBOLD "%.*s" IRCBOLD, RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "03[Game]" IRCCOLOR "10 The battle ended in a " IRCBOLD "%.*s" IRCBOLD, RenX::tags->messageTag.size(), + RenX::tags->messageTag.data())); RenX_LoggingPlugin::gameOverScoreFmt = this->config.get("GameOverScoreFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "03[Game]" IRCCOLOR "%.*s %.*s" IRCCOLOR ": %.*s | " IRCCOLOR "%.*s%.*s" IRCCOLOR ": %.*s", RenX::tags->teamColorTag.size(), RenX::tags->teamColorTag.ptr(), RenX::tags->teamLongTag.size(), RenX::tags->teamLongTag.ptr(), RenX::tags->winScoreTag.size(), RenX::tags->winScoreTag.ptr(), RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.ptr(), RenX::tags->victimTeamLongTag.size(), RenX::tags->victimTeamLongTag.ptr(), RenX::tags->loseScoreTag.size(), RenX::tags->loseScoreTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "03[Game]" IRCCOLOR "%.*s %.*s" IRCCOLOR ": %.*s | " IRCCOLOR "%.*s%.*s" IRCCOLOR ": %.*s", RenX::tags->teamColorTag.size(), + RenX::tags->teamColorTag.data(), RenX::tags->teamLongTag.size(), + RenX::tags->teamLongTag.data(), RenX::tags->winScoreTag.size(), + RenX::tags->winScoreTag.data(), RenX::tags->victimTeamColorTag.size(), + RenX::tags->victimTeamColorTag.data(), RenX::tags->victimTeamLongTag.size(), + RenX::tags->victimTeamLongTag.data(), RenX::tags->loseScoreTag.size(), + RenX::tags->loseScoreTag.data())); RenX_LoggingPlugin::gameFmt = this->config.get("GameFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "03[Game]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "03[Game]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), + RenX::tags->messageTag.data())); RenX_LoggingPlugin::executeFmt = this->config.get("ExecuteFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "07%.*s executed: %.*s", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "07%.*s executed: %.*s", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->messageTag.size(), + RenX::tags->messageTag.data())); RenX_LoggingPlugin::devBotExecuteFmt = this->config.get("DevBotExecuteFormat"_jrs, ""_jss); RenX_LoggingPlugin::subscribeFmt = this->config.get("SubscribeFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "03%.*s subscribed to the RCON data stream.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "03%.*s subscribed to the RCON data stream.", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data())); RenX_LoggingPlugin::rconFmt = this->config.get("RCONFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "05[RCON]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "05[RCON]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), + RenX::tags->messageTag.data())); RenX_LoggingPlugin::adminLoginFmt = this->config.get("AdminLoginFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "07[Admin] " IRCBOLD "%.*s" IRCBOLD IRCCOLOR " logged in with " IRCCOLOR "07" IRCBOLD "%.*s" IRCBOLD IRCNORMAL " privledges.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->adminTag.size(), RenX::tags->adminTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "07[Admin] " IRCBOLD "%.*s" IRCBOLD IRCCOLOR " logged in with " IRCCOLOR "07" IRCBOLD "%.*s" IRCBOLD IRCNORMAL " privledges.", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->adminTag.size(), + RenX::tags->adminTag.data())); RenX_LoggingPlugin::adminGrantFmt = this->config.get("AdminGrantFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "07[Admin] " IRCBOLD "%.*s" IRCBOLD IRCCOLOR " was granted " IRCCOLOR "07" IRCBOLD "%.*s" IRCBOLD IRCNORMAL " privledges.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->adminTag.size(), RenX::tags->adminTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "07[Admin] " IRCBOLD "%.*s" IRCBOLD IRCCOLOR " was granted " IRCCOLOR "07" IRCBOLD "%.*s" IRCBOLD IRCNORMAL " privledges.", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->adminTag.size(), + RenX::tags->adminTag.data())); RenX_LoggingPlugin::adminLogoutFmt = this->config.get("AdminLogoutFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "07[Admin] " IRCBOLD "%.*s" IRCBOLD IRCCOLOR " logged out of their " IRCCOLOR "07" IRCBOLD "%.*s" IRCBOLD IRCNORMAL " privledges.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->adminTag.size(), RenX::tags->adminTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "07[Admin] " IRCBOLD "%.*s" IRCBOLD IRCCOLOR " logged out of their " IRCCOLOR "07" IRCBOLD "%.*s" IRCBOLD IRCNORMAL " privledges.", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->adminTag.size(), + RenX::tags->adminTag.data())); RenX_LoggingPlugin::adminFmt = this->config.get("AdminFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "07[Admin]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "07[Admin]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), + RenX::tags->messageTag.data())); RenX_LoggingPlugin::voteAddBotsFmt = this->config.get("VoteAddBotsFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "[Vote] " IRCBOLD "%.*s" IRCNORMAL " has called for adding " IRCCOLOR "12%.*s" IRCCOLOR " bots to %.*s, with skill level " IRCCOLOR "07%.*s" IRCCOLOR ".", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr(), RenX::tags->victimTeamShortTag.size(), RenX::tags->victimTeamShortTag.ptr(), RenX::tags->weaponTag.size(), RenX::tags->weaponTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "[Vote] " IRCBOLD "%.*s" IRCNORMAL " has called for adding " IRCCOLOR "12%.*s" IRCCOLOR " bots to %.*s, with skill level " IRCCOLOR "07%.*s" IRCCOLOR ".", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->objectTag.size(), + RenX::tags->objectTag.data(), RenX::tags->victimTeamShortTag.size(), + RenX::tags->victimTeamShortTag.data(), RenX::tags->weaponTag.size(), + RenX::tags->weaponTag.data())); RenX_LoggingPlugin::voteChangeMapFmt = this->config.get("VoteChangeMapFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "[Vote] " IRCBOLD "%.*s" IRCNORMAL " has called for a Map Change.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "[Vote] " IRCBOLD "%.*s" IRCNORMAL " has called for a Map Change.", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data())); RenX_LoggingPlugin::voteKickFmt = this->config.get("VoteKickFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "[Vote] " IRCBOLD "%.*s" IRCNORMAL " has called for a kick against %.*s" IRCNORMAL ".", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->victimNameTag.size(), RenX::tags->victimNameTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "[Vote] " IRCBOLD "%.*s" IRCNORMAL " has called for a kick against %.*s" IRCNORMAL ".", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->victimNameTag.size(), + RenX::tags->victimNameTag.data())); RenX_LoggingPlugin::voteMineBanFmt = this->config.get("VoteMineBanFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "%.*s[Vote] " IRCBOLD "%.*s" IRCBOLD " has called for a Mine Ban against %.*s" IRCNORMAL ".", RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.ptr(), RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "%.*s[Vote] " IRCBOLD "%.*s" IRCBOLD " has called for a Mine Ban against %.*s" IRCNORMAL ".", RenX::tags->victimTeamColorTag.size(), + RenX::tags->victimTeamColorTag.data(), RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->nameTag.size(), + RenX::tags->nameTag.data())); RenX_LoggingPlugin::voteRemoveBotsFmt = this->config.get("VoteRemoveBotsFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "[Vote] " IRCBOLD "%.*s" IRCNORMAL " has called a vote to remove " IRCCOLOR "12%.*s" IRCCOLOR " bots from " IRCCOLOR "%.*s%.*s" IRCNORMAL ".", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr(), RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.ptr(), RenX::tags->victimTeamShortTag.size(), RenX::tags->victimTeamShortTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "[Vote] " IRCBOLD "%.*s" IRCNORMAL " has called a vote to remove " IRCCOLOR "12%.*s" IRCCOLOR " bots from " IRCCOLOR "%.*s%.*s" IRCNORMAL ".", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->objectTag.size(), + RenX::tags->objectTag.data(), RenX::tags->victimTeamColorTag.size(), + RenX::tags->victimTeamColorTag.data(), RenX::tags->victimTeamShortTag.size(), + RenX::tags->victimTeamShortTag.data())); RenX_LoggingPlugin::voteRestartMapFmt = this->config.get("VoteRestartMapFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "[Vote] " IRCBOLD "%.*s" IRCNORMAL " has called for a Map Restart.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "[Vote] " IRCBOLD "%.*s" IRCNORMAL " has called for a Map Restart.", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data())); RenX_LoggingPlugin::voteSurrenderFmt = this->config.get("VoteSurrenderFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "%.*s[Vote] " IRCBOLD "%.*s" IRCBOLD " has called for a Surrender.", RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.ptr(), RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "%.*s[Vote] " IRCBOLD "%.*s" IRCBOLD " has called for a Surrender.", RenX::tags->victimTeamColorTag.size(), + RenX::tags->victimTeamColorTag.data(), RenX::tags->nameTag.size(), + RenX::tags->nameTag.data())); RenX_LoggingPlugin::voteSurveyFmt = this->config.get("VoteSurveyFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "%.*s[Vote] " IRCBOLD "%.*s" IRCBOLD IRCCOLOR "%.*s has started a Survey: " IRCCOLOR "12%.*s", RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.ptr(), RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.ptr(), RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "%.*s[Vote] " IRCBOLD "%.*s" IRCBOLD IRCCOLOR "%.*s has started a Survey: " IRCCOLOR "12%.*s", RenX::tags->victimTeamColorTag.size(), + RenX::tags->victimTeamColorTag.data(), RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->victimTeamColorTag.size(), + RenX::tags->victimTeamColorTag.data(), RenX::tags->messageTag.size(), + RenX::tags->messageTag.data())); RenX_LoggingPlugin::voteOtherFmt = this->config.get("VoteOtherFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "%.*s[Vote] " IRCBOLD "%.*s" IRCBOLD IRCCOLOR "%.*s has called a \"%.*s\" vote.", RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.ptr(), RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "%.*s[Vote] " IRCBOLD "%.*s" IRCBOLD IRCCOLOR "%.*s has called a \"%.*s\" vote.", RenX::tags->victimTeamColorTag.size(), + RenX::tags->victimTeamColorTag.data(), RenX::tags->nameTag.size(), + RenX::tags->nameTag.data(), RenX::tags->victimTeamColorTag.size(), + RenX::tags->victimTeamColorTag.data(), RenX::tags->objectTag.size(), + RenX::tags->objectTag.data())); RenX_LoggingPlugin::voteOverSuccessFmt = this->config.get("VoteOverSuccessFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "%.*s[Vote] A vote for \"%.*s\" " IRCBOLD IRCCOLOR "09passed" IRCBOLD IRCCOLOR "%.*s (Votes Yes: %.*s | Votes No: %.*s).", RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr(), RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.ptr(), RenX::tags->winScoreTag.size(), RenX::tags->winScoreTag.ptr(), RenX::tags->loseScoreTag.size(), RenX::tags->loseScoreTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "%.*s[Vote] A vote for \"%.*s\" " IRCBOLD IRCCOLOR "09passed" IRCBOLD IRCCOLOR "%.*s (Votes Yes: %.*s | Votes No: %.*s).", RenX::tags->victimTeamColorTag.size(), + RenX::tags->victimTeamColorTag.data(), RenX::tags->objectTag.size(), + RenX::tags->objectTag.data(), RenX::tags->victimTeamColorTag.size(), + RenX::tags->victimTeamColorTag.data(), RenX::tags->winScoreTag.size(), + RenX::tags->winScoreTag.data(), RenX::tags->loseScoreTag.size(), + RenX::tags->loseScoreTag.data())); RenX_LoggingPlugin::voteOverFailFmt = this->config.get("VoteOverFailFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "%.*s[Vote] A vote for \"%.*s\" " IRCBOLD IRCCOLOR "04failed" IRCBOLD IRCCOLOR "%.*s (Votes Yes: %.*s | Votes No: %.*s).", RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr(), RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.ptr(), RenX::tags->winScoreTag.size(), RenX::tags->winScoreTag.ptr(), RenX::tags->loseScoreTag.size(), RenX::tags->loseScoreTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "%.*s[Vote] A vote for \"%.*s\" " IRCBOLD IRCCOLOR "04failed" IRCBOLD IRCCOLOR "%.*s (Votes Yes: %.*s | Votes No: %.*s).", RenX::tags->victimTeamColorTag.size(), + RenX::tags->victimTeamColorTag.data(), RenX::tags->objectTag.size(), + RenX::tags->objectTag.data(), RenX::tags->victimTeamColorTag.size(), + RenX::tags->victimTeamColorTag.data(), RenX::tags->winScoreTag.size(), + RenX::tags->winScoreTag.data(), RenX::tags->loseScoreTag.size(), + RenX::tags->loseScoreTag.data())); RenX_LoggingPlugin::voteCancelFmt = this->config.get("VoteCancelFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "%.*s[Vote] A vote for \"%.*s\" was " IRCBOLD IRCCOLOR "07cancelled" IRCCOLOR IRCBOLD ".", RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "%.*s[Vote] A vote for \"%.*s\" was " IRCBOLD IRCCOLOR "07cancelled" IRCCOLOR IRCBOLD ".", RenX::tags->victimTeamColorTag.size(), + RenX::tags->victimTeamColorTag.data(), RenX::tags->objectTag.size(), + RenX::tags->objectTag.data())); RenX_LoggingPlugin::voteFmt = this->config.get("VoteFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "06[Vote]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "06[Vote]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), + RenX::tags->messageTag.data())); RenX_LoggingPlugin::mapChangeFmt = this->config.get("MapChangeFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "03Loading %.*s...", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "03Loading %.*s...", RenX::tags->messageTag.size(), + RenX::tags->messageTag.data())); RenX_LoggingPlugin::mapLoadFmt = this->config.get("MapLoadFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "03%.*s loaded.", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "03%.*s loaded.", RenX::tags->messageTag.size(), RenX::tags->messageTag.data())); RenX_LoggingPlugin::mapStartFmt = this->config.get("MapStartFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "03%.*s started.", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "03%.*s started.", RenX::tags->messageTag.size(), + RenX::tags->messageTag.data())); RenX_LoggingPlugin::mapFmt = this->config.get("MapFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "06[Map]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "06[Map]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), + RenX::tags->messageTag.data())); RenX_LoggingPlugin::demoRecordFmt = this->config.get("DemoRecordFormat"_jrs, - Jupiter::StringS::Format("%.*s has started a demo recording.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr())); + Jupiter::StringS::Format("%.*s has started a demo recording.", RenX::tags->nameTag.size(), + RenX::tags->nameTag.data())); RenX_LoggingPlugin::rconDemoRecordFmt = this->config.get("RCONDemoRecordFormat"_jrs, IRCCOLOR "07A demo recording has started."_jrs); @@ -422,25 +638,31 @@ bool RenX_LoggingPlugin::initialize() IRCCOLOR "07The demo recording has stopped."_jrs); RenX_LoggingPlugin::demoFmt = this->config.get("DemoFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "06[Demo]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "06[Demo]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), + RenX::tags->messageTag.data())); RenX_LoggingPlugin::logFmt = this->config.get("LogFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "07[Log]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "07[Log]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), + RenX::tags->messageTag.data())); RenX_LoggingPlugin::commandFmt = this->config.get("CommandFormat"_jrs, Jupiter::StringS::Format("")); // Disabled by default. RenX_LoggingPlugin::errorFmt = this->config.get("ErrorFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "04[Error]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "04[Error]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), + RenX::tags->messageTag.data())); RenX_LoggingPlugin::versionFmt = this->config.get("VersionFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "03Renegade X RCON connection established; using RCON verison " IRCBOLD "%.*s" IRCBOLD " for game version " IRCBOLD "%.*s" IRCBOLD, RenX::tags->rconVersionTag.size(), RenX::tags->rconVersionTag.ptr(), RenX::tags->gameVersionTag.size(), RenX::tags->gameVersionTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "03Renegade X RCON connection established; using RCON verison " IRCBOLD "%.*s" IRCBOLD " for game version " IRCBOLD "%.*s" IRCBOLD, RenX::tags->rconVersionTag.size(), + RenX::tags->rconVersionTag.data(), RenX::tags->gameVersionTag.size(), + RenX::tags->gameVersionTag.data())); RenX_LoggingPlugin::authorizedFmt = this->config.get("AuthorizedFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "03RCON authorization completed.")); RenX_LoggingPlugin::otherFmt = this->config.get("OtherFormat"_jrs, - Jupiter::StringS::Format(IRCCOLOR "06[Other]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); + Jupiter::StringS::Format(IRCCOLOR "06[Other]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), + RenX::tags->messageTag.data())); /** Sanitize tags */ RenX::sanitizeTags(playerRDNSFmt); diff --git a/src/Plugins/RenX/RenX.ModSystem/RenX_ModSystem.cpp b/src/Plugins/RenX/RenX.ModSystem/RenX_ModSystem.cpp index d75abf5..738ba8c 100644 --- a/src/Plugins/RenX/RenX.ModSystem/RenX_ModSystem.cpp +++ b/src/Plugins/RenX/RenX.ModSystem/RenX_ModSystem.cpp @@ -198,7 +198,8 @@ int RenX_ModSystemPlugin::auth(RenX::Server &server, const RenX::PlayerInfo &pla } } Jupiter::String playerName = RenX::getFormattedPlayerName(player); - server.sendLogChan(IRCCOLOR "03[Authentication] " IRCBOLD "%.*s" IRCBOLD IRCCOLOR " is now authenticated with access level %d; group: %.*s.", playerName.size(), playerName.ptr(), player.access, group->name.size(), group->name.data()); + server.sendLogChan(IRCCOLOR "03[Authentication] " IRCBOLD "%.*s" IRCBOLD IRCCOLOR " is now authenticated with access level %d; group: %.*s.", playerName.size(), + playerName.data(), player.access, group->name.size(), group->name.data()); return player.access; }; diff --git a/src/Plugins/RenX/RenX.ServerList/RenX_ServerList.cpp b/src/Plugins/RenX/RenX.ServerList/RenX_ServerList.cpp index 98e69cc..3f1aa53 100644 --- a/src/Plugins/RenX/RenX.ServerList/RenX_ServerList.cpp +++ b/src/Plugins/RenX/RenX.ServerList/RenX_ServerList.cpp @@ -204,12 +204,12 @@ Jupiter::StringS RenX_ServerListPlugin::server_as_json(const RenX::Server &serve // Build block server_json_block.format(R"json({"Name":"%.*s",%.*s"Current Map":"%.*s","Bots":%u,"Players":%u,"Game Version":"%.*s",%.*s"Variables":{"Mine Limit":%d,"bSteamRequired":%s,"bPrivateMessageTeamOnly":%s,"bPassworded":%s,"bAllowPrivateMessaging":%s,"bRanked":%s,"Game Type":%d,"Player Limit":%d,"Vehicle Limit":%d,"bAutoBalanceTeams":%s,"Team Mode":%d,"bSpawnCrates":%s,"CrateRespawnAfterPickup":%f,"Time Limit":%d},"Port":%u,"IP":"%.*s")json", - server_name.size(), server_name.ptr(), - server_prefix.size(), server_prefix.ptr(), - server_map.size(), server_map.ptr(), + server_name.size(), server_name.data(), + server_prefix.size(), server_prefix.data(), + server_map.size(), server_map.data(), server.getBotCount(), getListedPlayerCount(server), - server_version.size(), server_version.ptr(), + server_version.size(), server_version.data(), server_attributes.size(), server_attributes.data(), server.getMineLimit(), json_bool_as_cstring(server.isSteamRequired()), @@ -226,7 +226,7 @@ Jupiter::StringS RenX_ServerListPlugin::server_as_json(const RenX::Server &serve server.getCrateRespawnDelay(), server.getTimeLimit(), server_port, - server_hostname.size(), server_hostname.ptr()); + server_hostname.size(), server_hostname.data()); server_json_block += '}'; @@ -369,12 +369,12 @@ Jupiter::StringS RenX_ServerListPlugin::server_as_long_json(const RenX::Server & }, "Port": %u, "IP": "%.*s")json", - server_name.size(), server_name.ptr(), - server_prefix.size(), server_prefix.ptr(), - server_map.size(), server_map.ptr(), + server_name.size(), server_name.data(), + server_prefix.size(), server_prefix.data(), + server_map.size(), server_map.data(), server.getBotCount(), activePlayers.size(), - server_version.size(), server_version.ptr(), + server_version.size(), server_version.data(), server_attributes.size(), server_attributes.data(), server.getMineLimit(), @@ -391,7 +391,7 @@ Jupiter::StringS RenX_ServerListPlugin::server_as_long_json(const RenX::Server & server.getTimeLimit(), server_port, - server_hostname.size(), server_hostname.ptr()); + server_hostname.size(), server_hostname.data()); // Level Rotation if (server.maps.size() != 0) { diff --git a/src/Plugins/RenX/RenX.SetJoin/RenX_SetJoin.cpp b/src/Plugins/RenX/RenX.SetJoin/RenX_SetJoin.cpp index bbd63ee..c36c844 100644 --- a/src/Plugins/RenX/RenX.SetJoin/RenX_SetJoin.cpp +++ b/src/Plugins/RenX/RenX.SetJoin/RenX_SetJoin.cpp @@ -128,7 +128,8 @@ void SetJoinGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, if (!parameters.empty()) { pluginInstance.setjoin_file.set(player->uuid, static_cast(parameters)); pluginInstance.setjoin_file.write(); - source->sendMessage(*player, Jupiter::StringS::Format("%.*s, your join message is now: %.*s", player->name.size(), player->name.data(), parameters.size(), parameters.ptr())); + source->sendMessage(*player, Jupiter::StringS::Format("%.*s, your join message is now: %.*s", player->name.size(), player->name.data(), parameters.size(), + parameters.data())); } else DelJoinGameCommand_instance.trigger(source, player, parameters); } diff --git a/src/Plugins/RenX/RenX.Warn/RenX_Warn.cpp b/src/Plugins/RenX/RenX.Warn/RenX_Warn.cpp index 14971fc..4e785c3 100644 --- a/src/Plugins/RenX/RenX.Warn/RenX_Warn.cpp +++ b/src/Plugins/RenX/RenX.Warn/RenX_Warn.cpp @@ -89,7 +89,8 @@ void WarnIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &cha } else { player->varData[pluginInstance.getName()].set(WARNS_KEY, std::to_string(warns)); - server->sendWarnMessage(*player, Jupiter::StringS::Format("You have been warned by %.*s@IRC for: %.*s. You have %d warnings.", nick.size(), nick.ptr(), reason.size(), reason.data(), warns)); + server->sendWarnMessage(*player, Jupiter::StringS::Format("You have been warned by %.*s@IRC for: %.*s. You have %d warnings.", nick.size(), + nick.data(), reason.size(), reason.data(), warns)); source->sendNotice(nick, Jupiter::StringS::Format("%.*s has been warned; they now have %d warnings.", player->name.size(), player->name.data(), warns)); } } @@ -137,7 +138,8 @@ void PardonIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &c player = server->getPlayerByPartName(parameters); if (player != nullptr) { player->varData[pluginInstance.getName()].remove(WARNS_KEY); - server->sendMessage(*player, Jupiter::StringS::Format("You have been pardoned by %.*s@IRC; your warnings have been reset.", nick.size(), nick.ptr())); + server->sendMessage(*player, Jupiter::StringS::Format("You have been pardoned by %.*s@IRC; your warnings have been reset.", nick.size(), + nick.data())); source->sendNotice(nick, Jupiter::StringS::Format("%.*s has been pardoned; their warnings have been reset.", player->name.size(), player->name.data())); } } diff --git a/src/Plugins/SetJoin/SetJoin.cpp b/src/Plugins/SetJoin/SetJoin.cpp index af79341..4faac69 100644 --- a/src/Plugins/SetJoin/SetJoin.cpp +++ b/src/Plugins/SetJoin/SetJoin.cpp @@ -74,9 +74,11 @@ void ViewJoinIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString std::string_view setjoin = pluginInstance.setjoin_file[source->getConfigSection()].get(target); if (setjoin.empty()) - source->sendMessage(channel, Jupiter::StringS::Format("No setjoin has been set for \"%.*s\".", target.size(), target.ptr())); + source->sendMessage(channel, Jupiter::StringS::Format("No setjoin has been set for \"%.*s\".", target.size(), + target.data())); else - source->sendMessage(channel, Jupiter::StringS::Format(IRCBOLD IRCCOLOR "07[%.*s]" IRCCOLOR IRCBOLD ": %.*s", target.size(), target.ptr(), setjoin.size(), setjoin.data())); + source->sendMessage(channel, Jupiter::StringS::Format(IRCBOLD IRCCOLOR "07[%.*s]" IRCCOLOR IRCBOLD ": %.*s", target.size(), + target.data(), setjoin.size(), setjoin.data())); } const Jupiter::ReadableString &ViewJoinIRCCommand::getHelp(const Jupiter::ReadableString &)