diff --git a/Bot/IRC_Bot.cpp b/Bot/IRC_Bot.cpp index d7a923e..031dcdf 100644 --- a/Bot/IRC_Bot.cpp +++ b/Bot/IRC_Bot.cpp @@ -19,7 +19,7 @@ #include #include #include -#include "Jupiter/INIFile.h" +#include "Jupiter/Config.h" #include "Jupiter/Plugin.h" #include "Jupiter/Functions.h" #include "IRC_Bot.h" @@ -27,7 +27,7 @@ using namespace Jupiter::literals; -IRC_Bot::IRC_Bot(const Jupiter::INIFile::Section *in_primary_section, const Jupiter::INIFile::Section *in_secondary_section) : Client(in_primary_section, in_secondary_section) +IRC_Bot::IRC_Bot(const Jupiter::Config *in_primary_section, const Jupiter::Config *in_secondary_section) : Client(in_primary_section, in_secondary_section) { IRC_Bot::commandPrefix = this->readConfigValue("Prefix"_jrs); @@ -108,28 +108,24 @@ void IRC_Bot::setCommandAccessLevels(IRCCommand *in_command) { auto set_command_access_levels = [this, in_command](const Jupiter::ReadableString §ion_name) { - Jupiter::INIFile::Section *section = serverManager->getConfig().getSection(section_name); + Jupiter::Config *section = serverManager->getConfig().getSection(section_name); if (section != nullptr) { - size_t section_length = section->size(); - Jupiter::INIFile::Section::KeyValuePair *pair; - size_t tmp_index; - Jupiter::ReferenceString tmp_key, tmp_sub_key; - IRCCommand *command; - - for (size_t pair_index = 0; pair_index != section_length; ++pair_index) + auto read_section = [this, section, in_command](Jupiter::HashTable::Bucket::Entry &in_entry) { - pair = section->getPair(pair_index); + size_t tmp_index; + Jupiter::ReferenceString tmp_key, tmp_sub_key; + IRCCommand *command; - tmp_index = pair->getKey().find('.'); + tmp_index = in_entry.key.find('.'); if (tmp_index != Jupiter::INVALID_INDEX) { // non-default access assignment - tmp_key.set(pair->getKey().ptr(), tmp_index); + tmp_key.set(in_entry.key.ptr(), tmp_index); - tmp_sub_key = pair->getKey(); + tmp_sub_key = in_entry.key; tmp_sub_key.shiftRight(tmp_index + 1); if (tmp_sub_key.findi("Type."_jrs) == 0) @@ -138,7 +134,7 @@ void IRC_Bot::setCommandAccessLevels(IRCCommand *in_command) command = this->getCommand(tmp_key); if (command != nullptr && (in_command == nullptr || in_command == command)) - command->setAccessLevel(tmp_sub_key.asInt(), pair->getValue().asInt()); + command->setAccessLevel(tmp_sub_key.asInt(), in_entry.value.asInt()); } else if (tmp_sub_key.findi("Channel."_jrs) == 0) { @@ -147,21 +143,21 @@ void IRC_Bot::setCommandAccessLevels(IRCCommand *in_command) // Assign access level to command (if command exists) command = this->getCommand(tmp_key); if (command != nullptr && (in_command == nullptr || in_command == command)) - command->setAccessLevel(tmp_sub_key, pair->getValue().asInt()); + command->setAccessLevel(tmp_sub_key, in_entry.value.asInt()); } } else { // Assign access level to command (if command exists) - command = this->getCommand(pair->getKey()); + command = this->getCommand(in_entry.key); if (command != nullptr && (in_command == nullptr || in_command == command)) - command->setAccessLevel(pair->getValue().asInt()); + command->setAccessLevel(in_entry.value.asInt()); } - } + }; } }; - const Jupiter::INIFile::Section *section; + const Jupiter::Config *section; section = this->getSecondaryConfigSection(); if (section != nullptr) diff --git a/Bot/IRC_Bot.h b/Bot/IRC_Bot.h index 04d8c31..ef0b82c 100644 --- a/Bot/IRC_Bot.h +++ b/Bot/IRC_Bot.h @@ -110,7 +110,7 @@ class JUPITER_BOT_API IRC_Bot : public Jupiter::IRC::Client bool OnBadRehash(bool removed) { return removed; }; /** Constructor for IRC_Bot */ - IRC_Bot(const Jupiter::INIFile::Section *in_primary_section, const Jupiter::INIFile::Section *in_secondary_section); + IRC_Bot(const Jupiter::Config *in_primary_section, const Jupiter::Config *in_secondary_section); /** Destructor for IRC_Bot */ ~IRC_Bot(); diff --git a/Bot/Jupiter_Bot.h b/Bot/Jupiter_Bot.h index b6c8f36..a8385ad 100644 --- a/Bot/Jupiter_Bot.h +++ b/Bot/Jupiter_Bot.h @@ -38,11 +38,20 @@ #if defined __cplusplus +#include + /** Forward declaration */ -namespace Jupiter { class INIFile; } +namespace Jupiter { class Config; } + +namespace Jupiter +{ + + /** Application config file */ + extern Jupiter::Config *g_config; -/** Application config file */ -extern Jupiter::INIFile *g_config; + /** Application start time */ + extern std::chrono::steady_clock::time_point g_start_time; +} #endif // __cplusplus diff --git a/Bot/Main.cpp b/Bot/Main.cpp index 8963539..51bc785 100644 --- a/Bot/Main.cpp +++ b/Bot/Main.cpp @@ -23,8 +23,7 @@ #include #include #include "Jupiter/Functions.h" -#include "Jupiter/INIFile.h" -#include "Jupiter/Queue.h" +#include "Jupiter/INIConfig.h" #include "Jupiter/Socket.h" #include "Jupiter/Plugin.h" #include "Jupiter/Timer.h" @@ -38,8 +37,9 @@ using namespace Jupiter::literals; -Jupiter::INIFile o_config; -Jupiter::INIFile *g_config = &o_config; +Jupiter::INIConfig o_config; +Jupiter::Config *Jupiter::g_config = &o_config; +std::chrono::steady_clock::time_point Jupiter::g_start_time = std::chrono::steady_clock::now(); #define INPUT_BUFFER_SIZE 2048 @@ -127,20 +127,24 @@ int main(int argc, const char **args) printf("Warning: Unknown command line argument \"%s\" specified. Ignoring...", args[i]); } + std::chrono::steady_clock::time_point load_start = std::chrono::steady_clock::now(); + puts("Loading config file..."); - if (!o_config.readFile(configFileName)) + if (!o_config.read(configFileName)) { puts("Unable to read config file. Closing..."); exit(0); } - puts("Config loaded."); + double time_taken = static_cast(std::chrono::duration_cast(std::chrono::steady_clock::now() - load_start).count()) / 1000.0; + + printf("Config loaded (%fms)." ENDL, time_taken); if (plugins_directory.isEmpty()) - plugins_directory = o_config.get(Jupiter::ReferenceString::empty, "PluginsDirectory"_jrs); + plugins_directory = o_config.get("PluginsDirectory"_jrs); if (configs_directory.isEmpty()) - configs_directory = o_config.get(Jupiter::ReferenceString::empty, "ConfigsDirectory"_jrs); + configs_directory = o_config.get("ConfigsDirectory"_jrs); if (plugins_directory.isNotEmpty()) { @@ -155,7 +159,7 @@ int main(int argc, const char **args) } puts("Loading plugins..."); - const Jupiter::ReadableString &pluginList = o_config.get(Jupiter::ReferenceString::empty, "Plugins"_jrs); + const Jupiter::ReadableString &pluginList = o_config.get("Plugins"_jrs); if (pluginList.isEmpty()) puts("No plugins to load!"); else @@ -164,12 +168,20 @@ int main(int argc, const char **args) unsigned int nPlugins = pluginList.wordCount(WHITESPACE); printf("Attempting to load %u plugins..." ENDL, nPlugins); + bool load_success; + for (unsigned int i = 0; i < nPlugins; i++) { Jupiter::ReferenceString plugin = Jupiter::ReferenceString::getWord(pluginList, i, WHITESPACE); - if (Jupiter::Plugin::load(plugin) == nullptr) - fprintf(stderr, "WARNING: Failed to load plugin \"%.*s\"!" ENDL, plugin.size(), plugin.ptr()); - else printf("\"%.*s\" loaded successfully." ENDL, plugin.size(), plugin.ptr()); + + load_start = std::chrono::steady_clock::now(); + load_success = Jupiter::Plugin::load(plugin) != nullptr; + time_taken = static_cast(std::chrono::duration_cast(std::chrono::steady_clock::now() - load_start).count()) / 1000.0; + + if (load_success) + printf("\"%.*s\" loaded successfully (%fms)." ENDL, plugin.size(), plugin.ptr(), time_taken); + else + fprintf(stderr, "WARNING: Failed to load plugin \"%.*s\" (%fms)!" ENDL, plugin.size(), plugin.ptr(), time_taken); } // OnPostInitialize @@ -177,6 +189,8 @@ int main(int argc, const char **args) Jupiter::plugins->get(index)->OnPostInitialize(); } + printf("Initialization completed in %f milliseconds." ENDL, static_cast(std::chrono::duration_cast(std::chrono::steady_clock::now() - Jupiter::g_start_time).count()) / 1000.0 ); + if (consoleCommands->size() > 0) printf("%u Console Commands have been initialized%s" ENDL, consoleCommands->size(), getConsoleCommand("help"_jrs) == nullptr ? "." : "; type \"help\" for more information."); if (IRCMasterCommandList->size() > 0) @@ -190,7 +204,7 @@ int main(int argc, const char **args) Jupiter::Plugin::free(index); else ++index; - Jupiter_checkTimers(); + Jupiter::Timer::check(); if (console_input.input_mutex.try_lock()) { diff --git a/Bot/ServerManager.h b/Bot/ServerManager.h index 414688e..2abfecd 100644 --- a/Bot/ServerManager.h +++ b/Bot/ServerManager.h @@ -147,14 +147,14 @@ class JUPITER_BOT_API ServerManager : public Jupiter::Thinker * * @return Configuration file being used */ - inline Jupiter::INIFile &getConfig() const { return *this->m_config; }; + inline Jupiter::Config &getConfig() const { return *this->m_config; }; /** * @brief Sets the configuration file to use * * @param Reference to the config file to use */ - inline void setConfig(Jupiter::INIFile &in_config) { this->m_config = &in_config; }; + inline void setConfig(Jupiter::Config &in_config) { this->m_config = &in_config; }; /** * Destructor for the ServerManager class. @@ -166,7 +166,7 @@ class JUPITER_BOT_API ServerManager : public Jupiter::Thinker Jupiter::ArrayList servers; /** Config to read data from */ - Jupiter::INIFile *m_config = g_config; + Jupiter::Config *m_config = Jupiter::g_config; }; /** Pointer to an instance of the server manager. Note: DO NOT DELETE OR FREE THIS POINTER. */ diff --git a/ChannelRelay/ChannelRelay.cpp b/ChannelRelay/ChannelRelay.cpp index 8420554..a54425d 100644 --- a/ChannelRelay/ChannelRelay.cpp +++ b/ChannelRelay/ChannelRelay.cpp @@ -17,7 +17,6 @@ */ #include "Jupiter/IRC_Client.h" -#include "Jupiter/INIFile.h" #include "Jupiter/String.h" #include "ServerManager.h" #include "IRC_Bot.h" @@ -27,7 +26,7 @@ using namespace Jupiter::literals; bool ChannelRelayPlugin::initialize() { - Jupiter::ReferenceString str = this->config.get(Jupiter::ReferenceString::empty, "Types"_jrs); + Jupiter::ReferenceString str = this->config.get("Types"_jrs); unsigned int words = str.wordCount(WHITESPACE); if (words == 0) return false; diff --git a/Configs/IRC.Core.ini b/Configs/IRC.Core.ini index 92e7071..b07adb5 100644 --- a/Configs/IRC.Core.ini +++ b/Configs/IRC.Core.ini @@ -66,7 +66,6 @@ Nick=RenXBot AltNick=RenXBot` RealName=Jupiter IRC Framework by Agent AutoPartMessage=Auto-Parting Enabled -AutoReconnect=1 MaxReconnectAttempts=3 AutoReconnectDelay=5 PrintOutput=1 diff --git a/CoreCommands/CoreCommands.cpp b/CoreCommands/CoreCommands.cpp index 19497e6..5384e30 100644 --- a/CoreCommands/CoreCommands.cpp +++ b/CoreCommands/CoreCommands.cpp @@ -17,7 +17,6 @@ */ #include -#include "Jupiter/INIFile.h" #include "Jupiter/Functions.h" #include "Jupiter/ArrayList.h" #include "CoreCommands.h" diff --git a/HTTPServer/HTTPServer.cpp b/HTTPServer/HTTPServer.cpp index 2350737..4a4c515 100644 --- a/HTTPServer/HTTPServer.cpp +++ b/HTTPServer/HTTPServer.cpp @@ -16,14 +16,13 @@ * Written by Jessica James */ -#include "Jupiter/INIFile.h" #include "HTTPServer.h" using namespace Jupiter::literals; HTTPServerPlugin::HTTPServerPlugin() { - HTTPServerPlugin::server.bind(this->config.get(Jupiter::ReferenceString::empty, "BindAddress"_jrs, "0.0.0.0"_jrs), this->config.getInt(Jupiter::ReferenceString::empty, "BindPort"_jrs, 80)); + HTTPServerPlugin::server.bind(this->config.get("BindAddress"_jrs, "0.0.0.0"_jrs), this->config.get("BindPort"_jrs, 80)); } int HTTPServerPlugin::think() diff --git a/IRC.Core/IRC_Core.cpp b/IRC.Core/IRC_Core.cpp index a6a4652..74bd8e2 100644 --- a/IRC.Core/IRC_Core.cpp +++ b/IRC.Core/IRC_Core.cpp @@ -30,7 +30,7 @@ IRCCorePlugin::~IRCCorePlugin() bool IRCCorePlugin::initialize() { - const Jupiter::ReadableString &serverList = this->config.get(Jupiter::ReferenceString::empty, "Servers"_jrs); + const Jupiter::ReadableString &serverList = this->config.get("Servers"_jrs); if (serverList != nullptr) { serverManager->setConfig(this->config); diff --git a/Jupiter b/Jupiter index ae3294c..d52d8cb 160000 --- a/Jupiter +++ b/Jupiter @@ -1 +1 @@ -Subproject commit ae3294c72b799178bc79b312fe43f34c28deca86 +Subproject commit d52d8cbbfbe8f8c1b74d01096d7d90c0c46d9518 diff --git a/RenX.Announcements/RenX_Announcements.cpp b/RenX.Announcements/RenX_Announcements.cpp index f44e933..ee31395 100644 --- a/RenX.Announcements/RenX_Announcements.cpp +++ b/RenX.Announcements/RenX_Announcements.cpp @@ -17,20 +17,21 @@ */ #include "Jupiter/IRC_Client.h" -#include "Jupiter/INIFile.h" #include "RenX_Announcements.h" #include "RenX_Core.h" #include "RenX_Server.h" #include "RenX_Tags.h" +using namespace Jupiter::literals; + RenX_AnnouncementsPlugin pluginInstance; -void announce_(unsigned int x) +void announce_(unsigned int x, void*) { - pluginInstance.announce(x); + pluginInstance.announce(x, nullptr); } -void RenX_AnnouncementsPlugin::announce(unsigned int) +void RenX_AnnouncementsPlugin::announce(unsigned int, void *) { if (RenX_AnnouncementsPlugin::random == false) { @@ -73,15 +74,15 @@ int RenX_AnnouncementsPlugin::OnRehash() bool RenX_AnnouncementsPlugin::initialize() { - RenX_AnnouncementsPlugin::random = this->config.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Random")); + RenX_AnnouncementsPlugin::random = this->config.get("Random"_jrs); - RenX_AnnouncementsPlugin::announcementsFile.load(this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("File"), STRING_LITERAL_AS_REFERENCE("Announcements.txt"))); + RenX_AnnouncementsPlugin::announcementsFile.load(this->config.get("File"_jrs, "Announcements.txt"_jrs)); if (RenX_AnnouncementsPlugin::announcementsFile.getLineCount() == 0) { fputs("[RenX.Announcements] ERROR: No announcements loaded." ENDL, stderr); return false; } - time_t delay = this->config.getInt(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Delay"), 60); + std::chrono::milliseconds delay = std::chrono::seconds(this->config.get("Delay"_jrs, 60)); RenX_AnnouncementsPlugin::timer = new Jupiter::Timer(0, delay, announce_); if (RenX_AnnouncementsPlugin::random == false) RenX_AnnouncementsPlugin::lastLine = RenX_AnnouncementsPlugin::announcementsFile.getLineCount() - 1; diff --git a/RenX.Announcements/RenX_Announcements.h b/RenX.Announcements/RenX_Announcements.h index 0485e8f..805ac7a 100644 --- a/RenX.Announcements/RenX_Announcements.h +++ b/RenX.Announcements/RenX_Announcements.h @@ -30,7 +30,7 @@ class RenX_AnnouncementsPlugin : public RenX::Plugin { public: - void announce(unsigned int); + void announce(unsigned int, void *); public: // Jupiter::Plugin virtual bool initialize() override; @@ -41,7 +41,6 @@ class RenX_AnnouncementsPlugin : public RenX::Plugin bool random; unsigned int lastLine; Jupiter::Timer *timer; - //Jupiter::StringS modsTag; Jupiter::File announcementsFile; }; diff --git a/RenX.Commands/RenX_Commands.cpp b/RenX.Commands/RenX_Commands.cpp index 8f36661..3e7e464 100644 --- a/RenX.Commands/RenX_Commands.cpp +++ b/RenX.Commands/RenX_Commands.cpp @@ -31,20 +31,22 @@ using namespace Jupiter::literals; +const Jupiter::ReferenceString RxCommandsSection = "RenX.Commands"_jrs; + inline bool togglePhasing(RenX::Server *server, bool newState) { - server->varData.set(STRING_LITERAL_AS_REFERENCE("RenX.Commands"), STRING_LITERAL_AS_REFERENCE("phasing"), newState ? STRING_LITERAL_AS_REFERENCE("true") : STRING_LITERAL_AS_REFERENCE("false")); + server->varData[RxCommandsSection].set("phasing"_jrs, newState ? "true"_jrs : "false"_jrs); return newState; } inline bool togglePhasing(RenX::Server *server) { - return togglePhasing(server, !server->varData.getBool(STRING_LITERAL_AS_REFERENCE("RenX.Commands"), STRING_LITERAL_AS_REFERENCE("phasing"), false)); + return togglePhasing(server, !server->varData[RxCommandsSection].get("phasing"_jrs, false)); } inline void onDie(RenX::Server *server, const RenX::PlayerInfo *player) { - if (player->isBot && server->varData.getBool(STRING_LITERAL_AS_REFERENCE("RenX.Commands"), STRING_LITERAL_AS_REFERENCE("phasing"), false)) + if (player->isBot && server->varData[RxCommandsSection].get("phasing"_jrs, false)) server->kickPlayer(player, Jupiter::StringS::empty); } @@ -65,11 +67,11 @@ void RenX_CommandsPlugin::RenX_OnDie(RenX::Server *server, const RenX::PlayerInf bool RenX_CommandsPlugin::initialize() { - RenX_CommandsPlugin::_defaultTempBanTime = std::chrono::seconds(this->config.getLongLong(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("TBanTime"), 86400)); - RenX_CommandsPlugin::playerInfoFormat = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("PlayerInfoFormat"), STRING_LITERAL_AS_REFERENCE(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}")); - RenX_CommandsPlugin::adminPlayerInfoFormat = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("AdminPlayerInfoFormat"), Jupiter::StringS::Format("%.*s - IP: " IRCBOLD "{IP}" IRCBOLD " - HWID: " IRCBOLD "{HWID}" IRCBOLD " - RDNS: " IRCBOLD "{RDNS}" IRCBOLD " - Steam ID: " IRCBOLD "{STEAM}", RenX_CommandsPlugin::playerInfoFormat.size(), RenX_CommandsPlugin::playerInfoFormat.ptr())); - RenX_CommandsPlugin::buildingInfoFormat = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("BuildingInfoFormat"), STRING_LITERAL_AS_REFERENCE(IRCCOLOR) + RenX::tags->buildingTeamColorTag + RenX::tags->buildingNameTag + STRING_LITERAL_AS_REFERENCE(IRCCOLOR " - " IRCCOLOR "07") + RenX::tags->buildingHealthPercentageTag + STRING_LITERAL_AS_REFERENCE("%")); - RenX_CommandsPlugin::staffTitle = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("StaffTitle"), STRING_LITERAL_AS_REFERENCE("Moderator")); + RenX_CommandsPlugin::_defaultTempBanTime = std::chrono::seconds(this->config.get("TBanTime"_jrs, 86400)); + RenX_CommandsPlugin::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); + RenX_CommandsPlugin::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}", RenX_CommandsPlugin::playerInfoFormat.size(), RenX_CommandsPlugin::playerInfoFormat.ptr())); + RenX_CommandsPlugin::buildingInfoFormat = this->config.get("BuildingInfoFormat"_jrs, ""_jrs IRCCOLOR + RenX::tags->buildingTeamColorTag + RenX::tags->buildingNameTag + IRCCOLOR " - " IRCCOLOR "07"_jrs + RenX::tags->buildingHealthPercentageTag + "%"_jrs); + RenX_CommandsPlugin::staffTitle = this->config.get("StaffTitle"_jrs, "Moderator"_jrs); RenX::sanitizeTags(RenX_CommandsPlugin::playerInfoFormat); RenX::sanitizeTags(RenX_CommandsPlugin::adminPlayerInfoFormat); diff --git a/RenX.Core/RenX_BanDatabase.cpp b/RenX.Core/RenX_BanDatabase.cpp index 07283cd..92f1f15 100644 --- a/RenX.Core/RenX_BanDatabase.cpp +++ b/RenX.Core/RenX_BanDatabase.cpp @@ -19,7 +19,6 @@ #include #include #include "Jupiter/IRC_Client.h" -#include "Jupiter/INIFile.h" #include "RenX_PlayerInfo.h" #include "RenX_BanDatabase.h" #include "RenX_Core.h" @@ -154,13 +153,13 @@ void RenX::BanDatabase::write(RenX::BanDatabase::Entry *entry, FILE *file) size_t varData_entries = entry->varData.size(); buffer.push(varData_entries); - Jupiter::INIFile::Section::KeyValuePair *pair; - while (varData_entries != 0) + auto write_varData_entry = [&buffer](Jupiter::HashTable::Bucket::Entry &in_entry) { - pair = entry->varData.getPair(--varData_entries); - buffer.push(pair->getKey()); - buffer.push(pair->getValue()); - } + buffer.push(in_entry.key); + buffer.push(in_entry.value); + }; + + entry->varData.callback(write_varData_entry); // push buffer to file buffer.push_to(file); @@ -252,7 +251,7 @@ const Jupiter::ArrayList &RenX::BanDatabase::getEntrie bool RenX::BanDatabase::initialize() { - RenX::BanDatabase::filename = RenX::getCore()->getConfig().get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("BanDB"), STRING_LITERAL_AS_REFERENCE("Bans.db")); + RenX::BanDatabase::filename = RenX::getCore()->getConfig().get("BanDB"_jrs, "Bans.db"_jrs); return this->process_file(filename); } diff --git a/RenX.Core/RenX_BanDatabase.h b/RenX.Core/RenX_BanDatabase.h index 30abced..f030737 100644 --- a/RenX.Core/RenX_BanDatabase.h +++ b/RenX.Core/RenX_BanDatabase.h @@ -91,7 +91,7 @@ namespace RenX Jupiter::StringS name /** Name of the banned player */; Jupiter::StringS banner /** Name of the user who initiated the ban */; Jupiter::StringS reason /** Reason the player was banned */; - Jupiter::INIFile::Section varData; /** Variable entry data */ + Jupiter::HashTable varData; /** Variable entry data */ static const uint16_t FLAG_ACTIVE = 0x8000U; static const uint16_t FLAG_USE_RDNS = 0x4000U; diff --git a/RenX.Core/RenX_BuildingInfo.h b/RenX.Core/RenX_BuildingInfo.h index 73b8343..9a7484d 100644 --- a/RenX.Core/RenX_BuildingInfo.h +++ b/RenX.Core/RenX_BuildingInfo.h @@ -25,7 +25,7 @@ */ #include "Jupiter/String.h" -#include "Jupiter/INIFile.h" +#include "Jupiter/Config.h" #include "RenX.h" /** DLL Linkage Nagging */ @@ -51,7 +51,7 @@ namespace RenX bool capturable = false; bool destroyed = false; std::chrono::steady_clock::time_point destruction_time; - mutable Jupiter::INIFile varData; + mutable Jupiter::Config varData; }; } diff --git a/RenX.Core/RenX_Core.cpp b/RenX.Core/RenX_Core.cpp index 395437e..05a96a3 100644 --- a/RenX.Core/RenX_Core.cpp +++ b/RenX.Core/RenX_Core.cpp @@ -17,7 +17,6 @@ */ #include -#include "Jupiter/INIFile.h" #include "Jupiter/Functions.h" #include "IRC_Bot.h" #include "RenX_Core.h" @@ -30,6 +29,8 @@ #include "RenX_ExemptionDatabase.h" #include "RenX_Tags.h" +using namespace Jupiter::literals; + RenX::Core pluginInstance; RenX::Core *RenXInstance = &pluginInstance; @@ -45,8 +46,8 @@ bool RenX::Core::initialize() RenX::tags->initialize(); RenX::initTranslations(this->config); - const Jupiter::ReadableString &serverList = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Servers")); - RenX::Core::commandsFile.readFile(this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("CommandsFile"), STRING_LITERAL_AS_REFERENCE("RenXGameCommands.ini"))); + const Jupiter::ReadableString &serverList = this->config.get("Servers"_jrs); + RenX::Core::commandsFile.read(this->config.get("CommandsFile"_jrs, "RenXGameCommands.ini"_jrs)); unsigned int wc = serverList.wordCount(WHITESPACE); @@ -151,7 +152,7 @@ Jupiter::ArrayList *RenX::Core::getPlugins() return &(RenX::Core::plugins); } -Jupiter::INIFile &RenX::Core::getCommandsFile() +Jupiter::Config &RenX::Core::getCommandsFile() { return RenX::Core::commandsFile; } diff --git a/RenX.Core/RenX_Core.h b/RenX.Core/RenX_Core.h index c1fe2d2..f923593 100644 --- a/RenX.Core/RenX_Core.h +++ b/RenX.Core/RenX_Core.h @@ -25,7 +25,7 @@ */ #include "Jupiter/Plugin.h" -#include "Jupiter/INIFile.h" +#include "Jupiter/Config.h" #include "RenX.h" /** DLL Linkage Nagging */ @@ -155,7 +155,7 @@ namespace RenX * * @return Commands settings configuration file. */ - Jupiter::INIFile &getCommandsFile(); + Jupiter::Config &getCommandsFile(); /** * @brief Copys a command, and passes it to each server. @@ -179,7 +179,7 @@ namespace RenX /** Inaccessible private members */ Jupiter::ArrayList servers; Jupiter::ArrayList plugins; - Jupiter::INIFile commandsFile; + Jupiter::INIConfig commandsFile; }; RENX_API Core *getCore(); diff --git a/RenX.Core/RenX_ExemptionDatabase.cpp b/RenX.Core/RenX_ExemptionDatabase.cpp index 1362573..e85bf7f 100644 --- a/RenX.Core/RenX_ExemptionDatabase.cpp +++ b/RenX.Core/RenX_ExemptionDatabase.cpp @@ -18,7 +18,6 @@ #include #include "Jupiter/IRC_Client.h" -#include "Jupiter/INIFile.h" #include "RenX_PlayerInfo.h" #include "RenX_ExemptionDatabase.h" #include "RenX_Core.h" @@ -187,7 +186,7 @@ const Jupiter::ArrayList &RenX::ExemptionDatabas bool RenX::ExemptionDatabase::initialize() { - RenX::ExemptionDatabase::filename = RenX::getCore()->getConfig().get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("ExemptionDB"), STRING_LITERAL_AS_REFERENCE("Exemptions.db")); + RenX::ExemptionDatabase::filename = RenX::getCore()->getConfig().get("ExemptionDB"_jrs, "Exemptions.db"_jrs); return this->process_file(filename); } diff --git a/RenX.Core/RenX_Functions.cpp b/RenX.Core/RenX_Functions.cpp index 5f181a3..ba4a67d 100644 --- a/RenX.Core/RenX_Functions.cpp +++ b/RenX.Core/RenX_Functions.cpp @@ -18,7 +18,6 @@ #include #include "Jupiter/Functions.h" -#include "Jupiter/INIFile.h" #include "IRC_Bot.h" #include "ServerManager.h" #include "RenX_Functions.h" @@ -828,34 +827,34 @@ const Jupiter::ReadableString &RenX::translateWinTypePlain(RenX::WinType winType } } -void RenX::initTranslations(Jupiter::INIFile &translationsFile) +void RenX::initTranslations(Jupiter::Config &translationsFile) { - NodColor = translationsFile.get("TeamColor"_jrs, "Nod"_jrs, "04"_jrs); - GDIColor = translationsFile.get("TeamColor"_jrs, "GDI"_jrs, "08"_jrs); - OtherColor = translationsFile.get("TeamColor"_jrs, "Other"_jrs, "14"_jrs); - - NodShortName = translationsFile.get("ShortTeamName"_jrs, "Nod"_jrs, "Nod"_jrs); - GDIShortName = translationsFile.get("ShortTeamName"_jrs, "GDI"_jrs, "GDI"_jrs); - OtherShortName = translationsFile.get("ShortTeamName"_jrs, "Other"_jrs, "N/A"_jrs); - NodLongName = translationsFile.get("LongTeamName"_jrs, "Nod"_jrs, "Brotherhood of Nod"_jrs); - GDILongName = translationsFile.get("LongTeamName"_jrs, "GDI"_jrs, "Global Defense Initiative"_jrs); - OtherLongName = translationsFile.get("LongTeamName"_jrs, "Other"_jrs, "Unknown"_jrs); - - scoreWinTypeTranslation = translationsFile.get("WinType"_jrs, "Score"_jrs, "Domination (High Score)"_jrs); - baseWinTypeTranslation = translationsFile.get("WinType"_jrs, "Base"_jrs, "Conquest (Base Destruction)"_jrs); - beaconWinTypeTranslation = translationsFile.get("WinType"_jrs, "Beacon"_jrs, "Espionage (Beacon)"_jrs); - tieWinTypeTranslation = translationsFile.get("WinType"_jrs, "Tie"_jrs, "Draw (Tie)"_jrs); - shutdownWinTypeTranslation = translationsFile.get("WinType"_jrs, "Shutdown"_jrs, "Ceasefire (Shutdown)"_jrs); - surrenderWinTypeTranslation = translationsFile.get("WinType"_jrs, "Surrender"_jrs, "Forfeit (Surrender)"_jrs); - unknownWinTypeTranslation = translationsFile.get("WinType"_jrs, "Unknown"_jrs, "Aliens (Unknown)"_jrs); - - scoreWinTypePlainTranslation = translationsFile.get("WinTypePlain"_jrs, "Score"_jrs, "High Score"_jrs); - baseWinTypePlainTranslation = translationsFile.get("WinTypePlain"_jrs, "Base"_jrs, "Base Destruction"_jrs); - beaconWinTypePlainTranslation = translationsFile.get("WinTypePlain"_jrs, "Beacon"_jrs, "Beacon"_jrs); - tieWinTypePlainTranslation = translationsFile.get("WinTypePlain"_jrs, "Tie"_jrs, "Tie"_jrs); - shutdownWinTypePlainTranslation = translationsFile.get("WinTypePlain"_jrs, "Shutdown"_jrs, "Shutdown"_jrs); - surrenderWinTypePlainTranslation = translationsFile.get("WinTypePlain"_jrs, "Surrender"_jrs, "Surrender"_jrs); - unknownWinTypePlainTranslation = translationsFile.get("WinTypePlain"_jrs, "Unknown"_jrs, "Unknown"_jrs); + NodColor = translationsFile["TeamColor"_jrs].get("Nod"_jrs, "04"_jrs); + GDIColor = translationsFile["TeamColor"_jrs].get("GDI"_jrs, "08"_jrs); + OtherColor = translationsFile["TeamColor"_jrs].get("Other"_jrs, "14"_jrs); + + NodShortName = translationsFile["ShortTeamName"_jrs].get("Nod"_jrs, "Nod"_jrs); + GDIShortName = translationsFile["ShortTeamName"_jrs].get("GDI"_jrs, "GDI"_jrs); + OtherShortName = translationsFile["ShortTeamName"_jrs].get("Other"_jrs, "N/A"_jrs); + NodLongName = translationsFile["LongTeamName"_jrs].get("Nod"_jrs, "Brotherhood of Nod"_jrs); + GDILongName = translationsFile["LongTeamName"_jrs].get("GDI"_jrs, "Global Defense Initiative"_jrs); + OtherLongName = translationsFile["LongTeamName"_jrs].get("Other"_jrs, "Unknown"_jrs); + + scoreWinTypeTranslation = translationsFile["WinType"_jrs].get("Score"_jrs, "Domination (High Score)"_jrs); + baseWinTypeTranslation = translationsFile["WinType"_jrs].get("Base"_jrs, "Conquest (Base Destruction)"_jrs); + beaconWinTypeTranslation = translationsFile["WinType"_jrs].get("Beacon"_jrs, "Espionage (Beacon)"_jrs); + tieWinTypeTranslation = translationsFile["WinType"_jrs].get("Tie"_jrs, "Draw (Tie)"_jrs); + shutdownWinTypeTranslation = translationsFile["WinType"_jrs].get("Shutdown"_jrs, "Ceasefire (Shutdown)"_jrs); + surrenderWinTypeTranslation = translationsFile["WinType"_jrs].get("Surrender"_jrs, "Forfeit (Surrender)"_jrs); + unknownWinTypeTranslation = translationsFile["WinType"_jrs].get("Unknown"_jrs, "Aliens (Unknown)"_jrs); + + scoreWinTypePlainTranslation = translationsFile["WinTypePlain"_jrs].get("Score"_jrs, "High Score"_jrs); + baseWinTypePlainTranslation = translationsFile["WinTypePlain"_jrs].get("Base"_jrs, "Base Destruction"_jrs); + beaconWinTypePlainTranslation = translationsFile["WinTypePlain"_jrs].get("Beacon"_jrs, "Beacon"_jrs); + tieWinTypePlainTranslation = translationsFile["WinTypePlain"_jrs].get("Tie"_jrs, "Tie"_jrs); + shutdownWinTypePlainTranslation = translationsFile["WinTypePlain"_jrs].get("Shutdown"_jrs, "Shutdown"_jrs); + surrenderWinTypePlainTranslation = translationsFile["WinTypePlain"_jrs].get("Surrender"_jrs, "Surrender"_jrs); + unknownWinTypePlainTranslation = translationsFile["WinTypePlain"_jrs].get("Unknown"_jrs, "Unknown"_jrs); } Jupiter::String RenX::getFormattedPlayerName(const RenX::PlayerInfo *player) diff --git a/RenX.Core/RenX_Functions.h b/RenX.Core/RenX_Functions.h index 8f6b920..5b3c38b 100644 --- a/RenX.Core/RenX_Functions.h +++ b/RenX.Core/RenX_Functions.h @@ -25,7 +25,7 @@ */ #include -#include "Jupiter/INIFile.h" +#include "Jupiter/Config.h" #include "Jupiter/String.h" #include "RenX.h" #include "RenX_Map.h" @@ -126,7 +126,7 @@ namespace RenX * * @param filename Optional parameter to specify which file to load. */ - RENX_API void initTranslations(Jupiter::INIFile &settings); + RENX_API void initTranslations(Jupiter::Config &settings); /** * @brief Creates a String containing an IRC-ready version of the player's name. diff --git a/RenX.Core/RenX_PlayerInfo.h b/RenX.Core/RenX_PlayerInfo.h index f33c4ea..a5a039a 100644 --- a/RenX.Core/RenX_PlayerInfo.h +++ b/RenX.Core/RenX_PlayerInfo.h @@ -29,7 +29,7 @@ #include #include "Jupiter/Reference_String.h" #include "Jupiter/String.h" -#include "Jupiter/INIFile.h" +#include "Jupiter/Config.h" #include "RenX.h" /** DLL Linkage Nagging */ @@ -93,7 +93,7 @@ namespace RenX mutable Jupiter::StringS formatNamePrefix; mutable std::thread rdns_thread; mutable int access = 0; - mutable Jupiter::INIFile varData; // This will be replaced later with a more dedicated type. + mutable Jupiter::Config varData; }; static Jupiter::ReferenceString rdns_pending = STRING_LITERAL_AS_REFERENCE("RDNS_PENDING"); diff --git a/RenX.Core/RenX_Server.cpp b/RenX.Core/RenX_Server.cpp index f904a01..09174d9 100644 --- a/RenX.Core/RenX_Server.cpp +++ b/RenX.Core/RenX_Server.cpp @@ -17,7 +17,6 @@ */ #include -#include "Jupiter/INIFile.h" #include "Jupiter/String.h" #include "ServerManager.h" #include "IRC_Bot.h" @@ -1617,76 +1616,76 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) rPlayerLog Kills PlayerKills BotKills Deaths Score Credits Character BoundVehicle Vehicle Spy RemoteC4 ATMine KDR Ping Admin Steam IP ID Name Team TeamNum rGDI,256,EKT-J 0 0 0 0 0 5217.9629 Rx_FamilyInfo_GDI_Soldier   False 0 0 0.0000 8 None 0x0110000104AE0666 127.0.0.1 256 EKT-J GDI 0 */ - Jupiter::INIFile::Section table; + Jupiter::HashTable table; size_t i = tokens.token_count; while (i-- != 0) table.set(this->commandListFormat.getToken(i), tokens.getToken(i)); auto parse = [&table](RenX::PlayerInfo *player) { - Jupiter::INIFile::Section::KeyValuePair *pair; + Jupiter::ReadableString *value; - pair = table.getPair("Kills"_jrs); - if (pair != nullptr) - player->kills = pair->getValue().asUnsignedInt(); + value = table.get("Kills"_jrs); + if (value != nullptr) + player->kills = value->asUnsignedInt(); - pair = table.getPair("Deaths"_jrs); - if (pair != nullptr) - player->deaths = pair->getValue().asUnsignedInt(); + value = table.get("Deaths"_jrs); + if (value != nullptr) + player->deaths = value->asUnsignedInt(); - pair = table.getPair("Score"_jrs); - if (pair != nullptr) - player->score = pair->getValue().asDouble(); + value = table.get("Score"_jrs); + if (value != nullptr) + player->score = value->asDouble(); - pair = table.getPair("Credits"_jrs); - if (pair != nullptr) - player->credits = pair->getValue().asDouble(); + value = table.get("Credits"_jrs); + if (value != nullptr) + player->credits = value->asDouble(); - pair = table.getPair("Character"_jrs); - if (pair != nullptr) - player->character = pair->getValue(); + value = table.get("Character"_jrs); + if (value != nullptr) + player->character = *value; - pair = table.getPair("Vehicle"_jrs); - if (pair != nullptr) - player->vehicle = pair->getValue(); + value = table.get("Vehicle"_jrs); + if (value != nullptr) + player->vehicle = *value; - pair = table.getPair("Ping"_jrs); - if (pair != nullptr) - player->ping = pair->getValue().asUnsignedInt(); + value = table.get("Ping"_jrs); + if (value != nullptr) + player->ping = value->asUnsignedInt(); - pair = table.getPair("Admin"_jrs); - if (pair != nullptr) + value = table.get("Admin"_jrs); + if (value != nullptr) { - if (pair->getValue().equals("None"_jrs)) + if (value->equals("None"_jrs)) player->adminType = ""; else - player->adminType = pair->getValue(); + player->adminType = *value; } }; - Jupiter::INIFile::Section::KeyValuePair *pair = table.getPair("PlayerLog"_jrs); - if (pair != nullptr) - parse(getPlayerOrAdd(Jupiter::ReferenceString::getToken(pair->getValue(), 2, ','), Jupiter::ReferenceString::getToken(pair->getValue(), 1, ',').asInt(), RenX::getTeam(Jupiter::ReferenceString::getToken(pair->getValue(), 0, ',')), false, table.get("STEAM"_jrs).asUnsignedLongLong(), table.get("IP"_jrs), table.get("HWID"_jrs))); + Jupiter::ReadableString *value = table.get("PlayerLog"_jrs); + if (value != nullptr) + parse(getPlayerOrAdd(Jupiter::ReferenceString::getToken(*value, 2, ','), Jupiter::ReferenceString::getToken(*value, 1, ',').asInt(), RenX::getTeam(Jupiter::ReferenceString::getToken(*value, 0, ',')), false, table.get("STEAM"_jrs, Jupiter::ReferenceString::empty).asUnsignedLongLong(), table.get("IP"_jrs, Jupiter::ReferenceString::empty), table.get("HWID"_jrs, Jupiter::ReferenceString::empty))); else { - Jupiter::INIFile::Section::KeyValuePair *namePair = table.getPair("Name"_jrs); - pair = table.getPair("ID"_jrs); + Jupiter::ReadableString *name = table.get("Name"_jrs); + value = table.get("ID"_jrs); - if (pair != nullptr) + if (value != nullptr) { - RenX::PlayerInfo *player = getPlayer(pair->getValue().asInt()); + RenX::PlayerInfo *player = getPlayer(value->asInt()); if (player != nullptr) { if (player->name.isEmpty()) { - player->name = table.get("Name"_jrs); + player->name = table.get("Name"_jrs, Jupiter::ReferenceString::empty); player->name.processEscapeSequences(); } if (player->ip.isEmpty()) - player->ip = table.get("IP"_jrs); + player->ip = table.get("IP"_jrs, Jupiter::ReferenceString::empty); if (player->hwid.isEmpty()) - player->hwid = table.get("HWID"_jrs); + player->hwid = table.get("HWID"_jrs, Jupiter::ReferenceString::empty); if (player->steamid == 0) { - uint64_t steamid = table.get("STEAM"_jrs).asUnsignedLongLong(); + uint64_t steamid = table.get("STEAM"_jrs, Jupiter::ReferenceString::empty).asUnsignedLongLong(); if (steamid != 0) { player->steamid = steamid; @@ -1694,14 +1693,14 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) } } - pair = table.getPair("TeamNum"_jrs); - if (pair != nullptr) - player->team = RenX::getTeam(pair->getValue().asInt()); + value = table.get("TeamNum"_jrs); + if (value != nullptr) + player->team = RenX::getTeam(value->asInt()); else { - pair = table.getPair("Team"_jrs); - if (pair != nullptr) - player->team = RenX::getTeam(pair->getValue()); + value = table.get("Team"_jrs); + if (value != nullptr) + player->team = RenX::getTeam(*value); } parse(player); @@ -1709,18 +1708,18 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) // I *could* try and fetch a player by name, but that seems like it *could* open a security hole. // In addition, would I update their ID? } - else if (namePair != nullptr) + else if (name != nullptr) { - RenX::PlayerInfo *player = getPlayerByName(namePair->getValue()); + RenX::PlayerInfo *player = getPlayerByName(*name); if (player != nullptr) { if (player->ip.isEmpty()) - player->ip = table.get("IP"_jrs); + player->ip = table.get("IP"_jrs, Jupiter::ReferenceString::empty); if (player->hwid.isEmpty()) - player->hwid = table.get("HWID"_jrs); + player->hwid = table.get("HWID"_jrs, Jupiter::ReferenceString::empty); if (player->steamid == 0) { - uint64_t steamid = table.get("STEAM"_jrs).asUnsignedLongLong(); + uint64_t steamid = table.get("STEAM"_jrs, Jupiter::ReferenceString::empty).asUnsignedLongLong(); if (steamid != 0) { player->steamid = steamid; @@ -1728,14 +1727,14 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) } } - pair = table.getPair("TeamNum"_jrs); - if (pair != nullptr) - player->team = RenX::getTeam(pair->getValue().asInt()); + value = table.get("TeamNum"_jrs); + if (value != nullptr) + player->team = RenX::getTeam(value->asInt()); else { - pair = table.getPair("Team"_jrs); - if (pair != nullptr) - player->team = RenX::getTeam(pair->getValue()); + value = table.get("Team"_jrs); + if (value != nullptr) + player->team = RenX::getTeam(*value); } parse(player); @@ -1764,83 +1763,83 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) rPlayerLog Kills PlayerKills BotKills Deaths Score Credits Character BoundVehicle Vehicle Spy RemoteC4 ATMine KDR Ping Admin Steam IP ID Name Team TeamNum rGDI,256,EKT-J 0 0 0 0 0 5217.9629 Rx_FamilyInfo_GDI_Soldier   False 0 0 0.0000 8 None 0x0110000104AE0666 127.0.0.1 256 EKT-J GDI 0 */ - Jupiter::INIFile::Section table; + Jupiter::HashTable table; size_t i = tokens.token_count; while (i-- != 0) table.set(this->commandListFormat.getToken(i), tokens.getToken(i)); auto parse = [&table](RenX::PlayerInfo *player) { - Jupiter::INIFile::Section::KeyValuePair *pair; + Jupiter::ReadableString *value; - pair = table.getPair("Kills"_jrs); - if (pair != nullptr) - player->kills = pair->getValue().asUnsignedInt(); + value = table.get("Kills"_jrs); + if (value != nullptr) + player->kills = value->asUnsignedInt(); - pair = table.getPair("Deaths"_jrs); - if (pair != nullptr) - player->deaths = pair->getValue().asUnsignedInt(); + value = table.get("Deaths"_jrs); + if (value != nullptr) + player->deaths = value->asUnsignedInt(); - pair = table.getPair("Score"_jrs); - if (pair != nullptr) - player->score = pair->getValue().asDouble(); + value = table.get("Score"_jrs); + if (value != nullptr) + player->score = value->asDouble(); - pair = table.getPair("Credits"_jrs); - if (pair != nullptr) - player->credits = pair->getValue().asDouble(); + value = table.get("Credits"_jrs); + if (value != nullptr) + player->credits = value->asDouble(); - pair = table.getPair("Character"_jrs); - if (pair != nullptr) - player->character = pair->getValue(); + value = table.get("Character"_jrs); + if (value != nullptr) + player->character = *value; - pair = table.getPair("Vehicle"_jrs); - if (pair != nullptr) - player->vehicle = pair->getValue(); + value = table.get("Vehicle"_jrs); + if (value != nullptr) + player->vehicle = *value; }; - Jupiter::INIFile::Section::KeyValuePair *pair = table.getPair("PlayerLog"_jrs); - if (pair != nullptr) - parse(getPlayerOrAdd(Jupiter::ReferenceString::getToken(pair->getValue(), 2, ','), Jupiter::ReferenceString::getToken(pair->getValue(), 1, ',').substring(1).asInt(), RenX::getTeam(Jupiter::ReferenceString::getToken(pair->getValue(), 0, ',')), true, 0ULL, Jupiter::ReferenceString::empty, Jupiter::ReferenceString::empty)); + Jupiter::ReadableString *value = table.get("PlayerLog"_jrs); + if (value != nullptr) + parse(getPlayerOrAdd(Jupiter::ReferenceString::getToken(*value, 2, ','), Jupiter::ReferenceString::getToken(*value, 1, ',').substring(1).asInt(), RenX::getTeam(Jupiter::ReferenceString::getToken(*value, 0, ',')), true, 0ULL, Jupiter::ReferenceString::empty, Jupiter::ReferenceString::empty)); else { - Jupiter::INIFile::Section::KeyValuePair *namePair = table.getPair("Name"_jrs); - pair = table.getPair("ID"_jrs); + Jupiter::ReadableString *name = table.get("Name"_jrs); + value = table.get("ID"_jrs); - if (pair != nullptr) + if (value != nullptr) { - RenX::PlayerInfo *player = getPlayer(pair->getValue().asInt()); + RenX::PlayerInfo *player = getPlayer(value->asInt()); if (player != nullptr) { if (player->name.isEmpty()) { - player->name = table.get("Name"_jrs); + player->name = table.get("Name"_jrs, Jupiter::ReferenceString::empty); player->name.processEscapeSequences(); } - pair = table.getPair("TeamNum"_jrs); - if (pair != nullptr) - player->team = RenX::getTeam(pair->getValue().asInt()); + value = table.get("TeamNum"_jrs); + if (value != nullptr) + player->team = RenX::getTeam(value->asInt()); else { - pair = table.getPair("Team"_jrs); - if (pair != nullptr) - player->team = RenX::getTeam(pair->getValue()); + value = table.get("Team"_jrs); + if (value != nullptr) + player->team = RenX::getTeam(*value); } parse(player); } } - else if (namePair != nullptr) + else if (name != nullptr) { - RenX::PlayerInfo *player = getPlayerByName(namePair->getValue()); + RenX::PlayerInfo *player = getPlayerByName(*name); if (player != nullptr) { - pair = table.getPair("TeamNum"_jrs); - if (pair != nullptr) - player->team = RenX::getTeam(pair->getValue().asInt()); + value = table.get("TeamNum"_jrs); + if (value != nullptr) + player->team = RenX::getTeam(value->asInt()); else { - pair = table.getPair("Team"_jrs); - if (pair != nullptr) - player->team = RenX::getTeam(pair->getValue()); + value = table.get("Team"_jrs); + if (value != nullptr) + player->team = RenX::getTeam(*value); } parse(player); @@ -1861,52 +1860,52 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) rBuilding Health MaxHealth Armor MaxArmor Team Capturable Destroyed rRx_Building_Refinery_GDI 2000 2000 2000 2000 GDI False False */ - Jupiter::INIFile::Section table; + Jupiter::HashTable table; size_t i = tokens.token_count; while (i-- != 0) table.set(this->commandListFormat.getToken(i), tokens.getToken(i)); - Jupiter::INIFile::Section::KeyValuePair *pair; + Jupiter::ReadableString *value; RenX::BuildingInfo *building; - pair = table.getPair("Building"_jrs); - if (pair != nullptr) + value = table.get("Building"_jrs); + if (value != nullptr) { - building = this->getBuildingByName(pair->getValue()); + building = this->getBuildingByName(*value); if (building == nullptr) { building = new RenX::BuildingInfo(); RenX::Server::buildings.add(building); - building->name = pair->getValue(); + building->name = *value; } - pair = table.getPair("Health"_jrs); - if (pair != nullptr) - building->health = pair->getValue().asInt(10); + value = table.get("Health"_jrs); + if (value != nullptr) + building->health = value->asInt(10); - pair = table.getPair("MaxHealth"_jrs); - if (pair != nullptr) - building->max_health = pair->getValue().asInt(10); + value = table.get("MaxHealth"_jrs); + if (value != nullptr) + building->max_health = value->asInt(10); - pair = table.getPair("Team"_jrs); - if (pair != nullptr) - building->team = RenX::getTeam(pair->getValue()); + value = table.get("Team"_jrs); + if (value != nullptr) + building->team = RenX::getTeam(*value); - pair = table.getPair("Capturable"_jrs); - if (pair != nullptr) - building->capturable = pair->getValue().asBool(); + value = table.get("Capturable"_jrs); + if (value != nullptr) + building->capturable = value->asBool(); - pair = table.getPair("Destroyed"_jrs); - if (pair != nullptr) - building->destroyed = pair->getValue().asBool(); + value = table.get("Destroyed"_jrs); + if (value != nullptr) + building->destroyed = value->asBool(); - pair = table.getPair("Armor"_jrs); - if (pair != nullptr) - building->armor = pair->getValue().asInt(10); + value = table.get("Armor"_jrs); + if (value != nullptr) + building->armor = value->asInt(10); - pair = table.getPair("MaxArmor"_jrs); - if (pair != nullptr) - building->max_armor = pair->getValue().asInt(10); + value = table.get("MaxArmor"_jrs); + if (value != nullptr) + building->max_armor = value->asInt(10); } } } @@ -3484,39 +3483,39 @@ RenX::Server::Server(const Jupiter::ReadableString &configurationSection) xPlugins.get(i)->RenX_OnServerCreate(this); } -void RenX::Server::init(const Jupiter::INIFile::Section &config) +void RenX::Server::init(const Jupiter::Config &config) { RenX::Server::hostname = config.get("Hostname"_jrs, "localhost"_jrs); - RenX::Server::port = static_cast(config.getInt("Port"_jrs, 7777)); + RenX::Server::port = config.get("Port"_jrs, 7777); RenX::Server::clientHostname = config.get("ClientAddress"_jrs); RenX::Server::pass = config.get("Password"_jrs, "renx"_jrs); - RenX::Server::logChanType = config.getShort("ChanType"_jrs); - RenX::Server::adminLogChanType = config.getShort("AdminChanType"_jrs); + RenX::Server::logChanType = config.get("ChanType"_jrs); + RenX::Server::adminLogChanType = config.get("AdminChanType"_jrs); RenX::Server::setCommandPrefix(config.get("CommandPrefix"_jrs)); RenX::Server::setPrefix(config.get("IRCPrefix"_jrs)); RenX::Server::ban_from_str = config.get("BanFromStr"_jrs, "the server"_jrs); RenX::Server::rules = config.get("Rules"_jrs, "Anarchy!"_jrs); - RenX::Server::delay = std::chrono::milliseconds(config.getInt("ReconnectDelay"_jrs, 10000)); - RenX::Server::maxAttempts = config.getInt("MaxReconnectAttempts"_jrs, -1); - RenX::Server::rconBan = config.getBool("RCONBan"_jrs, false); - RenX::Server::localSteamBan = config.getBool("LocalSteamBan"_jrs, true); - RenX::Server::localIPBan = config.getBool("LocalIPBan"_jrs, true); - RenX::Server::localHWIDBan = config.getBool("LocalHWIDBan"_jrs, true); - RenX::Server::localRDNSBan = config.getBool("LocalRDNSBan"_jrs, false); - RenX::Server::localNameBan = config.getBool("LocalNameBan"_jrs, false); + RenX::Server::delay = std::chrono::milliseconds(config.get("ReconnectDelay"_jrs, 10000)); + RenX::Server::maxAttempts = config.get("MaxReconnectAttempts"_jrs, -1); + RenX::Server::rconBan = config.get("RCONBan"_jrs, false); + RenX::Server::localSteamBan = config.get("LocalSteamBan"_jrs, true); + RenX::Server::localIPBan = config.get("LocalIPBan"_jrs, true); + RenX::Server::localHWIDBan = config.get("LocalHWIDBan"_jrs, true); + RenX::Server::localRDNSBan = config.get("LocalRDNSBan"_jrs, false); + RenX::Server::localNameBan = config.get("LocalNameBan"_jrs, false); RenX::Server::localBan = RenX::Server::localIPBan || RenX::Server::localRDNSBan || RenX::Server::localSteamBan || RenX::Server::localNameBan; - RenX::Server::steamFormat = config.getInt("SteamFormat"_jrs, 16); - RenX::Server::neverSay = config.getBool("NeverSay"_jrs, false); - RenX::Server::resolve_player_rdns = config.getBool("ResolvePlayerRDNS"_jrs, true); - RenX::Server::clientUpdateRate = std::chrono::milliseconds(config.getInt("ClientUpdateRate"_jrs, 2500)); - RenX::Server::buildingUpdateRate = std::chrono::milliseconds(config.getInt("BuildingUpdateRate"_jrs, 7500)); - RenX::Server::pingRate = std::chrono::milliseconds(config.getInt("PingUpdateRate"_jrs, 60000)); - RenX::Server::pingTimeoutThreshold = std::chrono::milliseconds(config.getInt("PingTimeoutThreshold"_jrs, 10000)); - - Jupiter::INIFile &commandsFile = RenX::getCore()->getCommandsFile(); + RenX::Server::steamFormat = config.get("SteamFormat"_jrs, 16); + RenX::Server::neverSay = config.get("NeverSay"_jrs, false); + RenX::Server::resolve_player_rdns = config.get("ResolvePlayerRDNS"_jrs, true); + RenX::Server::clientUpdateRate = std::chrono::milliseconds(config.get("ClientUpdateRate"_jrs, 2500)); + RenX::Server::buildingUpdateRate = std::chrono::milliseconds(config.get("BuildingUpdateRate"_jrs, 7500)); + RenX::Server::pingRate = std::chrono::milliseconds(config.get("PingUpdateRate"_jrs, 60000)); + RenX::Server::pingTimeoutThreshold = std::chrono::milliseconds(config.get("PingTimeoutThreshold"_jrs, 10000)); + + Jupiter::Config &commandsFile = RenX::getCore()->getCommandsFile(); RenX::Server::commandAccessLevels = commandsFile.getSection(RenX::Server::configSection); RenX::Server::commandAliases = commandsFile.getSection(RenX::Server::configSection + ".Aliases"_jrs); @@ -3525,28 +3524,27 @@ void RenX::Server::init(const Jupiter::INIFile::Section &config) auto load_basic_commands = [this, &commandsFile](const Jupiter::ReadableString §ion_prefix) { - Jupiter::INIFile::Section *basic_commands = commandsFile.getSection(section_prefix + ".Basic"_jrs); + Jupiter::Config *basic_commands = commandsFile.getSection(section_prefix + ".Basic"_jrs); if (basic_commands != nullptr) { - Jupiter::INIFile::Section *basic_commands_help = commandsFile.getSection(section_prefix + ".Basic.Help"_jrs); - Jupiter::INIFile::Section::KeyValuePair *pair; - size_t i = 0; + Jupiter::Config *basic_commands_help = commandsFile.getSection(section_prefix + ".Basic.Help"_jrs); + + auto basic_command_no_help_callback = [this](Jupiter::HashTable::Bucket::Entry &in_entry) + { + if (this->getCommand(in_entry.key) == nullptr) + this->addCommand(new RenX::BasicGameCommand(in_entry.key, in_entry.value, ""_jrs)); + }; + + auto basic_command_callback = [this, basic_commands_help](Jupiter::HashTable::Bucket::Entry &in_entry) + { + if (this->getCommand(in_entry.key) == nullptr) + this->addCommand(new RenX::BasicGameCommand(in_entry.key, in_entry.value, basic_commands_help->get(in_entry.value, ""_jrs))); + }; + if (basic_commands_help == nullptr) - while (i != basic_commands->size()) - { - pair = basic_commands->getPair(i); - ++i; - if (this->getCommand(pair->getKey()) == nullptr) - this->addCommand(new RenX::BasicGameCommand(pair->getKey(), pair->getValue(), ""_jrs)); - } + basic_commands->getTable().callback(basic_command_no_help_callback); else - while (i != basic_commands->size()) - { - pair = basic_commands->getPair(i); - ++i; - if (this->getCommand(pair->getKey()) == nullptr) - this->addCommand(new RenX::BasicGameCommand(pair->getKey(), pair->getValue(), basic_commands_help->get(pair->getKey(), ""_jrs))); - } + basic_commands->getTable().callback(basic_command_callback); } }; diff --git a/RenX.Core/RenX_Server.h b/RenX.Core/RenX_Server.h index f842af5..5f81dc9 100644 --- a/RenX.Core/RenX_Server.h +++ b/RenX.Core/RenX_Server.h @@ -31,7 +31,7 @@ #include "Jupiter/ArrayList.h" #include "Jupiter/String.h" #include "Jupiter/CString.h" -#include "Jupiter/INIFile.h" +#include "Jupiter/Config.h" #include "Jupiter/Thinker.h" #include "Jupiter/Rehash.h" #include "RenX.h" @@ -88,7 +88,7 @@ namespace RenX Jupiter::ArrayList buildings; /** A list of buildings in the server */ Jupiter::ArrayList mutators; /** A list of buildings the server is running */ Jupiter::ArrayList maps; /** A list of maps in the server's rotation */ - Jupiter::INIFile varData; /** This may be replaced later with a more dedicated type. */ + Jupiter::Config varData; /** Variable data. */ /** * @brief Checks if the server is connected to RCON. @@ -1007,7 +1007,7 @@ namespace RenX /** Private members */ private: - void init(const Jupiter::INIFile::Section &config); + void init(const Jupiter::Config &config); void wipePlayers(); /** Tracking variables */ @@ -1091,8 +1091,8 @@ namespace RenX Jupiter::StringS ban_from_str; Jupiter::StringS IRCPrefix; Jupiter::StringS CommandPrefix; - Jupiter::INIFile::Section *commandAccessLevels; - Jupiter::INIFile::Section *commandAliases; + Jupiter::Config *commandAccessLevels; + Jupiter::Config *commandAliases; }; } diff --git a/RenX.Core/RenX_Tags.cpp b/RenX.Core/RenX_Tags.cpp index ab8d335..e66491c 100644 --- a/RenX.Core/RenX_Tags.cpp +++ b/RenX.Core/RenX_Tags.cpp @@ -17,7 +17,6 @@ */ #include "Jupiter/Reference_String.h" -#include "Jupiter/INIFile.h" #include "Jupiter/IRC_Client.h" #include "RenX_Core.h" #include "RenX_Functions.h" @@ -53,14 +52,14 @@ bool TagsImp::initialize() this->tagItr = 0; this->uniqueTag = "\0\0\0\0\0\0"_jrs; - const Jupiter::INIFile &config = RenX::getCore()->getConfig(); - const Jupiter::ReadableString &configSection = config.get(Jupiter::ReferenceString::empty, "TagDefinitions"_jrs, "Tags"_jrs); + Jupiter::Config &config = RenX::getCore()->getConfig(); + const Jupiter::ReadableString &configSection = config.get("TagDefinitions"_jrs, "Tags"_jrs); - TagsImp::bar_width = config.getInt(configSection, "BarWidth"_jrs, 19); + TagsImp::bar_width = config[configSection].get("BarWidth"_jrs, 19); /** Global formats */ - this->dateFmt = config.get(configSection, "DateFormat"_jrs, "%A, %B %d, %Y"_jrs); - this->timeFmt = config.get(configSection, "TimeFormat"_jrs, "%H:%M:%S"_jrs);; + this->dateFmt = config[configSection].get("DateFormat"_jrs, "%A, %B %d, %Y"_jrs); + this->timeFmt = config[configSection].get("TimeFormat"_jrs, "%H:%M:%S"_jrs);; /** Internal message tags */ @@ -251,188 +250,188 @@ bool TagsImp::initialize() /** External (config) tags */ /** Global tags */ - this->dateTag = config.get(configSection, "DateTag"_jrs, "{DATE}"_jrs); - this->timeTag = config.get(configSection, "TimeTag"_jrs, "{TIME}"_jrs); + this->dateTag = config[configSection].get("DateTag"_jrs, "{DATE}"_jrs); + this->timeTag = config[configSection].get("TimeTag"_jrs, "{TIME}"_jrs); /** Server tags */ - this->rconVersionTag = config.get(configSection, "RCONVersionTag"_jrs, "{RVER}"_jrs); - this->gameVersionTag = config.get(configSection, "GameVersionTag"_jrs, "{GVER}"_jrs); - this->rulesTag = config.get(configSection, "RulesTag"_jrs, "{RULES}"_jrs); - this->userTag = config.get(configSection, "UserTag"_jrs, "{USER}"_jrs); - this->serverNameTag = config.get(configSection, "ServerNameTag"_jrs, "{SERVERNAME}"_jrs); - this->mapTag = config.get(configSection, "MapTag"_jrs, "{MAP}"_jrs); - this->mapGUIDTag = config.get(configSection, "MapGUIDTag"_jrs, "{MGUID}"_jrs); - this->serverHostnameTag = config.get(configSection, "ServerHostnameTag"_jrs, "{SERVERHOST}"_jrs); - this->serverPortTag = config.get(configSection, "ServerPortTag"_jrs, "{SERVERPORT}"_jrs); - this->socketHostnameTag = config.get(configSection, "SocketHostnameTag"_jrs, "{SOCKHOST}"_jrs); - this->socketPortTag = config.get(configSection, "SocketPortTag"_jrs, "{SOCKPORT}"_jrs); - this->serverPrefixTag = config.get(configSection, "ServerPrefixTag"_jrs, "{SERVERPREFIX}"_jrs); + this->rconVersionTag = config[configSection].get("RCONVersionTag"_jrs, "{RVER}"_jrs); + this->gameVersionTag = config[configSection].get("GameVersionTag"_jrs, "{GVER}"_jrs); + this->rulesTag = config[configSection].get("RulesTag"_jrs, "{RULES}"_jrs); + this->userTag = config[configSection].get("UserTag"_jrs, "{USER}"_jrs); + this->serverNameTag = config[configSection].get("ServerNameTag"_jrs, "{SERVERNAME}"_jrs); + this->mapTag = config[configSection].get("MapTag"_jrs, "{MAP}"_jrs); + this->mapGUIDTag = config[configSection].get("MapGUIDTag"_jrs, "{MGUID}"_jrs); + this->serverHostnameTag = config[configSection].get("ServerHostnameTag"_jrs, "{SERVERHOST}"_jrs); + this->serverPortTag = config[configSection].get("ServerPortTag"_jrs, "{SERVERPORT}"_jrs); + this->socketHostnameTag = config[configSection].get("SocketHostnameTag"_jrs, "{SOCKHOST}"_jrs); + this->socketPortTag = config[configSection].get("SocketPortTag"_jrs, "{SOCKPORT}"_jrs); + this->serverPrefixTag = config[configSection].get("ServerPrefixTag"_jrs, "{SERVERPREFIX}"_jrs); /** Player tags */ - this->nameTag = config.get(configSection, "NameTag"_jrs, "{NAME}"_jrs); - this->rawNameTag = config.get(configSection, "RawNameTag"_jrs, "{RNAME}"_jrs); - this->ipTag = config.get(configSection, "IPTag"_jrs, "{IP}"_jrs); - this->hwidTag = config.get(configSection, "HWIDTag"_jrs, "{HWID}"_jrs); - this->rdnsTag = config.get(configSection, "RDNSTag"_jrs, "{RDNS}"_jrs); - this->steamTag = config.get(configSection, "SteamTag"_jrs, "{STEAM}"_jrs); - this->uuidTag = config.get(configSection, "UUIDTag"_jrs, "{UUID}"_jrs); - this->idTag = config.get(configSection, "IDTag"_jrs, "{ID}"_jrs); - this->characterTag = config.get(configSection, "CharacterTag"_jrs, "{CHAR}"_jrs); - this->vehicleTag = config.get(configSection, "VehicleTag"_jrs, "{VEH}"_jrs); - this->adminTag = config.get(configSection, "AdminTag"_jrs, "{ADMIN}"_jrs); - this->prefixTag = config.get(configSection, "PrefixTag"_jrs, "{PREFIX}"_jrs); - this->gamePrefixTag = config.get(configSection, "GamePrefixTag"_jrs, "{GPREFIX}"_jrs); - this->teamColorTag = config.get(configSection, "TeamColorTag"_jrs, "{TCOLOR}"_jrs); - this->teamShortTag = config.get(configSection, "ShortTeamTag"_jrs, "{TEAMS}"_jrs); - this->teamLongTag = config.get(configSection, "LongTeamTag"_jrs, "{TEAML}"_jrs); - this->pingTag = config.get(configSection, "PingTag"_jrs, "{PING}"_jrs); - this->scoreTag = config.get(configSection, "ScoreTag"_jrs, "{SCORE}"_jrs); - this->scorePerMinuteTag = config.get(configSection, "ScorePerMinuteTag"_jrs, "{SPM}"_jrs); - this->creditsTag = config.get(configSection, "CreditsTag"_jrs, "{CREDITS}"_jrs); - this->killsTag = config.get(configSection, "KillsTag"_jrs, "{KILLS}"_jrs); - this->deathsTag = config.get(configSection, "DeathsTag"_jrs, "{DEATHS}"_jrs); - this->kdrTag = config.get(configSection, "KDRTag"_jrs, "{KDR}"_jrs); - this->suicidesTag = config.get(configSection, "SuicidesTag"_jrs, "{SUICIDES}"_jrs); - this->headshotsTag = config.get(configSection, "HeadshotsTag"_jrs, "{HEADSHOTS}"_jrs); - this->headshotKillRatioTag = config.get(configSection, "HeadshotKillRatioTag"_jrs, "{HSKR}"_jrs); - this->vehicleKillsTag = config.get(configSection, "VehicleKillsTag"_jrs, "{VEHICLEKILLS}"_jrs); - this->buildingKillsTag = config.get(configSection, "BuildingKillsTag"_jrs, "{BUILDINGKILLS}"_jrs); - this->defenceKillsTag = config.get(configSection, "DefenceKillsTag"_jrs, "{DEFENCEKILLS}"_jrs); - this->gameTimeTag = config.get(configSection, "GameTimeTag"_jrs, "{GAMETIME}"_jrs); - this->gamesTag = config.get(configSection, "GamesTag"_jrs, "{GAMES}"_jrs); - this->GDIGamesTag = config.get(configSection, "GDIGamesTag"_jrs, "{GDIGAMES}"_jrs); - this->NodGamesTag = config.get(configSection, "NodGamesTag"_jrs, "{NODGAMES}"_jrs); - this->winsTag = config.get(configSection, "WinsTag"_jrs, "{WINS}"_jrs); - this->GDIWinsTag = config.get(configSection, "GDIWinsTag"_jrs, "{GDIWINS}"_jrs); - this->NodWinsTag = config.get(configSection, "NodWinsTag"_jrs, "{NODWINS}"_jrs); - this->tiesTag = config.get(configSection, "TiesTag"_jrs, "{TIES}"_jrs); - this->lossesTag = config.get(configSection, "LossesTag"_jrs, "{LOSSES}"_jrs); - this->GDILossesTag = config.get(configSection, "GDILossesTag"_jrs, "{GDILOSSES}"_jrs); - this->NodLossesTag = config.get(configSection, "NodLossesTag"_jrs, "{NODLOSSES}"_jrs); - this->winLossRatioTag = config.get(configSection, "WinLossRatioTag"_jrs, "{WLR}"_jrs); - this->GDIWinLossRatioTag = config.get(configSection, "GDIWinLossRatioTag"_jrs, "{GDIWLR}"_jrs); - this->NodWinLossRatioTag = config.get(configSection, "NodWinLossRatioTag"_jrs, "{NODWLR}"_jrs); - this->beaconPlacementsTag = config.get(configSection, "BeaconPlacementsTag"_jrs, "{BEACONPLACEMENTS}"_jrs); - this->beaconDisarmsTag = config.get(configSection, "BeaconDisarmsTag"_jrs, "{BEACONDISARMS}"_jrs); - this->proxyPlacementsTag = config.get(configSection, "ProxyPlacementsTag"_jrs, "{PROXYPLACEMENTS}"_jrs); - this->proxyDisarmsTag = config.get(configSection, "ProxyDisarmsTag"_jrs, "{PROXYDISARMS}"_jrs); - this->capturesTag = config.get(configSection, "CapturesTag"_jrs, "{CAPTURES}"_jrs); - this->stealsTag = config.get(configSection, "StealsTag"_jrs, "{STEALS}"_jrs); - this->stolenTag = config.get(configSection, "StolenTag"_jrs, "{STOLEN}"_jrs); - this->accessTag = config.get(configSection, "AccessTag"_jrs, "{ACCESS}"_jrs); + this->nameTag = config[configSection].get("NameTag"_jrs, "{NAME}"_jrs); + this->rawNameTag = config[configSection].get("RawNameTag"_jrs, "{RNAME}"_jrs); + this->ipTag = config[configSection].get("IPTag"_jrs, "{IP}"_jrs); + this->hwidTag = config[configSection].get("HWIDTag"_jrs, "{HWID}"_jrs); + this->rdnsTag = config[configSection].get("RDNSTag"_jrs, "{RDNS}"_jrs); + this->steamTag = config[configSection].get("SteamTag"_jrs, "{STEAM}"_jrs); + this->uuidTag = config[configSection].get("UUIDTag"_jrs, "{UUID}"_jrs); + this->idTag = config[configSection].get("IDTag"_jrs, "{ID}"_jrs); + this->characterTag = config[configSection].get("CharacterTag"_jrs, "{CHAR}"_jrs); + this->vehicleTag = config[configSection].get("VehicleTag"_jrs, "{VEH}"_jrs); + this->adminTag = config[configSection].get("AdminTag"_jrs, "{ADMIN}"_jrs); + this->prefixTag = config[configSection].get("PrefixTag"_jrs, "{PREFIX}"_jrs); + this->gamePrefixTag = config[configSection].get("GamePrefixTag"_jrs, "{GPREFIX}"_jrs); + this->teamColorTag = config[configSection].get("TeamColorTag"_jrs, "{TCOLOR}"_jrs); + this->teamShortTag = config[configSection].get("ShortTeamTag"_jrs, "{TEAMS}"_jrs); + this->teamLongTag = config[configSection].get("LongTeamTag"_jrs, "{TEAML}"_jrs); + this->pingTag = config[configSection].get("PingTag"_jrs, "{PING}"_jrs); + this->scoreTag = config[configSection].get("ScoreTag"_jrs, "{SCORE}"_jrs); + this->scorePerMinuteTag = config[configSection].get("ScorePerMinuteTag"_jrs, "{SPM}"_jrs); + this->creditsTag = config[configSection].get("CreditsTag"_jrs, "{CREDITS}"_jrs); + this->killsTag = config[configSection].get("KillsTag"_jrs, "{KILLS}"_jrs); + this->deathsTag = config[configSection].get("DeathsTag"_jrs, "{DEATHS}"_jrs); + this->kdrTag = config[configSection].get("KDRTag"_jrs, "{KDR}"_jrs); + this->suicidesTag = config[configSection].get("SuicidesTag"_jrs, "{SUICIDES}"_jrs); + this->headshotsTag = config[configSection].get("HeadshotsTag"_jrs, "{HEADSHOTS}"_jrs); + this->headshotKillRatioTag = config[configSection].get("HeadshotKillRatioTag"_jrs, "{HSKR}"_jrs); + this->vehicleKillsTag = config[configSection].get("VehicleKillsTag"_jrs, "{VEHICLEKILLS}"_jrs); + this->buildingKillsTag = config[configSection].get("BuildingKillsTag"_jrs, "{BUILDINGKILLS}"_jrs); + this->defenceKillsTag = config[configSection].get("DefenceKillsTag"_jrs, "{DEFENCEKILLS}"_jrs); + this->gameTimeTag = config[configSection].get("GameTimeTag"_jrs, "{GAMETIME}"_jrs); + this->gamesTag = config[configSection].get("GamesTag"_jrs, "{GAMES}"_jrs); + this->GDIGamesTag = config[configSection].get("GDIGamesTag"_jrs, "{GDIGAMES}"_jrs); + this->NodGamesTag = config[configSection].get("NodGamesTag"_jrs, "{NODGAMES}"_jrs); + this->winsTag = config[configSection].get("WinsTag"_jrs, "{WINS}"_jrs); + this->GDIWinsTag = config[configSection].get("GDIWinsTag"_jrs, "{GDIWINS}"_jrs); + this->NodWinsTag = config[configSection].get("NodWinsTag"_jrs, "{NODWINS}"_jrs); + this->tiesTag = config[configSection].get("TiesTag"_jrs, "{TIES}"_jrs); + this->lossesTag = config[configSection].get("LossesTag"_jrs, "{LOSSES}"_jrs); + this->GDILossesTag = config[configSection].get("GDILossesTag"_jrs, "{GDILOSSES}"_jrs); + this->NodLossesTag = config[configSection].get("NodLossesTag"_jrs, "{NODLOSSES}"_jrs); + this->winLossRatioTag = config[configSection].get("WinLossRatioTag"_jrs, "{WLR}"_jrs); + this->GDIWinLossRatioTag = config[configSection].get("GDIWinLossRatioTag"_jrs, "{GDIWLR}"_jrs); + this->NodWinLossRatioTag = config[configSection].get("NodWinLossRatioTag"_jrs, "{NODWLR}"_jrs); + this->beaconPlacementsTag = config[configSection].get("BeaconPlacementsTag"_jrs, "{BEACONPLACEMENTS}"_jrs); + this->beaconDisarmsTag = config[configSection].get("BeaconDisarmsTag"_jrs, "{BEACONDISARMS}"_jrs); + this->proxyPlacementsTag = config[configSection].get("ProxyPlacementsTag"_jrs, "{PROXYPLACEMENTS}"_jrs); + this->proxyDisarmsTag = config[configSection].get("ProxyDisarmsTag"_jrs, "{PROXYDISARMS}"_jrs); + this->capturesTag = config[configSection].get("CapturesTag"_jrs, "{CAPTURES}"_jrs); + this->stealsTag = config[configSection].get("StealsTag"_jrs, "{STEALS}"_jrs); + this->stolenTag = config[configSection].get("StolenTag"_jrs, "{STOLEN}"_jrs); + this->accessTag = config[configSection].get("AccessTag"_jrs, "{ACCESS}"_jrs); /** Victim player tags */ - this->victimNameTag = config.get(configSection, "VictimNameTag"_jrs, "{VNAME}"_jrs); - this->victimRawNameTag = config.get(configSection, "VictimRawNameTag"_jrs, "{VRNAME}"_jrs); - this->victimIPTag = config.get(configSection, "VictimIPTag"_jrs, "{VIP}"_jrs); - this->victimHWIDTag = config.get(configSection, "VictimHWIDTag"_jrs, "{VHWID}"_jrs); - this->victimRDNSTag = config.get(configSection, "VictimRDNSTag"_jrs, "{VRDNS}"_jrs); - this->victimSteamTag = config.get(configSection, "VictimSteamTag"_jrs, "{VSTEAM}"_jrs); - this->victimUUIDTag = config.get(configSection, "VictimUUIDTag"_jrs, "{VUUID}"_jrs); - this->victimIDTag = config.get(configSection, "VictimIDTag"_jrs, "{VID}"_jrs); - this->victimCharacterTag = config.get(configSection, "VictimCharacterTag"_jrs, "{VCHAR}"_jrs); - this->victimVehicleTag = config.get(configSection, "VictimVehicleTag"_jrs, "{VVEH}"_jrs); - this->victimAdminTag = config.get(configSection, "VictimAdminTag"_jrs, "{VADMIN}"_jrs); - this->victimPrefixTag = config.get(configSection, "VictimPrefixTag"_jrs, "{VPREFIX}"_jrs); - this->victimGamePrefixTag = config.get(configSection, "VictimGamePrefixTag"_jrs, "{VGPREFIX}"_jrs); - this->victimTeamColorTag = config.get(configSection, "VictimTeamColorTag"_jrs, "{VTCOLOR}"_jrs); - this->victimTeamShortTag = config.get(configSection, "VictimShortTeamTag"_jrs, "{VTEAMS}"_jrs); - this->victimTeamLongTag = config.get(configSection, "VictimLongTeamTag"_jrs, "{VTEAML}"_jrs); - this->victimPingTag = config.get(configSection, "VictimPingTag"_jrs, "{VPING}"_jrs); - this->victimScoreTag = config.get(configSection, "VictimScoreTag"_jrs, "{VSCORE}"_jrs); - this->victimScorePerMinuteTag = config.get(configSection, "VictimScorePerMinuteTag"_jrs, "{VSPM}"_jrs); - this->victimCreditsTag = config.get(configSection, "VictimCreditsTag"_jrs, "{VCREDITS}"_jrs); - this->victimKillsTag = config.get(configSection, "VictimKillsTag"_jrs, "{VKILLS}"_jrs); - this->victimDeathsTag = config.get(configSection, "VictimDeathsTag"_jrs, "{VDEATHS}"_jrs); - this->victimKDRTag = config.get(configSection, "VictimKDRTag"_jrs, "{VKDR}"_jrs); - this->victimSuicidesTag = config.get(configSection, "VictimSuicidesTag"_jrs, "{VSUICIDES}"_jrs); - this->victimHeadshotsTag = config.get(configSection, "VictimHeadshotsTag"_jrs, "{VHEADSHOTS}"_jrs); - this->victimHeadshotKillRatioTag = config.get(configSection, "VictimHeadshotKillRatioTag"_jrs, "{VHSKR}"_jrs); - this->victimVehicleKillsTag = config.get(configSection, "VictimVehicleKillsTag"_jrs, "{VVEHICLEKILLS}"_jrs); - this->victimBuildingKillsTag = config.get(configSection, "VictimBuildingKillsTag"_jrs, "{VBUILDINGKILLS}"_jrs); - this->victimDefenceKillsTag = config.get(configSection, "VictimDefenceKillsTag"_jrs, "{VDEFENCEKILLS}"_jrs); - this->victimGameTimeTag = config.get(configSection, "VictimGameTimeTag"_jrs, "{VGAMETIME}"_jrs); - this->victimGamesTag = config.get(configSection, "VictimGamesTag"_jrs, "{VGAMES}"_jrs); - this->victimGDIGamesTag = config.get(configSection, "VictimGDIGamesTag"_jrs, "{VGDIGAMES}"_jrs); - this->victimNodGamesTag = config.get(configSection, "VictimNodGamesTag"_jrs, "{VNODGAMES}"_jrs); - this->victimWinsTag = config.get(configSection, "VictimWinsTag"_jrs, "{VWINS}"_jrs); - this->victimGDIWinsTag = config.get(configSection, "VictimGDIWinsTag"_jrs, "{VGDIWINS}"_jrs); - this->victimNodWinsTag = config.get(configSection, "VictimNodWinsTag"_jrs, "{VNODWINS}"_jrs); - this->victimTiesTag = config.get(configSection, "VictimTiesTag"_jrs, "{VTIES}"_jrs); - this->victimLossesTag = config.get(configSection, "VictimLossesTag"_jrs, "{VLOSSES}"_jrs); - this->victimGDILossesTag = config.get(configSection, "VictimGDILossesTag"_jrs, "{VGDILOSSES}"_jrs); - this->victimNodLossesTag = config.get(configSection, "VictimNodLossesTag"_jrs, "{VNODLOSSES}"_jrs); - this->victimWinLossRatioTag = config.get(configSection, "VictimWinLossRatioTag"_jrs, "{VWLR}"_jrs); - this->victimGDIWinLossRatioTag = config.get(configSection, "VictimGDIWinLossRatioTag"_jrs, "{VGDIWLR}"_jrs); - this->victimNodWinLossRatioTag = config.get(configSection, "VictimNodWinLossRatioTag"_jrs, "{VNODWLR}"_jrs); - this->victimBeaconPlacementsTag = config.get(configSection, "VictimBeaconPlacementsTag"_jrs, "{VBEACONPLACEMENTS}"_jrs); - this->victimBeaconDisarmsTag = config.get(configSection, "VictimBeaconDisarmsTag"_jrs, "{VBEACONDISARMS}"_jrs); - this->victimProxyPlacementsTag = config.get(configSection, "VictimProxyPlacementsTag"_jrs, "{VPROXYPLACEMENTS}"_jrs); - this->victimProxyDisarmsTag = config.get(configSection, "VictimProxyDisarmsTag"_jrs, "{VPROXYDISARMS}"_jrs); - this->victimCapturesTag = config.get(configSection, "VictimCapturesTag"_jrs, "{VCAPTURES}"_jrs); - this->victimStealsTag = config.get(configSection, "VictimStealsTag"_jrs, "{VSTEALS}"_jrs); - this->victimStolenTag = config.get(configSection, "VictimStolenTag"_jrs, "{VSTOLEN}"_jrs); - this->victimAccessTag = config.get(configSection, "VictimAccessTag"_jrs, "{VACCESS}"_jrs); + this->victimNameTag = config[configSection].get("VictimNameTag"_jrs, "{VNAME}"_jrs); + this->victimRawNameTag = config[configSection].get("VictimRawNameTag"_jrs, "{VRNAME}"_jrs); + this->victimIPTag = config[configSection].get("VictimIPTag"_jrs, "{VIP}"_jrs); + this->victimHWIDTag = config[configSection].get("VictimHWIDTag"_jrs, "{VHWID}"_jrs); + this->victimRDNSTag = config[configSection].get("VictimRDNSTag"_jrs, "{VRDNS}"_jrs); + this->victimSteamTag = config[configSection].get("VictimSteamTag"_jrs, "{VSTEAM}"_jrs); + this->victimUUIDTag = config[configSection].get("VictimUUIDTag"_jrs, "{VUUID}"_jrs); + this->victimIDTag = config[configSection].get("VictimIDTag"_jrs, "{VID}"_jrs); + this->victimCharacterTag = config[configSection].get("VictimCharacterTag"_jrs, "{VCHAR}"_jrs); + this->victimVehicleTag = config[configSection].get("VictimVehicleTag"_jrs, "{VVEH}"_jrs); + this->victimAdminTag = config[configSection].get("VictimAdminTag"_jrs, "{VADMIN}"_jrs); + this->victimPrefixTag = config[configSection].get("VictimPrefixTag"_jrs, "{VPREFIX}"_jrs); + this->victimGamePrefixTag = config[configSection].get("VictimGamePrefixTag"_jrs, "{VGPREFIX}"_jrs); + this->victimTeamColorTag = config[configSection].get("VictimTeamColorTag"_jrs, "{VTCOLOR}"_jrs); + this->victimTeamShortTag = config[configSection].get("VictimShortTeamTag"_jrs, "{VTEAMS}"_jrs); + this->victimTeamLongTag = config[configSection].get("VictimLongTeamTag"_jrs, "{VTEAML}"_jrs); + this->victimPingTag = config[configSection].get("VictimPingTag"_jrs, "{VPING}"_jrs); + this->victimScoreTag = config[configSection].get("VictimScoreTag"_jrs, "{VSCORE}"_jrs); + this->victimScorePerMinuteTag = config[configSection].get("VictimScorePerMinuteTag"_jrs, "{VSPM}"_jrs); + this->victimCreditsTag = config[configSection].get("VictimCreditsTag"_jrs, "{VCREDITS}"_jrs); + this->victimKillsTag = config[configSection].get("VictimKillsTag"_jrs, "{VKILLS}"_jrs); + this->victimDeathsTag = config[configSection].get("VictimDeathsTag"_jrs, "{VDEATHS}"_jrs); + this->victimKDRTag = config[configSection].get("VictimKDRTag"_jrs, "{VKDR}"_jrs); + this->victimSuicidesTag = config[configSection].get("VictimSuicidesTag"_jrs, "{VSUICIDES}"_jrs); + this->victimHeadshotsTag = config[configSection].get("VictimHeadshotsTag"_jrs, "{VHEADSHOTS}"_jrs); + this->victimHeadshotKillRatioTag = config[configSection].get("VictimHeadshotKillRatioTag"_jrs, "{VHSKR}"_jrs); + this->victimVehicleKillsTag = config[configSection].get("VictimVehicleKillsTag"_jrs, "{VVEHICLEKILLS}"_jrs); + this->victimBuildingKillsTag = config[configSection].get("VictimBuildingKillsTag"_jrs, "{VBUILDINGKILLS}"_jrs); + this->victimDefenceKillsTag = config[configSection].get("VictimDefenceKillsTag"_jrs, "{VDEFENCEKILLS}"_jrs); + this->victimGameTimeTag = config[configSection].get("VictimGameTimeTag"_jrs, "{VGAMETIME}"_jrs); + this->victimGamesTag = config[configSection].get("VictimGamesTag"_jrs, "{VGAMES}"_jrs); + this->victimGDIGamesTag = config[configSection].get("VictimGDIGamesTag"_jrs, "{VGDIGAMES}"_jrs); + this->victimNodGamesTag = config[configSection].get("VictimNodGamesTag"_jrs, "{VNODGAMES}"_jrs); + this->victimWinsTag = config[configSection].get("VictimWinsTag"_jrs, "{VWINS}"_jrs); + this->victimGDIWinsTag = config[configSection].get("VictimGDIWinsTag"_jrs, "{VGDIWINS}"_jrs); + this->victimNodWinsTag = config[configSection].get("VictimNodWinsTag"_jrs, "{VNODWINS}"_jrs); + this->victimTiesTag = config[configSection].get("VictimTiesTag"_jrs, "{VTIES}"_jrs); + this->victimLossesTag = config[configSection].get("VictimLossesTag"_jrs, "{VLOSSES}"_jrs); + this->victimGDILossesTag = config[configSection].get("VictimGDILossesTag"_jrs, "{VGDILOSSES}"_jrs); + this->victimNodLossesTag = config[configSection].get("VictimNodLossesTag"_jrs, "{VNODLOSSES}"_jrs); + this->victimWinLossRatioTag = config[configSection].get("VictimWinLossRatioTag"_jrs, "{VWLR}"_jrs); + this->victimGDIWinLossRatioTag = config[configSection].get("VictimGDIWinLossRatioTag"_jrs, "{VGDIWLR}"_jrs); + this->victimNodWinLossRatioTag = config[configSection].get("VictimNodWinLossRatioTag"_jrs, "{VNODWLR}"_jrs); + this->victimBeaconPlacementsTag = config[configSection].get("VictimBeaconPlacementsTag"_jrs, "{VBEACONPLACEMENTS}"_jrs); + this->victimBeaconDisarmsTag = config[configSection].get("VictimBeaconDisarmsTag"_jrs, "{VBEACONDISARMS}"_jrs); + this->victimProxyPlacementsTag = config[configSection].get("VictimProxyPlacementsTag"_jrs, "{VPROXYPLACEMENTS}"_jrs); + this->victimProxyDisarmsTag = config[configSection].get("VictimProxyDisarmsTag"_jrs, "{VPROXYDISARMS}"_jrs); + this->victimCapturesTag = config[configSection].get("VictimCapturesTag"_jrs, "{VCAPTURES}"_jrs); + this->victimStealsTag = config[configSection].get("VictimStealsTag"_jrs, "{VSTEALS}"_jrs); + this->victimStolenTag = config[configSection].get("VictimStolenTag"_jrs, "{VSTOLEN}"_jrs); + this->victimAccessTag = config[configSection].get("VictimAccessTag"_jrs, "{VACCESS}"_jrs); /** Building tags */ - this->buildingNameTag = config.get(configSection, "BuildingNameTag"_jrs, "{BNAME}"_jrs); - this->buildingRawNameTag = config.get(configSection, "BuildingRawNameTag"_jrs, "{BRNAME}"_jrs); - this->buildingHealthTag = config.get(configSection, "BuildingHealthTag"_jrs, "{BHEALTH}"_jrs); - this->buildingMaxHealthTag = config.get(configSection, "BuildingMaxHealthTag"_jrs, "{BMHEALTH}"_jrs); - this->buildingHealthPercentageTag = config.get(configSection, "BuildingHealthPercentageTag"_jrs, "{BHP}"_jrs); - this->buildingArmorTag = config.get(configSection, "BuildingArmorTag"_jrs, "{BARMOR}"_jrs); - this->buildingMaxArmorTag = config.get(configSection, "BuildingMaxArmorTag"_jrs, "{BMARMOR}"_jrs); - this->buildingArmorPercentageTag = config.get(configSection, "BuildingArmorPercentageTag"_jrs, "{BAP}"_jrs); - this->buildingDurabilityTag = config.get(configSection, "BuildingDurabilityTag"_jrs, "{BDURABILITY}"_jrs); - this->buildingMaxDurabilityTag = config.get(configSection, "BuildingMaxDurabilityTag"_jrs, "{BMDURABILITY}"_jrs); - this->buildingDurabilityPercentageTag = config.get(configSection, "BuildingDurabilityPercentageTag"_jrs, "{BDP}"_jrs); - this->buildingTeamColorTag = config.get(configSection, "BuildingTeamColorTag"_jrs, "{BCOLOR}"_jrs); - this->buildingTeamShortTag = config.get(configSection, "BuildingShortTeamTag"_jrs, "{BTEAMS}"_jrs); - this->buildingTeamLongTag = config.get(configSection, "BuildingLongTeamTag"_jrs, "{BTEAML}"_jrs); + this->buildingNameTag = config[configSection].get("BuildingNameTag"_jrs, "{BNAME}"_jrs); + this->buildingRawNameTag = config[configSection].get("BuildingRawNameTag"_jrs, "{BRNAME}"_jrs); + this->buildingHealthTag = config[configSection].get("BuildingHealthTag"_jrs, "{BHEALTH}"_jrs); + this->buildingMaxHealthTag = config[configSection].get("BuildingMaxHealthTag"_jrs, "{BMHEALTH}"_jrs); + this->buildingHealthPercentageTag = config[configSection].get("BuildingHealthPercentageTag"_jrs, "{BHP}"_jrs); + this->buildingArmorTag = config[configSection].get("BuildingArmorTag"_jrs, "{BARMOR}"_jrs); + this->buildingMaxArmorTag = config[configSection].get("BuildingMaxArmorTag"_jrs, "{BMARMOR}"_jrs); + this->buildingArmorPercentageTag = config[configSection].get("BuildingArmorPercentageTag"_jrs, "{BAP}"_jrs); + this->buildingDurabilityTag = config[configSection].get("BuildingDurabilityTag"_jrs, "{BDURABILITY}"_jrs); + this->buildingMaxDurabilityTag = config[configSection].get("BuildingMaxDurabilityTag"_jrs, "{BMDURABILITY}"_jrs); + this->buildingDurabilityPercentageTag = config[configSection].get("BuildingDurabilityPercentageTag"_jrs, "{BDP}"_jrs); + this->buildingTeamColorTag = config[configSection].get("BuildingTeamColorTag"_jrs, "{BCOLOR}"_jrs); + this->buildingTeamShortTag = config[configSection].get("BuildingShortTeamTag"_jrs, "{BTEAMS}"_jrs); + this->buildingTeamLongTag = config[configSection].get("BuildingLongTeamTag"_jrs, "{BTEAML}"_jrs); /** Ladder tags */ - this->rankTag = config.get(configSection, "RankTag"_jrs, "{RANK}"_jrs); - this->lastGameTag = config.get(configSection, "LastGameTag"_jrs, "{LASTGAME}"_jrs); - this->GDIScoreTag = config.get(configSection, "GDIScoreTag"_jrs, "{GDISCORE}"_jrs); - this->GDISPMTag = config.get(configSection, "GDISPMTag"_jrs, "{GDISPM}"_jrs); - this->GDIGameTimeTag = config.get(configSection, "GDIGameTimeTag"_jrs, "{GDIGAMETIME}"_jrs); - this->GDITiesTag = config.get(configSection, "GDITiesTag"_jrs, "{GDITIES}"_jrs); - this->GDIBeaconPlacementsTag = config.get(configSection, "GDIBeaconPlacementsTag"_jrs, "{GDIBEACONPLACEMENTS}"_jrs); - this->GDIBeaconDisarmsTag = config.get(configSection, "GDIBeaconDisarmsTag"_jrs, "{GDIBEACONDISARMS}"_jrs); - this->GDIProxyPlacementsTag = config.get(configSection, "GDIProxyPlacementsTag"_jrs, "{GDIPROXYPLACEMENTS}"_jrs); - this->GDIProxyDisarmsTag = config.get(configSection, "GDIProxyDisarmsTag"_jrs, "{GDIPROXYDISARMS}"_jrs); - this->GDIKillsTag = config.get(configSection, "GDIKillsTag"_jrs, "{GDIKILLS}"_jrs); - this->GDIDeathsTag = config.get(configSection, "GDIDeathsTag"_jrs, "{GDIDEATHS}"_jrs); - this->GDIVehicleKillsTag = config.get(configSection, "GDIVehicleKillsTag"_jrs, "{GDIVEHICLEKILLS}"_jrs); - this->GDIDefenceKillsTag = config.get(configSection, "GDIDefenceKillsTag"_jrs, "{GDIDEFENCEKILLS}"_jrs); - this->GDIBuildingKillsTag = config.get(configSection, "GDIBuildingKillsTag"_jrs, "{GDIBUILDINGKILLS}"_jrs); - this->GDIKDRTag = config.get(configSection, "GDIKDRTag"_jrs, "{GDIKDR}"_jrs); - this->GDIHeadshotsTag = config.get(configSection, "GDIHeadshotsTag"_jrs, "{GDIHEADSHOTS}"_jrs); - this->GDIHeadshotKillRatioTag = config.get(configSection, "GDIHeadshotKillRatioTag"_jrs, "{GDIHSKR}"_jrs); - this->NodScoreTag = config.get(configSection, "NodScoreTag"_jrs, "{NODSCORE}"_jrs); - this->NodSPMTag = config.get(configSection, "NodSPMTag"_jrs, "{NODSPM}"_jrs); - this->NodGameTimeTag = config.get(configSection, "NodGameTimeTag"_jrs, "{NODGAMETIME}"_jrs); - this->NodTiesTag = config.get(configSection, "NodTiesTag"_jrs, "{NODTIES}"_jrs); - this->NodBeaconPlacementsTag = config.get(configSection, "NodBeaconPlacementsTag"_jrs, "{NODBEACONPLACEMENTS}"_jrs); - this->NodBeaconDisarmsTag = config.get(configSection, "NodBeaconDisarmsTag"_jrs, "{NODBEACONDISARMS}"_jrs); - this->NodProxyPlacementsTag = config.get(configSection, "NodProxyPlacementsTag"_jrs, "{NODPROXYPLACEMENTS}"_jrs); - this->NodProxyDisarmsTag = config.get(configSection, "NodProxyDisarmsTag"_jrs, "{NODPROXYDISARMS}"_jrs); - this->NodKillsTag = config.get(configSection, "NodKillsTag"_jrs, "{NODKILLS}"_jrs); - this->NodDeathsTag = config.get(configSection, "NodDeathsTag"_jrs, "{NODDEATHS}"_jrs); - this->NodVehicleKillsTag = config.get(configSection, "NodVehicleKillsTag"_jrs, "{NODVEHICLEKILLS}"_jrs); - this->NodDefenceKillsTag = config.get(configSection, "NodDefenceKillsTag"_jrs, "{NODDEFENCEKILLS}"_jrs); - this->NodBuildingKillsTag = config.get(configSection, "NodBuildingKillsTag"_jrs, "{NODBUILDINGKILLS}"_jrs); - this->NodKDRTag = config.get(configSection, "NodKDRTag"_jrs, "{NODKDR}"_jrs); - this->NodHeadshotsTag = config.get(configSection, "NodHeadshotsTag"_jrs, "{NODHEADSHOTS}"_jrs); - this->NodHeadshotKillRatioTag = config.get(configSection, "NodHeadshotKillRatioTag"_jrs, "{NODHSKR}"_jrs); + this->rankTag = config[configSection].get("RankTag"_jrs, "{RANK}"_jrs); + this->lastGameTag = config[configSection].get("LastGameTag"_jrs, "{LASTGAME}"_jrs); + this->GDIScoreTag = config[configSection].get("GDIScoreTag"_jrs, "{GDISCORE}"_jrs); + this->GDISPMTag = config[configSection].get("GDISPMTag"_jrs, "{GDISPM}"_jrs); + this->GDIGameTimeTag = config[configSection].get("GDIGameTimeTag"_jrs, "{GDIGAMETIME}"_jrs); + this->GDITiesTag = config[configSection].get("GDITiesTag"_jrs, "{GDITIES}"_jrs); + this->GDIBeaconPlacementsTag = config[configSection].get("GDIBeaconPlacementsTag"_jrs, "{GDIBEACONPLACEMENTS}"_jrs); + this->GDIBeaconDisarmsTag = config[configSection].get("GDIBeaconDisarmsTag"_jrs, "{GDIBEACONDISARMS}"_jrs); + this->GDIProxyPlacementsTag = config[configSection].get("GDIProxyPlacementsTag"_jrs, "{GDIPROXYPLACEMENTS}"_jrs); + this->GDIProxyDisarmsTag = config[configSection].get("GDIProxyDisarmsTag"_jrs, "{GDIPROXYDISARMS}"_jrs); + this->GDIKillsTag = config[configSection].get("GDIKillsTag"_jrs, "{GDIKILLS}"_jrs); + this->GDIDeathsTag = config[configSection].get("GDIDeathsTag"_jrs, "{GDIDEATHS}"_jrs); + this->GDIVehicleKillsTag = config[configSection].get("GDIVehicleKillsTag"_jrs, "{GDIVEHICLEKILLS}"_jrs); + this->GDIDefenceKillsTag = config[configSection].get("GDIDefenceKillsTag"_jrs, "{GDIDEFENCEKILLS}"_jrs); + this->GDIBuildingKillsTag = config[configSection].get("GDIBuildingKillsTag"_jrs, "{GDIBUILDINGKILLS}"_jrs); + this->GDIKDRTag = config[configSection].get("GDIKDRTag"_jrs, "{GDIKDR}"_jrs); + this->GDIHeadshotsTag = config[configSection].get("GDIHeadshotsTag"_jrs, "{GDIHEADSHOTS}"_jrs); + this->GDIHeadshotKillRatioTag = config[configSection].get("GDIHeadshotKillRatioTag"_jrs, "{GDIHSKR}"_jrs); + this->NodScoreTag = config[configSection].get("NodScoreTag"_jrs, "{NODSCORE}"_jrs); + this->NodSPMTag = config[configSection].get("NodSPMTag"_jrs, "{NODSPM}"_jrs); + this->NodGameTimeTag = config[configSection].get("NodGameTimeTag"_jrs, "{NODGAMETIME}"_jrs); + this->NodTiesTag = config[configSection].get("NodTiesTag"_jrs, "{NODTIES}"_jrs); + this->NodBeaconPlacementsTag = config[configSection].get("NodBeaconPlacementsTag"_jrs, "{NODBEACONPLACEMENTS}"_jrs); + this->NodBeaconDisarmsTag = config[configSection].get("NodBeaconDisarmsTag"_jrs, "{NODBEACONDISARMS}"_jrs); + this->NodProxyPlacementsTag = config[configSection].get("NodProxyPlacementsTag"_jrs, "{NODPROXYPLACEMENTS}"_jrs); + this->NodProxyDisarmsTag = config[configSection].get("NodProxyDisarmsTag"_jrs, "{NODPROXYDISARMS}"_jrs); + this->NodKillsTag = config[configSection].get("NodKillsTag"_jrs, "{NODKILLS}"_jrs); + this->NodDeathsTag = config[configSection].get("NodDeathsTag"_jrs, "{NODDEATHS}"_jrs); + this->NodVehicleKillsTag = config[configSection].get("NodVehicleKillsTag"_jrs, "{NODVEHICLEKILLS}"_jrs); + this->NodDefenceKillsTag = config[configSection].get("NodDefenceKillsTag"_jrs, "{NODDEFENCEKILLS}"_jrs); + this->NodBuildingKillsTag = config[configSection].get("NodBuildingKillsTag"_jrs, "{NODBUILDINGKILLS}"_jrs); + this->NodKDRTag = config[configSection].get("NodKDRTag"_jrs, "{NODKDR}"_jrs); + this->NodHeadshotsTag = config[configSection].get("NodHeadshotsTag"_jrs, "{NODHEADSHOTS}"_jrs); + this->NodHeadshotKillRatioTag = config[configSection].get("NodHeadshotKillRatioTag"_jrs, "{NODHSKR}"_jrs); /** Other tags */ - this->weaponTag = config.get(configSection, "WeaponTag"_jrs, "{WEAPON}"_jrs); - this->objectTag = config.get(configSection, "ObjectTag"_jrs, "{OBJECT}"_jrs); - this->messageTag = config.get(configSection, "MessageTag"_jrs, "{MESSAGE}"_jrs); - this->newNameTag = config.get(configSection, "NewNameTag"_jrs, "{NNAME}"_jrs); - this->winScoreTag = config.get(configSection, "WinScoreTag"_jrs, "{WINSCORE}"_jrs); - this->loseScoreTag = config.get(configSection, "LoseScoreTag"_jrs, "{LOSESCORE}"_jrs); + this->weaponTag = config[configSection].get("WeaponTag"_jrs, "{WEAPON}"_jrs); + this->objectTag = config[configSection].get("ObjectTag"_jrs, "{OBJECT}"_jrs); + this->messageTag = config[configSection].get("MessageTag"_jrs, "{MESSAGE}"_jrs); + this->newNameTag = config[configSection].get("NewNameTag"_jrs, "{NNAME}"_jrs); + this->winScoreTag = config[configSection].get("WinScoreTag"_jrs, "{WINSCORE}"_jrs); + this->loseScoreTag = config[configSection].get("LoseScoreTag"_jrs, "{LOSESCORE}"_jrs); return true; } diff --git a/RenX.Core/RenX_TeamInfo.h b/RenX.Core/RenX_TeamInfo.h index fb31cdf..643e4ee 100644 --- a/RenX.Core/RenX_TeamInfo.h +++ b/RenX.Core/RenX_TeamInfo.h @@ -25,7 +25,6 @@ */ #include "Jupiter/String.h" -#include "Jupiter/INIFile.h" #include "RenX.h" /** DLL Linkage Nagging */ diff --git a/RenX.ExcessiveHeadshots/ExcessiveHeadshots.cpp b/RenX.ExcessiveHeadshots/ExcessiveHeadshots.cpp index d9dbef3..63e8914 100644 --- a/RenX.ExcessiveHeadshots/ExcessiveHeadshots.cpp +++ b/RenX.ExcessiveHeadshots/ExcessiveHeadshots.cpp @@ -18,7 +18,6 @@ #include #include "Jupiter/IRC_Client.h" -#include "Jupiter/INIFile.h" #include "ExcessiveHeadshots.h" #include "RenX_Server.h" #include "RenX_PlayerInfo.h" @@ -28,11 +27,11 @@ using namespace Jupiter::literals; bool RenX_ExcessiveHeadshotsPlugin::initialize() { - RenX_ExcessiveHeadshotsPlugin::ratio = this->config.getDouble(Jupiter::ReferenceString::empty, "HeadshotKillRatio"_jrs, 0.5); - RenX_ExcessiveHeadshotsPlugin::minKills = this->config.getInt(Jupiter::ReferenceString::empty, "Kills"_jrs, 10); - RenX_ExcessiveHeadshotsPlugin::minKD = this->config.getDouble(Jupiter::ReferenceString::empty, "KillDeathRatio"_jrs, 5.0); - RenX_ExcessiveHeadshotsPlugin::minKPS = this->config.getDouble(Jupiter::ReferenceString::empty, "KillsPerSecond"_jrs, 0.5); - RenX_ExcessiveHeadshotsPlugin::minFlags = this->config.getInt(Jupiter::ReferenceString::empty, "Flags"_jrs, 4); + RenX_ExcessiveHeadshotsPlugin::ratio = this->config.get("HeadshotKillRatio"_jrs, 0.5); + RenX_ExcessiveHeadshotsPlugin::minKills = this->config.get("Kills"_jrs, 10); + RenX_ExcessiveHeadshotsPlugin::minKD = this->config.get("KillDeathRatio"_jrs, 5.0); + RenX_ExcessiveHeadshotsPlugin::minKPS = this->config.get("KillsPerSecond"_jrs, 0.5); + RenX_ExcessiveHeadshotsPlugin::minFlags = this->config.get("Flags"_jrs, 4); return true; } diff --git a/RenX.ExtraLogging/RenX_ExtraLogging.cpp b/RenX.ExtraLogging/RenX_ExtraLogging.cpp index 8109326..97cc15b 100644 --- a/RenX.ExtraLogging/RenX_ExtraLogging.cpp +++ b/RenX.ExtraLogging/RenX_ExtraLogging.cpp @@ -17,11 +17,12 @@ */ #include "Jupiter/IRC_Client.h" -#include "Jupiter/INIFile.h" #include "RenX_ExtraLogging.h" #include "RenX_Server.h" #include "RenX_Tags.h" +using namespace Jupiter::literals; + RenX_ExtraLoggingPlugin::RenX_ExtraLoggingPlugin() { RenX_ExtraLoggingPlugin::day = localtime(std::addressof(time(nullptr)))->tm_yday; @@ -45,11 +46,11 @@ int RenX_ExtraLoggingPlugin::OnRehash() bool RenX_ExtraLoggingPlugin::initialize() { - RenX_ExtraLoggingPlugin::filePrefix = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("FilePrefix"), Jupiter::StringS::Format("[%.*s] %.*s", RenX::tags->timeTag.size(), RenX::tags->timeTag.ptr(), RenX::tags->serverPrefixTag.size(), RenX::tags->serverPrefixTag.ptr())); - RenX_ExtraLoggingPlugin::consolePrefix = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("ConsolePrefix"), RenX_ExtraLoggingPlugin::filePrefix); - RenX_ExtraLoggingPlugin::newDayFmt = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("NewDayFormat"), Jupiter::StringS::Format("Time: %.*s %.*s", RenX::tags->timeTag.size(), RenX::tags->timeTag.ptr(), RenX::tags->dateTag.size(), RenX::tags->dateTag.ptr())); - RenX_ExtraLoggingPlugin::printToConsole = this->config.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("PrintToConsole"), true); - const Jupiter::CStringS logFile = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("LogFile")); + 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::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::printToConsole = this->config.get("PrintToConsole"_jrs, true); + const Jupiter::CStringS logFile = this->config.get("LogFile"_jrs); RenX::sanitizeTags(RenX_ExtraLoggingPlugin::filePrefix); RenX::sanitizeTags(RenX_ExtraLoggingPlugin::consolePrefix); diff --git a/RenX.Greetings/RenX_Greetings.cpp b/RenX.Greetings/RenX_Greetings.cpp index d54a2d4..f2a20f9 100644 --- a/RenX.Greetings/RenX_Greetings.cpp +++ b/RenX.Greetings/RenX_Greetings.cpp @@ -17,12 +17,13 @@ */ #include "Jupiter/IRC_Client.h" -#include "Jupiter/INIFile.h" #include "RenX_Greetings.h" #include "RenX_PlayerInfo.h" #include "RenX_Server.h" #include "RenX_Tags.h" +using namespace Jupiter::literals; + void RenX_GreetingsPlugin::RenX_OnJoin(RenX::Server *server, const RenX::PlayerInfo *player) { auto sendMessage = [&](const Jupiter::ReadableString &m) @@ -70,11 +71,11 @@ int RenX_GreetingsPlugin::OnRehash() bool RenX_GreetingsPlugin::initialize() { - RenX_GreetingsPlugin::sendPrivate = this->config.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("SendPrivate"), true); - RenX_GreetingsPlugin::sendMode = this->config.getInt(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("SendMode"), 0); - RenX_GreetingsPlugin::greetingsFile.load(this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("GreetingsFile"), STRING_LITERAL_AS_REFERENCE("RenX.Greetings.txt"))); + RenX_GreetingsPlugin::sendPrivate = this->config.get("SendPrivate"_jrs, true); + RenX_GreetingsPlugin::sendMode = this->config.get("SendMode"_jrs, 0); + RenX_GreetingsPlugin::greetingsFile.load(this->config.get("GreetingsFile"_jrs, "RenX.Greetings.txt"_jrs)); if (RenX_GreetingsPlugin::greetingsFile.getLineCount() == 0) - RenX_GreetingsPlugin::greetingsFile.addData(STRING_LITERAL_AS_REFERENCE("Please notify the server administrator to properly configure or disable server greetings.\r\n")); + RenX_GreetingsPlugin::greetingsFile.addData("Please notify the server administrator to properly configure or disable server greetings.\r\n"_jrs); RenX_GreetingsPlugin::lastLine = RenX_GreetingsPlugin::greetingsFile.getLineCount() - 1; return true; diff --git a/RenX.IRCJoin/RenX_IRCJoin.cpp b/RenX.IRCJoin/RenX_IRCJoin.cpp index 9521b09..93b309d 100644 --- a/RenX.IRCJoin/RenX_IRCJoin.cpp +++ b/RenX.IRCJoin/RenX_IRCJoin.cpp @@ -17,25 +17,26 @@ */ #include "Jupiter/IRC_Client.h" -#include "Jupiter/INIFile.h" #include "Jupiter/String.h" #include "RenX_Core.h" #include "RenX_Server.h" #include "RenX_IRCJoin.h" +using namespace Jupiter::literals; + bool RenX_IRCJoinPlugin::initialize() { - RenX_IRCJoinPlugin::publicOnly = this->config.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("PublicOnly"), true); - RenX_IRCJoinPlugin::joinMsgAlways = this->config.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Join.MsgAlways"), false); - RenX_IRCJoinPlugin::partMsgAlways = this->config.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Part.MsgAlways"), false); - RenX_IRCJoinPlugin::minAccessPartMessage = this->config.getInt(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Part.MinAccess"), 0); - RenX_IRCJoinPlugin::maxAccessPartMessage = this->config.getInt(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Part.MaxAccess"), -1); - RenX_IRCJoinPlugin::nameTag = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("NameTag"), STRING_LITERAL_AS_REFERENCE("{NAME}")); - RenX_IRCJoinPlugin::chanTag = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("ChannelTag"), STRING_LITERAL_AS_REFERENCE("{CHAN}")); - RenX_IRCJoinPlugin::partReasonTag = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("PartReasonTag"), STRING_LITERAL_AS_REFERENCE("{REASON}")); - RenX_IRCJoinPlugin::joinFmt = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Join.Format"), STRING_LITERAL_AS_REFERENCE("{NAME} has joined {CHAN}!")); - RenX_IRCJoinPlugin::partFmt = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Part.Format"), STRING_LITERAL_AS_REFERENCE("{NAME} has left {CHAN} ({REASON})!")); - RenX_IRCJoinPlugin::partFmtNoReason = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Part.FormatNoReason"), STRING_LITERAL_AS_REFERENCE("{NAME} has left {CHAN}!")); + RenX_IRCJoinPlugin::publicOnly = this->config.get("PublicOnly"_jrs, true); + RenX_IRCJoinPlugin::joinMsgAlways = this->config.get("Join.MsgAlways"_jrs, false); + RenX_IRCJoinPlugin::partMsgAlways = this->config.get("Part.MsgAlways"_jrs, false); + RenX_IRCJoinPlugin::minAccessPartMessage = this->config.get("Part.MinAccess"_jrs, 0); + RenX_IRCJoinPlugin::maxAccessPartMessage = this->config.get("Part.MaxAccess"_jrs, -1); + RenX_IRCJoinPlugin::nameTag = this->config.get("NameTag"_jrs, "{NAME}"_jrs); + RenX_IRCJoinPlugin::chanTag = this->config.get("ChannelTag"_jrs, "{CHAN}"_jrs); + RenX_IRCJoinPlugin::partReasonTag = this->config.get("PartReasonTag"_jrs, "{REASON}"_jrs); + RenX_IRCJoinPlugin::joinFmt = this->config.get("Join.Format"_jrs, "{NAME} has joined {CHAN}!"_jrs); + RenX_IRCJoinPlugin::partFmt = this->config.get("Part.Format"_jrs, "{NAME} has left {CHAN} ({REASON})!"_jrs); + RenX_IRCJoinPlugin::partFmtNoReason = this->config.get("Part.FormatNoReason"_jrs, "{NAME} has left {CHAN}!"_jrs); return true; } diff --git a/RenX.Ladder.All-Time/RenX_Ladder_All_Time.cpp b/RenX.Ladder.All-Time/RenX_Ladder_All_Time.cpp index 55d6ed9..9ec945b 100644 --- a/RenX.Ladder.All-Time/RenX_Ladder_All_Time.cpp +++ b/RenX.Ladder.All-Time/RenX_Ladder_All_Time.cpp @@ -16,7 +16,6 @@ * Written by Jessica James */ -#include "Jupiter/INIFile.h" #include "Jupiter/IRC_Client.h" #include "RenX_Ladder_All_Time.h" @@ -25,12 +24,12 @@ using namespace Jupiter::literals; bool RenX_Ladder_All_TimePlugin::initialize() { // Load database - this->database.process_file(this->config.get(Jupiter::ReferenceString::empty, "LadderDatabase"_jrs, "Ladder.db"_jrs)); - this->database.setName(this->config.get(Jupiter::ReferenceString::empty, "DatabaseName"_jrs, "All-Time"_jrs)); - this->database.setOutputTimes(this->config.getBool(Jupiter::ReferenceString::empty, "OutputTimes"_jrs, true)); + this->database.process_file(this->config.get("LadderDatabase"_jrs, "Ladder.db"_jrs)); + this->database.setName(this->config.get("DatabaseName"_jrs, "All-Time"_jrs)); + this->database.setOutputTimes(this->config.get("OutputTimes"_jrs, true)); // Force database to default, if desired - if (this->config.getBool(Jupiter::ReferenceString::empty, "ForceDefault"_jrs, true)) + if (this->config.get("ForceDefault"_jrs, true)) RenX::default_ladder_database = &this->database; return true; diff --git a/RenX.Ladder.Daily/RenX_Ladder_Daily.cpp b/RenX.Ladder.Daily/RenX_Ladder_Daily.cpp index 112fece..afe6806 100644 --- a/RenX.Ladder.Daily/RenX_Ladder_Daily.cpp +++ b/RenX.Ladder.Daily/RenX_Ladder_Daily.cpp @@ -17,7 +17,6 @@ */ #include -#include "Jupiter/INIFile.h" #include "Jupiter/IRC_Client.h" #include "RenX_Ladder_Daily.h" @@ -26,15 +25,15 @@ using namespace Jupiter::literals; bool RenX_Ladder_Daily_TimePlugin::initialize() { // Load database - this->database.process_file(this->config.get(Jupiter::ReferenceString::empty, "LadderDatabase"_jrs, "Ladder.Daily.db"_jrs)); - this->database.setName(this->config.get(Jupiter::ReferenceString::empty, "DatabaseName"_jrs, "Daily"_jrs)); - this->database.setOutputTimes(this->config.getBool(Jupiter::ReferenceString::empty, "OutputTimes"_jrs, false)); + this->database.process_file(this->config.get("LadderDatabase"_jrs, "Ladder.Daily.db"_jrs)); + this->database.setName(this->config.get("DatabaseName"_jrs, "Daily"_jrs)); + this->database.setOutputTimes(this->config.get("OutputTimes"_jrs, false)); this->last_sorted_day = gmtime(std::addressof(time(0)))->tm_wday; this->database.OnPreUpdateLadder = OnPreUpdateLadder; // Force database to default, if desired - if (this->config.getBool(Jupiter::ReferenceString::empty, "ForceDefault"_jrs, false)) + if (this->config.get("ForceDefault"_jrs, false)) RenX::default_ladder_database = &this->database; return true; diff --git a/RenX.Ladder.Monthly/RenX_Ladder_Monthly.cpp b/RenX.Ladder.Monthly/RenX_Ladder_Monthly.cpp index be7bd3d..3e4a3f5 100644 --- a/RenX.Ladder.Monthly/RenX_Ladder_Monthly.cpp +++ b/RenX.Ladder.Monthly/RenX_Ladder_Monthly.cpp @@ -17,7 +17,6 @@ */ #include -#include "Jupiter/INIFile.h" #include "Jupiter/IRC_Client.h" #include "RenX_Ladder_Monthly.h" @@ -26,15 +25,15 @@ using namespace Jupiter::literals; bool RenX_Ladder_Monthly_TimePlugin::initialize() { // Load database - this->database.process_file(this->config.get(Jupiter::ReferenceString::empty, "LadderDatabase"_jrs, "Ladder.Monthly.db"_jrs)); - this->database.setName(this->config.get(Jupiter::ReferenceString::empty, "DatabaseName"_jrs, "Monthly"_jrs)); - this->database.setOutputTimes(this->config.getBool(Jupiter::ReferenceString::empty, "OutputTimes"_jrs, false)); + this->database.process_file(this->config.get("LadderDatabase"_jrs, "Ladder.Monthly.db"_jrs)); + this->database.setName(this->config.get("DatabaseName"_jrs, "Monthly"_jrs)); + this->database.setOutputTimes(this->config.get("OutputTimes"_jrs, false)); this->last_sorted_month = gmtime(std::addressof(time(0)))->tm_mon; this->database.OnPreUpdateLadder = OnPreUpdateLadder; // Force database to default, if desired - if (this->config.getBool(Jupiter::ReferenceString::empty, "ForceDefault"_jrs, false)) + if (this->config.get("ForceDefault"_jrs, false)) RenX::default_ladder_database = &this->database; return true; diff --git a/RenX.Ladder.Web/RenX_Ladder_Web.cpp b/RenX.Ladder.Web/RenX_Ladder_Web.cpp index 97bf058..346def7 100644 --- a/RenX.Ladder.Web/RenX_Ladder_Web.cpp +++ b/RenX.Ladder.Web/RenX_Ladder_Web.cpp @@ -17,7 +17,6 @@ */ #include "Jupiter/IRC_Client.h" -#include "Jupiter/INIFile.h" #include "Jupiter/HTTP.h" #include "Jupiter/HTTP_QueryString.h" #include "HTTPServer.h" @@ -28,11 +27,11 @@ using namespace Jupiter::literals; bool RenX_Ladder_WebPlugin::initialize() { - RenX_Ladder_WebPlugin::ladder_page_name = this->config.get(Jupiter::ReferenceString::empty, "LadderPageName"_jrs, ""_jrs); - RenX_Ladder_WebPlugin::search_page_name = this->config.get(Jupiter::ReferenceString::empty, "SearchPageName"_jrs, "search"_jrs); - RenX_Ladder_WebPlugin::profile_page_name = this->config.get(Jupiter::ReferenceString::empty, "ProfilePageName"_jrs, "profile"_jrs); - RenX_Ladder_WebPlugin::web_hostname = this->config.get(Jupiter::ReferenceString::empty, "Hostname"_jrs, ""_jrs); - RenX_Ladder_WebPlugin::web_path = this->config.get(Jupiter::ReferenceString::empty, "Path"_jrs, "/"_jrs); + RenX_Ladder_WebPlugin::ladder_page_name = this->config.get("LadderPageName"_jrs, ""_jrs); + RenX_Ladder_WebPlugin::search_page_name = this->config.get("SearchPageName"_jrs, "search"_jrs); + RenX_Ladder_WebPlugin::profile_page_name = this->config.get("ProfilePageName"_jrs, "profile"_jrs); + RenX_Ladder_WebPlugin::web_hostname = this->config.get("Hostname"_jrs, ""_jrs); + RenX_Ladder_WebPlugin::web_path = this->config.get("Path"_jrs, "/"_jrs); this->init(); @@ -73,17 +72,17 @@ void RenX_Ladder_WebPlugin::init() FILE *file; int chr; - RenX_Ladder_WebPlugin::web_header_filename = this->config.get(Jupiter::ReferenceString::empty, "HeaderFilename"_jrs, "RenX.Ladder.Web.Header.html"_jrs); - RenX_Ladder_WebPlugin::web_footer_filename = this->config.get(Jupiter::ReferenceString::empty, "FooterFilename"_jrs, "RenX.Ladder.Web.Footer.html"_jrs); - RenX_Ladder_WebPlugin::web_profile_filename = this->config.get(Jupiter::ReferenceString::empty, "ProfileFilename"_jrs, "RenX.Ladder.Web.Profile.html"_jrs); - RenX_Ladder_WebPlugin::web_ladder_table_header_filename = this->config.get(Jupiter::ReferenceString::empty, "LadderTableHeaderFilename"_jrs, "RenX.Ladder.Web.Ladder.Table.Header.html"_jrs); - RenX_Ladder_WebPlugin::web_ladder_table_footer_filename = this->config.get(Jupiter::ReferenceString::empty, "LadderTableFooterFilename"_jrs, "RenX.Ladder.Web.Ladder.Table.Footer.html"_jrs); - RenX_Ladder_WebPlugin::entries_per_page = this->config.getInt(Jupiter::ReferenceString::empty, "EntriesPerPage"_jrs, 50); - RenX_Ladder_WebPlugin::min_search_name_length = this->config.getInt(Jupiter::ReferenceString::empty, "MinSearchNameLength"_jrs, 3); + RenX_Ladder_WebPlugin::web_header_filename = this->config.get("HeaderFilename"_jrs, "RenX.Ladder.Web.Header.html"_jrs); + RenX_Ladder_WebPlugin::web_footer_filename = this->config.get("FooterFilename"_jrs, "RenX.Ladder.Web.Footer.html"_jrs); + RenX_Ladder_WebPlugin::web_profile_filename = this->config.get("ProfileFilename"_jrs, "RenX.Ladder.Web.Profile.html"_jrs); + RenX_Ladder_WebPlugin::web_ladder_table_header_filename = this->config.get("LadderTableHeaderFilename"_jrs, "RenX.Ladder.Web.Ladder.Table.Header.html"_jrs); + RenX_Ladder_WebPlugin::web_ladder_table_footer_filename = this->config.get("LadderTableFooterFilename"_jrs, "RenX.Ladder.Web.Ladder.Table.Footer.html"_jrs); + RenX_Ladder_WebPlugin::entries_per_page = this->config.get("EntriesPerPage"_jrs, 50); + RenX_Ladder_WebPlugin::min_search_name_length = this->config.get("MinSearchNameLength"_jrs, 3); - RenX_Ladder_WebPlugin::entry_table_row = this->config.get(Jupiter::ReferenceString::empty, "EntryTableRow"_jrs, R"html({RANK}{NAME}{SCORE}{SPM}{GAMES}{WINS}{LOSSES}{WLR}{KILLS}{DEATHS}{KDR})html"_jrs); - RenX_Ladder_WebPlugin::entry_profile_previous = this->config.get(Jupiter::ReferenceString::empty, "EntryProfilePrevious"_jrs, R"html(
)html"_jrs); - RenX_Ladder_WebPlugin::entry_profile_next = this->config.get(Jupiter::ReferenceString::empty, "EntryProfileNext"_jrs, R"html(
)html"_jrs); + RenX_Ladder_WebPlugin::entry_table_row = this->config.get("EntryTableRow"_jrs, R"html({RANK}{NAME}{SCORE}{SPM}{GAMES}{WINS}{LOSSES}{WLR}{KILLS}{DEATHS}{KDR})html"_jrs); + RenX_Ladder_WebPlugin::entry_profile_previous = this->config.get("EntryProfilePrevious"_jrs, R"html(
)html"_jrs); + RenX_Ladder_WebPlugin::entry_profile_next = this->config.get("EntryProfileNext"_jrs, R"html(
)html"_jrs); RenX::sanitizeTags(RenX_Ladder_WebPlugin::entry_table_row); RenX::sanitizeTags(RenX_Ladder_WebPlugin::entry_profile_previous); @@ -185,7 +184,7 @@ Jupiter::String generate_search(RenX::LadderDatabase *db) } /** Database selector */ -Jupiter::String generate_database_selector(RenX::LadderDatabase *db, const Jupiter::INIFile::Section &query_params) +Jupiter::String generate_database_selector(RenX::LadderDatabase *db, const Jupiter::HashTable &query_params) { RenX::LadderDatabase *db_ptr; Jupiter::String result(256); @@ -215,17 +214,13 @@ Jupiter::String generate_database_selector(RenX::LadderDatabase *db, const Jupit result += ""_jrs; } } - - Jupiter::INIFile::Section::KeyValuePair *pair; - for (size_t index = 0; index != query_params.size(); ++index) + + const Jupiter::ReadableString *value = query_params.get("id"_jrs); + if (value != nullptr) { - pair = query_params.getPair(index); - if (pair->getKey().equalsi("id")) - { - result += R"html(getValue(); - result += R"html("/>)html"_jrs; - } + result += R"html()html"_jrs; } result += R"database-select()database-select"_jrs; @@ -314,7 +309,7 @@ Jupiter::String RenX_Ladder_WebPlugin::generate_entry_table(RenX::LadderDatabase return result; } -Jupiter::String *RenX_Ladder_WebPlugin::generate_ladder_page(RenX::LadderDatabase *db, uint8_t format, size_t index, size_t count, const Jupiter::INIFile::Section &query_params) +Jupiter::String *RenX_Ladder_WebPlugin::generate_ladder_page(RenX::LadderDatabase *db, uint8_t format, size_t index, size_t count, const Jupiter::HashTable &query_params) { Jupiter::String *result = new Jupiter::String(2048); @@ -339,7 +334,7 @@ Jupiter::String *RenX_Ladder_WebPlugin::generate_ladder_page(RenX::LadderDatabas // include_header | include_footer | include_any_headers | include_any_footers /** Search page */ -Jupiter::String *RenX_Ladder_WebPlugin::generate_search_page(RenX::LadderDatabase *db, uint8_t format, size_t start_index, size_t count, const Jupiter::ReadableString &name, const Jupiter::INIFile::Section &query_params) +Jupiter::String *RenX_Ladder_WebPlugin::generate_search_page(RenX::LadderDatabase *db, uint8_t format, size_t start_index, size_t count, const Jupiter::ReadableString &name, const Jupiter::HashTable &query_params) { Jupiter::String *result = new Jupiter::String(2048); @@ -390,7 +385,7 @@ Jupiter::String *RenX_Ladder_WebPlugin::generate_search_page(RenX::LadderDatabas } /** Profile page */ -Jupiter::String *RenX_Ladder_WebPlugin::generate_profile_page(RenX::LadderDatabase *db, uint8_t format, uint64_t steam_id, const Jupiter::INIFile::Section &query_params) +Jupiter::String *RenX_Ladder_WebPlugin::generate_profile_page(RenX::LadderDatabase *db, uint8_t format, uint64_t steam_id, const Jupiter::HashTable &query_params) { Jupiter::String *result = new Jupiter::String(2048); @@ -457,7 +452,7 @@ Jupiter::String *RenX_Ladder_WebPlugin::generate_profile_page(RenX::LadderDataba /** Content functions */ -Jupiter::ReadableString *generate_no_db_page(const Jupiter::INIFile::Section &query_params) +Jupiter::ReadableString *generate_no_db_page(const Jupiter::HashTable &query_params) { Jupiter::String *result = new Jupiter::String(pluginInstance.header); if (RenX::ladder_databases.size() != 0) @@ -481,11 +476,11 @@ Jupiter::ReadableString *handle_ladder_page(const Jupiter::ReadableString &query if (html_form_response.table.size() != 0) { - format = static_cast(html_form_response.table.getInt("format"_jrs, format)); - start_index = static_cast(html_form_response.table.getInt("start"_jrs, start_index)); - count = static_cast(html_form_response.table.getInt("count"_jrs, count)); + format = html_form_response.table.getCast("format"_jrs, format); + start_index = html_form_response.table.getCast("start"_jrs, start_index); + count = html_form_response.table.getCast("count"_jrs, count); - const Jupiter::ReadableString &db_name = html_form_response.table.get("database"_jrs); + const Jupiter::ReadableString &db_name = html_form_response.table.get("database"_jrs, Jupiter::ReferenceString::empty); if (db_name.isNotEmpty()) { db = nullptr; @@ -514,12 +509,12 @@ Jupiter::ReadableString *handle_search_page(const Jupiter::ReadableString &query if (html_form_response.table.size() != 0) { - format = static_cast(html_form_response.table.getInt("format"_jrs, format)); - start_index = static_cast(html_form_response.table.getInt("start"_jrs, start_index)); - count = static_cast(html_form_response.table.getInt("count"_jrs, count)); - name = html_form_response.table.get("name"_jrs); + format = html_form_response.table.getCast("format"_jrs, format); + start_index = html_form_response.table.getCast("start"_jrs, start_index); + count = html_form_response.table.getCast("count"_jrs, count); + name = html_form_response.table.get("name"_jrs, name); - const Jupiter::ReadableString &db_name = html_form_response.table.get("database"_jrs); + const Jupiter::ReadableString &db_name = html_form_response.table.get("database"_jrs, Jupiter::ReferenceString::empty); if (db_name.isNotEmpty()) { db = nullptr; @@ -550,10 +545,10 @@ Jupiter::ReadableString *handle_profile_page(const Jupiter::ReadableString &quer if (html_form_response.table.size() != 0) { - format = static_cast(html_form_response.table.getInt("format"_jrs, format)); - steam_id = html_form_response.table.getLongLong("id"_jrs); + format = html_form_response.table.getCast("format"_jrs, format); + steam_id = html_form_response.table.getCast("id"_jrs, steam_id); - const Jupiter::ReadableString &db_name = html_form_response.table.get("database"_jrs); + const Jupiter::ReadableString &db_name = html_form_response.table.get("database"_jrs, Jupiter::ReferenceString::empty); if (db_name.isNotEmpty()) { db = nullptr; diff --git a/RenX.Ladder.Web/RenX_Ladder_Web.h b/RenX.Ladder.Web/RenX_Ladder_Web.h index d18956d..6077c60 100644 --- a/RenX.Ladder.Web/RenX_Ladder_Web.h +++ b/RenX.Ladder.Web/RenX_Ladder_Web.h @@ -22,7 +22,6 @@ #include "Jupiter/Plugin.h" #include "Jupiter/Reference_String.h" #include "Jupiter/CString.h" -#include "Jupiter/INIFile.h" #include "RenX_Plugin.h" class RenX_Ladder_WebPlugin : public RenX::Plugin @@ -40,9 +39,9 @@ class RenX_Ladder_WebPlugin : public RenX::Plugin Jupiter::StringS header; Jupiter::StringS footer; - Jupiter::String *generate_ladder_page(RenX::LadderDatabase *db, uint8_t format, size_t start_index, size_t count, const Jupiter::INIFile::Section &query_params); - Jupiter::String *generate_search_page(RenX::LadderDatabase *db, uint8_t format, size_t start_index, size_t count, const Jupiter::ReadableString &name, const Jupiter::INIFile::Section &query_params); - Jupiter::String *generate_profile_page(RenX::LadderDatabase *db, uint8_t format, uint64_t steam_id, const Jupiter::INIFile::Section &query_params); + Jupiter::String *generate_ladder_page(RenX::LadderDatabase *db, uint8_t format, size_t start_index, size_t count, const Jupiter::HashTable &query_params); + Jupiter::String *generate_search_page(RenX::LadderDatabase *db, uint8_t format, size_t start_index, size_t count, const Jupiter::ReadableString &name, const Jupiter::HashTable &query_params); + Jupiter::String *generate_profile_page(RenX::LadderDatabase *db, uint8_t format, uint64_t steam_id, const Jupiter::HashTable &query_params); inline size_t getEntriesPerPage() const { return this->entries_per_page; } inline size_t getMinSearchNameLength() const { return this->min_search_name_length; }; diff --git a/RenX.Ladder.Weekly/RenX_Ladder_Weekly.cpp b/RenX.Ladder.Weekly/RenX_Ladder_Weekly.cpp index 53fd0a2..bdae0f9 100644 --- a/RenX.Ladder.Weekly/RenX_Ladder_Weekly.cpp +++ b/RenX.Ladder.Weekly/RenX_Ladder_Weekly.cpp @@ -17,7 +17,6 @@ */ #include -#include "Jupiter/INIFile.h" #include "Jupiter/IRC_Client.h" #include "RenX_Ladder_Weekly.h" @@ -26,16 +25,16 @@ using namespace Jupiter::literals; bool RenX_Ladder_Weekly_TimePlugin::initialize() { // Load database - this->database.process_file(this->config.get(Jupiter::ReferenceString::empty, "LadderDatabase"_jrs, "Ladder.Weekly.db"_jrs)); - this->database.setName(this->config.get(Jupiter::ReferenceString::empty, "DatabaseName"_jrs, "Weekly"_jrs)); - this->database.setOutputTimes(this->config.getBool(Jupiter::ReferenceString::empty, "OutputTimes"_jrs, false)); + this->database.process_file(this->config.get("LadderDatabase"_jrs, "Ladder.Weekly.db"_jrs)); + this->database.setName(this->config.get("DatabaseName"_jrs, "Weekly"_jrs)); + this->database.setOutputTimes(this->config.get("OutputTimes"_jrs, false)); this->last_sorted_day = gmtime(std::addressof(time(0)))->tm_wday; - this->reset_day = this->config.getInt(Jupiter::ReferenceString::empty, "ResetDay"_jrs); + this->reset_day = this->config.get("ResetDay"_jrs); this->database.OnPreUpdateLadder = OnPreUpdateLadder; // Force database to default, if desired - if (this->config.getBool(Jupiter::ReferenceString::empty, "ForceDefault"_jrs, false)) + if (this->config.get("ForceDefault"_jrs, false)) RenX::default_ladder_database = &this->database; return true; diff --git a/RenX.Ladder.Yearly/RenX_Ladder_Yearly.cpp b/RenX.Ladder.Yearly/RenX_Ladder_Yearly.cpp index c21a4b1..9cfe01c 100644 --- a/RenX.Ladder.Yearly/RenX_Ladder_Yearly.cpp +++ b/RenX.Ladder.Yearly/RenX_Ladder_Yearly.cpp @@ -17,7 +17,6 @@ */ #include -#include "Jupiter/INIFile.h" #include "Jupiter/IRC_Client.h" #include "RenX_Ladder_Yearly.h" @@ -26,15 +25,15 @@ using namespace Jupiter::literals; bool RenX_Ladder_Yearly_TimePlugin::initialize() { // Load database - this->database.process_file(this->config.get(Jupiter::ReferenceString::empty, "LadderDatabase"_jrs, "Ladder.Yearly.db"_jrs)); - this->database.setName(this->config.get(Jupiter::ReferenceString::empty, "DatabaseName"_jrs, "Yearly"_jrs)); - this->database.setOutputTimes(this->config.getBool(Jupiter::ReferenceString::empty, "OutputTimes"_jrs, false)); + this->database.process_file(this->config.get("LadderDatabase"_jrs, "Ladder.Yearly.db"_jrs)); + this->database.setName(this->config.get("DatabaseName"_jrs, "Yearly"_jrs)); + this->database.setOutputTimes(this->config.get("OutputTimes"_jrs, false)); this->last_sorted_year = gmtime(std::addressof(time(0)))->tm_year; this->database.OnPreUpdateLadder = OnPreUpdateLadder; // Force database to default, if desired - if (this->config.getBool(Jupiter::ReferenceString::empty, "ForceDefault"_jrs, false)) + if (this->config.get("ForceDefault"_jrs, false)) RenX::default_ladder_database = &this->database; return true; diff --git a/RenX.Ladder/RenX_Ladder.cpp b/RenX.Ladder/RenX_Ladder.cpp index abe2153..717177d 100644 --- a/RenX.Ladder/RenX_Ladder.cpp +++ b/RenX.Ladder/RenX_Ladder.cpp @@ -17,7 +17,6 @@ */ #include -#include "Jupiter/INIFile.h" #include "Console_Command.h" #include "RenX_Ladder.h" #include "RenX_Server.h" @@ -28,8 +27,8 @@ using namespace Jupiter::literals; bool RenX_LadderPlugin::initialize() { - RenX_LadderPlugin::only_pure = this->config.getBool(Jupiter::ReferenceString::empty, "OnlyPure"_jrs, false); - int mlcpno = this->config.getInt(Jupiter::ReferenceString::empty, "MaxLadderCommandPartNameOutput"_jrs, 5); + RenX_LadderPlugin::only_pure = this->config.get("OnlyPure"_jrs, false); + int mlcpno = this->config.get("MaxLadderCommandPartNameOutput"_jrs, 5); if (mlcpno < 0) RenX_LadderPlugin::max_ladder_command_part_name_output = 0; else @@ -59,8 +58,8 @@ void RenX_LadderPlugin::RenX_OnGameOver(RenX::Server *server, RenX::WinType winT if (server->isRanked() && server->isReliable() && server->players.size() != server->getBotCount()) { char chr = static_cast(team); - server->varData.set(this->name, "t"_jrs, Jupiter::ReferenceString(&chr, 1)); - server->varData.set(this->name, "w"_jrs, "1"_jrs); + server->varData[this->name].set("t"_jrs, Jupiter::ReferenceString(&chr, 1)); + server->varData[this->name].set("w"_jrs, "1"_jrs); server->updateClientList(); } } @@ -69,10 +68,10 @@ void RenX_LadderPlugin::RenX_OnCommand(RenX::Server *server, const Jupiter::Read { if (server->getCurrentRCONCommand().equalsi("clientvarlist"_jrs)) { - if (server->varData.get(this->name, "w"_jrs, "0"_jrs).equals("1")) + if (server->varData[this->name].get("w"_jrs, "0"_jrs).equals("1")) { - server->varData.set(this->name, "w"_jrs, "0"_jrs); - RenX::TeamType team = static_cast(server->varData.get(this->name, "t"_jrs, "\0"_jrs).get(0)); + server->varData[this->name].set("w"_jrs, "0"_jrs); + RenX::TeamType team = static_cast(server->varData[this->name].get("t"_jrs, "\0"_jrs).get(0)); for (size_t index = 0; index != RenX::ladder_databases.size(); ++index) RenX::ladder_databases.get(index)->updateLadder(server, team); } diff --git a/RenX.Listen/RenX_Listen.cpp b/RenX.Listen/RenX_Listen.cpp index 25f4140..e04723c 100644 --- a/RenX.Listen/RenX_Listen.cpp +++ b/RenX.Listen/RenX_Listen.cpp @@ -17,12 +17,13 @@ */ #include "Jupiter/IRC_Client.h" -#include "Jupiter/INIFile.h" #include "Jupiter/CString.h" #include "RenX_Listen.h" #include "RenX_Core.h" #include "RenX_Server.h" +using namespace Jupiter::literals; + RenX_ListenPlugin::~RenX_ListenPlugin() { RenX_ListenPlugin::socket.close(); @@ -30,9 +31,10 @@ RenX_ListenPlugin::~RenX_ListenPlugin() bool RenX_ListenPlugin::initialize() { - uint16_t port = this->config.getInt(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Port"), 21337); - const Jupiter::ReadableString &address = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Address"), STRING_LITERAL_AS_REFERENCE("0.0.0.0")); - RenX_ListenPlugin::serverSection = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("ServerSection"), this->getName()); + uint16_t port = this->config.get("Port"_jrs, 21337); + const Jupiter::ReadableString &address = this->config.get("Address"_jrs, "0.0.0.0"_jrs); + RenX_ListenPlugin::serverSection = this->config.get("ServerSection"_jrs, this->getName()); + return RenX_ListenPlugin::socket.bind(Jupiter::CStringS(address).c_str(), port, true) && RenX_ListenPlugin::socket.setBlocking(false); } @@ -55,9 +57,10 @@ int RenX_ListenPlugin::OnRehash() { RenX::Plugin::OnRehash(); - uint16_t port = this->config.getInt(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Port"), 21337); - const Jupiter::ReadableString &address = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Address"), STRING_LITERAL_AS_REFERENCE("0.0.0.0")); - RenX_ListenPlugin::serverSection = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("ServerSection"), this->getName()); + uint16_t port = this->config.get("Port"_jrs, 21337); + const Jupiter::ReadableString &address = this->config.get("Address"_jrs, "0.0.0.0"_jrs); + RenX_ListenPlugin::serverSection = this->config.get("ServerSection"_jrs, this->getName()); + if (port != RenX_ListenPlugin::socket.getRemotePort() || address.equals(RenX_ListenPlugin::socket.getRemoteHostname()) == false) { puts("Notice: The Renegade-X listening socket has been changed!"); diff --git a/RenX.Logging/RenX_Logging.cpp b/RenX.Logging/RenX_Logging.cpp index f4a26ff..066e1b3 100644 --- a/RenX.Logging/RenX_Logging.cpp +++ b/RenX.Logging/RenX_Logging.cpp @@ -16,7 +16,6 @@ * Written by Jessica James */ -#include "Jupiter/INIFile.h" #include "IRC_Bot.h" #include "RenX_Logging.h" #include "RenX_Core.h" @@ -29,404 +28,404 @@ using namespace Jupiter::literals; bool RenX_LoggingPlugin::initialize() { - RenX_LoggingPlugin::muteOwnExecute = this->config.getBool(Jupiter::ReferenceString::empty, "MuteOwnExecute"_jrs, true); - RenX_LoggingPlugin::playerRDNSPublic = this->config.getBool(Jupiter::ReferenceString::empty, "PlayerRDNSPublic"_jrs, false); - RenX_LoggingPlugin::playerIdentifyPublic = this->config.getBool(Jupiter::ReferenceString::empty, "PlayerIdentifyPublic"_jrs, false); - RenX_LoggingPlugin::joinPublic = this->config.getBool(Jupiter::ReferenceString::empty, "JoinPublic"_jrs, true); - RenX_LoggingPlugin::partPublic = this->config.getBool(Jupiter::ReferenceString::empty, "PartPublic"_jrs, true); - RenX_LoggingPlugin::kickPublic = this->config.getBool(Jupiter::ReferenceString::empty, "KickPublic"_jrs, true); - RenX_LoggingPlugin::nameChangePublic = this->config.getBool(Jupiter::ReferenceString::empty, "NameChangePublic"_jrs, true); - RenX_LoggingPlugin::teamChangePublic = this->config.getBool(Jupiter::ReferenceString::empty, "TeamChangePublic"_jrs, true); - RenX_LoggingPlugin::speedHackPublic = this->config.getBool(Jupiter::ReferenceString::empty, "SpeedHackPublic"_jrs, false); - RenX_LoggingPlugin::playerPublic = this->config.getBool(Jupiter::ReferenceString::empty, "PlayerPublic"_jrs, false); - RenX_LoggingPlugin::chatPublic = this->config.getBool(Jupiter::ReferenceString::empty, "ChatPublic"_jrs, true); - RenX_LoggingPlugin::teamChatPublic = this->config.getBool(Jupiter::ReferenceString::empty, "TeamChatPublic"_jrs, false); - RenX_LoggingPlugin::radioChatPublic = this->config.getBool(Jupiter::ReferenceString::empty, "RadioChatPublic"_jrs, false); - RenX_LoggingPlugin::hostChatPublic = this->config.getBool(Jupiter::ReferenceString::empty, "HostChatPublic"_jrs, true); - RenX_LoggingPlugin::hostPagePublic = this->config.getBool(Jupiter::ReferenceString::empty, "HostPagePublic"_jrs, false); - RenX_LoggingPlugin::otherChatPublic = this->config.getBool(Jupiter::ReferenceString::empty, "OtherChatPublic"_jrs, false); - RenX_LoggingPlugin::deployPublic = this->config.getBool(Jupiter::ReferenceString::empty, "DeployPublic"_jrs, true); - RenX_LoggingPlugin::mineDeployPublic = this->config.getBool(Jupiter::ReferenceString::empty, "MineDeployPublic"_jrs, false); - RenX_LoggingPlugin::overMinePublic = this->config.getBool(Jupiter::ReferenceString::empty, "OverMinePublic"_jrs, false); - RenX_LoggingPlugin::disarmPublic = this->config.getBool(Jupiter::ReferenceString::empty, "DisarmPublic"_jrs, true); - RenX_LoggingPlugin::mineDisarmPublic = this->config.getBool(Jupiter::ReferenceString::empty, "MineDisarmPublic"_jrs, false); - RenX_LoggingPlugin::explodePublic = this->config.getBool(Jupiter::ReferenceString::empty, "ExplodePublic"_jrs, false); - RenX_LoggingPlugin::suicidePublic = this->config.getBool(Jupiter::ReferenceString::empty, "SuicidePublic"_jrs, true); - RenX_LoggingPlugin::killPublic = this->config.getBool(Jupiter::ReferenceString::empty, "KillPublic"_jrs, true); - RenX_LoggingPlugin::diePublic = this->config.getBool(Jupiter::ReferenceString::empty, "DiePublic"_jrs, true); - RenX_LoggingPlugin::destroyPublic = this->config.getBool(Jupiter::ReferenceString::empty, "DestroyPublic"_jrs, true); - RenX_LoggingPlugin::capturePublic = this->config.getBool(Jupiter::ReferenceString::empty, "CapturePublic"_jrs, true); - RenX_LoggingPlugin::neutralizePublic = this->config.getBool(Jupiter::ReferenceString::empty, "NeutralizePublic"_jrs, true); - RenX_LoggingPlugin::characterPurchasePublic = this->config.getBool(Jupiter::ReferenceString::empty, "CharacterPurchasePublic"_jrs, false); - RenX_LoggingPlugin::itemPurchasePublic = this->config.getBool(Jupiter::ReferenceString::empty, "ItemPurchasePublic"_jrs, false); - RenX_LoggingPlugin::weaponPurchasePublic = this->config.getBool(Jupiter::ReferenceString::empty, "WeaponPurchasePublic"_jrs, false); - RenX_LoggingPlugin::refillPurchasePublic = this->config.getBool(Jupiter::ReferenceString::empty, "RefillPurchasePublic"_jrs, false); - RenX_LoggingPlugin::vehiclePurchasePublic = this->config.getBool(Jupiter::ReferenceString::empty, "VehiclePurchasePublic"_jrs, false); - RenX_LoggingPlugin::vehicleSpawnPublic = this->config.getBool(Jupiter::ReferenceString::empty, "VehicleSpawnPublic"_jrs, true); - RenX_LoggingPlugin::spawnPublic = this->config.getBool(Jupiter::ReferenceString::empty, "SpawnPublic"_jrs, true); - RenX_LoggingPlugin::botJoinPublic = this->config.getBool(Jupiter::ReferenceString::empty, "BotJoinPublic"_jrs, true); - RenX_LoggingPlugin::vehicleCratePublic = this->config.getBool(Jupiter::ReferenceString::empty, "VehicleCratePublic"_jrs, false); - RenX_LoggingPlugin::TSVehicleCratePublic = this->config.getBool(Jupiter::ReferenceString::empty, "TSVehicleCratePublic"_jrs, RenX_LoggingPlugin::vehicleCratePublic); - RenX_LoggingPlugin::RAVehicleCratePublic = this->config.getBool(Jupiter::ReferenceString::empty, "RAVehicleCratePublic"_jrs, RenX_LoggingPlugin::vehicleCratePublic); - RenX_LoggingPlugin::deathCratePublic = this->config.getBool(Jupiter::ReferenceString::empty, "DeathCratePublic"_jrs, true); - RenX_LoggingPlugin::moneyCratePublic = this->config.getBool(Jupiter::ReferenceString::empty, "MoneyCratePublic"_jrs, false); - RenX_LoggingPlugin::characterCratePublic = this->config.getBool(Jupiter::ReferenceString::empty, "CharacterCratePublic"_jrs, false); - RenX_LoggingPlugin::spyCratePublic = this->config.getBool(Jupiter::ReferenceString::empty, "SpyCratePublic"_jrs, false); - RenX_LoggingPlugin::refillCratePublic = this->config.getBool(Jupiter::ReferenceString::empty, "RefillCratePublic"_jrs, false); - RenX_LoggingPlugin::timeBombCratePublic = this->config.getBool(Jupiter::ReferenceString::empty, "TimeBombCratePublic"_jrs, false); - RenX_LoggingPlugin::speedCratePublic = this->config.getBool(Jupiter::ReferenceString::empty, "SpeedCratePublic"_jrs, false); - RenX_LoggingPlugin::nukeCratePublic = this->config.getBool(Jupiter::ReferenceString::empty, "NukeCratePublic"_jrs, true); - RenX_LoggingPlugin::abductionCratePublic = this->config.getBool(Jupiter::ReferenceString::empty, "AbductionCratePublic"_jrs, true); - RenX_LoggingPlugin::unspecifiedCratePublic = this->config.getBool(Jupiter::ReferenceString::empty, "UnspecifiedCratePublic"_jrs, false); - RenX_LoggingPlugin::otherCratePublic = this->config.getBool(Jupiter::ReferenceString::empty, "OtherCratePublic"_jrs, false); - RenX_LoggingPlugin::stealPublic = this->config.getBool(Jupiter::ReferenceString::empty, "StealPublic"_jrs, true); - RenX_LoggingPlugin::donatePublic = this->config.getBool(Jupiter::ReferenceString::empty, "DonatePublic"_jrs, true); - RenX_LoggingPlugin::gamePublic = this->config.getBool(Jupiter::ReferenceString::empty, "GamePublic"_jrs, true); - RenX_LoggingPlugin::gameOverPublic = this->config.getBool(Jupiter::ReferenceString::empty, "GameOverPublic"_jrs, true); - RenX_LoggingPlugin::executePublic = this->config.getBool(Jupiter::ReferenceString::empty, "ExecutePublic"_jrs, false); - RenX_LoggingPlugin::playerCommandPublic = this->config.getBool(Jupiter::ReferenceString::empty, "PlayerCommandPublic"_jrs, false); - RenX_LoggingPlugin::subscribePublic = this->config.getBool(Jupiter::ReferenceString::empty, "SubscribePublic"_jrs, false); - RenX_LoggingPlugin::RCONPublic = this->config.getBool(Jupiter::ReferenceString::empty, "RCONPublic"_jrs, false); - RenX_LoggingPlugin::adminLoginPublic = this->config.getBool(Jupiter::ReferenceString::empty, "AdminLoginPublic"_jrs, true); - RenX_LoggingPlugin::adminGrantPublic = this->config.getBool(Jupiter::ReferenceString::empty, "AdminGrantPublic"_jrs, true); - RenX_LoggingPlugin::adminLogoutPublic = this->config.getBool(Jupiter::ReferenceString::empty, "AdminLogoutPublic"_jrs, true); - RenX_LoggingPlugin::adminPublic = this->config.getBool(Jupiter::ReferenceString::empty, "AdminPublic"_jrs, false); - RenX_LoggingPlugin::voteCallPublic = this->config.getBool(Jupiter::ReferenceString::empty, "VoteCallPublic"_jrs, true); - RenX_LoggingPlugin::voteOverPublic = this->config.getBool(Jupiter::ReferenceString::empty, "VoteOverPublic"_jrs, true); - RenX_LoggingPlugin::voteCancelPublic = this->config.getBool(Jupiter::ReferenceString::empty, "VoteCancelPublic"_jrs, true); - RenX_LoggingPlugin::votePublic = this->config.getBool(Jupiter::ReferenceString::empty, "VotePublic"_jrs, false); - RenX_LoggingPlugin::mapChangePublic = this->config.getBool(Jupiter::ReferenceString::empty, "MapChangePublic"_jrs, true); - RenX_LoggingPlugin::mapLoadPublic = this->config.getBool(Jupiter::ReferenceString::empty, "MapLoadPublic"_jrs, true); - RenX_LoggingPlugin::mapStartPublic = this->config.getBool(Jupiter::ReferenceString::empty, "MapStartPublic"_jrs, true); - RenX_LoggingPlugin::mapPublic = this->config.getBool(Jupiter::ReferenceString::empty, "MapPublic"_jrs, false); - RenX_LoggingPlugin::demoRecordPublic = this->config.getBool(Jupiter::ReferenceString::empty, "DemoRecordPublic"_jrs, true); - RenX_LoggingPlugin::demoRecordStopPublic = this->config.getBool(Jupiter::ReferenceString::empty, "DemoRecordStopPublic"_jrs, true); - RenX_LoggingPlugin::demoPublic = this->config.getBool(Jupiter::ReferenceString::empty, "DemoPublic"_jrs, false); - RenX_LoggingPlugin::logPublic = this->config.getBool(Jupiter::ReferenceString::empty, "LogPublic"_jrs, false); - RenX_LoggingPlugin::commandPublic = this->config.getBool(Jupiter::ReferenceString::empty, "CommandPublic"_jrs, false); - RenX_LoggingPlugin::errorPublic = this->config.getBool(Jupiter::ReferenceString::empty, "ErrorPublic"_jrs, false); - RenX_LoggingPlugin::versionPublic = this->config.getBool(Jupiter::ReferenceString::empty, "VersionPublic"_jrs, true); - RenX_LoggingPlugin::authorizedPublic = this->config.getBool(Jupiter::ReferenceString::empty, "AuthorizedPublic"_jrs, true); - RenX_LoggingPlugin::otherPublic = this->config.getBool(Jupiter::ReferenceString::empty, "OtherPublic"_jrs, false); + RenX_LoggingPlugin::muteOwnExecute = this->config.get("MuteOwnExecute"_jrs, true); + RenX_LoggingPlugin::playerRDNSPublic = this->config.get("PlayerRDNSPublic"_jrs, false); + RenX_LoggingPlugin::playerIdentifyPublic = this->config.get("PlayerIdentifyPublic"_jrs, false); + RenX_LoggingPlugin::joinPublic = this->config.get("JoinPublic"_jrs, true); + RenX_LoggingPlugin::partPublic = this->config.get("PartPublic"_jrs, true); + RenX_LoggingPlugin::kickPublic = this->config.get("KickPublic"_jrs, true); + RenX_LoggingPlugin::nameChangePublic = this->config.get("NameChangePublic"_jrs, true); + RenX_LoggingPlugin::teamChangePublic = this->config.get("TeamChangePublic"_jrs, true); + RenX_LoggingPlugin::speedHackPublic = this->config.get("SpeedHackPublic"_jrs, false); + RenX_LoggingPlugin::playerPublic = this->config.get("PlayerPublic"_jrs, false); + RenX_LoggingPlugin::chatPublic = this->config.get("ChatPublic"_jrs, true); + RenX_LoggingPlugin::teamChatPublic = this->config.get("TeamChatPublic"_jrs, false); + RenX_LoggingPlugin::radioChatPublic = this->config.get("RadioChatPublic"_jrs, false); + RenX_LoggingPlugin::hostChatPublic = this->config.get("HostChatPublic"_jrs, true); + RenX_LoggingPlugin::hostPagePublic = this->config.get("HostPagePublic"_jrs, false); + RenX_LoggingPlugin::otherChatPublic = this->config.get("OtherChatPublic"_jrs, false); + RenX_LoggingPlugin::deployPublic = this->config.get("DeployPublic"_jrs, true); + RenX_LoggingPlugin::mineDeployPublic = this->config.get("MineDeployPublic"_jrs, false); + RenX_LoggingPlugin::overMinePublic = this->config.get("OverMinePublic"_jrs, false); + RenX_LoggingPlugin::disarmPublic = this->config.get("DisarmPublic"_jrs, true); + RenX_LoggingPlugin::mineDisarmPublic = this->config.get("MineDisarmPublic"_jrs, false); + RenX_LoggingPlugin::explodePublic = this->config.get("ExplodePublic"_jrs, false); + RenX_LoggingPlugin::suicidePublic = this->config.get("SuicidePublic"_jrs, true); + RenX_LoggingPlugin::killPublic = this->config.get("KillPublic"_jrs, true); + RenX_LoggingPlugin::diePublic = this->config.get("DiePublic"_jrs, true); + RenX_LoggingPlugin::destroyPublic = this->config.get("DestroyPublic"_jrs, true); + RenX_LoggingPlugin::capturePublic = this->config.get("CapturePublic"_jrs, true); + RenX_LoggingPlugin::neutralizePublic = this->config.get("NeutralizePublic"_jrs, true); + RenX_LoggingPlugin::characterPurchasePublic = this->config.get("CharacterPurchasePublic"_jrs, false); + RenX_LoggingPlugin::itemPurchasePublic = this->config.get("ItemPurchasePublic"_jrs, false); + RenX_LoggingPlugin::weaponPurchasePublic = this->config.get("WeaponPurchasePublic"_jrs, false); + RenX_LoggingPlugin::refillPurchasePublic = this->config.get("RefillPurchasePublic"_jrs, false); + RenX_LoggingPlugin::vehiclePurchasePublic = this->config.get("VehiclePurchasePublic"_jrs, false); + RenX_LoggingPlugin::vehicleSpawnPublic = this->config.get("VehicleSpawnPublic"_jrs, true); + RenX_LoggingPlugin::spawnPublic = this->config.get("SpawnPublic"_jrs, true); + RenX_LoggingPlugin::botJoinPublic = this->config.get("BotJoinPublic"_jrs, true); + RenX_LoggingPlugin::vehicleCratePublic = this->config.get("VehicleCratePublic"_jrs, false); + RenX_LoggingPlugin::TSVehicleCratePublic = this->config.get("TSVehicleCratePublic"_jrs, RenX_LoggingPlugin::vehicleCratePublic); + RenX_LoggingPlugin::RAVehicleCratePublic = this->config.get("RAVehicleCratePublic"_jrs, RenX_LoggingPlugin::vehicleCratePublic); + RenX_LoggingPlugin::deathCratePublic = this->config.get("DeathCratePublic"_jrs, true); + RenX_LoggingPlugin::moneyCratePublic = this->config.get("MoneyCratePublic"_jrs, false); + RenX_LoggingPlugin::characterCratePublic = this->config.get("CharacterCratePublic"_jrs, false); + RenX_LoggingPlugin::spyCratePublic = this->config.get("SpyCratePublic"_jrs, false); + RenX_LoggingPlugin::refillCratePublic = this->config.get("RefillCratePublic"_jrs, false); + RenX_LoggingPlugin::timeBombCratePublic = this->config.get("TimeBombCratePublic"_jrs, false); + RenX_LoggingPlugin::speedCratePublic = this->config.get("SpeedCratePublic"_jrs, false); + RenX_LoggingPlugin::nukeCratePublic = this->config.get("NukeCratePublic"_jrs, true); + RenX_LoggingPlugin::abductionCratePublic = this->config.get("AbductionCratePublic"_jrs, true); + RenX_LoggingPlugin::unspecifiedCratePublic = this->config.get("UnspecifiedCratePublic"_jrs, false); + RenX_LoggingPlugin::otherCratePublic = this->config.get("OtherCratePublic"_jrs, false); + RenX_LoggingPlugin::stealPublic = this->config.get("StealPublic"_jrs, true); + RenX_LoggingPlugin::donatePublic = this->config.get("DonatePublic"_jrs, true); + RenX_LoggingPlugin::gamePublic = this->config.get("GamePublic"_jrs, true); + RenX_LoggingPlugin::gameOverPublic = this->config.get("GameOverPublic"_jrs, true); + RenX_LoggingPlugin::executePublic = this->config.get("ExecutePublic"_jrs, false); + RenX_LoggingPlugin::playerCommandPublic = this->config.get("PlayerCommandPublic"_jrs, false); + RenX_LoggingPlugin::subscribePublic = this->config.get("SubscribePublic"_jrs, false); + RenX_LoggingPlugin::RCONPublic = this->config.get("RCONPublic"_jrs, false); + RenX_LoggingPlugin::adminLoginPublic = this->config.get("AdminLoginPublic"_jrs, true); + RenX_LoggingPlugin::adminGrantPublic = this->config.get("AdminGrantPublic"_jrs, true); + RenX_LoggingPlugin::adminLogoutPublic = this->config.get("AdminLogoutPublic"_jrs, true); + RenX_LoggingPlugin::adminPublic = this->config.get("AdminPublic"_jrs, false); + RenX_LoggingPlugin::voteCallPublic = this->config.get("VoteCallPublic"_jrs, true); + RenX_LoggingPlugin::voteOverPublic = this->config.get("VoteOverPublic"_jrs, true); + RenX_LoggingPlugin::voteCancelPublic = this->config.get("VoteCancelPublic"_jrs, true); + RenX_LoggingPlugin::votePublic = this->config.get("VotePublic"_jrs, false); + RenX_LoggingPlugin::mapChangePublic = this->config.get("MapChangePublic"_jrs, true); + RenX_LoggingPlugin::mapLoadPublic = this->config.get("MapLoadPublic"_jrs, true); + RenX_LoggingPlugin::mapStartPublic = this->config.get("MapStartPublic"_jrs, true); + RenX_LoggingPlugin::mapPublic = this->config.get("MapPublic"_jrs, false); + RenX_LoggingPlugin::demoRecordPublic = this->config.get("DemoRecordPublic"_jrs, true); + RenX_LoggingPlugin::demoRecordStopPublic = this->config.get("DemoRecordStopPublic"_jrs, true); + RenX_LoggingPlugin::demoPublic = this->config.get("DemoPublic"_jrs, false); + RenX_LoggingPlugin::logPublic = this->config.get("LogPublic"_jrs, false); + RenX_LoggingPlugin::commandPublic = this->config.get("CommandPublic"_jrs, false); + RenX_LoggingPlugin::errorPublic = this->config.get("ErrorPublic"_jrs, false); + RenX_LoggingPlugin::versionPublic = this->config.get("VersionPublic"_jrs, true); + RenX_LoggingPlugin::authorizedPublic = this->config.get("AuthorizedPublic"_jrs, true); + RenX_LoggingPlugin::otherPublic = this->config.get("OtherPublic"_jrs, false); /** Event formats */ - RenX_LoggingPlugin::playerRDNSFmt = this->config.get(Jupiter::ReferenceString::empty, "PlayerRDNSFormat"_jrs, + RenX_LoggingPlugin::playerRDNSFmt = this->config.get("PlayerRDNSFormat"_jrs, Jupiter::ReferenceString::empty); - RenX_LoggingPlugin::playerIdentifyFmt = this->config.get(Jupiter::ReferenceString::empty, "PlayerIdentifyFormat"_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())); - RenX_LoggingPlugin::joinPublicFmt = this->config.get(Jupiter::ReferenceString::empty, "JoinPublicFormat"_jrs, + 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())); - RenX_LoggingPlugin::joinAdminFmt = this->config.get(Jupiter::ReferenceString::empty, "JoinAdminFormat"_jrs, + RenX_LoggingPlugin::joinAdminFmt = this->config.get("JoinAdminFormat"_jrs, Jupiter::ReferenceString::empty); - RenX_LoggingPlugin::joinNoSteamAdminFmt = this->config.get(Jupiter::ReferenceString::empty, "JoinNoSteamAdminFormat"_jrs, + RenX_LoggingPlugin::joinNoSteamAdminFmt = this->config.get("JoinNoSteamAdminFormat"_jrs, Jupiter::ReferenceString::empty); - RenX_LoggingPlugin::partFmt = this->config.get(Jupiter::ReferenceString::empty, "PartFormat"_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())); - RenX_LoggingPlugin::kickFmt = this->config.get(Jupiter::ReferenceString::empty, "KickFormat"_jrs, + 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())); - RenX_LoggingPlugin::playerExecuteFmt = this->config.get(Jupiter::ReferenceString::empty, "PlayerExecuteFormat"_jrs, + 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())); - RenX_LoggingPlugin::playerCommandSuccessFmt = this->config.get(Jupiter::ReferenceString::empty, "PlayerCommandSuccessFormat"_jrs, + 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())); - RenX_LoggingPlugin::playerCommandFailFmt = this->config.get(Jupiter::ReferenceString::empty, "PlayerCommandFailFormat"_jrs); + RenX_LoggingPlugin::playerCommandFailFmt = this->config.get("PlayerCommandFailFormat"_jrs); - RenX_LoggingPlugin::playerFmt = this->config.get(Jupiter::ReferenceString::empty, "PlayerFormat"_jrs, + RenX_LoggingPlugin::playerFmt = this->config.get("PlayerFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "12[Player]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); - RenX_LoggingPlugin::nameChangeFmt = this->config.get(Jupiter::ReferenceString::empty, "NameChangeFormat"_jrs, + 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())); - RenX_LoggingPlugin::teamChangeFmt = this->config.get(Jupiter::ReferenceString::empty, "TeamChangeFormat"_jrs, + RenX_LoggingPlugin::teamChangeFmt = this->config.get("TeamChangeFormat"_jrs, Jupiter::StringS::Format("%.*s" IRCCOLOR " switched teams!", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr())); - RenX_LoggingPlugin::speedHackFmt = this->config.get(Jupiter::ReferenceString::empty, "SpeedHackFormat"_jrs, + 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())); - RenX_LoggingPlugin::chatFmt = this->config.get(Jupiter::ReferenceString::empty, "ChatFormat"_jrs, + 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())); - RenX_LoggingPlugin::teamChatFmt = this->config.get(Jupiter::ReferenceString::empty, "TeamChatFormat"_jrs, + 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())); - RenX_LoggingPlugin::radioChatFmt = this->config.get(Jupiter::ReferenceString::empty, "RadioChatFormat"_jrs, + 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())); - RenX_LoggingPlugin::hostChatFmt = this->config.get(Jupiter::ReferenceString::empty, "HostChatFormat"_jrs, + RenX_LoggingPlugin::hostChatFmt = this->config.get("HostChatFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "12Host" IRCCOLOR "0: %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); - RenX_LoggingPlugin::hostPageFmt = this->config.get(Jupiter::ReferenceString::empty, "HostPageFormat"_jrs, + 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())); - RenX_LoggingPlugin::otherChatFmt = this->config.get(Jupiter::ReferenceString::empty, "OtherChatFormat"_jrs, + 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())); - RenX_LoggingPlugin::deployFmt = this->config.get(Jupiter::ReferenceString::empty, "DeployFormat"_jrs, + 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())); - RenX_LoggingPlugin::mineDeployFmt = this->config.get(Jupiter::ReferenceString::empty, "MineDeployFormat"_jrs, + RenX_LoggingPlugin::mineDeployFmt = this->config.get("MineDeployFormat"_jrs, RenX_LoggingPlugin::deployFmt); - RenX_LoggingPlugin::overMineFmt = this->config.get(Jupiter::ReferenceString::empty, "OverMineFormat"_jrs, + 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())); - RenX_LoggingPlugin::disarmFmt = this->config.get(Jupiter::ReferenceString::empty, "DisarmFormat"_jrs, + 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())); - RenX_LoggingPlugin::mineDisarmFmt = this->config.get(Jupiter::ReferenceString::empty, "MineDisarmFormat"_jrs, + RenX_LoggingPlugin::mineDisarmFmt = this->config.get("MineDisarmFormat"_jrs, RenX_LoggingPlugin::disarmFmt); - RenX_LoggingPlugin::disarmNoOwnerFmt = this->config.get(Jupiter::ReferenceString::empty, "DisarmNoOwnerFormat"_jrs, + 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())); - RenX_LoggingPlugin::mineDisarmNoOwnerFmt = this->config.get(Jupiter::ReferenceString::empty, "MineDisarmNoOwnerFormat"_jrs, + RenX_LoggingPlugin::mineDisarmNoOwnerFmt = this->config.get("MineDisarmNoOwnerFormat"_jrs, RenX_LoggingPlugin::disarmNoOwnerFmt); - RenX_LoggingPlugin::explodeFmt = this->config.get(Jupiter::ReferenceString::empty, "ExplodeFormat"_jrs, + 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())); - RenX_LoggingPlugin::explodeNoOwnerFmt = this->config.get(Jupiter::ReferenceString::empty, "ExplodeNoOwnerFormat"_jrs, + 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())); - RenX_LoggingPlugin::suicideFmt = this->config.get(Jupiter::ReferenceString::empty, "SuicideFormat"_jrs, + 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())); - RenX_LoggingPlugin::killFmt = this->config.get(Jupiter::ReferenceString::empty, "KillFormat"_jrs, + 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())); - RenX_LoggingPlugin::killFmt2 = this->config.get(Jupiter::ReferenceString::empty, "KillFormat2"_jrs, + 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())); - RenX_LoggingPlugin::dieFmt = this->config.get(Jupiter::ReferenceString::empty, "DieFormat"_jrs, + 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())); - RenX_LoggingPlugin::dieFmt2 = this->config.get(Jupiter::ReferenceString::empty, "DieFormat2"_jrs, + 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())); - RenX_LoggingPlugin::destroyBuildingFmt = this->config.get(Jupiter::ReferenceString::empty, "DestroyBuildingFormat"_jrs, + 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())); - RenX_LoggingPlugin::destroyBuildingFmt2 = this->config.get(Jupiter::ReferenceString::empty, "DestroyBuildingFormat2"_jrs, + 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())); - RenX_LoggingPlugin::destroyDefenceFmt = this->config.get(Jupiter::ReferenceString::empty, "DestroyDefenceFormat"_jrs, + 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())); - RenX_LoggingPlugin::destroyDefenceFmt2 = this->config.get(Jupiter::ReferenceString::empty, "DestroyDefenceFormat2"_jrs, + 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())); - RenX_LoggingPlugin::destroyVehicleFmt = this->config.get(Jupiter::ReferenceString::empty, "DestroyVehicleFormat"_jrs, + 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())); - RenX_LoggingPlugin::destroyVehicleFmt2 = this->config.get(Jupiter::ReferenceString::empty, "DestroyVehicleFormat2"_jrs, + 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())); - RenX_LoggingPlugin::captureFmt = this->config.get(Jupiter::ReferenceString::empty, "CaptureFormat"_jrs, + 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())); - RenX_LoggingPlugin::neutralizeFmt = this->config.get(Jupiter::ReferenceString::empty, "NeutralizeFormat"_jrs, + 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())); - RenX_LoggingPlugin::characterPurchaseFmt = this->config.get(Jupiter::ReferenceString::empty, "CharacterPurchaseFormat"_jrs, + 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())); - RenX_LoggingPlugin::itemPurchaseFmt = this->config.get(Jupiter::ReferenceString::empty, "ItemPurchaseFormat"_jrs, + 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())); - RenX_LoggingPlugin::weaponPurchaseFmt = this->config.get(Jupiter::ReferenceString::empty, "WeaponPurchaseFormat"_jrs, + 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())); - RenX_LoggingPlugin::refillPurchaseFmt = this->config.get(Jupiter::ReferenceString::empty, "RefillPurchaseFormat"_jrs, + 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())); - RenX_LoggingPlugin::vehiclePurchaseFmt = this->config.get(Jupiter::ReferenceString::empty, "VehiclePurchaseFormat"_jrs, + 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())); - RenX_LoggingPlugin::vehicleSpawnFmt = this->config.get(Jupiter::ReferenceString::empty, "VehicleSpawnFormat"_jrs, + 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())); - RenX_LoggingPlugin::spawnFmt = this->config.get(Jupiter::ReferenceString::empty, "SpawnFormat"_jrs, + 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())); - RenX_LoggingPlugin::botJoinFmt = this->config.get(Jupiter::ReferenceString::empty, "BotJoinFormat"_jrs, + RenX_LoggingPlugin::botJoinFmt = this->config.get("BotJoinFormat"_jrs, Jupiter::StringS::Format(IRCBOLD "%.*s" IRCCOLOR IRCBOLD " online.", RenX::tags->nameTag.size(), RenX::tags->nameTag.ptr())); - RenX_LoggingPlugin::vehicleCrateFmt = this->config.get(Jupiter::ReferenceString::empty, "VehicleCrateFormat"_jrs, + 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())); - RenX_LoggingPlugin::TSVehicleCrateFmt = this->config.get(Jupiter::ReferenceString::empty, "TSVehicleCrateFormat"_jrs, + RenX_LoggingPlugin::TSVehicleCrateFmt = this->config.get("TSVehicleCrateFormat"_jrs, RenX_LoggingPlugin::vehicleCrateFmt); - RenX_LoggingPlugin::RAVehicleCrateFmt = this->config.get(Jupiter::ReferenceString::empty, "RAVehicleCrateFormat"_jrs, + RenX_LoggingPlugin::RAVehicleCrateFmt = this->config.get("RAVehicleCrateFormat"_jrs, RenX_LoggingPlugin::vehicleCrateFmt); - RenX_LoggingPlugin::deathCrateFmt = this->config.get(Jupiter::ReferenceString::empty, "DeathCrateFormat"_jrs, + 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())); - RenX_LoggingPlugin::moneyCrateFmt = this->config.get(Jupiter::ReferenceString::empty, "MoneyCrateFormat"_jrs, + 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())); - RenX_LoggingPlugin::characterCrateFmt = this->config.get(Jupiter::ReferenceString::empty, "CharacterCrateFormat"_jrs, + 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())); - RenX_LoggingPlugin::spyCrateFmt = this->config.get(Jupiter::ReferenceString::empty, "SpyCrateFormat"_jrs, + 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())); - RenX_LoggingPlugin::refillCrateFmt = this->config.get(Jupiter::ReferenceString::empty, "RefillCrateFormat"_jrs, + 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())); - RenX_LoggingPlugin::timeBombCrateFmt = this->config.get(Jupiter::ReferenceString::empty, "TimeBombCrateFormat"_jrs, + 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())); - RenX_LoggingPlugin::speedCrateFmt = this->config.get(Jupiter::ReferenceString::empty, "SpeedCrateFormat"_jrs, + 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())); - RenX_LoggingPlugin::nukeCrateFmt = this->config.get(Jupiter::ReferenceString::empty, "NukeCrateFormat"_jrs, + 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())); - RenX_LoggingPlugin::abductionCrateFmt = this->config.get(Jupiter::ReferenceString::empty, "AbductionCrateFormat"_jrs, + 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())); - RenX_LoggingPlugin::unspecifiedCrateFmt = this->config.get(Jupiter::ReferenceString::empty, "UnspecifiedCrateFormat"_jrs, + 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())); - RenX_LoggingPlugin::otherCrateFmt = this->config.get(Jupiter::ReferenceString::empty, "OtherCrateFormat"_jrs, + 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())); - RenX_LoggingPlugin::stealFmt = this->config.get(Jupiter::ReferenceString::empty, "StealFormat"_jrs, + 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())); - RenX_LoggingPlugin::stealNoOwnerFmt = this->config.get(Jupiter::ReferenceString::empty, "StealNoOwnerFormat"_jrs, + 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())); - RenX_LoggingPlugin::donateFmt = this->config.get(Jupiter::ReferenceString::empty, "DonateFormat"_jrs, + 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())); - RenX_LoggingPlugin::gameOverFmt = this->config.get(Jupiter::ReferenceString::empty, "GameOverFormat"_jrs, + 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())); - RenX_LoggingPlugin::gameOverTieFmt = this->config.get(Jupiter::ReferenceString::empty, "GameOverTieNoWinFormat"_jrs, + 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())); - RenX_LoggingPlugin::gameOverTieNoWinFmt = this->config.get(Jupiter::ReferenceString::empty, "GameOverTieFormat"_jrs, + 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())); - RenX_LoggingPlugin::gameOverScoreFmt = this->config.get(Jupiter::ReferenceString::empty, "GameOverScoreFormat"_jrs, + 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())); - RenX_LoggingPlugin::gameFmt = this->config.get(Jupiter::ReferenceString::empty, "GameFormat"_jrs, + RenX_LoggingPlugin::gameFmt = this->config.get("GameFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "03[Game]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); - RenX_LoggingPlugin::executeFmt = this->config.get(Jupiter::ReferenceString::empty, "ExecuteFormat"_jrs, + 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())); - RenX_LoggingPlugin::devBotExecuteFmt = this->config.get(Jupiter::ReferenceString::empty, "DevBotExecuteFormat"_jrs); + RenX_LoggingPlugin::devBotExecuteFmt = this->config.get("DevBotExecuteFormat"_jrs); - RenX_LoggingPlugin::subscribeFmt = this->config.get(Jupiter::ReferenceString::empty, "SubscribeFormat"_jrs, + 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())); - RenX_LoggingPlugin::rconFmt = this->config.get(Jupiter::ReferenceString::empty, "RCONFormat"_jrs, + RenX_LoggingPlugin::rconFmt = this->config.get("RCONFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "05[RCON]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); - RenX_LoggingPlugin::adminLoginFmt = this->config.get(Jupiter::ReferenceString::empty, "AdminLoginFormat"_jrs, + 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())); - RenX_LoggingPlugin::adminGrantFmt = this->config.get(Jupiter::ReferenceString::empty, "AdminGrantFormat"_jrs, + 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())); - RenX_LoggingPlugin::adminLogoutFmt = this->config.get(Jupiter::ReferenceString::empty, "AdminLogoutFormat"_jrs, + 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())); - RenX_LoggingPlugin::adminFmt = this->config.get(Jupiter::ReferenceString::empty, "AdminFormat"_jrs, + RenX_LoggingPlugin::adminFmt = this->config.get("AdminFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "07[Admin]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); - RenX_LoggingPlugin::voteAddBotsFmt = this->config.get(Jupiter::ReferenceString::empty, "VoteAddBotsFormat"_jrs, + 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())); - RenX_LoggingPlugin::voteChangeMapFmt = this->config.get(Jupiter::ReferenceString::empty, "VoteChangeMapFormat"_jrs, + 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())); - RenX_LoggingPlugin::voteKickFmt = this->config.get(Jupiter::ReferenceString::empty, "VoteKickFormat"_jrs, + 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())); - RenX_LoggingPlugin::voteMineBanFmt = this->config.get(Jupiter::ReferenceString::empty, "VoteMineBanFormat"_jrs, + 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())); - RenX_LoggingPlugin::voteRemoveBotsFmt = this->config.get(Jupiter::ReferenceString::empty, "VoteRemoveBotsFormat"_jrs, + 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())); - RenX_LoggingPlugin::voteRestartMapFmt = this->config.get(Jupiter::ReferenceString::empty, "VoteRestartMapFormat"_jrs, + 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())); - RenX_LoggingPlugin::voteSurrenderFmt = this->config.get(Jupiter::ReferenceString::empty, "VoteSurrenderFormat"_jrs, + 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())); - RenX_LoggingPlugin::voteSurveyFmt = this->config.get(Jupiter::ReferenceString::empty, "VoteSurveyFormat"_jrs, + 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())); - RenX_LoggingPlugin::voteOtherFmt = this->config.get(Jupiter::ReferenceString::empty, "VoteOtherFormat"_jrs, + 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())); - RenX_LoggingPlugin::voteOverSuccessFmt = this->config.get(Jupiter::ReferenceString::empty, "VoteOverSuccessFormat"_jrs, + 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())); - RenX_LoggingPlugin::voteOverFailFmt = this->config.get(Jupiter::ReferenceString::empty, "VoteOverFailFormat"_jrs, + 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())); - RenX_LoggingPlugin::voteCancelFmt = this->config.get(Jupiter::ReferenceString::empty, "VoteCancelFormat"_jrs, + 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())); - RenX_LoggingPlugin::voteFmt = this->config.get(Jupiter::ReferenceString::empty, "VoteFormat"_jrs, + RenX_LoggingPlugin::voteFmt = this->config.get("VoteFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "06[Vote]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); - RenX_LoggingPlugin::mapChangeFmt = this->config.get(Jupiter::ReferenceString::empty, "MapChangeFormat"_jrs, + RenX_LoggingPlugin::mapChangeFmt = this->config.get("MapChangeFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "03Loading %.*s...", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); - RenX_LoggingPlugin::mapLoadFmt = this->config.get(Jupiter::ReferenceString::empty, "MapLoadFormat"_jrs, + RenX_LoggingPlugin::mapLoadFmt = this->config.get("MapLoadFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "03%.*s loaded.", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); - RenX_LoggingPlugin::mapStartFmt = this->config.get(Jupiter::ReferenceString::empty, "MapStartFormat"_jrs, + RenX_LoggingPlugin::mapStartFmt = this->config.get("MapStartFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "03%.*s started.", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); - RenX_LoggingPlugin::mapFmt = this->config.get(Jupiter::ReferenceString::empty, "MapFormat"_jrs, + RenX_LoggingPlugin::mapFmt = this->config.get("MapFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "06[Map]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); - RenX_LoggingPlugin::demoRecordFmt = this->config.get(Jupiter::ReferenceString::empty, "DemoRecordFormat"_jrs, + 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())); - RenX_LoggingPlugin::rconDemoRecordFmt = this->config.get(Jupiter::ReferenceString::empty, "RCONDemoRecordFormat"_jrs, + RenX_LoggingPlugin::rconDemoRecordFmt = this->config.get("RCONDemoRecordFormat"_jrs, IRCCOLOR "07A demo recording has started."_jrs); - RenX_LoggingPlugin::demoRecordStopFmt = this->config.get(Jupiter::ReferenceString::empty, "DemoRecordStopFormat"_jrs, + RenX_LoggingPlugin::demoRecordStopFmt = this->config.get("DemoRecordStopFormat"_jrs, IRCCOLOR "07The demo recording has stopped."_jrs); - RenX_LoggingPlugin::demoFmt = this->config.get(Jupiter::ReferenceString::empty, "DemoFormat"_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())); - RenX_LoggingPlugin::logFmt = this->config.get(Jupiter::ReferenceString::empty, "LogFormat"_jrs, + RenX_LoggingPlugin::logFmt = this->config.get("LogFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "07[Log]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); - RenX_LoggingPlugin::commandFmt = this->config.get(Jupiter::ReferenceString::empty, "CommandFormat"_jrs, + RenX_LoggingPlugin::commandFmt = this->config.get("CommandFormat"_jrs, Jupiter::StringS::Format("")); // Disabled by default. - RenX_LoggingPlugin::errorFmt = this->config.get(Jupiter::ReferenceString::empty, "ErrorFormat"_jrs, + RenX_LoggingPlugin::errorFmt = this->config.get("ErrorFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "04[Error]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); - RenX_LoggingPlugin::versionFmt = this->config.get(Jupiter::ReferenceString::empty, "VersionFormat"_jrs, + 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())); - RenX_LoggingPlugin::authorizedFmt = this->config.get(Jupiter::ReferenceString::empty, "AuthorizedFormat"_jrs, + RenX_LoggingPlugin::authorizedFmt = this->config.get("AuthorizedFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "03RCON authorization completed.")); - RenX_LoggingPlugin::otherFmt = this->config.get(Jupiter::ReferenceString::empty, "OtherFormat"_jrs, + RenX_LoggingPlugin::otherFmt = this->config.get("OtherFormat"_jrs, Jupiter::StringS::Format(IRCCOLOR "06[Other]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr())); /** Sanitize tags */ diff --git a/RenX.Medals/RenX_Medals.cpp b/RenX.Medals/RenX_Medals.cpp index c14bbc7..bd41c06 100644 --- a/RenX.Medals/RenX_Medals.cpp +++ b/RenX.Medals/RenX_Medals.cpp @@ -55,13 +55,13 @@ RenX_MedalsPlugin::~RenX_MedalsPlugin() player = n->data; if (player->uuid.isNotEmpty() && player->isBot == false) { - RenX_MedalsPlugin::medalsFile.set(player->uuid, STRING_LITERAL_AS_REFERENCE("Recs"), player->varData.get(this->getName(), STRING_LITERAL_AS_REFERENCE("Recs"))); - RenX_MedalsPlugin::medalsFile.set(player->uuid, STRING_LITERAL_AS_REFERENCE("Noobs"), player->varData.get(this->getName(), STRING_LITERAL_AS_REFERENCE("Noobs"))); + RenX_MedalsPlugin::medalsFile[player->uuid].set("Recs"_jrs, player->varData[this->getName()].get("Recs"_jrs)); + RenX_MedalsPlugin::medalsFile[player->uuid].set("Noobs"_jrs, player->varData[this->getName()].get("Noobs"_jrs)); } } } } - RenX_MedalsPlugin::medalsFile.sync(RenX_MedalsPlugin::medalsFileName); + RenX_MedalsPlugin::medalsFile.write(RenX_MedalsPlugin::medalsFileName); } struct CongratPlayerData @@ -109,8 +109,8 @@ void RenX_MedalsPlugin::RenX_ProcessTags(Jupiter::StringType &msg, const RenX::S { if (player != nullptr) { - const Jupiter::ReadableString &recs = RenX_MedalsPlugin::medalsFile.get(player->uuid, STRING_LITERAL_AS_REFERENCE("Recs")); - const Jupiter::ReadableString &noobs = RenX_MedalsPlugin::medalsFile.get(player->uuid, STRING_LITERAL_AS_REFERENCE("Noobs")); + const Jupiter::ReadableString &recs = RenX_MedalsPlugin::medalsFile.get(player->uuid, "Recs"_jrs); + const Jupiter::ReadableString &noobs = RenX_MedalsPlugin::medalsFile.get(player->uuid, "Noobs"_jrs); msg.replace(this->INTERNAL_RECS_TAG, recs); msg.replace(this->INTERNAL_NOOB_TAG, noobs); @@ -122,8 +122,8 @@ void RenX_MedalsPlugin::RenX_OnPlayerCreate(RenX::Server *server, const RenX::Pl { if (player->uuid.isNotEmpty() && player->isBot == false) { - player->varData.set(this->getName(), STRING_LITERAL_AS_REFERENCE("Recs"), RenX_MedalsPlugin::medalsFile.get(player->uuid, STRING_LITERAL_AS_REFERENCE("Recs"))); - player->varData.set(this->getName(), STRING_LITERAL_AS_REFERENCE("Noobs"), RenX_MedalsPlugin::medalsFile.get(player->uuid, STRING_LITERAL_AS_REFERENCE("Noobs"))); + player->varData[this->getName()].set("Recs"_jrs, RenX_MedalsPlugin::medalsFile.get(player->uuid, "Recs"_jrs)); + player->varData[this->getName()].set("Noobs"_jrs, RenX_MedalsPlugin::medalsFile.get(player->uuid, "Noobs"_jrs)); } } @@ -131,8 +131,8 @@ void RenX_MedalsPlugin::RenX_OnPlayerDelete(RenX::Server *server, const RenX::Pl { if (player->uuid.isNotEmpty() && player->isBot == false) { - RenX_MedalsPlugin::medalsFile.set(player->uuid, STRING_LITERAL_AS_REFERENCE("Recs"), player->varData.get(this->getName(), STRING_LITERAL_AS_REFERENCE("Recs"))); - RenX_MedalsPlugin::medalsFile.set(player->uuid, STRING_LITERAL_AS_REFERENCE("Noobs"), player->varData.get(this->getName(), STRING_LITERAL_AS_REFERENCE("Noobs"))); + RenX_MedalsPlugin::medalsFile[player->uuid].set("Recs"_jrs, player->varData[this->getName()].get("Recs"_jrs)); + RenX_MedalsPlugin::medalsFile[player->uuid].set("Noobs"_jrs, player->varData[this->getName()].get("Noobs"_jrs)); } } @@ -141,28 +141,25 @@ void RenX_MedalsPlugin::RenX_OnJoin(RenX::Server *server, const RenX::PlayerInfo if (player->uuid.isNotEmpty() && player->isBot == false && server->isMatchInProgress()) { int worth = getWorth(player); - Jupiter::INIFile::Section *section = RenX_MedalsPlugin::config.getSection(RenX_MedalsPlugin::firstSection); + Jupiter::Config *section = RenX_MedalsPlugin::config.getSection(RenX_MedalsPlugin::firstSection); if (section != nullptr) { - while (section->hasKey(STRING_LITERAL_AS_REFERENCE("MaxRecs")) && section->get(STRING_LITERAL_AS_REFERENCE("MaxRecs")).asInt() < worth) - if ((section = RenX_MedalsPlugin::config.getSection(section->get(STRING_LITERAL_AS_REFERENCE("NextSection")))) == nullptr) + while (section->get("MaxRecs"_jrs, INT_MAX) < worth) + if ((section = RenX_MedalsPlugin::config.getSection(section->get("NextSection"_jrs))) == nullptr) return; // No matching section found. - if (section->hasKey(STRING_LITERAL_AS_REFERENCE("1"))) - { - int r; - Jupiter::INIFile::Section::KeyValuePair *pair; - do - { - r = rand() % section->size(); - pair = section->getPair(r); - } while (pair->getKey().asInt() == 0); + size_t table_size = section->getTable().size(); - Jupiter::StringS msg = pair->getValue(); - RenX::sanitizeTags(msg); - RenX::processTags(msg, server, player); + if (table_size != 0) + { + Jupiter::StringS msg = section->get(Jupiter::StringS::Format("%u", (rand() % table_size) + 1)); - server->sendMessage(msg); + if (msg.isNotEmpty()) + { + RenX::sanitizeTags(msg); + RenX::processTags(msg, server, player); + server->sendMessage(msg); + } } } } @@ -248,7 +245,7 @@ void RenX_MedalsPlugin::RenX_OnGameOver(RenX::Server *server, RenX::WinType winT } } - RenX_MedalsPlugin::medalsFile.sync(medalsFileName); + RenX_MedalsPlugin::medalsFile.write(medalsFileName); } void RenX_MedalsPlugin::RenX_OnDestroy(RenX::Server *server, const RenX::PlayerInfo *player, const Jupiter::ReadableString &objectName, const RenX::TeamType &objectTeam, const Jupiter::ReadableString &damageType, RenX::ObjectType type) @@ -266,23 +263,23 @@ int RenX_MedalsPlugin::OnRehash() { RenX::Plugin::OnRehash(); - RenX_MedalsPlugin::medalsFile.sync(RenX_MedalsPlugin::medalsFileName); - RenX_MedalsPlugin::medalsFile.flushData(); + RenX_MedalsPlugin::medalsFile.write(RenX_MedalsPlugin::medalsFileName); + RenX_MedalsPlugin::medalsFile.erase(); init(); return 0; } void RenX_MedalsPlugin::init() { - RenX_MedalsPlugin::killCongratDelay = this->config.getInt(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("KillCongratDelay"), 60); - RenX_MedalsPlugin::vehicleKillCongratDelay = this->config.getInt(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("VehicleKillCongratDelay"), 60); - RenX_MedalsPlugin::kdrCongratDelay = this->config.getInt(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("KDRCongratDelay"), 60); - RenX_MedalsPlugin::medalsFileName = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("MedalsFile"), STRING_LITERAL_AS_REFERENCE("Medals.ini")); - RenX_MedalsPlugin::medalsFile.readFile(RenX_MedalsPlugin::medalsFileName); - RenX_MedalsPlugin::firstSection = RenX_MedalsPlugin::config.get(Jupiter::StringS::empty, STRING_LITERAL_AS_REFERENCE("FirstSection")); - RenX_MedalsPlugin::recsTag = RenX_MedalsPlugin::config.get(Jupiter::String::empty, STRING_LITERAL_AS_REFERENCE("RecsTag"), STRING_LITERAL_AS_REFERENCE("{RECS}")); - RenX_MedalsPlugin::noobTag = RenX_MedalsPlugin::config.get(Jupiter::String::empty, STRING_LITERAL_AS_REFERENCE("NoobsTag"), STRING_LITERAL_AS_REFERENCE("{NOOBS}")); - RenX_MedalsPlugin::worthTag = RenX_MedalsPlugin::config.get(Jupiter::String::empty, STRING_LITERAL_AS_REFERENCE("WorthTag"), STRING_LITERAL_AS_REFERENCE("{WORTH}")); + RenX_MedalsPlugin::killCongratDelay = std::chrono::seconds(this->config.get("KillCongratDelay"_jrs, 60)); + RenX_MedalsPlugin::vehicleKillCongratDelay = std::chrono::seconds(this->config.get("VehicleKillCongratDelay"_jrs, 60)); + RenX_MedalsPlugin::kdrCongratDelay = std::chrono::seconds(this->config.get("KDRCongratDelay"_jrs, 60)); + RenX_MedalsPlugin::medalsFileName = this->config.get("MedalsFile"_jrs, "Medals.ini"_jrs); + RenX_MedalsPlugin::medalsFile.read(RenX_MedalsPlugin::medalsFileName); + RenX_MedalsPlugin::firstSection = RenX_MedalsPlugin::config.get("FirstSection"_jrs); + RenX_MedalsPlugin::recsTag = RenX_MedalsPlugin::config.get("RecsTag"_jrs, "{RECS}"_jrs); + RenX_MedalsPlugin::noobTag = RenX_MedalsPlugin::config.get("NoobsTag"_jrs, "{NOOBS}"_jrs); + RenX_MedalsPlugin::worthTag = RenX_MedalsPlugin::config.get("WorthTag"_jrs, "{WORTH}"_jrs); RenX::Core *core = RenX::getCore(); unsigned int sCount = core->getServerCount(); @@ -296,8 +293,8 @@ void RenX_MedalsPlugin::init() for (Jupiter::DLList::Node *n = server->players.getNode(0); n != nullptr; n = n->next) { player = n->data; - player->varData.set(this->getName(), STRING_LITERAL_AS_REFERENCE("Recs"), RenX_MedalsPlugin::medalsFile.get(player->name, STRING_LITERAL_AS_REFERENCE("Recs"))); - player->varData.set(this->getName(), STRING_LITERAL_AS_REFERENCE("Noobs"), RenX_MedalsPlugin::medalsFile.get(player->name, STRING_LITERAL_AS_REFERENCE("Noobs"))); + player->varData[this->getName()].set("Recs"_jrs, RenX_MedalsPlugin::medalsFile[player->name].get("Recs"_jrs)); + player->varData[this->getName()].set("Noobs"_jrs, RenX_MedalsPlugin::medalsFile[player->name].get("Noobs"_jrs)); } } } @@ -312,11 +309,11 @@ RenX_MedalsPlugin pluginInstance; void RecsGameCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("recs")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("recommends")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("recommendations")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("noobs")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("n00bs")); + this->addTrigger("recs"_jrs); + this->addTrigger("recommends"_jrs); + this->addTrigger("recommendations"_jrs); + this->addTrigger("noobs"_jrs); + this->addTrigger("n00bs"_jrs); } void RecsGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, const Jupiter::ReadableString ¶meters) @@ -326,26 +323,26 @@ void RecsGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, co RenX::PlayerInfo *target = source->getPlayerByPartName(parameters); if (target == nullptr) { - Jupiter::INIFile::Section *section = pluginInstance.medalsFile.getSection(parameters); + Jupiter::Config *section = pluginInstance.medalsFile.getSection(parameters); if (section == nullptr) - source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Player not found! Syntax: recs [player]")); + source->sendMessage(player, "Error: Player not found! Syntax: recs [player]"_jrs); else { - unsigned int recs = section->get(STRING_LITERAL_AS_REFERENCE("Recs")).asUnsignedInt(); - unsigned int noobs = section->get(STRING_LITERAL_AS_REFERENCE("Noobs")).asUnsignedInt(); + unsigned int recs = section->get("Recs"_jrs); + unsigned int noobs = section->get("Noobs"_jrs); source->sendMessage(player, Jupiter::StringS::Format("[Archive] %.*s has %u and %u n00bs. Their worth: %d", section->getName().size(), section->getName().ptr(), recs, noobs, recs - noobs)); } } else if (target->uuid.isEmpty()) - source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Player is not using steam.")); + source->sendMessage(player, "Error: Player is not using steam."_jrs); else if (target->isBot) - source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Bots do not have any recommendations.")); + source->sendMessage(player, "Error: Bots do not have any recommendations."_jrs); else if (target == player) RecsGameCommand::trigger(source, player, Jupiter::ReferenceString::empty); else source->sendMessage(player, Jupiter::StringS::Format("%.*s has %lu and %lu n00bs. Their worth: %d", target->name.size(), target->name.ptr(), getRecs(target), getNoobs(target), getWorth(target))); } else if (player->uuid.isEmpty()) - source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: You are not using steam.")); + source->sendMessage(player, "Error: You are not using steam."_jrs); else source->sendMessage(player, Jupiter::StringS::Format("%.*s, you have %lu recs and %lu n00bs. Your worth: %d", player->name.size(), player->name.ptr(), getRecs(player), getNoobs(player), getWorth(player))); } @@ -361,8 +358,8 @@ GAME_COMMAND_INIT(RecsGameCommand) void RecGameCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("rec")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("recommend")); + this->addTrigger("rec"_jrs); + this->addTrigger("recommend"_jrs); } void RecGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, const Jupiter::ReadableString ¶meters) @@ -373,23 +370,23 @@ void RecGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, con if (target == nullptr) target = source->getPlayerByPartName(Jupiter::ReferenceString::getWord(parameters, 0, WHITESPACE)); if (target == nullptr) - source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Player not found! Syntax: rec ")); + source->sendMessage(player, "Error: Player not found! Syntax: rec "_jrs); else if (target->uuid.isEmpty()) - source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Player is not using steam.")); + source->sendMessage(player, "Error: Player is not using steam."_jrs); else if (target->isBot) - source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Bots can not receive recommendations.")); + source->sendMessage(player, "Error: Bots can not receive recommendations."_jrs); else if (target == player) { addNoob(player); - source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("You can't recommend yourself, you noob! (+1 noob)")); + source->sendMessage(player, "You can't recommend yourself, you noob! (+1 noob)"_jrs); } - else if (player->varData.get(STRING_LITERAL_AS_REFERENCE("RenX.Medals"), STRING_LITERAL_AS_REFERENCE("gr")) != nullptr && player->adminType.isEmpty()) - source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("You can only give one recommendation per game.")); + else if (player->varData["RenX.Medals"_jrs].get("gr"_jrs) != nullptr && player->adminType.isEmpty()) + source->sendMessage(player, "You can only give one recommendation per game."_jrs); else { addRec(target); source->sendMessage(Jupiter::StringS::Format("%.*s has recommended %.*s!", player->name.size(), player->name.ptr(), target->name.size(), target->name.ptr())); - player->varData.set(STRING_LITERAL_AS_REFERENCE("RenX.Medals"), STRING_LITERAL_AS_REFERENCE("gr"), STRING_LITERAL_AS_REFERENCE("1")); + player->varData["RenX.Medals"_jrs].set("gr"_jrs, "1"_jrs); } } else RecsGameCommand_instance.trigger(source, player, parameters); @@ -407,8 +404,8 @@ GAME_COMMAND_INIT(RecGameCommand) void NoobGameCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("noob")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("n00b")); + this->addTrigger("noob"_jrs); + this->addTrigger("n00b"_jrs); } void NoobGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, const Jupiter::ReadableString ¶meters) @@ -419,18 +416,18 @@ void NoobGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, co if (target == nullptr) target = source->getPlayerByPartName(Jupiter::ReferenceString::getWord(parameters, 0, WHITESPACE)); if (target == nullptr) - source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Player not found! Syntax: noob [player]")); + source->sendMessage(player, "Error: Player not found! Syntax: noob [player]"_jrs); else if (target->uuid.isEmpty()) - source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Player is not using steam.")); + source->sendMessage(player, "Error: Player is not using steam."_jrs); else if (target->isBot) - source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Bots can not receive n00bs.")); - else if (player->varData.get(STRING_LITERAL_AS_REFERENCE("RenX.Medals"), STRING_LITERAL_AS_REFERENCE("gn")) != nullptr && player->adminType.isEmpty()) - source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("You can only give one noob per game.")); + source->sendMessage(player, "Error: Bots can not receive n00bs."_jrs); + else if (player->varData["RenX.Medals"_jrs].get("gn"_jrs) != nullptr && player->adminType.isEmpty()) + source->sendMessage(player, "You can only give one noob per game."_jrs); else { addNoob(target); source->sendMessage(Jupiter::StringS::Format("%.*s has noob'd %.*s!", player->name.size(), player->name.ptr(), target->name.size(), target->name.ptr())); - player->varData.set(STRING_LITERAL_AS_REFERENCE("RenX.Medals"), STRING_LITERAL_AS_REFERENCE("gn"), STRING_LITERAL_AS_REFERENCE("1")); + player->varData["RenX.Medals"_jrs].set("gn"_jrs, "1"_jrs); } } else RecsGameCommand_instance.trigger(source, player, parameters); @@ -447,23 +444,23 @@ GAME_COMMAND_INIT(NoobGameCommand) void addRec(const RenX::PlayerInfo *player, int amount) { if (player->uuid.matchi("Player*") == false && player->isBot == false) - player->varData.set(pluginInstance.getName(), STRING_LITERAL_AS_REFERENCE("Recs"), Jupiter::StringS::Format("%u", getRecs(player) + amount)); + player->varData[pluginInstance.getName()].set("Recs"_jrs, Jupiter::StringS::Format("%u", getRecs(player) + amount)); } void addNoob(const RenX::PlayerInfo *player, int amount) { if (player->uuid.matchi("Player*") == false && player->isBot == false) - player->varData.set(pluginInstance.getName(), STRING_LITERAL_AS_REFERENCE("Noobs"), Jupiter::StringS::Format("%u", getNoobs(player) + amount)); + player->varData[pluginInstance.getName()].set("Noobs"_jrs, Jupiter::StringS::Format("%u", getNoobs(player) + amount)); } unsigned long getRecs(const RenX::PlayerInfo *player) { - return player->varData.getInt(pluginInstance.getName(), STRING_LITERAL_AS_REFERENCE("Recs")); + return player->varData[pluginInstance.getName()].get("Recs"_jrs); } unsigned long getNoobs(const RenX::PlayerInfo *player) { - return player->varData.getInt(pluginInstance.getName(), STRING_LITERAL_AS_REFERENCE("Noobs")); + return player->varData[pluginInstance.getName()].get("Noobs"_jrs); } int getWorth(const RenX::PlayerInfo *player) diff --git a/RenX.Medals/RenX_Medals.h b/RenX.Medals/RenX_Medals.h index 662ed17..ca50986 100644 --- a/RenX.Medals/RenX_Medals.h +++ b/RenX.Medals/RenX_Medals.h @@ -19,8 +19,8 @@ #if !defined _RENX_MEDALS_H_HEADER #define _RENX_MEDALS_H_HEADER +#include #include "Jupiter/Plugin.h" -#include "Jupiter/INIFile.h" #include "Jupiter/String.h" #include "RenX_Plugin.h" #include "RenX_GameCommand.h" @@ -57,15 +57,15 @@ class RenX_MedalsPlugin : public RenX::Plugin int OnRehash() override; public: - time_t killCongratDelay; - time_t vehicleKillCongratDelay; - time_t kdrCongratDelay; + std::chrono::milliseconds killCongratDelay; + std::chrono::milliseconds vehicleKillCongratDelay; + std::chrono::milliseconds kdrCongratDelay; Jupiter::StringS recsTag; Jupiter::StringS noobTag; Jupiter::StringS worthTag; Jupiter::StringS firstSection; Jupiter::StringS medalsFileName; - Jupiter::INIFile medalsFile; + Jupiter::INIConfig medalsFile; private: Jupiter::StringS INTERNAL_RECS_TAG; diff --git a/RenX.MinPlayers/RenX_MinPlayers.cpp b/RenX.MinPlayers/RenX_MinPlayers.cpp index 75993ba..9167ba9 100644 --- a/RenX.MinPlayers/RenX_MinPlayers.cpp +++ b/RenX.MinPlayers/RenX_MinPlayers.cpp @@ -17,7 +17,6 @@ */ #include "Jupiter/IRC_Client.h" -#include "Jupiter/INIFile.h" #include "RenX_Server.h" #include "RenX_PlayerInfo.h" #include "RenX_MinPlayers.h" @@ -26,7 +25,7 @@ using namespace Jupiter::literals; bool RenX_MinPlayersPlugin::initialize() { - RenX_MinPlayersPlugin::player_threshold = this->config.getInt(Jupiter::ReferenceString::empty, "PlayerThreshold"_jrs, 20); + RenX_MinPlayersPlugin::player_threshold = this->config.get("PlayerThreshold"_jrs, 20); return true; } diff --git a/RenX.ModSystem/RenX_ModSystem.cpp b/RenX.ModSystem/RenX_ModSystem.cpp index 824a73c..5e0f2ca 100644 --- a/RenX.ModSystem/RenX_ModSystem.cpp +++ b/RenX.ModSystem/RenX_ModSystem.cpp @@ -28,15 +28,15 @@ using namespace Jupiter::literals; bool RenX_ModSystemPlugin::initialize() { - RenX_ModSystemPlugin::lockSteam = this->config.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("LockSteam"), true); - RenX_ModSystemPlugin::lockIP = this->config.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("LockIP"), false); - RenX_ModSystemPlugin::lockName = this->config.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("LockName"), false); - RenX_ModSystemPlugin::kickLockMismatch = this->config.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("KickLockMismatch"), true); - RenX_ModSystemPlugin::autoAuthSteam = this->config.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("AutoAuthSteam"), true); - RenX_ModSystemPlugin::autoAuthIP = this->config.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("AutoAuthIP"), false); - RenX_ModSystemPlugin::atmDefault = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("ATMDefault")); - RenX_ModSystemPlugin::moderatorGroup = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Moderator"), STRING_LITERAL_AS_REFERENCE("Moderator")); - RenX_ModSystemPlugin::administratorGroup = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Administrator"), STRING_LITERAL_AS_REFERENCE("Administrator")); + RenX_ModSystemPlugin::lockSteam = this->config.get("LockSteam"_jrs, true); + RenX_ModSystemPlugin::lockIP = this->config.get("LockIP"_jrs, false); + RenX_ModSystemPlugin::lockName = this->config.get("LockName"_jrs, false); + RenX_ModSystemPlugin::kickLockMismatch = this->config.get("KickLockMismatch"_jrs, true); + RenX_ModSystemPlugin::autoAuthSteam = this->config.get("AutoAuthSteam"_jrs, true); + RenX_ModSystemPlugin::autoAuthIP = this->config.get("AutoAuthIP"_jrs, false); + RenX_ModSystemPlugin::atmDefault = this->config.get("ATMDefault"_jrs); + RenX_ModSystemPlugin::moderatorGroup = this->config.get("Moderator"_jrs, "Moderator"_jrs); + RenX_ModSystemPlugin::administratorGroup = this->config.get("Administrator"_jrs, "Administrator"_jrs); ModGroup *group; Jupiter::ReferenceString dotLockSteam = ".LockSteam"; @@ -50,7 +50,7 @@ bool RenX_ModSystemPlugin::initialize() Jupiter::ReferenceString dotPrefix = ".Prefix"; Jupiter::ReferenceString dotGamePrefix = ".GamePrefix"; - Jupiter::String groupName = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Default")); + Jupiter::String groupName = this->config.get("Default"_jrs); while (groupName.isNotEmpty()) { @@ -58,45 +58,45 @@ bool RenX_ModSystemPlugin::initialize() group->name = groupName; groupName += dotLockSteam; - group->lockSteam = this->config.getBool(Jupiter::ReferenceString::empty, groupName, RenX_ModSystemPlugin::lockSteam); + group->lockSteam = this->config.get(groupName, RenX_ModSystemPlugin::lockSteam); groupName.truncate(dotLockSteam.size()); groupName += dotLockIP; - group->lockIP = this->config.getBool(Jupiter::ReferenceString::empty, groupName, RenX_ModSystemPlugin::lockIP); + group->lockIP = this->config.get(groupName, RenX_ModSystemPlugin::lockIP); groupName.truncate(dotLockIP.size()); groupName += dotLockName; - group->lockName = this->config.getBool(Jupiter::ReferenceString::empty, groupName, RenX_ModSystemPlugin::lockName); + group->lockName = this->config.get(groupName, RenX_ModSystemPlugin::lockName); groupName.truncate(dotLockName.size()); groupName += dotKickLockMismatch; - group->kickLockMismatch = this->config.getBool(Jupiter::ReferenceString::empty, groupName, RenX_ModSystemPlugin::kickLockMismatch); + group->kickLockMismatch = this->config.get(groupName, RenX_ModSystemPlugin::kickLockMismatch); groupName.truncate(dotKickLockMismatch.size()); groupName += dotAutoAuthSteam; - group->autoAuthSteam = this->config.getBool(Jupiter::ReferenceString::empty, groupName, RenX_ModSystemPlugin::autoAuthSteam); + group->autoAuthSteam = this->config.get(groupName, RenX_ModSystemPlugin::autoAuthSteam); groupName.truncate(dotAutoAuthSteam.size()); groupName += dotAutoAuthIP; - group->autoAuthIP = this->config.getBool(Jupiter::ReferenceString::empty, groupName, RenX_ModSystemPlugin::autoAuthIP); + group->autoAuthIP = this->config.get(groupName, RenX_ModSystemPlugin::autoAuthIP); groupName.truncate(dotAutoAuthIP.size()); groupName += dotAccess; - group->access = this->config.getInt(Jupiter::ReferenceString::empty, groupName); + group->access = this->config.get(groupName); groupName.truncate(dotAccess.size()); groupName += dotPrefix; - group->prefix = this->config.get(Jupiter::ReferenceString::empty, groupName); + group->prefix = this->config.get(groupName); groupName.truncate(dotPrefix.size()); groupName += dotGamePrefix; - group->gamePrefix = this->config.get(Jupiter::ReferenceString::empty, groupName); + group->gamePrefix = this->config.get(groupName); groupName.truncate(dotGamePrefix.size()); RenX_ModSystemPlugin::groups.add(group); groupName += dotNext; - groupName = this->config.get(Jupiter::ReferenceString::empty, groupName); + groupName = this->config.get(groupName); } RenX::Core *core = RenX::getCore(); @@ -159,10 +159,10 @@ int RenX_ModSystemPlugin::auth(RenX::Server *server, const RenX::PlayerInfo *pla ModGroup *group; if (player->uuid.isNotEmpty()) { - Jupiter::INIFile::Section *section = this->config.getSection(player->uuid); + Jupiter::Config *section = this->config.getSection(player->uuid); if (section != nullptr) { - const Jupiter::ReadableString &groupName = section->get(STRING_LITERAL_AS_REFERENCE("Group")); + const Jupiter::ReadableString &groupName = section->get("Group"_jrs); if (groupName.isEmpty()) group = RenX_ModSystemPlugin::groups.get(0); else @@ -174,10 +174,10 @@ int RenX_ModSystemPlugin::auth(RenX::Server *server, const RenX::PlayerInfo *pla auto sectionAuth = [&] { - player->varData.set(this->name, STRING_LITERAL_AS_REFERENCE("Group"), group->name); - player->formatNamePrefix = section->get(STRING_LITERAL_AS_REFERENCE("Prefix"), group->prefix); - player->gamePrefix = section->get(STRING_LITERAL_AS_REFERENCE("GamePrefix"), group->gamePrefix); - player->access = section->getInt(STRING_LITERAL_AS_REFERENCE("Access"), group->access); + player->varData[this->name].set("Group"_jrs, group->name); + player->formatNamePrefix = section->get("Prefix"_jrs, group->prefix); + player->gamePrefix = section->get("GamePrefix"_jrs, group->gamePrefix); + player->access = section->get("Access"_jrs, group->access); if (player->access != 0) { server->sendMessage(player, Jupiter::StringS::Format("You are now authenticated with access level %d; group: %.*s.", player->access, group->name.size(), group->name.ptr())); @@ -197,16 +197,16 @@ int RenX_ModSystemPlugin::auth(RenX::Server *server, const RenX::PlayerInfo *pla if (forceAuth) return sectionAuth(); - bool lockSteam_l = section->getBool(STRING_LITERAL_AS_REFERENCE("LockSteam"), group->lockSteam); - bool lockIP_l = section->getBool(STRING_LITERAL_AS_REFERENCE("LockIP"), group->lockIP); - bool lockName_l = section->getBool(STRING_LITERAL_AS_REFERENCE("LockName"), group->lockName); - bool kickLockMismatch_l = section->getBool(STRING_LITERAL_AS_REFERENCE("KickLockMismatch"), group->kickLockMismatch); - bool autoAuthSteam_l = section->getBool(STRING_LITERAL_AS_REFERENCE("AutoAuthSteam"), group->autoAuthSteam); - bool autoAuthIP_l = section->getBool(STRING_LITERAL_AS_REFERENCE("AutoAuthIP"), group->autoAuthIP); + bool lockSteam_l = section->get("LockSteam"_jrs, group->lockSteam); + bool lockIP_l = section->get("LockIP"_jrs, group->lockIP); + bool lockName_l = section->get("LockName"_jrs, group->lockName); + bool kickLockMismatch_l = section->get("KickLockMismatch"_jrs, group->kickLockMismatch); + bool autoAuthSteam_l = section->get("AutoAuthSteam"_jrs, group->autoAuthSteam); + bool autoAuthIP_l = section->get("AutoAuthIP"_jrs, group->autoAuthIP); - uint64_t steamid = section->get(STRING_LITERAL_AS_REFERENCE("SteamID")).asUnsignedLongLong(); - const Jupiter::ReadableString &ip = section->get(STRING_LITERAL_AS_REFERENCE("LastIP")); - const Jupiter::ReadableString &name = section->get(STRING_LITERAL_AS_REFERENCE("Name")); + uint64_t steamid = section->get("SteamID"_jrs).asUnsignedLongLong(); + const Jupiter::ReadableString &ip = section->get("LastIP"_jrs); + const Jupiter::ReadableString &name = section->get("Name"_jrs); if ((lockSteam_l == false || player->steamid == steamid) && (lockIP_l == false || player->ip.equalsi(ip)) && (lockName_l == false || player->name.equalsi(name))) { @@ -215,14 +215,14 @@ int RenX_ModSystemPlugin::auth(RenX::Server *server, const RenX::PlayerInfo *pla } else if (kickLockMismatch_l) { - server->kickPlayer(player, STRING_LITERAL_AS_REFERENCE("Moderator entry lock mismatch")); + server->kickPlayer(player, "Moderator entry lock mismatch"_jrs); return -1; } } } group = this->getDefaultGroup(); - player->varData.set(this->name, STRING_LITERAL_AS_REFERENCE("Group"), group->name); + player->varData[this->name].set("Group"_jrs, group->name); player->formatNamePrefix = group->prefix; player->gamePrefix = group->gamePrefix; return player->access = group->access; @@ -232,7 +232,7 @@ void RenX_ModSystemPlugin::tempAuth(RenX::Server *server, const RenX::PlayerInfo { if (group == nullptr) group = this->getDefaultGroup(); - player->varData.set(name, STRING_LITERAL_AS_REFERENCE("Group"), group->name); + player->varData[name].set("Group"_jrs, group->name); player->formatNamePrefix = group->prefix; player->gamePrefix = group->gamePrefix; player->access = group->access; @@ -242,11 +242,11 @@ void RenX_ModSystemPlugin::tempAuth(RenX::Server *server, const RenX::PlayerInfo bool RenX_ModSystemPlugin::set(RenX::PlayerInfo *player, RenX_ModSystemPlugin::ModGroup *group) { - bool r = this->config.set(player->uuid, STRING_LITERAL_AS_REFERENCE("Group"), group->name); - this->config.set(player->uuid, STRING_LITERAL_AS_REFERENCE("SteamID"), Jupiter::StringS::Format("%llu", player->steamid)); - this->config.set(player->uuid, STRING_LITERAL_AS_REFERENCE("LastIP"), player->ip); - this->config.set(player->uuid, STRING_LITERAL_AS_REFERENCE("Name"), player->name); - this->config.sync(); + bool r = this->config[player->uuid].set("Group"_jrs, group->name); + this->config[player->uuid].set("SteamID"_jrs, Jupiter::StringS::Format("%llu", player->steamid)); + this->config[player->uuid].set("LastIP"_jrs, player->ip); + this->config[player->uuid].set("Name"_jrs, player->name); + this->config.write(); return r; } @@ -279,11 +279,11 @@ RenX_ModSystemPlugin::ModGroup *RenX_ModSystemPlugin::getGroupByIndex(size_t ind int RenX_ModSystemPlugin::getConfigAccess(const Jupiter::ReadableString &uuid) const { - Jupiter::INIFile::Section *section = this->config.getSection(uuid); + Jupiter::Config *section = this->config.getSection(uuid); if (section == nullptr) return RenX_ModSystemPlugin::groups.get(0)->access; - RenX_ModSystemPlugin::ModGroup *group = RenX_ModSystemPlugin::getGroupByName(section->get(STRING_LITERAL_AS_REFERENCE("Group")), groups.get(0)); - return section->getInt(STRING_LITERAL_AS_REFERENCE("Access"), group->access); + RenX_ModSystemPlugin::ModGroup *group = RenX_ModSystemPlugin::getGroupByName(section->get("Group"_jrs), groups.get(0)); + return section->get("Access"_jrs, group->access); } size_t RenX_ModSystemPlugin::getGroupCount() const @@ -326,7 +326,7 @@ RenX_ModSystemPlugin::~RenX_ModSystemPlugin() player = n->data; if (player->isBot == false) { - player->varData.remove(RenX_ModSystemPlugin::name, STRING_LITERAL_AS_REFERENCE("Group")); + player->varData[RenX_ModSystemPlugin::name].remove("Group"_jrs); player->gamePrefix.truncate(player->gamePrefix.size()); player->formatNamePrefix.truncate(player->formatNamePrefix.size()); if (player->adminType.equals("administrator")) @@ -352,12 +352,12 @@ void RenX_ModSystemPlugin::RenX_OnPlayerDelete(RenX::Server *server, const RenX: { if (RenX_ModSystemPlugin::groups.size() != 0 && player->isBot == false && player->uuid.isNotEmpty()) { - Jupiter::INIFile::Section *section = this->config.getSection(player->uuid); + Jupiter::Config *section = this->config.getSection(player->uuid); if (section != nullptr) { - section->set(STRING_LITERAL_AS_REFERENCE("SteamID"), Jupiter::StringS::Format("%llu", player->steamid)); - section->set(STRING_LITERAL_AS_REFERENCE("LastIP"), player->ip); - section->set(STRING_LITERAL_AS_REFERENCE("Name"), player->name); + section->set("SteamID"_jrs, Jupiter::StringS::Format("%llu", player->steamid)); + section->set("LastIP"_jrs, player->ip); + section->set("Name"_jrs, player->name); } } } @@ -430,7 +430,7 @@ RenX_ModSystemPlugin pluginInstance; void AuthIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("auth")); + this->addTrigger("auth"_jrs); this->setAccessLevel(3); } @@ -453,32 +453,32 @@ void AuthIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &cha serverMatch = true; player = server->getPlayerByPartName(parameters); if (player == nullptr) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Player not found.")); + source->sendNotice(nick, "Error: Player not found."_jrs); else { int uAccess = source->getAccessLevel(channel, nick); int cAccess = pluginInstance.getConfigAccess(player->uuid); if (cAccess > uAccess && uAccess < static_cast(source->getPrefixes().size())) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Can't authenticate higher level moderators.")); + source->sendNotice(nick, "Error: Can't authenticate higher level moderators."_jrs); else if (player->access == cAccess) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Player is already authenticated")); + source->sendNotice(nick, "Error: Player is already authenticated"_jrs); else if (player->access > cAccess) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Player is already temporarily authenticated.")); + source->sendNotice(nick, "Error: Player is already temporarily authenticated."_jrs); else { RenX_ModSystemPlugin::ModGroup *defaultGroup = pluginInstance.getDefaultGroup(); if (pluginInstance.auth(server, player) == -1) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Player failed to pass strict lock checks. Player kicked.")); - else if (defaultGroup->name.equals(player->varData.get(pluginInstance.getName(), STRING_LITERAL_AS_REFERENCE("Group")))) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Failed to authenticate player.")); + source->sendNotice(nick, "Error: Player failed to pass strict lock checks. Player kicked."_jrs); + else if (defaultGroup->name.equals(player->varData[pluginInstance.getName()].get("Group"_jrs))) + source->sendNotice(nick, "Error: Failed to authenticate player."_jrs); else - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Player authenticated successfully.")); + source->sendNotice(nick, "Player authenticated successfully."_jrs); } } } } if (serverMatch == false) - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."_jrs); } } else @@ -497,10 +497,10 @@ IRC_COMMAND_INIT(AuthIRCCommand) void DeAuthIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("unauth")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("deauth")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("demod")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("dtm")); + this->addTrigger("unauth"_jrs); + this->addTrigger("deauth"_jrs); + this->addTrigger("demod"_jrs); + this->addTrigger("dtm"_jrs); this->setAccessLevel(3); } @@ -523,22 +523,22 @@ void DeAuthIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &c serverMatch = true; player = server->getPlayerByPartName(parameters); if (player == nullptr) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Player not found.")); + source->sendNotice(nick, "Error: Player not found."_jrs); else { int uAccess = source->getAccessLevel(channel, nick); int cAccess = pluginInstance.getConfigAccess(player->uuid); if (cAccess > uAccess && uAccess < static_cast(source->getPrefixes().size())) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Can't unauthenticate higher level moderators.")); + source->sendNotice(nick, "Error: Can't unauthenticate higher level moderators."_jrs); else if (pluginInstance.resetAccess(player)) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Player unauthenticated successfully.")); + source->sendNotice(nick, "Player unauthenticated successfully."_jrs); else - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Player not authenticated.")); + source->sendNotice(nick, "Error: Player not authenticated."_jrs); } } } if (serverMatch == false) - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."_jrs); } } else @@ -557,7 +557,7 @@ IRC_COMMAND_INIT(DeAuthIRCCommand) void ATMIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("atm")); + this->addTrigger("atm"_jrs); this->setAccessLevel(3); } @@ -581,10 +581,10 @@ void ATMIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &chan int index = parameters.asInt(); if (index < 0 || index >= static_cast(pluginInstance.groups.size())) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Warning: Invalid group index. Ingoring parameter...")); + source->sendNotice(nick, "Warning: Invalid group index. Ingoring parameter..."_jrs); else if (index == 0) { - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Default group is not valid for this command. Use \"deauth\" to deauthorize a player.")); + source->sendNotice(nick, "Error: Default group is not valid for this command. Use \"deauth\" to deauthorize a player."_jrs); return; } else @@ -593,7 +593,7 @@ void ATMIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &chan if (group->access > source->getAccessLevel(channel, nick)) { group = pluginInstance.getDefaultATMGroup(); - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Warning: You can not authorize an access level higher than yourself. Ignoring parameter...")); + source->sendNotice(nick, "Warning: You can not authorize an access level higher than yourself. Ignoring parameter..."_jrs); } playerName = playerName.gotoWord(1, WHITESPACE); if (playerName.isEmpty()) @@ -601,7 +601,7 @@ void ATMIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &chan } } if (group == nullptr) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Invalid group.")); + source->sendNotice(nick, "Error: Invalid group."_jrs); else { for (unsigned int i = 0; i != RenX::getCore()->getServerCount(); i++) @@ -612,18 +612,18 @@ void ATMIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &chan serverMatch = true; player = server->getPlayerByPartName(playerName); if (player == nullptr) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Player not found.")); + source->sendNotice(nick, "Error: Player not found."_jrs); else if (player->access > group->access) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: This command can not lower a player's access level.")); + source->sendNotice(nick, "Error: This command can not lower a player's access level."_jrs); else { pluginInstance.tempAuth(server, player, group); - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Player successfully temporarily authenticated.")); + source->sendNotice(nick, "Player successfully temporarily authenticated."_jrs); } } } if (serverMatch == false) - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."_jrs); } } } @@ -641,16 +641,16 @@ IRC_COMMAND_INIT(ATMIRCCommand) void AddIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("addmod")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("add")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("set")); + this->addTrigger("addmod"_jrs); + this->addTrigger("add"_jrs); + this->addTrigger("set"_jrs); this->setAccessLevel(5); } void AddIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &channel, const Jupiter::ReadableString &nick, const Jupiter::ReadableString ¶meters) { if (parameters.wordCount(WHITESPACE) < 2) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too few parameters. Syntax: add ")); + source->sendNotice(nick, "Error: Too few parameters. Syntax: add "_jrs); else { Jupiter::IRC::Client::Channel *chan = source->getChannel(channel); @@ -667,7 +667,7 @@ void AddIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &chan int index = parameters.asInt(); if (index < 0 || index >= static_cast(pluginInstance.groups.size())) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Invalid group index.")); + source->sendNotice(nick, "Error: Invalid group index."_jrs); else { group = pluginInstance.groups.get(index); @@ -675,7 +675,7 @@ void AddIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &chan } } if (group == nullptr) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Invalid group.")); + source->sendNotice(nick, "Error: Invalid group."_jrs); else { for (unsigned int i = 0; i != RenX::getCore()->getServerCount(); i++) @@ -686,11 +686,11 @@ void AddIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &chan serverMatch = true; player = server->getPlayerByPartName(playerName); if (player == nullptr) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Player not found.")); + source->sendNotice(nick, "Error: Player not found."_jrs); else if (player->isBot) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: A bot can not be a moderator.")); + source->sendNotice(nick, "Error: A bot can not be a moderator."_jrs); else if (player->uuid.isEmpty()) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Player has no UUID.")); + source->sendNotice(nick, "Error: Player has no UUID."_jrs); else { pluginInstance.resetAccess(player); @@ -703,7 +703,7 @@ void AddIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &chan } } if (serverMatch == false) - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."_jrs); } } } @@ -721,17 +721,17 @@ IRC_COMMAND_INIT(AddIRCCommand) void DelIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("delmod")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("remmod")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("del")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("rem")); + this->addTrigger("delmod"_jrs); + this->addTrigger("remmod"_jrs); + this->addTrigger("del"_jrs); + this->addTrigger("rem"_jrs); this->setAccessLevel(5); } void DelIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &channel, const Jupiter::ReadableString &nick, const Jupiter::ReadableString ¶meters) { if (parameters.isEmpty()) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too few parameters. Syntax: del ")); + source->sendNotice(nick, "Error: Too few parameters. Syntax: del "_jrs); else { Jupiter::IRC::Client::Channel *chan = source->getChannel(channel); @@ -751,40 +751,44 @@ void DelIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &chan if (player == nullptr) { if (pluginInstance.modsFile.remove(parameters)) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Player has been removed from the moderator list.")); + source->sendNotice(nick, "Player has been removed from the moderator list."_jrs); else { - size_t index = pluginInstance.modsFile.getSections(); - Jupiter::INIFile::Section *section; + auto bucket_itr = pluginInstance.modsFile.getSections().begin(); + auto bucket_end = pluginInstance.modsFile.getSections().end(); - DelIRCCommand_trigger_loop: - if (index != 0) + while (bucket_itr != bucket_end) { - section = pluginInstance.modsFile.getSection(--index); - if (section->get(STRING_LITERAL_AS_REFERENCE("Name")).equalsi(parameters)) + for (auto entry_itr = bucket_itr->m_entries.getHead(); entry_itr != nullptr; entry_itr = entry_itr->next) { - if (pluginInstance.modsFile.remove(index)) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Player has been removed from the moderator list.")); - else - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Unknown error occurred.")); + if (entry_itr->data->value.get("Name"_jrs).equalsi(parameters)) + { + if (pluginInstance.modsFile.remove(entry_itr->data->key)) + source->sendNotice(nick, "Player has been removed from the moderator list."_jrs); + else + source->sendNotice(nick, "Error: Unknown error occurred."_jrs); + + bucket_itr = bucket_end; + return; + } } - else - goto DelIRCCommand_trigger_loop; } - else - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Player not found.")); + + source->sendNotice(nick, "Error: Player not found."_jrs); } } else if (player->isBot) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: A bot can not be a moderator.")); + source->sendNotice(nick, "Error: A bot can not be a moderator."_jrs); else if (pluginInstance.modsFile.remove(player->uuid)) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Player has been removed from the moderator list.")); + source->sendNotice(nick, "Player has been removed from the moderator list."_jrs); else - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Player is not in the moderator list.")); + source->sendNotice(nick, "Player is not in the moderator list."_jrs); + + break; } } if (serverMatch == false) - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."_jrs); } } } @@ -801,8 +805,8 @@ IRC_COMMAND_INIT(DelIRCCommand) void ForceAuthIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("fauth")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("forceauth")); + this->addTrigger("fauth"_jrs); + this->addTrigger("forceauth"_jrs); this->setAccessLevel(4); } @@ -825,31 +829,31 @@ void ForceAuthIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString serverMatch = true; player = server->getPlayerByPartName(parameters); if (player == nullptr) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Player not found.")); + source->sendNotice(nick, "Error: Player not found."_jrs); else { int uAccess = source->getAccessLevel(channel, nick); int cAccess = pluginInstance.getConfigAccess(player->uuid); if (cAccess > uAccess && uAccess < static_cast(source->getPrefixes().size())) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Can't authenticate higher level moderators.")); + source->sendNotice(nick, "Error: Can't authenticate higher level moderators."_jrs); else if (player->access == cAccess) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Player is already authenticated")); + source->sendNotice(nick, "Error: Player is already authenticated"_jrs); else if (player->access > cAccess) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Player is already temporarily authenticated.")); + source->sendNotice(nick, "Error: Player is already temporarily authenticated."_jrs); else { RenX_ModSystemPlugin::ModGroup *defaultGroup = pluginInstance.getDefaultGroup(); pluginInstance.auth(server, player, false, true); - if (defaultGroup->name.equals(player->varData.get(pluginInstance.getName(), STRING_LITERAL_AS_REFERENCE("Group")))) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Failed to authenticate player.")); + if (defaultGroup->name.equals(player->varData[pluginInstance.getName()].get("Group"_jrs))) + source->sendNotice(nick, "Error: Failed to authenticate player."_jrs); else - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Player authenticated successfully.")); + source->sendNotice(nick, "Player authenticated successfully."_jrs); } } } } if (serverMatch == false) - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."_jrs); } } else @@ -868,35 +872,37 @@ IRC_COMMAND_INIT(ForceAuthIRCCommand) void ModListIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("modlist")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("mlist")); + this->addTrigger("modlist"_jrs); + this->addTrigger("mlist"_jrs); } void ModListIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &channel, const Jupiter::ReadableString &nick, const Jupiter::ReadableString ¶meters) { RenX_ModSystemPlugin::ModGroup *group; - Jupiter::INIFile::Section *section; - size_t i; Jupiter::String msg; size_t msgBaseSize; bool haveMods = false; - for (Jupiter::DLList::Node *n = pluginInstance.groups.getNode(0); n != nullptr; n = n->next) + for (Jupiter::DLList::Node *n = pluginInstance.groups.getHead(); n != nullptr; n = n->next) { group = n->data; msg = group->prefix; msg += group->name; msg.aformat(IRCNORMAL " (Access: %d): ", group->access); msgBaseSize = msg.size(); - i = pluginInstance.modsFile.getSections(); - while (i != 0) + auto bucket_itr = pluginInstance.modsFile.getSections().begin(); + auto bucket_end = pluginInstance.modsFile.getSections().end(); + + auto entry_callback = [&msg, group](Jupiter::Config::SectionHashTable::Bucket::Entry &in_entry) { - section = pluginInstance.modsFile.getSection(--i); - if (section->get(STRING_LITERAL_AS_REFERENCE("Group")).equalsi(group->name)) + if (in_entry.value.get("Group"_jrs).equalsi(group->name)) { - msg += section->get(STRING_LITERAL_AS_REFERENCE("Name"), section->getName()); - msg += STRING_LITERAL_AS_REFERENCE(", "); + msg += in_entry.value.get("Name"_jrs, in_entry.value.getName()); + msg += ", "_jrs; } - } + }; + + pluginInstance.modsFile.getSections().callback(entry_callback); + if (msg.size() != msgBaseSize) { msg.truncate(2); @@ -905,7 +911,7 @@ void ModListIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString & } } if (!haveMods) - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("There are no configured moderators.")); + source->sendMessage(channel, "There are no configured moderators."_jrs); } const Jupiter::ReadableString &ModListIRCCommand::getHelp(const Jupiter::ReadableString &) @@ -922,7 +928,7 @@ IRC_COMMAND_INIT(ModListIRCCommand) void AuthGameCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("auth")); + this->addTrigger("auth"_jrs); this->setAccessLevel(3); } @@ -932,32 +938,32 @@ void AuthGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, co { RenX::PlayerInfo *target = source->getPlayerByPartName(parameters); if (target == nullptr) - source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Player not found.")); + source->sendMessage(player, "Error: Player not found."_jrs); else if (target == player) - source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: You can not authenticate yourself.")); + source->sendMessage(player, "Error: You can not authenticate yourself."_jrs); else { int cAccess = pluginInstance.getConfigAccess(target->uuid); if (cAccess > player->access) - source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Can't authenticate higher level moderators.")); + source->sendMessage(player, "Error: Can't authenticate higher level moderators."_jrs); else if (target->access == cAccess) - source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Player is already authenticated")); + source->sendMessage(player, "Error: Player is already authenticated"_jrs); else if (target->access > cAccess) - source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Player is already temporarily authenticated.")); + source->sendMessage(player, "Error: Player is already temporarily authenticated."_jrs); else { RenX_ModSystemPlugin::ModGroup *defaultGroup = pluginInstance.getDefaultGroup(); if (pluginInstance.auth(source, player) == -1) - source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Player failed to pass strict lock checks. Player kicked.")); - else if (defaultGroup->name.equals(player->varData.get(pluginInstance.getName(), STRING_LITERAL_AS_REFERENCE("Group")))) - source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Failed to authenticate player.")); + source->sendMessage(player, "Error: Player failed to pass strict lock checks. Player kicked."_jrs); + else if (defaultGroup->name.equals(player->varData[pluginInstance.getName()].get("Group"_jrs))) + source->sendMessage(player, "Error: Failed to authenticate player."_jrs); else - source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Player authenticated successfully.")); + source->sendMessage(player, "Player authenticated successfully."_jrs); } } } else - source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Too few parameters. Syntax: auth ")); + source->sendMessage(player, "Error: Too few parameters. Syntax: auth "_jrs); } const Jupiter::ReadableString &AuthGameCommand::getHelp(const Jupiter::ReadableString &) @@ -972,7 +978,7 @@ GAME_COMMAND_INIT(AuthGameCommand) void ATMGameCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("atm")); + this->addTrigger("atm"_jrs); this->setAccessLevel(3); } @@ -988,10 +994,10 @@ void ATMGameCommand::trigger(RenX::Server *server, RenX::PlayerInfo *player, con int index = parameters.asInt(); if (index < 0 || index >= static_cast(pluginInstance.groups.size())) - server->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Warning: Invalid group index. Ingoring parameter...")); + server->sendMessage(player, "Warning: Invalid group index. Ingoring parameter..."_jrs); else if (index == 0) { - server->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Default group is not valid for this command. Use \"deauth\" to deauthorize a player.")); + server->sendMessage(player, "Error: Default group is not valid for this command. Use \"deauth\" to deauthorize a player."_jrs); return; } else @@ -1000,7 +1006,7 @@ void ATMGameCommand::trigger(RenX::Server *server, RenX::PlayerInfo *player, con if (group->access > player->access) { group = pluginInstance.getDefaultATMGroup(); - server->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Warning: You can not authorize an access level higher than yourself. Ignoring parameter...")); + server->sendMessage(player, "Warning: You can not authorize an access level higher than yourself. Ignoring parameter..."_jrs); } playerName = playerName.gotoWord(1, WHITESPACE); } @@ -1009,20 +1015,20 @@ void ATMGameCommand::trigger(RenX::Server *server, RenX::PlayerInfo *player, con { target = server->getPlayerByPartName(playerName); if (target == nullptr) - server->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Player not found.")); + server->sendMessage(player, "Error: Player not found."_jrs); else if (target->access > group->access) - server->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: This command can not lower a player's access level.")); + server->sendMessage(player, "Error: This command can not lower a player's access level."_jrs); else { pluginInstance.tempAuth(server, target, group); - server->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Player successfully temporarily authenticated.")); + server->sendMessage(player, "Player successfully temporarily authenticated."_jrs); } } else - server->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Invalid group.")); + server->sendMessage(player, "Error: Invalid group."_jrs); } else - server->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Too few parameters. Syntax: auth ")); + server->sendMessage(player, "Error: Too few parameters. Syntax: auth "_jrs); } const Jupiter::ReadableString &ATMGameCommand::getHelp(const Jupiter::ReadableString &) @@ -1037,8 +1043,8 @@ GAME_COMMAND_INIT(ATMGameCommand) void ForceAuthGameCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("fauth")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("forceauth")); + this->addTrigger("fauth"_jrs); + this->addTrigger("forceauth"_jrs); this->setAccessLevel(4); } @@ -1048,31 +1054,31 @@ void ForceAuthGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *playe { RenX::PlayerInfo *target = source->getPlayerByPartName(parameters); if (target == nullptr) - source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Player not found.")); + source->sendMessage(player, "Error: Player not found."_jrs); else if (target == player) - source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: You can not force-authenticate yourself.")); + source->sendMessage(player, "Error: You can not force-authenticate yourself."_jrs); else { int cAccess = pluginInstance.getConfigAccess(target->uuid); if (cAccess > player->access) - source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Can't authenticate higher level moderators.")); + source->sendMessage(player, "Error: Can't authenticate higher level moderators."_jrs); else if (target->access == cAccess) - source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Player is already authenticated")); + source->sendMessage(player, "Error: Player is already authenticated"_jrs); else if (target->access > cAccess) - source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Player is already temporarily authenticated.")); + source->sendMessage(player, "Error: Player is already temporarily authenticated."_jrs); else { RenX_ModSystemPlugin::ModGroup *defaultGroup = pluginInstance.getDefaultGroup(); pluginInstance.auth(source, player, false, true); - if (defaultGroup->name.equals(player->varData.get(pluginInstance.getName(), STRING_LITERAL_AS_REFERENCE("Group")))) - source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Failed to authenticate player.")); + if (defaultGroup->name.equals(player->varData[pluginInstance.getName()].get("Group"_jrs))) + source->sendMessage(player, "Error: Failed to authenticate player."_jrs); else - source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Player authenticated successfully.")); + source->sendMessage(player, "Player authenticated successfully."_jrs); } } } else - source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Too few parameters. Syntax: fauth ")); + source->sendMessage(player, "Error: Too few parameters. Syntax: fauth "_jrs); } const Jupiter::ReadableString &ForceAuthGameCommand::getHelp(const Jupiter::ReadableString &) diff --git a/RenX.ModSystem/RenX_ModSystem.h b/RenX.ModSystem/RenX_ModSystem.h index cbaaa61..1752d96 100644 --- a/RenX.ModSystem/RenX_ModSystem.h +++ b/RenX.ModSystem/RenX_ModSystem.h @@ -22,7 +22,6 @@ #include "Jupiter/Plugin.h" #include "Jupiter/Reference_String.h" #include "Jupiter/String.h" -#include "Jupiter/INIFile.h" #include "Jupiter/DLList.h" #include "IRC_Command.h" #include "RenX_Plugin.h" @@ -104,7 +103,7 @@ class RenX_ModSystemPlugin : public RenX::Plugin public: // Jupiter::Plugin int OnRehash() override; - Jupiter::INIFile &modsFile = Jupiter::Plugin::config; + Jupiter::Config &modsFile = Jupiter::Plugin::config; private: bool lockSteam; bool lockIP; diff --git a/RenX.ServerList/RenX_ServerList.cpp b/RenX.ServerList/RenX_ServerList.cpp index 47ee876..e782fb9 100644 --- a/RenX.ServerList/RenX_ServerList.cpp +++ b/RenX.ServerList/RenX_ServerList.cpp @@ -17,7 +17,6 @@ */ #include "Jupiter/IRC_Client.h" -#include "Jupiter/INIFile.h" #include "Jupiter/HTTP.h" #include "Jupiter/HTTP_QueryString.h" #include "HTTPServer.h" @@ -146,12 +145,12 @@ Jupiter::String sanitize_game(const Jupiter::ReadableString &in_str) bool RenX_ServerListPlugin::initialize() { - RenX_ServerListPlugin::web_hostname = this->config.get(Jupiter::ReferenceString::empty, "Hostname"_jrs, ""_jrs); - RenX_ServerListPlugin::web_path = this->config.get(Jupiter::ReferenceString::empty, "Path"_jrs, "/"_jrs); - RenX_ServerListPlugin::server_list_page_name = this->config.get(Jupiter::ReferenceString::empty, "ServersPageName"_jrs, "servers.jsp"_jrs); - RenX_ServerListPlugin::server_list_long_page_name = this->config.get(Jupiter::ReferenceString::empty, "HumanServersPageName"_jrs, "servers_long.jsp"_jrs); - RenX_ServerListPlugin::server_page_name = this->config.get(Jupiter::ReferenceString::empty, "ServerPageName"_jrs, "server.jsp"_jrs); - RenX_ServerListPlugin::game_server_list_page_name = this->config.get(Jupiter::ReferenceString::empty, "ServersGamePageName"_jrs, "browser.jsp"_jrs); + RenX_ServerListPlugin::web_hostname = this->config.get("Hostname"_jrs, ""_jrs); + RenX_ServerListPlugin::web_path = this->config.get("Path"_jrs, "/"_jrs); + RenX_ServerListPlugin::server_list_page_name = this->config.get("ServersPageName"_jrs, "servers.jsp"_jrs); + RenX_ServerListPlugin::server_list_long_page_name = this->config.get("HumanServersPageName"_jrs, "servers_long.jsp"_jrs); + RenX_ServerListPlugin::server_page_name = this->config.get("ServerPageName"_jrs, "server.jsp"_jrs); + RenX_ServerListPlugin::game_server_list_page_name = this->config.get("ServersGamePageName"_jrs, "browser.jsp"_jrs); /** Initialize content */ Jupiter::HTTP::Server &server = getHTTPServer(); @@ -559,7 +558,7 @@ void RenX_ServerListPlugin::addServerToServerList(RenX::Server *server) server_json_block += '}'; - server->varData.set(this->name, "j"_jrs, server_json_block); + server->varData[this->name].set("j"_jrs, server_json_block); } void RenX_ServerListPlugin::updateServerList() @@ -613,7 +612,7 @@ void RenX_ServerListPlugin::RenX_OnServerDisconnect(RenX::Server *server, RenX:: this->updateServerList(); // remove from individual listing - server->varData.remove(this->name, "j"_jrs); + server->varData[this->name].remove("j"_jrs); } void RenX_ServerListPlugin::RenX_OnJoin(RenX::Server *, const RenX::PlayerInfo *) @@ -694,7 +693,7 @@ Jupiter::ReadableString *handle_server_page(const Jupiter::ReadableString &query if (html_form_response.table.size() != 0) { address = html_form_response.table.get("ip"_jrs, address); - port = html_form_response.table.getInt("port"_jrs, port); + port = html_form_response.table.getCast("port"_jrs, port); } // search for server @@ -714,7 +713,7 @@ Jupiter::ReadableString *handle_server_page(const Jupiter::ReadableString &query } // return server data - return new Jupiter::ReferenceString(server->varData.get(pluginInstance.getName(), "j"_jrs)); + return new Jupiter::ReferenceString(server->varData[pluginInstance.getName()].get("j"_jrs)); } Jupiter::ReadableString *handle_game_server_list_page(const Jupiter::ReadableString &query_string) diff --git a/RenX.SetJoin/RenX_SetJoin.cpp b/RenX.SetJoin/RenX_SetJoin.cpp index 86db478..94ac83e 100644 --- a/RenX.SetJoin/RenX_SetJoin.cpp +++ b/RenX.SetJoin/RenX_SetJoin.cpp @@ -17,7 +17,6 @@ */ #include "Jupiter/IRC_Client.h" -#include "Jupiter/INIFile.h" #include "RenX_PlayerInfo.h" #include "RenX_Server.h" #include "RenX_SetJoin.h" @@ -28,7 +27,7 @@ void RenX_SetJoinPlugin::RenX_OnJoin(RenX::Server *server, const RenX::PlayerInf { if (player->uuid.isNotEmpty() && server->isMatchInProgress()) { - const Jupiter::ReadableString &setjoin = RenX_SetJoinPlugin::setjoin_file.get(Jupiter::ReferenceString::empty, player->uuid); + const Jupiter::ReadableString &setjoin = RenX_SetJoinPlugin::setjoin_file.get(player->uuid); if (setjoin.isNotEmpty()) server->sendMessage(Jupiter::StringS::Format("[%.*s] %.*s", player->name.size(), player->name.ptr(), setjoin.size(), setjoin.ptr())); } @@ -49,7 +48,7 @@ void ViewJoinGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player { if (player->uuid.isNotEmpty()) { - const Jupiter::ReadableString &setjoin = pluginInstance.setjoin_file.get(Jupiter::ReferenceString::empty, player->uuid); + const Jupiter::ReadableString &setjoin = pluginInstance.setjoin_file.get(player->uuid); if (setjoin.isNotEmpty()) source->sendMessage(player, Jupiter::StringS::Format("[%.*s] %.*s", player->name.size(), player->name.ptr(), setjoin.size(), setjoin.ptr())); else source->sendMessage(player, "Error: No setjoin found."_jrs); @@ -77,7 +76,7 @@ void ShowJoinGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player { if (player->uuid.isNotEmpty()) { - const Jupiter::ReadableString &setjoin = pluginInstance.setjoin_file.get(Jupiter::ReferenceString::empty, player->uuid); + const Jupiter::ReadableString &setjoin = pluginInstance.setjoin_file.get(player->uuid); if (setjoin.isNotEmpty()) source->sendMessage(Jupiter::StringS::Format("[%.*s] %.*s", player->name.size(), player->name.ptr(), setjoin.size(), setjoin.ptr())); else source->sendMessage(player, "Error: No setjoin found."_jrs); @@ -107,7 +106,7 @@ void DelJoinGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, { if (player->uuid.isNotEmpty()) { - if (pluginInstance.setjoin_file.remove(Jupiter::ReferenceString::empty, player->uuid)) + if (pluginInstance.setjoin_file.remove(player->uuid)) source->sendMessage(player, Jupiter::StringS::Format("%.*s, your join message has been removed.", player->name.size(), player->name.ptr())); else source->sendMessage(player, "Error: Setjoin not found."_jrs); } @@ -136,8 +135,8 @@ void SetJoinGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, { if (parameters.isNotEmpty()) { - pluginInstance.setjoin_file.set(Jupiter::ReferenceString::empty, player->uuid, parameters); - pluginInstance.setjoin_file.sync(); + pluginInstance.setjoin_file.set(player->uuid, parameters); + pluginInstance.setjoin_file.write(); source->sendMessage(player, Jupiter::StringS::Format("%.*s, your join message is now: %.*s", player->name.size(), player->name.ptr(), parameters.size(), parameters.ptr())); } else DelJoinGameCommand_instance.trigger(source, player, parameters); diff --git a/RenX.SetJoin/RenX_SetJoin.h b/RenX.SetJoin/RenX_SetJoin.h index f9c1623..fcce257 100644 --- a/RenX.SetJoin/RenX_SetJoin.h +++ b/RenX.SetJoin/RenX_SetJoin.h @@ -20,14 +20,13 @@ #define _RENX_SETJOIN_H_HEADER #include "Jupiter/Plugin.h" -#include "Jupiter/INIFile.h" #include "RenX_Plugin.h" #include "RenX_GameCommand.h" class RenX_SetJoinPlugin : public RenX::Plugin { public: - Jupiter::INIFile &setjoin_file = Jupiter::Plugin::config; + Jupiter::Config &setjoin_file = Jupiter::Plugin::config; public: // RenX::Plugin void RenX_OnJoin(RenX::Server *server, const RenX::PlayerInfo *player) override; diff --git a/RenX.Warn/RenX_Warn.cpp b/RenX.Warn/RenX_Warn.cpp index 6e794ca..5cf9c6f 100644 --- a/RenX.Warn/RenX_Warn.cpp +++ b/RenX.Warn/RenX_Warn.cpp @@ -21,10 +21,12 @@ #include "RenX_PlayerInfo.h" #include "RenX_Warn.h" +using namespace Jupiter::literals; + bool RenX_WarnPlugin::initialize() { - RenX_WarnPlugin::maxWarns = this->config.getInt(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("MaxWarns"), 3); - RenX_WarnPlugin::warnAction = this->config.getInt(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("MaxAction"), -1); + RenX_WarnPlugin::maxWarns = this->config.get("MaxWarns"_jrs, 3); + RenX_WarnPlugin::warnAction = this->config.get("MaxAction"_jrs, -1); return true; } @@ -43,8 +45,8 @@ STRING_LITERAL_AS_NAMED_REFERENCE(WARNS_KEY, "w"); void WarnIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("warn")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("w")); + this->addTrigger("warn"_jrs); + this->addTrigger("w"_jrs); this->setAccessLevel(2); } @@ -68,7 +70,7 @@ void WarnIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &cha player = server->getPlayerByPartName(parameters); if (player != nullptr) { - int warns = player->varData.getInt(pluginInstance.getName(), WARNS_KEY) + 1; + int warns = player->varData[pluginInstance.getName()].get(WARNS_KEY) + 1; if (warns > pluginInstance.maxWarns) { switch (pluginInstance.warnAction) @@ -78,14 +80,14 @@ void WarnIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &cha source->sendNotice(nick, Jupiter::StringS::Format("%.*s has been kicked from the server for exceeding the warning limit (%d warnings).", player->name.size(), player->name.ptr(), warns)); break; default: - server->banPlayer(player, STRING_LITERAL_AS_REFERENCE("Jupiter Bot/RenX.Warn"), Jupiter::StringS::Format("Warning limit reached (%d warnings)", warns), std::chrono::seconds(pluginInstance.warnAction)); + server->banPlayer(player, "Jupiter Bot/RenX.Warn"_jrs, Jupiter::StringS::Format("Warning limit reached (%d warnings)", warns), std::chrono::seconds(pluginInstance.warnAction)); source->sendNotice(nick, Jupiter::StringS::Format("%.*s has been banned from the server for exceeding the warning limit (%d warnings).", player->name.size(), player->name.ptr(), warns)); break; } } else { - player->varData.set(pluginInstance.getName(), WARNS_KEY, Jupiter::StringS::Format("%d", warns)); + player->varData[pluginInstance.getName()].set(WARNS_KEY, Jupiter::StringS::Format("%d", warns)); server->sendMessage(player, Jupiter::StringS::Format("You have been warned by %.*s@IRC; improve your behavior, or you will be disciplined. You have %d warnings.", nick.size(), nick.ptr(), warns)); source->sendNotice(nick, Jupiter::StringS::Format("%.*s has been warned; they now have %d warnings.", player->name.size(), player->name.ptr(), warns)); } @@ -94,11 +96,11 @@ void WarnIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &cha } } else - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."_jrs); } } else - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too Few Parameters. Syntax: Warn ")); + source->sendNotice(nick, "Error: Too Few Parameters. Syntax: Warn "_jrs); } const Jupiter::ReadableString &WarnIRCCommand::getHelp(const Jupiter::ReadableString &) @@ -113,9 +115,9 @@ IRC_COMMAND_INIT(WarnIRCCommand) void PardonIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("pardon")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("forgive")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("unwarn")); + this->addTrigger("pardon"_jrs); + this->addTrigger("forgive"_jrs); + this->addTrigger("unwarn"_jrs); this->setAccessLevel(2); } @@ -139,7 +141,7 @@ void PardonIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &c player = server->getPlayerByPartName(parameters); if (player != nullptr) { - player->varData.remove(pluginInstance.getName(), WARNS_KEY); + 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())); source->sendNotice(nick, Jupiter::StringS::Format("%.*s has been pardoned; their warnings have been reset.", player->name.size(), player->name.ptr())); } @@ -147,7 +149,7 @@ void PardonIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &c } } else - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Error: Channel not attached to any connected Renegade X servers.")); + source->sendMessage(channel, "Error: Channel not attached to any connected Renegade X servers."_jrs); } } else @@ -166,8 +168,8 @@ IRC_COMMAND_INIT(PardonIRCCommand) void WarnGameCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("warn")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("w")); + this->addTrigger("warn"_jrs); + this->addTrigger("w"_jrs); this->setAccessLevel(1); } @@ -178,7 +180,7 @@ void WarnGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, co RenX::PlayerInfo *target = source->getPlayerByPartName(parameters); if (target != nullptr) { - int warns = target->varData.getInt(pluginInstance.getName(), WARNS_KEY) + 1; + int warns = target->varData[pluginInstance.getName()].get(WARNS_KEY) + 1; if (warns > pluginInstance.maxWarns) { switch (pluginInstance.warnAction) @@ -188,21 +190,21 @@ void WarnGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, co source->sendMessage(player, Jupiter::StringS::Format("%.*s has been kicked from the server for exceeding the warning limit (%d warnings).", target->name.size(), target->name.ptr(), warns)); break; default: - source->banPlayer(target, STRING_LITERAL_AS_REFERENCE("Jupiter Bot/RenX.Warn"), Jupiter::StringS::Format("Warning limit reached (%d warnings)", warns), std::chrono::seconds(pluginInstance.warnAction)); + source->banPlayer(target, "Jupiter Bot/RenX.Warn"_jrs, Jupiter::StringS::Format("Warning limit reached (%d warnings)", warns), std::chrono::seconds(pluginInstance.warnAction)); source->sendMessage(player, Jupiter::StringS::Format("%.*s has been banned from the server for exceeding the warning limit (%d warnings).", target->name.size(), target->name.ptr(), warns)); break; } } else { - target->varData.set(pluginInstance.getName(), WARNS_KEY, Jupiter::StringS::Format("%d", warns)); + target->varData[pluginInstance.getName()].set(WARNS_KEY, Jupiter::StringS::Format("%d", warns)); source->sendMessage(target, Jupiter::StringS::Format("You have been warned by %.*s; improve your behavior, or you will be disciplined. You have %d warnings.", player->name.size(), player->name.ptr(), warns)); source->sendMessage(player, Jupiter::StringS::Format("%.*s has been warned; they now have %d warnings.", target->name.size(), target->name.ptr(), warns)); } } } else - source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Too few parameters. Syntax: Warn ")); + source->sendMessage(player, "Error: Too few parameters. Syntax: Warn "_jrs); } const Jupiter::ReadableString &WarnGameCommand::getHelp(const Jupiter::ReadableString &) @@ -217,9 +219,9 @@ GAME_COMMAND_INIT(WarnGameCommand) void PardonGameCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("pardon")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("forgive")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("unwarn")); + this->addTrigger("pardon"_jrs); + this->addTrigger("forgive"_jrs); + this->addTrigger("unwarn"_jrs); this->setAccessLevel(1); } @@ -230,7 +232,7 @@ void PardonGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, RenX::PlayerInfo *target = source->getPlayerByPartName(parameters); if (target != nullptr) { - target->varData.remove(pluginInstance.getName(), WARNS_KEY); + target->varData[pluginInstance.getName()].remove(WARNS_KEY); source->sendMessage(target, Jupiter::StringS::Format("You have been pardoned by %.*s@IRC; your warnings have been reset.", player->name.size(), player->name.ptr())); source->sendMessage(player, Jupiter::StringS::Format("%.*s has been pardoned; their warnings have been reset.", target->name.size(), target->name.ptr())); } diff --git a/SetJoin/SetJoin.cpp b/SetJoin/SetJoin.cpp index 57d6936..cfe300f 100644 --- a/SetJoin/SetJoin.cpp +++ b/SetJoin/SetJoin.cpp @@ -17,18 +17,19 @@ */ #include -#include "Jupiter/INIFile.h" #include "Jupiter/Functions.h" #include "SetJoin.h" #include "IRC_Bot.h" +using namespace Jupiter::literals; + void SetJoinPlugin::OnJoin(Jupiter::IRC::Client *server, const Jupiter::ReadableString &chan, const Jupiter::ReadableString &nick) { - const Jupiter::ReadableString &setjoin = this->config.get(server->getConfigSection(), nick); + const Jupiter::ReadableString &setjoin = this->config[server->getConfigSection()].get(nick); if (setjoin.isNotEmpty()) { if (setjoin == nullptr) - server->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("No setjoin has been set for you. To set one, use the !setjoin command")); + server->sendNotice(nick, "No setjoin has been set for you. To set one, use the !setjoin command"_jrs); else server->sendMessage(chan, Jupiter::StringS::Format(IRCBOLD IRCCOLOR "07[%.*s]" IRCCOLOR IRCBOLD ": %.*s", nick.size(), nick.ptr(), setjoin.size(), setjoin.ptr())); } @@ -40,18 +41,18 @@ SetJoinPlugin pluginInstance; void SetJoinIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("setJoin")); + this->addTrigger("setJoin"_jrs); } void SetJoinIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &channel, const Jupiter::ReadableString &nick, const Jupiter::ReadableString ¶meters) { if (parameters.isNotEmpty()) { - pluginInstance.setjoin_file.set(source->getConfigSection(), nick, parameters); - pluginInstance.setjoin_file.sync(); - source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Your join message has been set.")); + pluginInstance.setjoin_file[source->getConfigSection()].set(nick, parameters); + pluginInstance.setjoin_file.write(); + source->sendMessage(channel, "Your join message has been set."_jrs); } - else source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Too few parameters! Syntax: setjoin ")); + else source->sendMessage(channel, "Too few parameters! Syntax: setjoin "_jrs); } const Jupiter::ReadableString &SetJoinIRCCommand::getHelp(const Jupiter::ReadableString &) @@ -66,14 +67,14 @@ IRC_COMMAND_INIT(SetJoinIRCCommand) void ViewJoinIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("viewJoin")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("vJoin")); + this->addTrigger("viewJoin"_jrs); + this->addTrigger("vJoin"_jrs); } void ViewJoinIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &channel, const Jupiter::ReadableString &nick, const Jupiter::ReadableString ¶meters) { const Jupiter::ReadableString &target = parameters.isEmpty() ? nick : parameters; - const Jupiter::ReadableString &r = pluginInstance.setjoin_file.get(source->getConfigSection(), target); + const Jupiter::ReadableString &r = pluginInstance.setjoin_file[source->getConfigSection()].get(target); if (r.isEmpty()) source->sendMessage(channel, Jupiter::StringS::Format("No setjoin has been set for \"%.*s\".", target.size(), target.ptr())); @@ -93,15 +94,15 @@ IRC_COMMAND_INIT(ViewJoinIRCCommand) void DelJoinIRCCommand::create() { - this->addTrigger(STRING_LITERAL_AS_REFERENCE("delJoin")); - this->addTrigger(STRING_LITERAL_AS_REFERENCE("dJoin")); + this->addTrigger("delJoin"_jrs); + this->addTrigger("dJoin"_jrs); } void DelJoinIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &channel, const Jupiter::ReadableString &nick, const Jupiter::ReadableString ¶meters) { - if (pluginInstance.setjoin_file.remove(source->getConfigSection(), nick)) - source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Your setjoin has been deleted successfully.")); - else source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("No setjoin was found to delete.")); + if (pluginInstance.setjoin_file[source->getConfigSection()].remove(nick)) + source->sendNotice(nick, "Your setjoin has been deleted successfully."_jrs); + else source->sendNotice(nick, "No setjoin was found to delete."_jrs); } const Jupiter::ReadableString &DelJoinIRCCommand::getHelp(const Jupiter::ReadableString &) diff --git a/SetJoin/SetJoin.h b/SetJoin/SetJoin.h index d532354..fe5a08c 100644 --- a/SetJoin/SetJoin.h +++ b/SetJoin/SetJoin.h @@ -25,7 +25,7 @@ class SetJoinPlugin : public Jupiter::Plugin { public: - Jupiter::INIFile &setjoin_file = Jupiter::Plugin::config; + Jupiter::Config &setjoin_file = Jupiter::Plugin::config; void OnJoin(Jupiter::IRC::Client *server, const Jupiter::ReadableString &chan, const Jupiter::ReadableString &nick) override; };