From fef17f0c165343305eb5e02342da15ddd7d2a9ac Mon Sep 17 00:00:00 2001 From: JAJames Date: Mon, 25 Jan 2016 19:55:16 -0500 Subject: [PATCH] RenX.Core: * Added various DevBot checks RenX.Logging: * Added 'devBotExecuteFmt' for DevBot command execution logs (default: empty/disabled). Updated Jupiter General cleanup and adjustments --- .gitignore | 3 + Bot/Main.cpp | 22 +- Jupiter | 2 +- Release/Bot.lib | Bin 24762 -> 24762 bytes Release/Plugins/RenX.Core.lib | Bin 158156 -> 156476 bytes RenX.Commands/RenX_Commands.cpp | 2 +- RenX.Core/RenX_Functions.cpp | 3 +- RenX.Core/RenX_Functions.h | 3 +- RenX.Core/RenX_Server.cpp | 10 +- RenX.Core/RenX_Server.h | 8 + RenX.Ladder/RenX_Ladder.cpp | 5 +- RenX.Logging/RenX_Logging.cpp | 348 ++++++++++++++++---------------- RenX.Logging/RenX_Logging.h | 4 +- 13 files changed, 224 insertions(+), 186 deletions(-) diff --git a/.gitignore b/.gitignore index 1bc915c..fd26a59 100644 --- a/.gitignore +++ b/.gitignore @@ -154,3 +154,6 @@ $RECYCLE.BIN/ # Mac desktop service store files .DS_Store + +# Visual Studio OpenDB +*.VC.opendb diff --git a/Bot/Main.cpp b/Bot/Main.cpp index bf03241..05983f0 100644 --- a/Bot/Main.cpp +++ b/Bot/Main.cpp @@ -1,5 +1,5 @@ /** - * Copyright (C) 2013-2015 Jessica James. + * Copyright (C) 2013-2016 Jessica James. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -16,7 +16,6 @@ * Written by Jessica James */ -#include #include #include #include @@ -33,6 +32,8 @@ #include "Console_Command.h" #include "IRC_Command.h" +using namespace Jupiter::literals; + Jupiter::Queue inputQueue; void onTerminate() @@ -65,21 +66,26 @@ int main(int argc, const char **args) atexit(onExit); std::set_terminate(onTerminate); std::thread inputThread(inputLoop); - srand((unsigned int) time(0)); + + srand(static_cast(std::chrono::duration_cast(std::chrono::steady_clock::now().time_since_epoch()).count())); puts(Jupiter::copyright); const char *configFileName = CONFIG_INI; for (int i = 1; i < argc; i++) { - if (streqli(args[i], "-help")) + if ("-help"_jrs.equalsi(args[i])) { puts("Help coming soon, to a theatre near you!"); return 0; } - else if (streqli(args[i], "-config") && ++i < argc) configFileName = args[i]; - else if (streqli(args[i], "-pluginsdir") && ++i < argc) Jupiter::setPluginDirectory(Jupiter::ReferenceString(args[i])); - else if (streqli(args[i], "-configFormat") && ++i < argc) puts("Feature not yet supported!"); - else printf("Warning: Unknown command line argument \"%s\" specified. Ignoring...", args[i]); + else if ("-config"_jrs.equalsi(args[i]) && ++i < argc) + configFileName = args[i]; + else if ("-pluginsdir"_jrs.equalsi(args[i]) && ++i < argc) + Jupiter::setPluginDirectory(Jupiter::ReferenceString(args[i])); + else if ("-configFormat"_jrs.equalsi(args[i]) && ++i < argc) + puts("Feature not yet supported!"); + else + printf("Warning: Unknown command line argument \"%s\" specified. Ignoring...", args[i]); } puts("Loading config file..."); diff --git a/Jupiter b/Jupiter index 5eca27a..6e9525f 160000 --- a/Jupiter +++ b/Jupiter @@ -1 +1 @@ -Subproject commit 5eca27adc30fef1d51156d94de85a34f4e5793d0 +Subproject commit 6e9525f3f5b3631d40b1f62414e8fc6ec925c80d diff --git a/Release/Bot.lib b/Release/Bot.lib index 8ecbe065b7457c147cdb7bba48ab58d7ce70b581..306934dc44a4b0e5c2346ea92354256dc8915d86 100644 GIT binary patch delta 2040 zcmZuxJ4{ni7;Z%rl}M%7i&mrx3JQ_>K)5ZXEtE>%4`?m6wAG-SDGMPcI%tB6kDB~( zGR8XSVibuRi4Wq$V2Exe5*Cf4I2Z>L^_=_Pd(OGmc4@zS|M!3Y>ntuA7nh88tecPb zos@fz$uOOl7UVSlUx_rocxIgyfPlq(qOZ?}pW@cAvBn_3eGI9-ryD+GA?~z7Yrlj3 z%=Uj~vXy`Za2UWD;;A8h7sT#vC*6HhV};zX zxGNG6j^bAy*2j|ODEO0Mhmgwx8+=U)zRTCoaMiOi$sW?oMv`lNQzz-=9>$^mHJ`O3 zJQs~!9l>0)BcqJ3;)-S$(cDQipWE7@)z39;Aql#&7+do58C1w@zW5RUOq_3 z+$mv}0{%mXTOc}$^`0LU>&1D#9}P0?={#bw0LLl;#NGvXE>jROS8z&*mEd&{m$8%7 z+Deykhsg%NgM3)F5C%pqGpm9W0qy%FSxB2lg%Q47#v z639{H#-ee7E5XaC*+kDyCPj3RBHU-ErXZ2+g)7M>MzqIJbTW2PQqC@=&u@_c-r2qaN1dQBeQ(-w9`xE z_@>*(nqe{5s616GxofOWn!hxO`NJf?hvZ-H*ay!htEQ#I?#uJOYkBVHc^*2W+5+~| eTF^h&b1HtX;9>d2g={EtZF_O delta 2040 zcmZuxNla5w6m3BSl}M$~k5;7!ju@##gtm5~rOT?} zV=N0-2GqDCabU^95SJtpHX4_riE&|~zW49{@4atrH|@!}=bk&grDgrnvi`ogv48Ni z^>lwf%oL=TwhaGYjdr|RG+z;bpvib@aL|IE()NhHUU#DK5YmGSb>Fj)aG0TU$WDLe zhCVUbYS09Eo1vaE%eFbrY=(XICS>mcuidJNxM#}cLS!7xu2v7??8 z!>r>HtY=a8x#t?g$$+8kN4)5bFuWR+V8x60hId$lyN3}^4{N(1c6TS~?z?(3yfYNP znn1jgxS-*;B=PMClVrVQJC;p;*q?3EF%%mz<2YfQlo=lIVNyKb7Fx`C<*dGBxF(HlnZ$DKWMSjxA`Pt|JvCaaU?FHd3q2+8ju`8N-D!QxcSwB*>X0`I$;=W&7Op)+bIVn5AA c?Q=b+;E#$PmS0@RmJ-*dmpofSo!h0pzhN0b%K!iX diff --git a/Release/Plugins/RenX.Core.lib b/Release/Plugins/RenX.Core.lib index f53720089ffff75f61e52f3a910e1d4c78c7573c..19525bcce0f52e04939a60c6b50d9a29bd7257b4 100644 GIT binary patch delta 19111 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 delta 20202 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 zF6n64Pa{$f%yttw)a=5isAdminLogChanType(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.ptr(), idColLen, player->id, scoreColLen, player->score, creditColLen, player->credits, player->ip.size(), player->ip.ptr())); + 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.ptr(), idColLen, player->id, scoreColLen, player->score, creditColLen, player->credits, player->ip.size(), player->ip.ptr())); 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.ptr(), idColLen, player->id, scoreColLen, player->score, creditColLen, player->credits)); }; diff --git a/RenX.Core/RenX_Functions.cpp b/RenX.Core/RenX_Functions.cpp index 3918420..ec98a7a 100644 --- a/RenX.Core/RenX_Functions.cpp +++ b/RenX.Core/RenX_Functions.cpp @@ -1,5 +1,5 @@ /** - * Copyright (C) 2014-2015 Jessica James. + * Copyright (C) 2014-2016 Jessica James. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -45,6 +45,7 @@ Jupiter::ReferenceString OtherLongName = "Unknown"; /** RenegadeX RCON protocol message deliminator */ const char RenX::DelimC = '\xA0'; +const Jupiter::ReferenceString RenX::DevBotName = "DevBot"_jrs; /** WinType translations */ diff --git a/RenX.Core/RenX_Functions.h b/RenX.Core/RenX_Functions.h index 24b807c..18084a1 100644 --- a/RenX.Core/RenX_Functions.h +++ b/RenX.Core/RenX_Functions.h @@ -1,5 +1,5 @@ /** - * Copyright (C) 2014-2015 Jessica James. + * Copyright (C) 2014-2016 Jessica James. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -192,6 +192,7 @@ namespace RenX /** Constant variables */ RENX_API extern const char DelimC; /** RCON message deliminator */ + RENX_API extern const Jupiter::ReferenceString DevBotName; } #endif // _RENX_FUNCTIONS_H_HEADER \ No newline at end of file diff --git a/RenX.Core/RenX_Server.cpp b/RenX.Core/RenX_Server.cpp index 5da41b2..fecfe22 100644 --- a/RenX.Core/RenX_Server.cpp +++ b/RenX.Core/RenX_Server.cpp @@ -832,6 +832,11 @@ const Jupiter::ReadableString &RenX::Server::getUser() const return RenX::Server::rconUser; } +bool RenX::Server::isDevBot() const +{ + return RenX::Server::devBot; +} + const Jupiter::ReadableString &RenX::Server::getName() const { return RenX::Server::serverName; @@ -2709,7 +2714,10 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) case 'a': { - RenX::Server::rconUser = Jupiter::ReferenceString::substring(line, 1);; + RenX::Server::rconUser = Jupiter::ReferenceString::substring(line, 1); + if (rconUser.equals(RenX::DevBotName)) + RenX::Server::devBot = true; + for (size_t i = 0; i < xPlugins.size(); i++) xPlugins.get(i)->RenX_OnAuthorized(this, RenX::Server::rconUser); } diff --git a/RenX.Core/RenX_Server.h b/RenX.Core/RenX_Server.h index 10519fd..c92917c 100644 --- a/RenX.Core/RenX_Server.h +++ b/RenX.Core/RenX_Server.h @@ -694,6 +694,13 @@ namespace RenX */ const Jupiter::ReadableString &getUser() const; + /** + * @brief Checks if this connection is a DevBot connection. + * + * @return True if this is a DevBot connection, false otherwise. + */ + bool isDevBot() const; + /** * @brief Fetches the name of this server. * @@ -933,6 +940,7 @@ namespace RenX bool autoBalanceTeams = true; bool spawnCrates = true; bool competitive = false; + bool devBot = false; int attempts = 0; int playerLimit = 0; int vehicleLimit = 0; diff --git a/RenX.Ladder/RenX_Ladder.cpp b/RenX.Ladder/RenX_Ladder.cpp index c13434c..1af989e 100644 --- a/RenX.Ladder/RenX_Ladder.cpp +++ b/RenX.Ladder/RenX_Ladder.cpp @@ -16,8 +16,9 @@ * Written by Jessica James */ -#include "Console_Command.h" +#include #include "Jupiter/INIFile.h" +#include "Console_Command.h" #include "RenX_Ladder.h" #include "RenX_Server.h" #include "RenX_PlayerInfo.h" @@ -176,7 +177,7 @@ size_t RenX_LadderPlugin::getMaxLadderCommandPartNameOutput() const RenX_LadderPlugin pluginInstance; /** Ladder Commands */ -#include + Jupiter::StringS FormatLadderResponse(RenX_LadderDatabase::Entry *entry, size_t rank) { return Jupiter::StringS::Format("#%" PRIuPTR ": \"%.*s\" - Score: %" PRIu64 " - Kills: %" PRIu32 " - Deaths: %" PRIu32 " - KDR: %.2f - SPM: %.2f", rank, entry->most_recent_name.size(), entry->most_recent_name.ptr(), entry->total_score, entry->total_kills, entry->total_deaths, static_cast(entry->total_kills) / (entry->total_deaths == 0 ? 1 : static_cast(entry->total_deaths)), static_cast(entry->total_score) / (entry->total_game_time == 0 ? 1.0 : static_cast(entry->total_game_time)) * 60.0); diff --git a/RenX.Logging/RenX_Logging.cpp b/RenX.Logging/RenX_Logging.cpp index 93cd5be..1662041 100644 --- a/RenX.Logging/RenX_Logging.cpp +++ b/RenX.Logging/RenX_Logging.cpp @@ -25,358 +25,362 @@ #include "RenX_Server.h" #include "RenX_Tags.h" +using namespace Jupiter::literals; + void RenX_LoggingPlugin::init() { - RenX_LoggingPlugin::muteOwnExecute = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("MuteOwnExecute"), true); - RenX_LoggingPlugin::joinPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("JoinPublic"), true); - RenX_LoggingPlugin::partPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("PartPublic"), true); - RenX_LoggingPlugin::kickPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("KickPublic"), true); - RenX_LoggingPlugin::nameChangePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("NameChangePublic"), true); - RenX_LoggingPlugin::teamChangePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("TeamChangePublic"), true); - RenX_LoggingPlugin::playerPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("PlayerPublic"), false); - RenX_LoggingPlugin::chatPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("ChatPublic"), true); - RenX_LoggingPlugin::teamChatPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("TeamChatPublic"), false); - RenX_LoggingPlugin::radioChatPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("RadioChatPublic"), false); - RenX_LoggingPlugin::hostChatPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("HostChatPublic"), true); - RenX_LoggingPlugin::hostPagePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("HostPagePublic"), false); - RenX_LoggingPlugin::otherChatPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("OtherChatPublic"), false); - RenX_LoggingPlugin::deployPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("DeployPublic"), true); - RenX_LoggingPlugin::mineDeployPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("MineDeployPublic"), false); - RenX_LoggingPlugin::disarmPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("DisarmPublic"), true); - RenX_LoggingPlugin::mineDisarmPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("MineDisarmPublic"), false); - RenX_LoggingPlugin::explodePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("ExplodePublic"), false); - RenX_LoggingPlugin::suicidePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("SuicidePublic"), true); - RenX_LoggingPlugin::killPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("KillPublic"), true); - RenX_LoggingPlugin::diePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("DiePublic"), true); - RenX_LoggingPlugin::destroyPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("DestroyPublic"), true); - RenX_LoggingPlugin::capturePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("CapturePublic"), true); - RenX_LoggingPlugin::neutralizePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("NeutralizePublic"), true); - RenX_LoggingPlugin::characterPurchasePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("CharacterPurchasePublic"), false); - RenX_LoggingPlugin::itemPurchasePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("ItemPurchasePublic"), false); - RenX_LoggingPlugin::weaponPurchasePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("WeaponPurchasePublic"), false); - RenX_LoggingPlugin::refillPurchasePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("RefillPurchasePublic"), false); - RenX_LoggingPlugin::vehiclePurchasePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("VehiclePurchasePublic"), false); - RenX_LoggingPlugin::vehicleSpawnPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("VehicleSpawnPublic"), true); - RenX_LoggingPlugin::spawnPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("SpawnPublic"), true); - RenX_LoggingPlugin::botJoinPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("BotJoinPublic"), true); - RenX_LoggingPlugin::vehicleCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("VehicleCratePublic"), false); - RenX_LoggingPlugin::TSVehicleCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("TSVehicleCratePublic"), RenX_LoggingPlugin::vehicleCratePublic); - RenX_LoggingPlugin::RAVehicleCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("RAVehicleCratePublic"), RenX_LoggingPlugin::vehicleCratePublic); - RenX_LoggingPlugin::deathCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("DeathCratePublic"), true); - RenX_LoggingPlugin::moneyCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("MoneyCratePublic"), false); - RenX_LoggingPlugin::characterCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("CharacterCratePublic"), false); - RenX_LoggingPlugin::spyCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("SpyCratePublic"), false); - RenX_LoggingPlugin::refillCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("RefillCratePublic"), false); - RenX_LoggingPlugin::timeBombCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("TimeBombCratePublic"), false); - RenX_LoggingPlugin::speedCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("SpeedCratePublic"), false); - RenX_LoggingPlugin::nukeCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("NukeCratePublic"), true); - RenX_LoggingPlugin::abductionCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("AbductionCratePublic"), true); - RenX_LoggingPlugin::unspecifiedCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("UnspecifiedCratePublic"), false); - RenX_LoggingPlugin::otherCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("OtherCratePublic"), false); - RenX_LoggingPlugin::stealPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("StealPublic"), true); - RenX_LoggingPlugin::donatePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("DonatePublic"), true); - RenX_LoggingPlugin::gamePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("GamePublic"), true); - RenX_LoggingPlugin::gameOverPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("GameOverPublic"), true); - RenX_LoggingPlugin::executePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("ExecutePublic"), false); - RenX_LoggingPlugin::subscribePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("SubscribePublic"), false); - RenX_LoggingPlugin::RCONPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("RCONPublic"), false); - RenX_LoggingPlugin::adminLoginPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("AdminLoginPublic"), true); - RenX_LoggingPlugin::adminGrantPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("AdminGrantPublic"), true); - RenX_LoggingPlugin::adminLogoutPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("AdminLogoutPublic"), true); - RenX_LoggingPlugin::adminPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("AdminPublic"), false); - RenX_LoggingPlugin::voteCallPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("VoteCallPublic"), true); - RenX_LoggingPlugin::voteOverPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("VoteOverPublic"), true); - RenX_LoggingPlugin::voteCancelPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("VoteCancelPublic"), true); - RenX_LoggingPlugin::votePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("VotePublic"), false); - RenX_LoggingPlugin::mapChangePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("MapChangePublic"), true); - RenX_LoggingPlugin::mapLoadPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("MapLoadPublic"), true); - RenX_LoggingPlugin::mapStartPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("MapStartPublic"), true); - RenX_LoggingPlugin::mapPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("MapPublic"), false); - RenX_LoggingPlugin::demoRecordPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("DemoRecordPublic"), true); - RenX_LoggingPlugin::demoRecordStopPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("DemoRecordStopPublic"), true); - RenX_LoggingPlugin::demoPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("DemoPublic"), false); - RenX_LoggingPlugin::logPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("LogPublic"), false); - RenX_LoggingPlugin::commandPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("CommandPublic"), false); - RenX_LoggingPlugin::errorPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("ErrorPublic"), false); - RenX_LoggingPlugin::versionPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("VersionPublic"), true); - RenX_LoggingPlugin::authorizedPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("AuthorizedPublic"), true); - RenX_LoggingPlugin::otherPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), STRING_LITERAL_AS_REFERENCE("OtherPublic"), false); + RenX_LoggingPlugin::muteOwnExecute = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "MuteOwnExecute"_jrs, true); + RenX_LoggingPlugin::joinPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "JoinPublic"_jrs, true); + RenX_LoggingPlugin::partPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "PartPublic"_jrs, true); + RenX_LoggingPlugin::kickPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "KickPublic"_jrs, true); + RenX_LoggingPlugin::nameChangePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "NameChangePublic"_jrs, true); + RenX_LoggingPlugin::teamChangePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "TeamChangePublic"_jrs, true); + RenX_LoggingPlugin::playerPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "PlayerPublic"_jrs, false); + RenX_LoggingPlugin::chatPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "ChatPublic"_jrs, true); + RenX_LoggingPlugin::teamChatPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "TeamChatPublic"_jrs, false); + RenX_LoggingPlugin::radioChatPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "RadioChatPublic"_jrs, false); + RenX_LoggingPlugin::hostChatPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "HostChatPublic"_jrs, true); + RenX_LoggingPlugin::hostPagePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "HostPagePublic"_jrs, false); + RenX_LoggingPlugin::otherChatPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "OtherChatPublic"_jrs, false); + RenX_LoggingPlugin::deployPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "DeployPublic"_jrs, true); + RenX_LoggingPlugin::mineDeployPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "MineDeployPublic"_jrs, false); + RenX_LoggingPlugin::disarmPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "DisarmPublic"_jrs, true); + RenX_LoggingPlugin::mineDisarmPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "MineDisarmPublic"_jrs, false); + RenX_LoggingPlugin::explodePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "ExplodePublic"_jrs, false); + RenX_LoggingPlugin::suicidePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "SuicidePublic"_jrs, true); + RenX_LoggingPlugin::killPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "KillPublic"_jrs, true); + RenX_LoggingPlugin::diePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "DiePublic"_jrs, true); + RenX_LoggingPlugin::destroyPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "DestroyPublic"_jrs, true); + RenX_LoggingPlugin::capturePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "CapturePublic"_jrs, true); + RenX_LoggingPlugin::neutralizePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "NeutralizePublic"_jrs, true); + RenX_LoggingPlugin::characterPurchasePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "CharacterPurchasePublic"_jrs, false); + RenX_LoggingPlugin::itemPurchasePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "ItemPurchasePublic"_jrs, false); + RenX_LoggingPlugin::weaponPurchasePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "WeaponPurchasePublic"_jrs, false); + RenX_LoggingPlugin::refillPurchasePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "RefillPurchasePublic"_jrs, false); + RenX_LoggingPlugin::vehiclePurchasePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "VehiclePurchasePublic"_jrs, false); + RenX_LoggingPlugin::vehicleSpawnPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "VehicleSpawnPublic"_jrs, true); + RenX_LoggingPlugin::spawnPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "SpawnPublic"_jrs, true); + RenX_LoggingPlugin::botJoinPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "BotJoinPublic"_jrs, true); + RenX_LoggingPlugin::vehicleCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "VehicleCratePublic"_jrs, false); + RenX_LoggingPlugin::TSVehicleCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "TSVehicleCratePublic"_jrs, RenX_LoggingPlugin::vehicleCratePublic); + RenX_LoggingPlugin::RAVehicleCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "RAVehicleCratePublic"_jrs, RenX_LoggingPlugin::vehicleCratePublic); + RenX_LoggingPlugin::deathCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "DeathCratePublic"_jrs, true); + RenX_LoggingPlugin::moneyCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "MoneyCratePublic"_jrs, false); + RenX_LoggingPlugin::characterCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "CharacterCratePublic"_jrs, false); + RenX_LoggingPlugin::spyCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "SpyCratePublic"_jrs, false); + RenX_LoggingPlugin::refillCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "RefillCratePublic"_jrs, false); + RenX_LoggingPlugin::timeBombCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "TimeBombCratePublic"_jrs, false); + RenX_LoggingPlugin::speedCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "SpeedCratePublic"_jrs, false); + RenX_LoggingPlugin::nukeCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "NukeCratePublic"_jrs, true); + RenX_LoggingPlugin::abductionCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "AbductionCratePublic"_jrs, true); + RenX_LoggingPlugin::unspecifiedCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "UnspecifiedCratePublic"_jrs, false); + RenX_LoggingPlugin::otherCratePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "OtherCratePublic"_jrs, false); + RenX_LoggingPlugin::stealPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "StealPublic"_jrs, true); + RenX_LoggingPlugin::donatePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "DonatePublic"_jrs, true); + RenX_LoggingPlugin::gamePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "GamePublic"_jrs, true); + RenX_LoggingPlugin::gameOverPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "GameOverPublic"_jrs, true); + RenX_LoggingPlugin::executePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "ExecutePublic"_jrs, false); + RenX_LoggingPlugin::subscribePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "SubscribePublic"_jrs, false); + RenX_LoggingPlugin::RCONPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "RCONPublic"_jrs, false); + RenX_LoggingPlugin::adminLoginPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "AdminLoginPublic"_jrs, true); + RenX_LoggingPlugin::adminGrantPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "AdminGrantPublic"_jrs, true); + RenX_LoggingPlugin::adminLogoutPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "AdminLogoutPublic"_jrs, true); + RenX_LoggingPlugin::adminPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "AdminPublic"_jrs, false); + RenX_LoggingPlugin::voteCallPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "VoteCallPublic"_jrs, true); + RenX_LoggingPlugin::voteOverPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "VoteOverPublic"_jrs, true); + RenX_LoggingPlugin::voteCancelPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "VoteCancelPublic"_jrs, true); + RenX_LoggingPlugin::votePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "VotePublic"_jrs, false); + RenX_LoggingPlugin::mapChangePublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "MapChangePublic"_jrs, true); + RenX_LoggingPlugin::mapLoadPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "MapLoadPublic"_jrs, true); + RenX_LoggingPlugin::mapStartPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "MapStartPublic"_jrs, true); + RenX_LoggingPlugin::mapPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "MapPublic"_jrs, false); + RenX_LoggingPlugin::demoRecordPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "DemoRecordPublic"_jrs, true); + RenX_LoggingPlugin::demoRecordStopPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "DemoRecordStopPublic"_jrs, true); + RenX_LoggingPlugin::demoPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "DemoPublic"_jrs, false); + RenX_LoggingPlugin::logPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "LogPublic"_jrs, false); + RenX_LoggingPlugin::commandPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "CommandPublic"_jrs, false); + RenX_LoggingPlugin::errorPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "ErrorPublic"_jrs, false); + RenX_LoggingPlugin::versionPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "VersionPublic"_jrs, true); + RenX_LoggingPlugin::authorizedPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "AuthorizedPublic"_jrs, true); + RenX_LoggingPlugin::otherPublic = Jupiter::IRC::Client::Config->getBool(RenX_LoggingPlugin::getName(), "OtherPublic"_jrs, false); /** Event formats */ - RenX_LoggingPlugin::joinPublicFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("JoinPublicFormat"), + RenX_LoggingPlugin::joinPublicFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::joinAdminFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("JoinAdminFormat"), + RenX_LoggingPlugin::joinAdminFmt = Jupiter::IRC::Client::Config->get(this->getName(), "JoinAdminFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "12[Join] " IRCBOLD "%.*s" IRCBOLD " joined the game fighting for the %.*s from " IRCBOLD "%.*s" IRCBOLD " using Steam ID " IRCBOLD "%.*s" IRCBOLD ". Their hostname is: " IRCBOLD "%.*s", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->teamLongTag.size(), RenX::tags->teamLongTag.ptr(), RenX::tags->ipTag.size(), RenX::tags->ipTag.ptr(), RenX::tags->steamTag.size(), RenX::tags->steamTag.ptr(), RenX::tags->rdnsTag.size(), RenX::tags->rdnsTag.ptr())); - RenX_LoggingPlugin::joinNoSteamAdminFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("JoinNoSteamAdminFormat"), + RenX_LoggingPlugin::joinNoSteamAdminFmt = Jupiter::IRC::Client::Config->get(this->getName(), "JoinNoSteamAdminFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "12[Join] " IRCBOLD "%.*s" IRCBOLD " joined the game fighting for the %.*s from " IRCBOLD "%.*s" IRCBOLD ", but is " IRCBOLD "not" IRCBOLD " using Steam. Their hostname is: " IRCBOLD "%.*s", RenX::tags->nameTag.size(), RenX::tags->nameTag.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_LoggingPlugin::partFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("PartFormat"), + RenX_LoggingPlugin::partFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::kickFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("KickFormat"), + RenX_LoggingPlugin::kickFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::playerExecuteFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("PlayerExecuteFormat"), + RenX_LoggingPlugin::playerExecuteFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::playerFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("PlayerFormat"), + RenX_LoggingPlugin::playerFmt = Jupiter::IRC::Client::Config->get(this->getName(), "PlayerFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "12[Player]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); - RenX_LoggingPlugin::nameChangeFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("NameChangeFormat"), + RenX_LoggingPlugin::nameChangeFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::teamChangeFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("TeamChangeFormat"), + RenX_LoggingPlugin::teamChangeFmt = Jupiter::IRC::Client::Config->get(this->getName(), "TeamChangeFormat"_jrs, Jupiter::StringS::Format("%.*s" IRCCOLOR " switched teams!", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr())); - RenX_LoggingPlugin::chatFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("ChatFormat"), + RenX_LoggingPlugin::chatFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::teamChatFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("TeamChatFormat"), + RenX_LoggingPlugin::teamChatFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::radioChatFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("RadioChatFormat"), + RenX_LoggingPlugin::radioChatFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::hostChatFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("HostChatFormat"), + RenX_LoggingPlugin::hostChatFmt = Jupiter::IRC::Client::Config->get(this->getName(), "HostChatFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "12Host" IRCCOLOR "0: %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); - RenX_LoggingPlugin::hostPageFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("HostPageFormat"), + RenX_LoggingPlugin::hostPageFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::otherChatFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("OtherChatFormat"), + RenX_LoggingPlugin::otherChatFmt = Jupiter::IRC::Client::Config->get(this->getName(), "OtherChatFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "06[Other Chat]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); - RenX_LoggingPlugin::deployFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("DeployFormat"), + RenX_LoggingPlugin::deployFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::mineDeployFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("MineDeployFormat"), + RenX_LoggingPlugin::mineDeployFmt = Jupiter::IRC::Client::Config->get(this->getName(), "MineDeployFormat"_jrs, RenX_LoggingPlugin::deployFmt); - RenX_LoggingPlugin::disarmFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("DisarmFormat"), + RenX_LoggingPlugin::disarmFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::mineDisarmFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("MineDisarmFormat"), + RenX_LoggingPlugin::mineDisarmFmt = Jupiter::IRC::Client::Config->get(this->getName(), "MineDisarmFormat"_jrs, RenX_LoggingPlugin::disarmFmt); - RenX_LoggingPlugin::disarmNoOwnerFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("DisarmNoOwnerFormat"), + RenX_LoggingPlugin::disarmNoOwnerFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::mineDisarmNoOwnerFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("MineDisarmNoOwnerFormat"), + RenX_LoggingPlugin::mineDisarmNoOwnerFmt = Jupiter::IRC::Client::Config->get(this->getName(), "MineDisarmNoOwnerFormat"_jrs, RenX_LoggingPlugin::disarmNoOwnerFmt); - RenX_LoggingPlugin::explodeFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("ExplodeFormat"), + RenX_LoggingPlugin::explodeFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::explodeNoOwnerFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("ExplodeMoOwnerFormat"), + RenX_LoggingPlugin::explodeNoOwnerFmt = Jupiter::IRC::Client::Config->get(this->getName(), "ExplodeMoOwnerFormat"_jrs, Jupiter::StringS::Format("A " IRCCOLOR "07%.*s" IRCCOLOR " detonated.", RenX::tags->weaponTag.size(), RenX::tags->weaponTag.ptr())); - RenX_LoggingPlugin::suicideFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("SuicideFormat"), + RenX_LoggingPlugin::suicideFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::killFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("KillFormat"), + RenX_LoggingPlugin::killFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::killFmt2 = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("KillFormat2"), + RenX_LoggingPlugin::killFmt2 = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::dieFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("DieFormat"), + RenX_LoggingPlugin::dieFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::dieFmt2 = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("DieFormat2"), + RenX_LoggingPlugin::dieFmt2 = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::destroyBuildingFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("DestroyBuildingFormat"), + RenX_LoggingPlugin::destroyBuildingFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::destroyBuildingFmt2 = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("DestroyBuildingFormat2"), + RenX_LoggingPlugin::destroyBuildingFmt2 = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::destroyDefenceFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("DestroyDefenceFormat"), + RenX_LoggingPlugin::destroyDefenceFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::destroyDefenceFmt2 = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("DestroyDefenceFormat2"), + RenX_LoggingPlugin::destroyDefenceFmt2 = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::destroyVehicleFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("DestroyVehicleFormat"), + RenX_LoggingPlugin::destroyVehicleFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::destroyVehicleFmt2 = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("DestroyVehicleFormat2"), + RenX_LoggingPlugin::destroyVehicleFmt2 = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::captureFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("CaptureFormat"), + RenX_LoggingPlugin::captureFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::neutralizeFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("NeutralizeFormat"), + RenX_LoggingPlugin::neutralizeFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::characterPurchaseFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("CharacterPurchaseFormat"), + RenX_LoggingPlugin::characterPurchaseFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::itemPurchaseFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("ItemPurchaseFormat"), + RenX_LoggingPlugin::itemPurchaseFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::weaponPurchaseFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("WeaponPurchaseFormat"), + RenX_LoggingPlugin::weaponPurchaseFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::refillPurchaseFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("RefillPurchaseFormat"), + RenX_LoggingPlugin::refillPurchaseFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::vehiclePurchaseFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("VehiclePurchaseFormat"), + RenX_LoggingPlugin::vehiclePurchaseFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::vehicleSpawnFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("VehicleSpawnFormat"), + RenX_LoggingPlugin::vehicleSpawnFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::spawnFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("SpawnFormat"), + RenX_LoggingPlugin::spawnFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::botJoinFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("BotJoinFormat"), + RenX_LoggingPlugin::botJoinFmt = Jupiter::IRC::Client::Config->get(this->getName(), "BotJoinFormat"_jrs, Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " online.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr())); - RenX_LoggingPlugin::vehicleCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("VehicleCrateFormat"), + RenX_LoggingPlugin::vehicleCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), "VehicleCrateFormat"_jrs, Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a %.*s vehicle crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr(), RenX::tags->objectTag.size(), RenX::tags->objectTag.ptr())); - RenX_LoggingPlugin::TSVehicleCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("TSVehicleCrateFormat"), + RenX_LoggingPlugin::TSVehicleCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), "TSVehicleCrateFormat"_jrs, RenX_LoggingPlugin::vehicleCrateFmt); - RenX_LoggingPlugin::RAVehicleCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("RAVehicleCrateFormat"), + RenX_LoggingPlugin::RAVehicleCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), "RAVehicleCrateFormat"_jrs, RenX_LoggingPlugin::vehicleCrateFmt); - RenX_LoggingPlugin::deathCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("DeathCrateFormat"), + RenX_LoggingPlugin::deathCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), "DeathCrateFormat"_jrs, Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "12death" IRCCOLOR " crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr())); - RenX_LoggingPlugin::moneyCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("MoneyCrateFormat"), + RenX_LoggingPlugin::moneyCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::characterCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("CharacterCrateFormat"), + RenX_LoggingPlugin::characterCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::spyCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("SpyCrateFormat"), + RenX_LoggingPlugin::spyCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::refillCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("RefillCrateFormat"), + RenX_LoggingPlugin::refillCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::timeBombCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("TimeBombCrateFormat"), + RenX_LoggingPlugin::timeBombCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::speedCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("SpeedCrateFormat"), + RenX_LoggingPlugin::speedCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), "SpeedCrateFormat"_jrs, Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "11speed" IRCCOLOR " crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr())); - RenX_LoggingPlugin::nukeCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("NukeCrateFormat"), + RenX_LoggingPlugin::nukeCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), "NukeCrateFormat"_jrs, Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up a " IRCCOLOR "04nuke" IRCCOLOR " crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr())); - RenX_LoggingPlugin::abductionCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("AbductionCrateFormat"), + RenX_LoggingPlugin::abductionCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::unspecifiedCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("UnspecifiedCrateFormat"), + RenX_LoggingPlugin::unspecifiedCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), "UnspecifiedCrateFormat"_jrs, Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " picked up an " IRCCOLOR "13unspecified" IRCCOLOR " crate.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr())); - RenX_LoggingPlugin::otherCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("OtherCrateFormat"), + RenX_LoggingPlugin::otherCrateFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::stealFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("StealFormat"), + RenX_LoggingPlugin::stealFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::stealNoOwnerFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("StealNoOwnerFormat"), + RenX_LoggingPlugin::stealNoOwnerFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::donateFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("DonateFormat"), + RenX_LoggingPlugin::donateFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::gameOverFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("GameOverFormat"), + RenX_LoggingPlugin::gameOverFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::gameOverTieFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("GameOverTieNoWinFormat"), + RenX_LoggingPlugin::gameOverTieFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::gameOverTieNoWinFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("GameOverTieFormat"), + RenX_LoggingPlugin::gameOverTieNoWinFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::gameOverScoreFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("GameOverScoreFormat"), + RenX_LoggingPlugin::gameOverScoreFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::gameFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("GameFormat"), + RenX_LoggingPlugin::gameFmt = Jupiter::IRC::Client::Config->get(this->getName(), "GameFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "03[Game]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); - RenX_LoggingPlugin::executeFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("ExecuteFormat"), + RenX_LoggingPlugin::executeFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::subscribeFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("SubscribeFormat"), + RenX_LoggingPlugin::devBotExecuteFmt = Jupiter::IRC::Client::Config->get(this->getName(), "DevBotExecuteFormat"_jrs); + + RenX_LoggingPlugin::subscribeFmt = Jupiter::IRC::Client::Config->get(this->getName(), "SubscribeFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "03%.*s subscribed to the RCON data stream.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr())); - RenX_LoggingPlugin::rconFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("RCONFormat"), + RenX_LoggingPlugin::rconFmt = Jupiter::IRC::Client::Config->get(this->getName(), "RCONFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "05[RCON]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); - RenX_LoggingPlugin::adminLoginFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("AdminLoginFormat"), + RenX_LoggingPlugin::adminLoginFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::adminGrantFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("AdminGrantFormat"), + RenX_LoggingPlugin::adminGrantFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::adminLogoutFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("AdminLogoutFormat"), + RenX_LoggingPlugin::adminLogoutFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::adminFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("AdminFormat"), + RenX_LoggingPlugin::adminFmt = Jupiter::IRC::Client::Config->get(this->getName(), "AdminFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "07[Admin]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); - RenX_LoggingPlugin::voteCallFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("VoteCallFormat"), + RenX_LoggingPlugin::voteCallFmt = Jupiter::IRC::Client::Config->get(this->getName(), "VoteCallFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "%.*s[Vote] " IRCBOLD "%.*s" IRCBOLD " has called a \"%.*s\" vote.", RenX::tags->victimTeamColorTag.size(), RenX::tags->victimTeamColorTag.ptr(), 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_LoggingPlugin::voteOverSuccessFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("VoteOverSuccessFormat"), + RenX_LoggingPlugin::voteOverSuccessFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::voteOverFailFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("VoteOverFailFormat"), + RenX_LoggingPlugin::voteOverFailFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::voteCancelFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("VoteCancelFormat"), + RenX_LoggingPlugin::voteCancelFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::voteFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("VoteFormat"), + RenX_LoggingPlugin::voteFmt = Jupiter::IRC::Client::Config->get(this->getName(), "VoteFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "06[Vote]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); - RenX_LoggingPlugin::mapChangeFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("MapChangeFormat"), + RenX_LoggingPlugin::mapChangeFmt = Jupiter::IRC::Client::Config->get(this->getName(), "MapChangeFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "03Loading %.*s...", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); - RenX_LoggingPlugin::mapLoadFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("MapLoadFormat"), + RenX_LoggingPlugin::mapLoadFmt = Jupiter::IRC::Client::Config->get(this->getName(), "MapLoadFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "03%.*s loaded.", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); - RenX_LoggingPlugin::mapStartFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("MapStartFormat"), + RenX_LoggingPlugin::mapStartFmt = Jupiter::IRC::Client::Config->get(this->getName(), "MapStartFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "03%.*s started.", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); - RenX_LoggingPlugin::mapFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("MapFormat"), + RenX_LoggingPlugin::mapFmt = Jupiter::IRC::Client::Config->get(this->getName(), "MapFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "06[Map]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); - RenX_LoggingPlugin::demoRecordFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("DemoRecordFormat"), + RenX_LoggingPlugin::demoRecordFmt = Jupiter::IRC::Client::Config->get(this->getName(), "DemoRecordFormat"_jrs, Jupiter::StringS::Format("%.*s has started a demo recording.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr())); - RenX_LoggingPlugin::rconDemoRecordFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("RCONDemoRecordFormat"), - STRING_LITERAL_AS_REFERENCE(IRCCOLOR "07A demo recording has started.")); + RenX_LoggingPlugin::rconDemoRecordFmt = Jupiter::IRC::Client::Config->get(this->getName(), "RCONDemoRecordFormat"_jrs, + IRCCOLOR "07A demo recording has started."_jrs); - RenX_LoggingPlugin::demoRecordStopFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("DemoRecordStopFormat"), - STRING_LITERAL_AS_REFERENCE(IRCCOLOR "07The demo recording has stopped.")); + RenX_LoggingPlugin::demoRecordStopFmt = Jupiter::IRC::Client::Config->get(this->getName(), "DemoRecordStopFormat"_jrs, + IRCCOLOR "07The demo recording has stopped."_jrs); - RenX_LoggingPlugin::demoFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("DemoFormat"), + RenX_LoggingPlugin::demoFmt = Jupiter::IRC::Client::Config->get(this->getName(), "DemoFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "06[Demo]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); - RenX_LoggingPlugin::logFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("LogFormat"), + RenX_LoggingPlugin::logFmt = Jupiter::IRC::Client::Config->get(this->getName(), "LogFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "07[Log]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); - RenX_LoggingPlugin::commandFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("CommandFormat"), + RenX_LoggingPlugin::commandFmt = Jupiter::IRC::Client::Config->get(this->getName(), "CommandFormat"_jrs, Jupiter::StringS::Format("")); // Disabled by default. - RenX_LoggingPlugin::errorFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("ErrorFormat"), + RenX_LoggingPlugin::errorFmt = Jupiter::IRC::Client::Config->get(this->getName(), "ErrorFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "04[Error]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); - RenX_LoggingPlugin::versionFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("VersionFormat"), + RenX_LoggingPlugin::versionFmt = Jupiter::IRC::Client::Config->get(this->getName(), "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())); - RenX_LoggingPlugin::authorizedFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("AuthorizedFormat"), + RenX_LoggingPlugin::authorizedFmt = Jupiter::IRC::Client::Config->get(this->getName(), "AuthorizedFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "03RCON authorization completed.")); - RenX_LoggingPlugin::otherFmt = Jupiter::IRC::Client::Config->get(this->getName(), STRING_LITERAL_AS_REFERENCE("OtherFormat"), + RenX_LoggingPlugin::otherFmt = Jupiter::IRC::Client::Config->get(this->getName(), "OtherFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "06[Other]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); /** Sanitize tags */ @@ -445,6 +449,7 @@ void RenX_LoggingPlugin::init() RenX::sanitizeTags(gameFmt); RenX::sanitizeTags(executeFmt); RenX::sanitizeTags(playerExecuteFmt); + RenX::sanitizeTags(devBotExecuteFmt); RenX::sanitizeTags(hostChatFmt); RenX::sanitizeTags(hostPageFmt); RenX::sanitizeTags(subscribeFmt); @@ -1564,7 +1569,12 @@ void RenX_LoggingPlugin::RenX_OnExecute(RenX::Server *server, const Jupiter::Rea else func = &RenX::Server::sendAdmChan; - Jupiter::String msg = this->executeFmt; + Jupiter::String msg; + if (user.equals(RenX::DevBotName)) + msg = this->executeFmt; + else + msg = this->devBotExecuteFmt; + if (msg.isNotEmpty()) { processTags(msg, server); diff --git a/RenX.Logging/RenX_Logging.h b/RenX.Logging/RenX_Logging.h index 552a16d..4788290 100644 --- a/RenX.Logging/RenX_Logging.h +++ b/RenX.Logging/RenX_Logging.h @@ -1,5 +1,5 @@ /** - * Copyright (C) 2014-2015 Jessica James. + * Copyright (C) 2014-2016 Jessica James. * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -263,7 +263,7 @@ private: Jupiter::StringS gameOverTieNoWinFmt; Jupiter::StringS gameOverScoreFmt; Jupiter::StringS gameFmt; - Jupiter::StringS executeFmt, playerExecuteFmt; + Jupiter::StringS executeFmt, playerExecuteFmt, devBotExecuteFmt; Jupiter::StringS subscribeFmt; Jupiter::StringS rconFmt; Jupiter::StringS adminLoginFmt;