Browse Source

Updated Jupiter and refactored code as necessary. Will improve config file formats over time to use proper subsections.

pull/4/head
Jessica James 8 years ago
parent
commit
3f22f2646b
  1. 32
      Bot/IRC_Bot.cpp
  2. 2
      Bot/IRC_Bot.h
  3. 15
      Bot/Jupiter_Bot.h
  4. 40
      Bot/Main.cpp
  5. 6
      Bot/ServerManager.h
  6. 3
      ChannelRelay/ChannelRelay.cpp
  7. 1
      Configs/IRC.Core.ini
  8. 1
      CoreCommands/CoreCommands.cpp
  9. 3
      HTTPServer/HTTPServer.cpp
  10. 2
      IRC.Core/IRC_Core.cpp
  11. 2
      Jupiter
  12. 15
      RenX.Announcements/RenX_Announcements.cpp
  13. 3
      RenX.Announcements/RenX_Announcements.h
  14. 18
      RenX.Commands/RenX_Commands.cpp
  15. 15
      RenX.Core/RenX_BanDatabase.cpp
  16. 2
      RenX.Core/RenX_BanDatabase.h
  17. 4
      RenX.Core/RenX_BuildingInfo.h
  18. 9
      RenX.Core/RenX_Core.cpp
  19. 6
      RenX.Core/RenX_Core.h
  20. 3
      RenX.Core/RenX_ExemptionDatabase.cpp
  21. 55
      RenX.Core/RenX_Functions.cpp
  22. 4
      RenX.Core/RenX_Functions.h
  23. 4
      RenX.Core/RenX_PlayerInfo.h
  24. 326
      RenX.Core/RenX_Server.cpp
  25. 10
      RenX.Core/RenX_Server.h
  26. 351
      RenX.Core/RenX_Tags.cpp
  27. 1
      RenX.Core/RenX_TeamInfo.h
  28. 11
      RenX.ExcessiveHeadshots/ExcessiveHeadshots.cpp
  29. 13
      RenX.ExtraLogging/RenX_ExtraLogging.cpp
  30. 11
      RenX.Greetings/RenX_Greetings.cpp
  31. 25
      RenX.IRCJoin/RenX_IRCJoin.cpp
  32. 9
      RenX.Ladder.All-Time/RenX_Ladder_All_Time.cpp
  33. 9
      RenX.Ladder.Daily/RenX_Ladder_Daily.cpp
  34. 9
      RenX.Ladder.Monthly/RenX_Ladder_Monthly.cpp
  35. 75
      RenX.Ladder.Web/RenX_Ladder_Web.cpp
  36. 7
      RenX.Ladder.Web/RenX_Ladder_Web.h
  37. 11
      RenX.Ladder.Weekly/RenX_Ladder_Weekly.cpp
  38. 9
      RenX.Ladder.Yearly/RenX_Ladder_Yearly.cpp
  39. 15
      RenX.Ladder/RenX_Ladder.cpp
  40. 17
      RenX.Listen/RenX_Listen.cpp
  41. 373
      RenX.Logging/RenX_Logging.cpp
  42. 135
      RenX.Medals/RenX_Medals.cpp
  43. 10
      RenX.Medals/RenX_Medals.h
  44. 3
      RenX.MinPlayers/RenX_MinPlayers.cpp
  45. 338
      RenX.ModSystem/RenX_ModSystem.cpp
  46. 3
      RenX.ModSystem/RenX_ModSystem.h
  47. 21
      RenX.ServerList/RenX_ServerList.cpp
  48. 13
      RenX.SetJoin/RenX_SetJoin.cpp
  49. 3
      RenX.SetJoin/RenX_SetJoin.h
  50. 50
      RenX.Warn/RenX_Warn.cpp
  51. 33
      SetJoin/SetJoin.cpp
  52. 2
      SetJoin/SetJoin.h

32
Bot/IRC_Bot.cpp

@ -19,7 +19,7 @@
#include <cstdio> #include <cstdio>
#include <cstring> #include <cstring>
#include <cctype> #include <cctype>
#include "Jupiter/INIFile.h" #include "Jupiter/Config.h"
#include "Jupiter/Plugin.h" #include "Jupiter/Plugin.h"
#include "Jupiter/Functions.h" #include "Jupiter/Functions.h"
#include "IRC_Bot.h" #include "IRC_Bot.h"
@ -27,7 +27,7 @@
using namespace Jupiter::literals; 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); 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 &section_name) auto set_command_access_levels = [this, in_command](const Jupiter::ReadableString &section_name)
{ {
Jupiter::INIFile::Section *section = serverManager->getConfig().getSection(section_name); Jupiter::Config *section = serverManager->getConfig().getSection(section_name);
if (section != nullptr) if (section != nullptr)
{ {
size_t section_length = section->size(); auto read_section = [this, section, in_command](Jupiter::HashTable::Bucket::Entry &in_entry)
Jupiter::INIFile::Section::KeyValuePair *pair; {
size_t tmp_index; size_t tmp_index;
Jupiter::ReferenceString tmp_key, tmp_sub_key; Jupiter::ReferenceString tmp_key, tmp_sub_key;
IRCCommand *command; IRCCommand *command;
for (size_t pair_index = 0; pair_index != section_length; ++pair_index) tmp_index = in_entry.key.find('.');
{
pair = section->getPair(pair_index);
tmp_index = pair->getKey().find('.');
if (tmp_index != Jupiter::INVALID_INDEX) if (tmp_index != Jupiter::INVALID_INDEX)
{ {
// non-default access assignment // 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); tmp_sub_key.shiftRight(tmp_index + 1);
if (tmp_sub_key.findi("Type."_jrs) == 0) if (tmp_sub_key.findi("Type."_jrs) == 0)
@ -138,7 +134,7 @@ void IRC_Bot::setCommandAccessLevels(IRCCommand *in_command)
command = this->getCommand(tmp_key); command = this->getCommand(tmp_key);
if (command != nullptr && (in_command == nullptr || in_command == command)) 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) 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) // Assign access level to command (if command exists)
command = this->getCommand(tmp_key); command = this->getCommand(tmp_key);
if (command != nullptr && (in_command == nullptr || in_command == command)) 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 else
{ {
// Assign access level to command (if command exists) // 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)) 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(); section = this->getSecondaryConfigSection();
if (section != nullptr) if (section != nullptr)

2
Bot/IRC_Bot.h

@ -110,7 +110,7 @@ public:
bool OnBadRehash(bool removed) { return removed; }; bool OnBadRehash(bool removed) { return removed; };
/** Constructor for IRC_Bot */ /** 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 */ /** Destructor for IRC_Bot */
~IRC_Bot(); ~IRC_Bot();

15
Bot/Jupiter_Bot.h

@ -38,11 +38,20 @@
#if defined __cplusplus #if defined __cplusplus
#include <chrono>
/** Forward declaration */ /** Forward declaration */
namespace Jupiter { class INIFile; } namespace Jupiter { class Config; }
namespace Jupiter
{
/** Application config file */
extern Jupiter::Config *g_config;
/** Application config file */ /** Application start time */
extern Jupiter::INIFile *g_config; extern std::chrono::steady_clock::time_point g_start_time;
}
#endif // __cplusplus #endif // __cplusplus

40
Bot/Main.cpp

@ -23,8 +23,7 @@
#include <thread> #include <thread>
#include <mutex> #include <mutex>
#include "Jupiter/Functions.h" #include "Jupiter/Functions.h"
#include "Jupiter/INIFile.h" #include "Jupiter/INIConfig.h"
#include "Jupiter/Queue.h"
#include "Jupiter/Socket.h" #include "Jupiter/Socket.h"
#include "Jupiter/Plugin.h" #include "Jupiter/Plugin.h"
#include "Jupiter/Timer.h" #include "Jupiter/Timer.h"
@ -38,8 +37,9 @@
using namespace Jupiter::literals; using namespace Jupiter::literals;
Jupiter::INIFile o_config; Jupiter::INIConfig o_config;
Jupiter::INIFile *g_config = &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 #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]); 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..."); puts("Loading config file...");
if (!o_config.readFile(configFileName)) if (!o_config.read(configFileName))
{ {
puts("Unable to read config file. Closing..."); puts("Unable to read config file. Closing...");
exit(0); exit(0);
} }
puts("Config loaded."); double time_taken = static_cast<double>(std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::steady_clock::now() - load_start).count()) / 1000.0;
printf("Config loaded (%fms)." ENDL, time_taken);
if (plugins_directory.isEmpty()) 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()) 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()) if (plugins_directory.isNotEmpty())
{ {
@ -155,7 +159,7 @@ int main(int argc, const char **args)
} }
puts("Loading plugins..."); 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()) if (pluginList.isEmpty())
puts("No plugins to load!"); puts("No plugins to load!");
else else
@ -164,12 +168,20 @@ int main(int argc, const char **args)
unsigned int nPlugins = pluginList.wordCount(WHITESPACE); unsigned int nPlugins = pluginList.wordCount(WHITESPACE);
printf("Attempting to load %u plugins..." ENDL, nPlugins); printf("Attempting to load %u plugins..." ENDL, nPlugins);
bool load_success;
for (unsigned int i = 0; i < nPlugins; i++) for (unsigned int i = 0; i < nPlugins; i++)
{ {
Jupiter::ReferenceString plugin = Jupiter::ReferenceString::getWord(pluginList, i, WHITESPACE); 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()); load_start = std::chrono::steady_clock::now();
else printf("\"%.*s\" loaded successfully." ENDL, plugin.size(), plugin.ptr()); load_success = Jupiter::Plugin::load(plugin) != nullptr;
time_taken = static_cast<double>(std::chrono::duration_cast<std::chrono::microseconds>(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 // OnPostInitialize
@ -177,6 +189,8 @@ int main(int argc, const char **args)
Jupiter::plugins->get(index)->OnPostInitialize(); Jupiter::plugins->get(index)->OnPostInitialize();
} }
printf("Initialization completed in %f milliseconds." ENDL, static_cast<double>(std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::steady_clock::now() - Jupiter::g_start_time).count()) / 1000.0 );
if (consoleCommands->size() > 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."); printf("%u Console Commands have been initialized%s" ENDL, consoleCommands->size(), getConsoleCommand("help"_jrs) == nullptr ? "." : "; type \"help\" for more information.");
if (IRCMasterCommandList->size() > 0) if (IRCMasterCommandList->size() > 0)
@ -190,7 +204,7 @@ int main(int argc, const char **args)
Jupiter::Plugin::free(index); Jupiter::Plugin::free(index);
else else
++index; ++index;
Jupiter_checkTimers(); Jupiter::Timer::check();
if (console_input.input_mutex.try_lock()) if (console_input.input_mutex.try_lock())
{ {

6
Bot/ServerManager.h

@ -147,14 +147,14 @@ public:
* *
* @return Configuration file being used * @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 * @brief Sets the configuration file to use
* *
* @param Reference to the config 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. * Destructor for the ServerManager class.
@ -166,7 +166,7 @@ private:
Jupiter::ArrayList<IRC_Bot> servers; Jupiter::ArrayList<IRC_Bot> servers;
/** Config to read data from */ /** 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. */ /** Pointer to an instance of the server manager. Note: DO NOT DELETE OR FREE THIS POINTER. */

3
ChannelRelay/ChannelRelay.cpp

@ -17,7 +17,6 @@
*/ */
#include "Jupiter/IRC_Client.h" #include "Jupiter/IRC_Client.h"
#include "Jupiter/INIFile.h"
#include "Jupiter/String.h" #include "Jupiter/String.h"
#include "ServerManager.h" #include "ServerManager.h"
#include "IRC_Bot.h" #include "IRC_Bot.h"
@ -27,7 +26,7 @@ using namespace Jupiter::literals;
bool ChannelRelayPlugin::initialize() 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); unsigned int words = str.wordCount(WHITESPACE);
if (words == 0) if (words == 0)
return false; return false;

1
Configs/IRC.Core.ini

@ -66,7 +66,6 @@ Nick=RenXBot
AltNick=RenXBot` AltNick=RenXBot`
RealName=Jupiter IRC Framework by Agent RealName=Jupiter IRC Framework by Agent
AutoPartMessage=Auto-Parting Enabled AutoPartMessage=Auto-Parting Enabled
AutoReconnect=1
MaxReconnectAttempts=3 MaxReconnectAttempts=3
AutoReconnectDelay=5 AutoReconnectDelay=5
PrintOutput=1 PrintOutput=1

1
CoreCommands/CoreCommands.cpp

@ -17,7 +17,6 @@
*/ */
#include <cstring> #include <cstring>
#include "Jupiter/INIFile.h"
#include "Jupiter/Functions.h" #include "Jupiter/Functions.h"
#include "Jupiter/ArrayList.h" #include "Jupiter/ArrayList.h"
#include "CoreCommands.h" #include "CoreCommands.h"

3
HTTPServer/HTTPServer.cpp

@ -16,14 +16,13 @@
* Written by Jessica James <jessica.aj@outlook.com> * Written by Jessica James <jessica.aj@outlook.com>
*/ */
#include "Jupiter/INIFile.h"
#include "HTTPServer.h" #include "HTTPServer.h"
using namespace Jupiter::literals; using namespace Jupiter::literals;
HTTPServerPlugin::HTTPServerPlugin() 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<uint16_t>("BindPort"_jrs, 80));
} }
int HTTPServerPlugin::think() int HTTPServerPlugin::think()

2
IRC.Core/IRC_Core.cpp

@ -30,7 +30,7 @@ IRCCorePlugin::~IRCCorePlugin()
bool IRCCorePlugin::initialize() 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) if (serverList != nullptr)
{ {
serverManager->setConfig(this->config); serverManager->setConfig(this->config);

2
Jupiter

@ -1 +1 @@
Subproject commit ae3294c72b799178bc79b312fe43f34c28deca86 Subproject commit d52d8cbbfbe8f8c1b74d01096d7d90c0c46d9518

15
RenX.Announcements/RenX_Announcements.cpp

@ -17,20 +17,21 @@
*/ */
#include "Jupiter/IRC_Client.h" #include "Jupiter/IRC_Client.h"
#include "Jupiter/INIFile.h"
#include "RenX_Announcements.h" #include "RenX_Announcements.h"
#include "RenX_Core.h" #include "RenX_Core.h"
#include "RenX_Server.h" #include "RenX_Server.h"
#include "RenX_Tags.h" #include "RenX_Tags.h"
using namespace Jupiter::literals;
RenX_AnnouncementsPlugin pluginInstance; 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) if (RenX_AnnouncementsPlugin::random == false)
{ {
@ -73,15 +74,15 @@ int RenX_AnnouncementsPlugin::OnRehash()
bool RenX_AnnouncementsPlugin::initialize() bool RenX_AnnouncementsPlugin::initialize()
{ {
RenX_AnnouncementsPlugin::random = this->config.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Random")); RenX_AnnouncementsPlugin::random = this->config.get<bool>("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) if (RenX_AnnouncementsPlugin::announcementsFile.getLineCount() == 0)
{ {
fputs("[RenX.Announcements] ERROR: No announcements loaded." ENDL, stderr); fputs("[RenX.Announcements] ERROR: No announcements loaded." ENDL, stderr);
return false; 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<long long>("Delay"_jrs, 60));
RenX_AnnouncementsPlugin::timer = new Jupiter::Timer(0, delay, announce_); RenX_AnnouncementsPlugin::timer = new Jupiter::Timer(0, delay, announce_);
if (RenX_AnnouncementsPlugin::random == false) if (RenX_AnnouncementsPlugin::random == false)
RenX_AnnouncementsPlugin::lastLine = RenX_AnnouncementsPlugin::announcementsFile.getLineCount() - 1; RenX_AnnouncementsPlugin::lastLine = RenX_AnnouncementsPlugin::announcementsFile.getLineCount() - 1;

3
RenX.Announcements/RenX_Announcements.h

@ -30,7 +30,7 @@
class RenX_AnnouncementsPlugin : public RenX::Plugin class RenX_AnnouncementsPlugin : public RenX::Plugin
{ {
public: public:
void announce(unsigned int); void announce(unsigned int, void *);
public: // Jupiter::Plugin public: // Jupiter::Plugin
virtual bool initialize() override; virtual bool initialize() override;
@ -41,7 +41,6 @@ private:
bool random; bool random;
unsigned int lastLine; unsigned int lastLine;
Jupiter::Timer *timer; Jupiter::Timer *timer;
//Jupiter::StringS modsTag;
Jupiter::File announcementsFile; Jupiter::File announcementsFile;
}; };

18
RenX.Commands/RenX_Commands.cpp

@ -31,20 +31,22 @@
using namespace Jupiter::literals; using namespace Jupiter::literals;
const Jupiter::ReferenceString RxCommandsSection = "RenX.Commands"_jrs;
inline bool togglePhasing(RenX::Server *server, bool newState) 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; return newState;
} }
inline bool togglePhasing(RenX::Server *server) 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<bool>("phasing"_jrs, false));
} }
inline void onDie(RenX::Server *server, const RenX::PlayerInfo *player) 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<bool>("phasing"_jrs, false))
server->kickPlayer(player, Jupiter::StringS::empty); 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() bool RenX_CommandsPlugin::initialize()
{ {
RenX_CommandsPlugin::_defaultTempBanTime = std::chrono::seconds(this->config.getLongLong(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("TBanTime"), 86400)); RenX_CommandsPlugin::_defaultTempBanTime = std::chrono::seconds(this->config.get<long long>("TBanTime"_jrs, 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::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(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::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(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::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(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("StaffTitle"), STRING_LITERAL_AS_REFERENCE("Moderator")); RenX_CommandsPlugin::staffTitle = this->config.get("StaffTitle"_jrs, "Moderator"_jrs);
RenX::sanitizeTags(RenX_CommandsPlugin::playerInfoFormat); RenX::sanitizeTags(RenX_CommandsPlugin::playerInfoFormat);
RenX::sanitizeTags(RenX_CommandsPlugin::adminPlayerInfoFormat); RenX::sanitizeTags(RenX_CommandsPlugin::adminPlayerInfoFormat);

15
RenX.Core/RenX_BanDatabase.cpp

@ -19,7 +19,6 @@
#include <ctime> #include <ctime>
#include <cstdio> #include <cstdio>
#include "Jupiter/IRC_Client.h" #include "Jupiter/IRC_Client.h"
#include "Jupiter/INIFile.h"
#include "RenX_PlayerInfo.h" #include "RenX_PlayerInfo.h"
#include "RenX_BanDatabase.h" #include "RenX_BanDatabase.h"
#include "RenX_Core.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(); size_t varData_entries = entry->varData.size();
buffer.push(varData_entries); buffer.push(varData_entries);
Jupiter::INIFile::Section::KeyValuePair *pair; auto write_varData_entry = [&buffer](Jupiter::HashTable::Bucket::Entry &in_entry)
while (varData_entries != 0)
{ {
pair = entry->varData.getPair(--varData_entries); buffer.push(in_entry.key);
buffer.push(pair->getKey()); buffer.push(in_entry.value);
buffer.push(pair->getValue()); };
}
entry->varData.callback(write_varData_entry);
// push buffer to file // push buffer to file
buffer.push_to(file); buffer.push_to(file);
@ -252,7 +251,7 @@ const Jupiter::ArrayList<RenX::BanDatabase::Entry> &RenX::BanDatabase::getEntrie
bool RenX::BanDatabase::initialize() 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); return this->process_file(filename);
} }

2
RenX.Core/RenX_BanDatabase.h

@ -91,7 +91,7 @@ namespace RenX
Jupiter::StringS name /** Name of the banned player */; Jupiter::StringS name /** Name of the banned player */;
Jupiter::StringS banner /** Name of the user who initiated the ban */; Jupiter::StringS banner /** Name of the user who initiated the ban */;
Jupiter::StringS reason /** Reason the player was banned */; 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_ACTIVE = 0x8000U;
static const uint16_t FLAG_USE_RDNS = 0x4000U; static const uint16_t FLAG_USE_RDNS = 0x4000U;

4
RenX.Core/RenX_BuildingInfo.h

@ -25,7 +25,7 @@
*/ */
#include "Jupiter/String.h" #include "Jupiter/String.h"
#include "Jupiter/INIFile.h" #include "Jupiter/Config.h"
#include "RenX.h" #include "RenX.h"
/** DLL Linkage Nagging */ /** DLL Linkage Nagging */
@ -51,7 +51,7 @@ namespace RenX
bool capturable = false; bool capturable = false;
bool destroyed = false; bool destroyed = false;
std::chrono::steady_clock::time_point destruction_time; std::chrono::steady_clock::time_point destruction_time;
mutable Jupiter::INIFile varData; mutable Jupiter::Config varData;
}; };
} }

9
RenX.Core/RenX_Core.cpp

@ -17,7 +17,6 @@
*/ */
#include <ctime> #include <ctime>
#include "Jupiter/INIFile.h"
#include "Jupiter/Functions.h" #include "Jupiter/Functions.h"
#include "IRC_Bot.h" #include "IRC_Bot.h"
#include "RenX_Core.h" #include "RenX_Core.h"
@ -30,6 +29,8 @@
#include "RenX_ExemptionDatabase.h" #include "RenX_ExemptionDatabase.h"
#include "RenX_Tags.h" #include "RenX_Tags.h"
using namespace Jupiter::literals;
RenX::Core pluginInstance; RenX::Core pluginInstance;
RenX::Core *RenXInstance = &pluginInstance; RenX::Core *RenXInstance = &pluginInstance;
@ -45,8 +46,8 @@ bool RenX::Core::initialize()
RenX::tags->initialize(); RenX::tags->initialize();
RenX::initTranslations(this->config); RenX::initTranslations(this->config);
const Jupiter::ReadableString &serverList = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Servers")); const Jupiter::ReadableString &serverList = this->config.get("Servers"_jrs);
RenX::Core::commandsFile.readFile(this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("CommandsFile"), STRING_LITERAL_AS_REFERENCE("RenXGameCommands.ini"))); RenX::Core::commandsFile.read(this->config.get("CommandsFile"_jrs, "RenXGameCommands.ini"_jrs));
unsigned int wc = serverList.wordCount(WHITESPACE); unsigned int wc = serverList.wordCount(WHITESPACE);
@ -151,7 +152,7 @@ Jupiter::ArrayList<RenX::Plugin> *RenX::Core::getPlugins()
return &(RenX::Core::plugins); return &(RenX::Core::plugins);
} }
Jupiter::INIFile &RenX::Core::getCommandsFile() Jupiter::Config &RenX::Core::getCommandsFile()
{ {
return RenX::Core::commandsFile; return RenX::Core::commandsFile;
} }

6
RenX.Core/RenX_Core.h

@ -25,7 +25,7 @@
*/ */
#include "Jupiter/Plugin.h" #include "Jupiter/Plugin.h"
#include "Jupiter/INIFile.h" #include "Jupiter/Config.h"
#include "RenX.h" #include "RenX.h"
/** DLL Linkage Nagging */ /** DLL Linkage Nagging */
@ -155,7 +155,7 @@ namespace RenX
* *
* @return Commands settings configuration file. * @return Commands settings configuration file.
*/ */
Jupiter::INIFile &getCommandsFile(); Jupiter::Config &getCommandsFile();
/** /**
* @brief Copys a command, and passes it to each server. * @brief Copys a command, and passes it to each server.
@ -179,7 +179,7 @@ namespace RenX
/** Inaccessible private members */ /** Inaccessible private members */
Jupiter::ArrayList<RenX::Server> servers; Jupiter::ArrayList<RenX::Server> servers;
Jupiter::ArrayList<RenX::Plugin> plugins; Jupiter::ArrayList<RenX::Plugin> plugins;
Jupiter::INIFile commandsFile; Jupiter::INIConfig commandsFile;
}; };
RENX_API Core *getCore(); RENX_API Core *getCore();

3
RenX.Core/RenX_ExemptionDatabase.cpp

@ -18,7 +18,6 @@
#include <cstdio> #include <cstdio>
#include "Jupiter/IRC_Client.h" #include "Jupiter/IRC_Client.h"
#include "Jupiter/INIFile.h"
#include "RenX_PlayerInfo.h" #include "RenX_PlayerInfo.h"
#include "RenX_ExemptionDatabase.h" #include "RenX_ExemptionDatabase.h"
#include "RenX_Core.h" #include "RenX_Core.h"
@ -187,7 +186,7 @@ const Jupiter::ArrayList<RenX::ExemptionDatabase::Entry> &RenX::ExemptionDatabas
bool RenX::ExemptionDatabase::initialize() 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); return this->process_file(filename);
} }

55
RenX.Core/RenX_Functions.cpp

@ -18,7 +18,6 @@
#include <ctime> #include <ctime>
#include "Jupiter/Functions.h" #include "Jupiter/Functions.h"
#include "Jupiter/INIFile.h"
#include "IRC_Bot.h" #include "IRC_Bot.h"
#include "ServerManager.h" #include "ServerManager.h"
#include "RenX_Functions.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); NodColor = translationsFile["TeamColor"_jrs].get("Nod"_jrs, "04"_jrs);
GDIColor = translationsFile.get("TeamColor"_jrs, "GDI"_jrs, "08"_jrs); GDIColor = translationsFile["TeamColor"_jrs].get("GDI"_jrs, "08"_jrs);
OtherColor = translationsFile.get("TeamColor"_jrs, "Other"_jrs, "14"_jrs); OtherColor = translationsFile["TeamColor"_jrs].get("Other"_jrs, "14"_jrs);
NodShortName = translationsFile.get("ShortTeamName"_jrs, "Nod"_jrs, "Nod"_jrs); NodShortName = translationsFile["ShortTeamName"_jrs].get("Nod"_jrs, "Nod"_jrs);
GDIShortName = translationsFile.get("ShortTeamName"_jrs, "GDI"_jrs, "GDI"_jrs); GDIShortName = translationsFile["ShortTeamName"_jrs].get("GDI"_jrs, "GDI"_jrs);
OtherShortName = translationsFile.get("ShortTeamName"_jrs, "Other"_jrs, "N/A"_jrs); OtherShortName = translationsFile["ShortTeamName"_jrs].get("Other"_jrs, "N/A"_jrs);
NodLongName = translationsFile.get("LongTeamName"_jrs, "Nod"_jrs, "Brotherhood of Nod"_jrs); NodLongName = translationsFile["LongTeamName"_jrs].get("Nod"_jrs, "Brotherhood of Nod"_jrs);
GDILongName = translationsFile.get("LongTeamName"_jrs, "GDI"_jrs, "Global Defense Initiative"_jrs); GDILongName = translationsFile["LongTeamName"_jrs].get("GDI"_jrs, "Global Defense Initiative"_jrs);
OtherLongName = translationsFile.get("LongTeamName"_jrs, "Other"_jrs, "Unknown"_jrs); OtherLongName = translationsFile["LongTeamName"_jrs].get("Other"_jrs, "Unknown"_jrs);
scoreWinTypeTranslation = translationsFile.get("WinType"_jrs, "Score"_jrs, "Domination (High Score)"_jrs); scoreWinTypeTranslation = translationsFile["WinType"_jrs].get("Score"_jrs, "Domination (High Score)"_jrs);
baseWinTypeTranslation = translationsFile.get("WinType"_jrs, "Base"_jrs, "Conquest (Base Destruction)"_jrs); baseWinTypeTranslation = translationsFile["WinType"_jrs].get("Base"_jrs, "Conquest (Base Destruction)"_jrs);
beaconWinTypeTranslation = translationsFile.get("WinType"_jrs, "Beacon"_jrs, "Espionage (Beacon)"_jrs); beaconWinTypeTranslation = translationsFile["WinType"_jrs].get("Beacon"_jrs, "Espionage (Beacon)"_jrs);
tieWinTypeTranslation = translationsFile.get("WinType"_jrs, "Tie"_jrs, "Draw (Tie)"_jrs); tieWinTypeTranslation = translationsFile["WinType"_jrs].get("Tie"_jrs, "Draw (Tie)"_jrs);
shutdownWinTypeTranslation = translationsFile.get("WinType"_jrs, "Shutdown"_jrs, "Ceasefire (Shutdown)"_jrs); shutdownWinTypeTranslation = translationsFile["WinType"_jrs].get("Shutdown"_jrs, "Ceasefire (Shutdown)"_jrs);
surrenderWinTypeTranslation = translationsFile.get("WinType"_jrs, "Surrender"_jrs, "Forfeit (Surrender)"_jrs); surrenderWinTypeTranslation = translationsFile["WinType"_jrs].get("Surrender"_jrs, "Forfeit (Surrender)"_jrs);
unknownWinTypeTranslation = translationsFile.get("WinType"_jrs, "Unknown"_jrs, "Aliens (Unknown)"_jrs); unknownWinTypeTranslation = translationsFile["WinType"_jrs].get("Unknown"_jrs, "Aliens (Unknown)"_jrs);
scoreWinTypePlainTranslation = translationsFile.get("WinTypePlain"_jrs, "Score"_jrs, "High Score"_jrs); scoreWinTypePlainTranslation = translationsFile["WinTypePlain"_jrs].get("Score"_jrs, "High Score"_jrs);
baseWinTypePlainTranslation = translationsFile.get("WinTypePlain"_jrs, "Base"_jrs, "Base Destruction"_jrs); baseWinTypePlainTranslation = translationsFile["WinTypePlain"_jrs].get("Base"_jrs, "Base Destruction"_jrs);
beaconWinTypePlainTranslation = translationsFile.get("WinTypePlain"_jrs, "Beacon"_jrs, "Beacon"_jrs); beaconWinTypePlainTranslation = translationsFile["WinTypePlain"_jrs].get("Beacon"_jrs, "Beacon"_jrs);
tieWinTypePlainTranslation = translationsFile.get("WinTypePlain"_jrs, "Tie"_jrs, "Tie"_jrs); tieWinTypePlainTranslation = translationsFile["WinTypePlain"_jrs].get("Tie"_jrs, "Tie"_jrs);
shutdownWinTypePlainTranslation = translationsFile.get("WinTypePlain"_jrs, "Shutdown"_jrs, "Shutdown"_jrs); shutdownWinTypePlainTranslation = translationsFile["WinTypePlain"_jrs].get("Shutdown"_jrs, "Shutdown"_jrs);
surrenderWinTypePlainTranslation = translationsFile.get("WinTypePlain"_jrs, "Surrender"_jrs, "Surrender"_jrs); surrenderWinTypePlainTranslation = translationsFile["WinTypePlain"_jrs].get("Surrender"_jrs, "Surrender"_jrs);
unknownWinTypePlainTranslation = translationsFile.get("WinTypePlain"_jrs, "Unknown"_jrs, "Unknown"_jrs); unknownWinTypePlainTranslation = translationsFile["WinTypePlain"_jrs].get("Unknown"_jrs, "Unknown"_jrs);
} }
Jupiter::String RenX::getFormattedPlayerName(const RenX::PlayerInfo *player) Jupiter::String RenX::getFormattedPlayerName(const RenX::PlayerInfo *player)

4
RenX.Core/RenX_Functions.h

@ -25,7 +25,7 @@
*/ */
#include <chrono> #include <chrono>
#include "Jupiter/INIFile.h" #include "Jupiter/Config.h"
#include "Jupiter/String.h" #include "Jupiter/String.h"
#include "RenX.h" #include "RenX.h"
#include "RenX_Map.h" #include "RenX_Map.h"
@ -126,7 +126,7 @@ namespace RenX
* *
* @param filename Optional parameter to specify which file to load. * @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. * @brief Creates a String containing an IRC-ready version of the player's name.

4
RenX.Core/RenX_PlayerInfo.h

@ -29,7 +29,7 @@
#include <thread> #include <thread>
#include "Jupiter/Reference_String.h" #include "Jupiter/Reference_String.h"
#include "Jupiter/String.h" #include "Jupiter/String.h"
#include "Jupiter/INIFile.h" #include "Jupiter/Config.h"
#include "RenX.h" #include "RenX.h"
/** DLL Linkage Nagging */ /** DLL Linkage Nagging */
@ -93,7 +93,7 @@ namespace RenX
mutable Jupiter::StringS formatNamePrefix; mutable Jupiter::StringS formatNamePrefix;
mutable std::thread rdns_thread; mutable std::thread rdns_thread;
mutable int access = 0; 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"); static Jupiter::ReferenceString rdns_pending = STRING_LITERAL_AS_REFERENCE("RDNS_PENDING");

326
RenX.Core/RenX_Server.cpp

@ -17,7 +17,6 @@
*/ */
#include <ctime> #include <ctime>
#include "Jupiter/INIFile.h"
#include "Jupiter/String.h" #include "Jupiter/String.h"
#include "ServerManager.h" #include "ServerManager.h"
#include "IRC_Bot.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 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 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; size_t i = tokens.token_count;
while (i-- != 0) while (i-- != 0)
table.set(this->commandListFormat.getToken(i), tokens.getToken(i)); table.set(this->commandListFormat.getToken(i), tokens.getToken(i));
auto parse = [&table](RenX::PlayerInfo *player) auto parse = [&table](RenX::PlayerInfo *player)
{ {
Jupiter::INIFile::Section::KeyValuePair *pair; Jupiter::ReadableString *value;
pair = table.getPair("Kills"_jrs); value = table.get("Kills"_jrs);
if (pair != nullptr) if (value != nullptr)
player->kills = pair->getValue().asUnsignedInt(); player->kills = value->asUnsignedInt();
pair = table.getPair("Deaths"_jrs); value = table.get("Deaths"_jrs);
if (pair != nullptr) if (value != nullptr)
player->deaths = pair->getValue().asUnsignedInt(); player->deaths = value->asUnsignedInt();
pair = table.getPair("Score"_jrs); value = table.get("Score"_jrs);
if (pair != nullptr) if (value != nullptr)
player->score = pair->getValue().asDouble(); player->score = value->asDouble();
pair = table.getPair("Credits"_jrs); value = table.get("Credits"_jrs);
if (pair != nullptr) if (value != nullptr)
player->credits = pair->getValue().asDouble(); player->credits = value->asDouble();
pair = table.getPair("Character"_jrs); value = table.get("Character"_jrs);
if (pair != nullptr) if (value != nullptr)
player->character = pair->getValue(); player->character = *value;
pair = table.getPair("Vehicle"_jrs); value = table.get("Vehicle"_jrs);
if (pair != nullptr) if (value != nullptr)
player->vehicle = pair->getValue(); player->vehicle = *value;
pair = table.getPair("Ping"_jrs); value = table.get("Ping"_jrs);
if (pair != nullptr) if (value != nullptr)
player->ping = pair->getValue().asUnsignedInt(); player->ping = value->asUnsignedInt();
pair = table.getPair("Admin"_jrs); value = table.get("Admin"_jrs);
if (pair != nullptr) if (value != nullptr)
{ {
if (pair->getValue().equals("None"_jrs)) if (value->equals("None"_jrs))
player->adminType = ""; player->adminType = "";
else else
player->adminType = pair->getValue(); player->adminType = *value;
} }
}; };
Jupiter::INIFile::Section::KeyValuePair *pair = table.getPair("PlayerLog"_jrs); Jupiter::ReadableString *value = table.get("PlayerLog"_jrs);
if (pair != nullptr) if (value != 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))); 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 else
{ {
Jupiter::INIFile::Section::KeyValuePair *namePair = table.getPair("Name"_jrs); Jupiter::ReadableString *name = table.get("Name"_jrs);
pair = table.getPair("ID"_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 != nullptr)
{ {
if (player->name.isEmpty()) if (player->name.isEmpty())
{ {
player->name = table.get("Name"_jrs); player->name = table.get("Name"_jrs, Jupiter::ReferenceString::empty);
player->name.processEscapeSequences(); player->name.processEscapeSequences();
} }
if (player->ip.isEmpty()) if (player->ip.isEmpty())
player->ip = table.get("IP"_jrs); player->ip = table.get("IP"_jrs, Jupiter::ReferenceString::empty);
if (player->hwid.isEmpty()) if (player->hwid.isEmpty())
player->hwid = table.get("HWID"_jrs); player->hwid = table.get("HWID"_jrs, Jupiter::ReferenceString::empty);
if (player->steamid == 0) 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) if (steamid != 0)
{ {
player->steamid = steamid; player->steamid = steamid;
@ -1694,14 +1693,14 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line)
} }
} }
pair = table.getPair("TeamNum"_jrs); value = table.get("TeamNum"_jrs);
if (pair != nullptr) if (value != nullptr)
player->team = RenX::getTeam(pair->getValue().asInt()); player->team = RenX::getTeam(value->asInt());
else else
{ {
pair = table.getPair("Team"_jrs); value = table.get("Team"_jrs);
if (pair != nullptr) if (value != nullptr)
player->team = RenX::getTeam(pair->getValue()); player->team = RenX::getTeam(*value);
} }
parse(player); 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. // 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? // 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 != nullptr)
{ {
if (player->ip.isEmpty()) if (player->ip.isEmpty())
player->ip = table.get("IP"_jrs); player->ip = table.get("IP"_jrs, Jupiter::ReferenceString::empty);
if (player->hwid.isEmpty()) if (player->hwid.isEmpty())
player->hwid = table.get("HWID"_jrs); player->hwid = table.get("HWID"_jrs, Jupiter::ReferenceString::empty);
if (player->steamid == 0) 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) if (steamid != 0)
{ {
player->steamid = steamid; player->steamid = steamid;
@ -1728,14 +1727,14 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line)
} }
} }
pair = table.getPair("TeamNum"_jrs); value = table.get("TeamNum"_jrs);
if (pair != nullptr) if (value != nullptr)
player->team = RenX::getTeam(pair->getValue().asInt()); player->team = RenX::getTeam(value->asInt());
else else
{ {
pair = table.getPair("Team"_jrs); value = table.get("Team"_jrs);
if (pair != nullptr) if (value != nullptr)
player->team = RenX::getTeam(pair->getValue()); player->team = RenX::getTeam(*value);
} }
parse(player); 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 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 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; size_t i = tokens.token_count;
while (i-- != 0) while (i-- != 0)
table.set(this->commandListFormat.getToken(i), tokens.getToken(i)); table.set(this->commandListFormat.getToken(i), tokens.getToken(i));
auto parse = [&table](RenX::PlayerInfo *player) auto parse = [&table](RenX::PlayerInfo *player)
{ {
Jupiter::INIFile::Section::KeyValuePair *pair; Jupiter::ReadableString *value;
pair = table.getPair("Kills"_jrs); value = table.get("Kills"_jrs);
if (pair != nullptr) if (value != nullptr)
player->kills = pair->getValue().asUnsignedInt(); player->kills = value->asUnsignedInt();
pair = table.getPair("Deaths"_jrs); value = table.get("Deaths"_jrs);
if (pair != nullptr) if (value != nullptr)
player->deaths = pair->getValue().asUnsignedInt(); player->deaths = value->asUnsignedInt();
pair = table.getPair("Score"_jrs); value = table.get("Score"_jrs);
if (pair != nullptr) if (value != nullptr)
player->score = pair->getValue().asDouble(); player->score = value->asDouble();
pair = table.getPair("Credits"_jrs); value = table.get("Credits"_jrs);
if (pair != nullptr) if (value != nullptr)
player->credits = pair->getValue().asDouble(); player->credits = value->asDouble();
pair = table.getPair("Character"_jrs); value = table.get("Character"_jrs);
if (pair != nullptr) if (value != nullptr)
player->character = pair->getValue(); player->character = *value;
pair = table.getPair("Vehicle"_jrs); value = table.get("Vehicle"_jrs);
if (pair != nullptr) if (value != nullptr)
player->vehicle = pair->getValue(); player->vehicle = *value;
}; };
Jupiter::INIFile::Section::KeyValuePair *pair = table.getPair("PlayerLog"_jrs); Jupiter::ReadableString *value = table.get("PlayerLog"_jrs);
if (pair != nullptr) if (value != 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)); 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 else
{ {
Jupiter::INIFile::Section::KeyValuePair *namePair = table.getPair("Name"_jrs); Jupiter::ReadableString *name = table.get("Name"_jrs);
pair = table.getPair("ID"_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 != nullptr)
{ {
if (player->name.isEmpty()) if (player->name.isEmpty())
{ {
player->name = table.get("Name"_jrs); player->name = table.get("Name"_jrs, Jupiter::ReferenceString::empty);
player->name.processEscapeSequences(); player->name.processEscapeSequences();
} }
pair = table.getPair("TeamNum"_jrs); value = table.get("TeamNum"_jrs);
if (pair != nullptr) if (value != nullptr)
player->team = RenX::getTeam(pair->getValue().asInt()); player->team = RenX::getTeam(value->asInt());
else else
{ {
pair = table.getPair("Team"_jrs); value = table.get("Team"_jrs);
if (pair != nullptr) if (value != nullptr)
player->team = RenX::getTeam(pair->getValue()); player->team = RenX::getTeam(*value);
} }
parse(player); parse(player);
} }
} }
else if (namePair != nullptr) else if (name != nullptr)
{ {
RenX::PlayerInfo *player = getPlayerByName(namePair->getValue()); RenX::PlayerInfo *player = getPlayerByName(*name);
if (player != nullptr) if (player != nullptr)
{ {
pair = table.getPair("TeamNum"_jrs); value = table.get("TeamNum"_jrs);
if (pair != nullptr) if (value != nullptr)
player->team = RenX::getTeam(pair->getValue().asInt()); player->team = RenX::getTeam(value->asInt());
else else
{ {
pair = table.getPair("Team"_jrs); value = table.get("Team"_jrs);
if (pair != nullptr) if (value != nullptr)
player->team = RenX::getTeam(pair->getValue()); player->team = RenX::getTeam(*value);
} }
parse(player); parse(player);
@ -1861,52 +1860,52 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line)
rBuilding Health MaxHealth Armor MaxArmor Team Capturable Destroyed rBuilding Health MaxHealth Armor MaxArmor Team Capturable Destroyed
rRx_Building_Refinery_GDI 2000 2000 2000 2000 GDI False False rRx_Building_Refinery_GDI 2000 2000 2000 2000 GDI False False
*/ */
Jupiter::INIFile::Section table; Jupiter::HashTable table;
size_t i = tokens.token_count; size_t i = tokens.token_count;
while (i-- != 0) while (i-- != 0)
table.set(this->commandListFormat.getToken(i), tokens.getToken(i)); table.set(this->commandListFormat.getToken(i), tokens.getToken(i));
Jupiter::INIFile::Section::KeyValuePair *pair; Jupiter::ReadableString *value;
RenX::BuildingInfo *building; RenX::BuildingInfo *building;
pair = table.getPair("Building"_jrs); value = table.get("Building"_jrs);
if (pair != nullptr) if (value != nullptr)
{ {
building = this->getBuildingByName(pair->getValue()); building = this->getBuildingByName(*value);
if (building == nullptr) if (building == nullptr)
{ {
building = new RenX::BuildingInfo(); building = new RenX::BuildingInfo();
RenX::Server::buildings.add(building); RenX::Server::buildings.add(building);
building->name = pair->getValue(); building->name = *value;
} }
pair = table.getPair("Health"_jrs); value = table.get("Health"_jrs);
if (pair != nullptr) if (value != nullptr)
building->health = pair->getValue().asInt(10); building->health = value->asInt(10);
pair = table.getPair("MaxHealth"_jrs); value = table.get("MaxHealth"_jrs);
if (pair != nullptr) if (value != nullptr)
building->max_health = pair->getValue().asInt(10); building->max_health = value->asInt(10);
pair = table.getPair("Team"_jrs); value = table.get("Team"_jrs);
if (pair != nullptr) if (value != nullptr)
building->team = RenX::getTeam(pair->getValue()); building->team = RenX::getTeam(*value);
pair = table.getPair("Capturable"_jrs); value = table.get("Capturable"_jrs);
if (pair != nullptr) if (value != nullptr)
building->capturable = pair->getValue().asBool(); building->capturable = value->asBool();
pair = table.getPair("Destroyed"_jrs); value = table.get("Destroyed"_jrs);
if (pair != nullptr) if (value != nullptr)
building->destroyed = pair->getValue().asBool(); building->destroyed = value->asBool();
pair = table.getPair("Armor"_jrs); value = table.get("Armor"_jrs);
if (pair != nullptr) if (value != nullptr)
building->armor = pair->getValue().asInt(10); building->armor = value->asInt(10);
pair = table.getPair("MaxArmor"_jrs); value = table.get("MaxArmor"_jrs);
if (pair != nullptr) if (value != nullptr)
building->max_armor = pair->getValue().asInt(10); building->max_armor = value->asInt(10);
} }
} }
} }
@ -3484,39 +3483,39 @@ RenX::Server::Server(const Jupiter::ReadableString &configurationSection)
xPlugins.get(i)->RenX_OnServerCreate(this); 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::hostname = config.get("Hostname"_jrs, "localhost"_jrs);
RenX::Server::port = static_cast<unsigned short>(config.getInt("Port"_jrs, 7777)); RenX::Server::port = config.get<unsigned short>("Port"_jrs, 7777);
RenX::Server::clientHostname = config.get("ClientAddress"_jrs); RenX::Server::clientHostname = config.get("ClientAddress"_jrs);
RenX::Server::pass = config.get("Password"_jrs, "renx"_jrs); RenX::Server::pass = config.get("Password"_jrs, "renx"_jrs);
RenX::Server::logChanType = config.getShort("ChanType"_jrs); RenX::Server::logChanType = config.get<int>("ChanType"_jrs);
RenX::Server::adminLogChanType = config.getShort("AdminChanType"_jrs); RenX::Server::adminLogChanType = config.get<int>("AdminChanType"_jrs);
RenX::Server::setCommandPrefix(config.get("CommandPrefix"_jrs)); RenX::Server::setCommandPrefix(config.get("CommandPrefix"_jrs));
RenX::Server::setPrefix(config.get("IRCPrefix"_jrs)); RenX::Server::setPrefix(config.get("IRCPrefix"_jrs));
RenX::Server::ban_from_str = config.get("BanFromStr"_jrs, "the server"_jrs); RenX::Server::ban_from_str = config.get("BanFromStr"_jrs, "the server"_jrs);
RenX::Server::rules = config.get("Rules"_jrs, "Anarchy!"_jrs); RenX::Server::rules = config.get("Rules"_jrs, "Anarchy!"_jrs);
RenX::Server::delay = std::chrono::milliseconds(config.getInt("ReconnectDelay"_jrs, 10000)); RenX::Server::delay = std::chrono::milliseconds(config.get<long long>("ReconnectDelay"_jrs, 10000));
RenX::Server::maxAttempts = config.getInt("MaxReconnectAttempts"_jrs, -1); RenX::Server::maxAttempts = config.get<int>("MaxReconnectAttempts"_jrs, -1);
RenX::Server::rconBan = config.getBool("RCONBan"_jrs, false); RenX::Server::rconBan = config.get<bool>("RCONBan"_jrs, false);
RenX::Server::localSteamBan = config.getBool("LocalSteamBan"_jrs, true); RenX::Server::localSteamBan = config.get<bool>("LocalSteamBan"_jrs, true);
RenX::Server::localIPBan = config.getBool("LocalIPBan"_jrs, true); RenX::Server::localIPBan = config.get<bool>("LocalIPBan"_jrs, true);
RenX::Server::localHWIDBan = config.getBool("LocalHWIDBan"_jrs, true); RenX::Server::localHWIDBan = config.get<bool>("LocalHWIDBan"_jrs, true);
RenX::Server::localRDNSBan = config.getBool("LocalRDNSBan"_jrs, false); RenX::Server::localRDNSBan = config.get<bool>("LocalRDNSBan"_jrs, false);
RenX::Server::localNameBan = config.getBool("LocalNameBan"_jrs, false); RenX::Server::localNameBan = config.get<bool>("LocalNameBan"_jrs, false);
RenX::Server::localBan = RenX::Server::localIPBan || RenX::Server::localRDNSBan || RenX::Server::localSteamBan || RenX::Server::localNameBan; 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::steamFormat = config.get<int>("SteamFormat"_jrs, 16);
RenX::Server::neverSay = config.getBool("NeverSay"_jrs, false); RenX::Server::neverSay = config.get<bool>("NeverSay"_jrs, false);
RenX::Server::resolve_player_rdns = config.getBool("ResolvePlayerRDNS"_jrs, true); RenX::Server::resolve_player_rdns = config.get<bool>("ResolvePlayerRDNS"_jrs, true);
RenX::Server::clientUpdateRate = std::chrono::milliseconds(config.getInt("ClientUpdateRate"_jrs, 2500)); RenX::Server::clientUpdateRate = std::chrono::milliseconds(config.get<long long>("ClientUpdateRate"_jrs, 2500));
RenX::Server::buildingUpdateRate = std::chrono::milliseconds(config.getInt("BuildingUpdateRate"_jrs, 7500)); RenX::Server::buildingUpdateRate = std::chrono::milliseconds(config.get<long long>("BuildingUpdateRate"_jrs, 7500));
RenX::Server::pingRate = std::chrono::milliseconds(config.getInt("PingUpdateRate"_jrs, 60000)); RenX::Server::pingRate = std::chrono::milliseconds(config.get<long long>("PingUpdateRate"_jrs, 60000));
RenX::Server::pingTimeoutThreshold = std::chrono::milliseconds(config.getInt("PingTimeoutThreshold"_jrs, 10000)); RenX::Server::pingTimeoutThreshold = std::chrono::milliseconds(config.get<long long>("PingTimeoutThreshold"_jrs, 10000));
Jupiter::INIFile &commandsFile = RenX::getCore()->getCommandsFile(); Jupiter::Config &commandsFile = RenX::getCore()->getCommandsFile();
RenX::Server::commandAccessLevels = commandsFile.getSection(RenX::Server::configSection); RenX::Server::commandAccessLevels = commandsFile.getSection(RenX::Server::configSection);
RenX::Server::commandAliases = commandsFile.getSection(RenX::Server::configSection + ".Aliases"_jrs); 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 &section_prefix) auto load_basic_commands = [this, &commandsFile](const Jupiter::ReadableString &section_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) if (basic_commands != nullptr)
{ {
Jupiter::INIFile::Section *basic_commands_help = commandsFile.getSection(section_prefix + ".Basic.Help"_jrs); Jupiter::Config *basic_commands_help = commandsFile.getSection(section_prefix + ".Basic.Help"_jrs);
Jupiter::INIFile::Section::KeyValuePair *pair;
size_t i = 0; auto basic_command_no_help_callback = [this](Jupiter::HashTable::Bucket::Entry &in_entry)
if (basic_commands_help == nullptr)
while (i != basic_commands->size())
{ {
pair = basic_commands->getPair(i); if (this->getCommand(in_entry.key) == nullptr)
++i; this->addCommand(new RenX::BasicGameCommand(in_entry.key, in_entry.value, ""_jrs));
if (this->getCommand(pair->getKey()) == nullptr) };
this->addCommand(new RenX::BasicGameCommand(pair->getKey(), pair->getValue(), ""_jrs));
} auto basic_command_callback = [this, basic_commands_help](Jupiter::HashTable::Bucket::Entry &in_entry)
else
while (i != basic_commands->size())
{ {
pair = basic_commands->getPair(i); if (this->getCommand(in_entry.key) == nullptr)
++i; this->addCommand(new RenX::BasicGameCommand(in_entry.key, in_entry.value, basic_commands_help->get(in_entry.value, ""_jrs)));
if (this->getCommand(pair->getKey()) == nullptr) };
this->addCommand(new RenX::BasicGameCommand(pair->getKey(), pair->getValue(), basic_commands_help->get(pair->getKey(), ""_jrs)));
} if (basic_commands_help == nullptr)
basic_commands->getTable().callback(basic_command_no_help_callback);
else
basic_commands->getTable().callback(basic_command_callback);
} }
}; };

10
RenX.Core/RenX_Server.h

@ -31,7 +31,7 @@
#include "Jupiter/ArrayList.h" #include "Jupiter/ArrayList.h"
#include "Jupiter/String.h" #include "Jupiter/String.h"
#include "Jupiter/CString.h" #include "Jupiter/CString.h"
#include "Jupiter/INIFile.h" #include "Jupiter/Config.h"
#include "Jupiter/Thinker.h" #include "Jupiter/Thinker.h"
#include "Jupiter/Rehash.h" #include "Jupiter/Rehash.h"
#include "RenX.h" #include "RenX.h"
@ -88,7 +88,7 @@ namespace RenX
Jupiter::ArrayList<RenX::BuildingInfo> buildings; /** A list of buildings in the server */ Jupiter::ArrayList<RenX::BuildingInfo> buildings; /** A list of buildings in the server */
Jupiter::ArrayList<Jupiter::StringS> mutators; /** A list of buildings the server is running */ Jupiter::ArrayList<Jupiter::StringS> mutators; /** A list of buildings the server is running */
Jupiter::ArrayList<RenX::Map> maps; /** A list of maps in the server's rotation */ Jupiter::ArrayList<RenX::Map> 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. * @brief Checks if the server is connected to RCON.
@ -1007,7 +1007,7 @@ namespace RenX
/** Private members */ /** Private members */
private: private:
void init(const Jupiter::INIFile::Section &config); void init(const Jupiter::Config &config);
void wipePlayers(); void wipePlayers();
/** Tracking variables */ /** Tracking variables */
@ -1091,8 +1091,8 @@ namespace RenX
Jupiter::StringS ban_from_str; Jupiter::StringS ban_from_str;
Jupiter::StringS IRCPrefix; Jupiter::StringS IRCPrefix;
Jupiter::StringS CommandPrefix; Jupiter::StringS CommandPrefix;
Jupiter::INIFile::Section *commandAccessLevels; Jupiter::Config *commandAccessLevels;
Jupiter::INIFile::Section *commandAliases; Jupiter::Config *commandAliases;
}; };
} }

351
RenX.Core/RenX_Tags.cpp

@ -17,7 +17,6 @@
*/ */
#include "Jupiter/Reference_String.h" #include "Jupiter/Reference_String.h"
#include "Jupiter/INIFile.h"
#include "Jupiter/IRC_Client.h" #include "Jupiter/IRC_Client.h"
#include "RenX_Core.h" #include "RenX_Core.h"
#include "RenX_Functions.h" #include "RenX_Functions.h"
@ -53,14 +52,14 @@ bool TagsImp::initialize()
this->tagItr = 0; this->tagItr = 0;
this->uniqueTag = "\0\0\0\0\0\0"_jrs; this->uniqueTag = "\0\0\0\0\0\0"_jrs;
const Jupiter::INIFile &config = RenX::getCore()->getConfig(); Jupiter::Config &config = RenX::getCore()->getConfig();
const Jupiter::ReadableString &configSection = config.get(Jupiter::ReferenceString::empty, "TagDefinitions"_jrs, "Tags"_jrs); 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<int>("BarWidth"_jrs, 19);
/** Global formats */ /** Global formats */
this->dateFmt = config.get(configSection, "DateFormat"_jrs, "%A, %B %d, %Y"_jrs); this->dateFmt = config[configSection].get("DateFormat"_jrs, "%A, %B %d, %Y"_jrs);
this->timeFmt = config.get(configSection, "TimeFormat"_jrs, "%H:%M:%S"_jrs);; this->timeFmt = config[configSection].get("TimeFormat"_jrs, "%H:%M:%S"_jrs);;
/** Internal message tags */ /** Internal message tags */
@ -251,188 +250,188 @@ bool TagsImp::initialize()
/** External (config) tags */ /** External (config) tags */
/** Global tags */ /** Global tags */
this->dateTag = config.get(configSection, "DateTag"_jrs, "{DATE}"_jrs); this->dateTag = config[configSection].get("DateTag"_jrs, "{DATE}"_jrs);
this->timeTag = config.get(configSection, "TimeTag"_jrs, "{TIME}"_jrs); this->timeTag = config[configSection].get("TimeTag"_jrs, "{TIME}"_jrs);
/** Server tags */ /** Server tags */
this->rconVersionTag = config.get(configSection, "RCONVersionTag"_jrs, "{RVER}"_jrs); this->rconVersionTag = config[configSection].get("RCONVersionTag"_jrs, "{RVER}"_jrs);
this->gameVersionTag = config.get(configSection, "GameVersionTag"_jrs, "{GVER}"_jrs); this->gameVersionTag = config[configSection].get("GameVersionTag"_jrs, "{GVER}"_jrs);
this->rulesTag = config.get(configSection, "RulesTag"_jrs, "{RULES}"_jrs); this->rulesTag = config[configSection].get("RulesTag"_jrs, "{RULES}"_jrs);
this->userTag = config.get(configSection, "UserTag"_jrs, "{USER}"_jrs); this->userTag = config[configSection].get("UserTag"_jrs, "{USER}"_jrs);
this->serverNameTag = config.get(configSection, "ServerNameTag"_jrs, "{SERVERNAME}"_jrs); this->serverNameTag = config[configSection].get("ServerNameTag"_jrs, "{SERVERNAME}"_jrs);
this->mapTag = config.get(configSection, "MapTag"_jrs, "{MAP}"_jrs); this->mapTag = config[configSection].get("MapTag"_jrs, "{MAP}"_jrs);
this->mapGUIDTag = config.get(configSection, "MapGUIDTag"_jrs, "{MGUID}"_jrs); this->mapGUIDTag = config[configSection].get("MapGUIDTag"_jrs, "{MGUID}"_jrs);
this->serverHostnameTag = config.get(configSection, "ServerHostnameTag"_jrs, "{SERVERHOST}"_jrs); this->serverHostnameTag = config[configSection].get("ServerHostnameTag"_jrs, "{SERVERHOST}"_jrs);
this->serverPortTag = config.get(configSection, "ServerPortTag"_jrs, "{SERVERPORT}"_jrs); this->serverPortTag = config[configSection].get("ServerPortTag"_jrs, "{SERVERPORT}"_jrs);
this->socketHostnameTag = config.get(configSection, "SocketHostnameTag"_jrs, "{SOCKHOST}"_jrs); this->socketHostnameTag = config[configSection].get("SocketHostnameTag"_jrs, "{SOCKHOST}"_jrs);
this->socketPortTag = config.get(configSection, "SocketPortTag"_jrs, "{SOCKPORT}"_jrs); this->socketPortTag = config[configSection].get("SocketPortTag"_jrs, "{SOCKPORT}"_jrs);
this->serverPrefixTag = config.get(configSection, "ServerPrefixTag"_jrs, "{SERVERPREFIX}"_jrs); this->serverPrefixTag = config[configSection].get("ServerPrefixTag"_jrs, "{SERVERPREFIX}"_jrs);
/** Player tags */ /** Player tags */
this->nameTag = config.get(configSection, "NameTag"_jrs, "{NAME}"_jrs); this->nameTag = config[configSection].get("NameTag"_jrs, "{NAME}"_jrs);
this->rawNameTag = config.get(configSection, "RawNameTag"_jrs, "{RNAME}"_jrs); this->rawNameTag = config[configSection].get("RawNameTag"_jrs, "{RNAME}"_jrs);
this->ipTag = config.get(configSection, "IPTag"_jrs, "{IP}"_jrs); this->ipTag = config[configSection].get("IPTag"_jrs, "{IP}"_jrs);
this->hwidTag = config.get(configSection, "HWIDTag"_jrs, "{HWID}"_jrs); this->hwidTag = config[configSection].get("HWIDTag"_jrs, "{HWID}"_jrs);
this->rdnsTag = config.get(configSection, "RDNSTag"_jrs, "{RDNS}"_jrs); this->rdnsTag = config[configSection].get("RDNSTag"_jrs, "{RDNS}"_jrs);
this->steamTag = config.get(configSection, "SteamTag"_jrs, "{STEAM}"_jrs); this->steamTag = config[configSection].get("SteamTag"_jrs, "{STEAM}"_jrs);
this->uuidTag = config.get(configSection, "UUIDTag"_jrs, "{UUID}"_jrs); this->uuidTag = config[configSection].get("UUIDTag"_jrs, "{UUID}"_jrs);
this->idTag = config.get(configSection, "IDTag"_jrs, "{ID}"_jrs); this->idTag = config[configSection].get("IDTag"_jrs, "{ID}"_jrs);
this->characterTag = config.get(configSection, "CharacterTag"_jrs, "{CHAR}"_jrs); this->characterTag = config[configSection].get("CharacterTag"_jrs, "{CHAR}"_jrs);
this->vehicleTag = config.get(configSection, "VehicleTag"_jrs, "{VEH}"_jrs); this->vehicleTag = config[configSection].get("VehicleTag"_jrs, "{VEH}"_jrs);
this->adminTag = config.get(configSection, "AdminTag"_jrs, "{ADMIN}"_jrs); this->adminTag = config[configSection].get("AdminTag"_jrs, "{ADMIN}"_jrs);
this->prefixTag = config.get(configSection, "PrefixTag"_jrs, "{PREFIX}"_jrs); this->prefixTag = config[configSection].get("PrefixTag"_jrs, "{PREFIX}"_jrs);
this->gamePrefixTag = config.get(configSection, "GamePrefixTag"_jrs, "{GPREFIX}"_jrs); this->gamePrefixTag = config[configSection].get("GamePrefixTag"_jrs, "{GPREFIX}"_jrs);
this->teamColorTag = config.get(configSection, "TeamColorTag"_jrs, "{TCOLOR}"_jrs); this->teamColorTag = config[configSection].get("TeamColorTag"_jrs, "{TCOLOR}"_jrs);
this->teamShortTag = config.get(configSection, "ShortTeamTag"_jrs, "{TEAMS}"_jrs); this->teamShortTag = config[configSection].get("ShortTeamTag"_jrs, "{TEAMS}"_jrs);
this->teamLongTag = config.get(configSection, "LongTeamTag"_jrs, "{TEAML}"_jrs); this->teamLongTag = config[configSection].get("LongTeamTag"_jrs, "{TEAML}"_jrs);
this->pingTag = config.get(configSection, "PingTag"_jrs, "{PING}"_jrs); this->pingTag = config[configSection].get("PingTag"_jrs, "{PING}"_jrs);
this->scoreTag = config.get(configSection, "ScoreTag"_jrs, "{SCORE}"_jrs); this->scoreTag = config[configSection].get("ScoreTag"_jrs, "{SCORE}"_jrs);
this->scorePerMinuteTag = config.get(configSection, "ScorePerMinuteTag"_jrs, "{SPM}"_jrs); this->scorePerMinuteTag = config[configSection].get("ScorePerMinuteTag"_jrs, "{SPM}"_jrs);
this->creditsTag = config.get(configSection, "CreditsTag"_jrs, "{CREDITS}"_jrs); this->creditsTag = config[configSection].get("CreditsTag"_jrs, "{CREDITS}"_jrs);
this->killsTag = config.get(configSection, "KillsTag"_jrs, "{KILLS}"_jrs); this->killsTag = config[configSection].get("KillsTag"_jrs, "{KILLS}"_jrs);
this->deathsTag = config.get(configSection, "DeathsTag"_jrs, "{DEATHS}"_jrs); this->deathsTag = config[configSection].get("DeathsTag"_jrs, "{DEATHS}"_jrs);
this->kdrTag = config.get(configSection, "KDRTag"_jrs, "{KDR}"_jrs); this->kdrTag = config[configSection].get("KDRTag"_jrs, "{KDR}"_jrs);
this->suicidesTag = config.get(configSection, "SuicidesTag"_jrs, "{SUICIDES}"_jrs); this->suicidesTag = config[configSection].get("SuicidesTag"_jrs, "{SUICIDES}"_jrs);
this->headshotsTag = config.get(configSection, "HeadshotsTag"_jrs, "{HEADSHOTS}"_jrs); this->headshotsTag = config[configSection].get("HeadshotsTag"_jrs, "{HEADSHOTS}"_jrs);
this->headshotKillRatioTag = config.get(configSection, "HeadshotKillRatioTag"_jrs, "{HSKR}"_jrs); this->headshotKillRatioTag = config[configSection].get("HeadshotKillRatioTag"_jrs, "{HSKR}"_jrs);
this->vehicleKillsTag = config.get(configSection, "VehicleKillsTag"_jrs, "{VEHICLEKILLS}"_jrs); this->vehicleKillsTag = config[configSection].get("VehicleKillsTag"_jrs, "{VEHICLEKILLS}"_jrs);
this->buildingKillsTag = config.get(configSection, "BuildingKillsTag"_jrs, "{BUILDINGKILLS}"_jrs); this->buildingKillsTag = config[configSection].get("BuildingKillsTag"_jrs, "{BUILDINGKILLS}"_jrs);
this->defenceKillsTag = config.get(configSection, "DefenceKillsTag"_jrs, "{DEFENCEKILLS}"_jrs); this->defenceKillsTag = config[configSection].get("DefenceKillsTag"_jrs, "{DEFENCEKILLS}"_jrs);
this->gameTimeTag = config.get(configSection, "GameTimeTag"_jrs, "{GAMETIME}"_jrs); this->gameTimeTag = config[configSection].get("GameTimeTag"_jrs, "{GAMETIME}"_jrs);
this->gamesTag = config.get(configSection, "GamesTag"_jrs, "{GAMES}"_jrs); this->gamesTag = config[configSection].get("GamesTag"_jrs, "{GAMES}"_jrs);
this->GDIGamesTag = config.get(configSection, "GDIGamesTag"_jrs, "{GDIGAMES}"_jrs); this->GDIGamesTag = config[configSection].get("GDIGamesTag"_jrs, "{GDIGAMES}"_jrs);
this->NodGamesTag = config.get(configSection, "NodGamesTag"_jrs, "{NODGAMES}"_jrs); this->NodGamesTag = config[configSection].get("NodGamesTag"_jrs, "{NODGAMES}"_jrs);
this->winsTag = config.get(configSection, "WinsTag"_jrs, "{WINS}"_jrs); this->winsTag = config[configSection].get("WinsTag"_jrs, "{WINS}"_jrs);
this->GDIWinsTag = config.get(configSection, "GDIWinsTag"_jrs, "{GDIWINS}"_jrs); this->GDIWinsTag = config[configSection].get("GDIWinsTag"_jrs, "{GDIWINS}"_jrs);
this->NodWinsTag = config.get(configSection, "NodWinsTag"_jrs, "{NODWINS}"_jrs); this->NodWinsTag = config[configSection].get("NodWinsTag"_jrs, "{NODWINS}"_jrs);
this->tiesTag = config.get(configSection, "TiesTag"_jrs, "{TIES}"_jrs); this->tiesTag = config[configSection].get("TiesTag"_jrs, "{TIES}"_jrs);
this->lossesTag = config.get(configSection, "LossesTag"_jrs, "{LOSSES}"_jrs); this->lossesTag = config[configSection].get("LossesTag"_jrs, "{LOSSES}"_jrs);
this->GDILossesTag = config.get(configSection, "GDILossesTag"_jrs, "{GDILOSSES}"_jrs); this->GDILossesTag = config[configSection].get("GDILossesTag"_jrs, "{GDILOSSES}"_jrs);
this->NodLossesTag = config.get(configSection, "NodLossesTag"_jrs, "{NODLOSSES}"_jrs); this->NodLossesTag = config[configSection].get("NodLossesTag"_jrs, "{NODLOSSES}"_jrs);
this->winLossRatioTag = config.get(configSection, "WinLossRatioTag"_jrs, "{WLR}"_jrs); this->winLossRatioTag = config[configSection].get("WinLossRatioTag"_jrs, "{WLR}"_jrs);
this->GDIWinLossRatioTag = config.get(configSection, "GDIWinLossRatioTag"_jrs, "{GDIWLR}"_jrs); this->GDIWinLossRatioTag = config[configSection].get("GDIWinLossRatioTag"_jrs, "{GDIWLR}"_jrs);
this->NodWinLossRatioTag = config.get(configSection, "NodWinLossRatioTag"_jrs, "{NODWLR}"_jrs); this->NodWinLossRatioTag = config[configSection].get("NodWinLossRatioTag"_jrs, "{NODWLR}"_jrs);
this->beaconPlacementsTag = config.get(configSection, "BeaconPlacementsTag"_jrs, "{BEACONPLACEMENTS}"_jrs); this->beaconPlacementsTag = config[configSection].get("BeaconPlacementsTag"_jrs, "{BEACONPLACEMENTS}"_jrs);
this->beaconDisarmsTag = config.get(configSection, "BeaconDisarmsTag"_jrs, "{BEACONDISARMS}"_jrs); this->beaconDisarmsTag = config[configSection].get("BeaconDisarmsTag"_jrs, "{BEACONDISARMS}"_jrs);
this->proxyPlacementsTag = config.get(configSection, "ProxyPlacementsTag"_jrs, "{PROXYPLACEMENTS}"_jrs); this->proxyPlacementsTag = config[configSection].get("ProxyPlacementsTag"_jrs, "{PROXYPLACEMENTS}"_jrs);
this->proxyDisarmsTag = config.get(configSection, "ProxyDisarmsTag"_jrs, "{PROXYDISARMS}"_jrs); this->proxyDisarmsTag = config[configSection].get("ProxyDisarmsTag"_jrs, "{PROXYDISARMS}"_jrs);
this->capturesTag = config.get(configSection, "CapturesTag"_jrs, "{CAPTURES}"_jrs); this->capturesTag = config[configSection].get("CapturesTag"_jrs, "{CAPTURES}"_jrs);
this->stealsTag = config.get(configSection, "StealsTag"_jrs, "{STEALS}"_jrs); this->stealsTag = config[configSection].get("StealsTag"_jrs, "{STEALS}"_jrs);
this->stolenTag = config.get(configSection, "StolenTag"_jrs, "{STOLEN}"_jrs); this->stolenTag = config[configSection].get("StolenTag"_jrs, "{STOLEN}"_jrs);
this->accessTag = config.get(configSection, "AccessTag"_jrs, "{ACCESS}"_jrs); this->accessTag = config[configSection].get("AccessTag"_jrs, "{ACCESS}"_jrs);
/** Victim player tags */ /** Victim player tags */
this->victimNameTag = config.get(configSection, "VictimNameTag"_jrs, "{VNAME}"_jrs); this->victimNameTag = config[configSection].get("VictimNameTag"_jrs, "{VNAME}"_jrs);
this->victimRawNameTag = config.get(configSection, "VictimRawNameTag"_jrs, "{VRNAME}"_jrs); this->victimRawNameTag = config[configSection].get("VictimRawNameTag"_jrs, "{VRNAME}"_jrs);
this->victimIPTag = config.get(configSection, "VictimIPTag"_jrs, "{VIP}"_jrs); this->victimIPTag = config[configSection].get("VictimIPTag"_jrs, "{VIP}"_jrs);
this->victimHWIDTag = config.get(configSection, "VictimHWIDTag"_jrs, "{VHWID}"_jrs); this->victimHWIDTag = config[configSection].get("VictimHWIDTag"_jrs, "{VHWID}"_jrs);
this->victimRDNSTag = config.get(configSection, "VictimRDNSTag"_jrs, "{VRDNS}"_jrs); this->victimRDNSTag = config[configSection].get("VictimRDNSTag"_jrs, "{VRDNS}"_jrs);
this->victimSteamTag = config.get(configSection, "VictimSteamTag"_jrs, "{VSTEAM}"_jrs); this->victimSteamTag = config[configSection].get("VictimSteamTag"_jrs, "{VSTEAM}"_jrs);
this->victimUUIDTag = config.get(configSection, "VictimUUIDTag"_jrs, "{VUUID}"_jrs); this->victimUUIDTag = config[configSection].get("VictimUUIDTag"_jrs, "{VUUID}"_jrs);
this->victimIDTag = config.get(configSection, "VictimIDTag"_jrs, "{VID}"_jrs); this->victimIDTag = config[configSection].get("VictimIDTag"_jrs, "{VID}"_jrs);
this->victimCharacterTag = config.get(configSection, "VictimCharacterTag"_jrs, "{VCHAR}"_jrs); this->victimCharacterTag = config[configSection].get("VictimCharacterTag"_jrs, "{VCHAR}"_jrs);
this->victimVehicleTag = config.get(configSection, "VictimVehicleTag"_jrs, "{VVEH}"_jrs); this->victimVehicleTag = config[configSection].get("VictimVehicleTag"_jrs, "{VVEH}"_jrs);
this->victimAdminTag = config.get(configSection, "VictimAdminTag"_jrs, "{VADMIN}"_jrs); this->victimAdminTag = config[configSection].get("VictimAdminTag"_jrs, "{VADMIN}"_jrs);
this->victimPrefixTag = config.get(configSection, "VictimPrefixTag"_jrs, "{VPREFIX}"_jrs); this->victimPrefixTag = config[configSection].get("VictimPrefixTag"_jrs, "{VPREFIX}"_jrs);
this->victimGamePrefixTag = config.get(configSection, "VictimGamePrefixTag"_jrs, "{VGPREFIX}"_jrs); this->victimGamePrefixTag = config[configSection].get("VictimGamePrefixTag"_jrs, "{VGPREFIX}"_jrs);
this->victimTeamColorTag = config.get(configSection, "VictimTeamColorTag"_jrs, "{VTCOLOR}"_jrs); this->victimTeamColorTag = config[configSection].get("VictimTeamColorTag"_jrs, "{VTCOLOR}"_jrs);
this->victimTeamShortTag = config.get(configSection, "VictimShortTeamTag"_jrs, "{VTEAMS}"_jrs); this->victimTeamShortTag = config[configSection].get("VictimShortTeamTag"_jrs, "{VTEAMS}"_jrs);
this->victimTeamLongTag = config.get(configSection, "VictimLongTeamTag"_jrs, "{VTEAML}"_jrs); this->victimTeamLongTag = config[configSection].get("VictimLongTeamTag"_jrs, "{VTEAML}"_jrs);
this->victimPingTag = config.get(configSection, "VictimPingTag"_jrs, "{VPING}"_jrs); this->victimPingTag = config[configSection].get("VictimPingTag"_jrs, "{VPING}"_jrs);
this->victimScoreTag = config.get(configSection, "VictimScoreTag"_jrs, "{VSCORE}"_jrs); this->victimScoreTag = config[configSection].get("VictimScoreTag"_jrs, "{VSCORE}"_jrs);
this->victimScorePerMinuteTag = config.get(configSection, "VictimScorePerMinuteTag"_jrs, "{VSPM}"_jrs); this->victimScorePerMinuteTag = config[configSection].get("VictimScorePerMinuteTag"_jrs, "{VSPM}"_jrs);
this->victimCreditsTag = config.get(configSection, "VictimCreditsTag"_jrs, "{VCREDITS}"_jrs); this->victimCreditsTag = config[configSection].get("VictimCreditsTag"_jrs, "{VCREDITS}"_jrs);
this->victimKillsTag = config.get(configSection, "VictimKillsTag"_jrs, "{VKILLS}"_jrs); this->victimKillsTag = config[configSection].get("VictimKillsTag"_jrs, "{VKILLS}"_jrs);
this->victimDeathsTag = config.get(configSection, "VictimDeathsTag"_jrs, "{VDEATHS}"_jrs); this->victimDeathsTag = config[configSection].get("VictimDeathsTag"_jrs, "{VDEATHS}"_jrs);
this->victimKDRTag = config.get(configSection, "VictimKDRTag"_jrs, "{VKDR}"_jrs); this->victimKDRTag = config[configSection].get("VictimKDRTag"_jrs, "{VKDR}"_jrs);
this->victimSuicidesTag = config.get(configSection, "VictimSuicidesTag"_jrs, "{VSUICIDES}"_jrs); this->victimSuicidesTag = config[configSection].get("VictimSuicidesTag"_jrs, "{VSUICIDES}"_jrs);
this->victimHeadshotsTag = config.get(configSection, "VictimHeadshotsTag"_jrs, "{VHEADSHOTS}"_jrs); this->victimHeadshotsTag = config[configSection].get("VictimHeadshotsTag"_jrs, "{VHEADSHOTS}"_jrs);
this->victimHeadshotKillRatioTag = config.get(configSection, "VictimHeadshotKillRatioTag"_jrs, "{VHSKR}"_jrs); this->victimHeadshotKillRatioTag = config[configSection].get("VictimHeadshotKillRatioTag"_jrs, "{VHSKR}"_jrs);
this->victimVehicleKillsTag = config.get(configSection, "VictimVehicleKillsTag"_jrs, "{VVEHICLEKILLS}"_jrs); this->victimVehicleKillsTag = config[configSection].get("VictimVehicleKillsTag"_jrs, "{VVEHICLEKILLS}"_jrs);
this->victimBuildingKillsTag = config.get(configSection, "VictimBuildingKillsTag"_jrs, "{VBUILDINGKILLS}"_jrs); this->victimBuildingKillsTag = config[configSection].get("VictimBuildingKillsTag"_jrs, "{VBUILDINGKILLS}"_jrs);
this->victimDefenceKillsTag = config.get(configSection, "VictimDefenceKillsTag"_jrs, "{VDEFENCEKILLS}"_jrs); this->victimDefenceKillsTag = config[configSection].get("VictimDefenceKillsTag"_jrs, "{VDEFENCEKILLS}"_jrs);
this->victimGameTimeTag = config.get(configSection, "VictimGameTimeTag"_jrs, "{VGAMETIME}"_jrs); this->victimGameTimeTag = config[configSection].get("VictimGameTimeTag"_jrs, "{VGAMETIME}"_jrs);
this->victimGamesTag = config.get(configSection, "VictimGamesTag"_jrs, "{VGAMES}"_jrs); this->victimGamesTag = config[configSection].get("VictimGamesTag"_jrs, "{VGAMES}"_jrs);
this->victimGDIGamesTag = config.get(configSection, "VictimGDIGamesTag"_jrs, "{VGDIGAMES}"_jrs); this->victimGDIGamesTag = config[configSection].get("VictimGDIGamesTag"_jrs, "{VGDIGAMES}"_jrs);
this->victimNodGamesTag = config.get(configSection, "VictimNodGamesTag"_jrs, "{VNODGAMES}"_jrs); this->victimNodGamesTag = config[configSection].get("VictimNodGamesTag"_jrs, "{VNODGAMES}"_jrs);
this->victimWinsTag = config.get(configSection, "VictimWinsTag"_jrs, "{VWINS}"_jrs); this->victimWinsTag = config[configSection].get("VictimWinsTag"_jrs, "{VWINS}"_jrs);
this->victimGDIWinsTag = config.get(configSection, "VictimGDIWinsTag"_jrs, "{VGDIWINS}"_jrs); this->victimGDIWinsTag = config[configSection].get("VictimGDIWinsTag"_jrs, "{VGDIWINS}"_jrs);
this->victimNodWinsTag = config.get(configSection, "VictimNodWinsTag"_jrs, "{VNODWINS}"_jrs); this->victimNodWinsTag = config[configSection].get("VictimNodWinsTag"_jrs, "{VNODWINS}"_jrs);
this->victimTiesTag = config.get(configSection, "VictimTiesTag"_jrs, "{VTIES}"_jrs); this->victimTiesTag = config[configSection].get("VictimTiesTag"_jrs, "{VTIES}"_jrs);
this->victimLossesTag = config.get(configSection, "VictimLossesTag"_jrs, "{VLOSSES}"_jrs); this->victimLossesTag = config[configSection].get("VictimLossesTag"_jrs, "{VLOSSES}"_jrs);
this->victimGDILossesTag = config.get(configSection, "VictimGDILossesTag"_jrs, "{VGDILOSSES}"_jrs); this->victimGDILossesTag = config[configSection].get("VictimGDILossesTag"_jrs, "{VGDILOSSES}"_jrs);
this->victimNodLossesTag = config.get(configSection, "VictimNodLossesTag"_jrs, "{VNODLOSSES}"_jrs); this->victimNodLossesTag = config[configSection].get("VictimNodLossesTag"_jrs, "{VNODLOSSES}"_jrs);
this->victimWinLossRatioTag = config.get(configSection, "VictimWinLossRatioTag"_jrs, "{VWLR}"_jrs); this->victimWinLossRatioTag = config[configSection].get("VictimWinLossRatioTag"_jrs, "{VWLR}"_jrs);
this->victimGDIWinLossRatioTag = config.get(configSection, "VictimGDIWinLossRatioTag"_jrs, "{VGDIWLR}"_jrs); this->victimGDIWinLossRatioTag = config[configSection].get("VictimGDIWinLossRatioTag"_jrs, "{VGDIWLR}"_jrs);
this->victimNodWinLossRatioTag = config.get(configSection, "VictimNodWinLossRatioTag"_jrs, "{VNODWLR}"_jrs); this->victimNodWinLossRatioTag = config[configSection].get("VictimNodWinLossRatioTag"_jrs, "{VNODWLR}"_jrs);
this->victimBeaconPlacementsTag = config.get(configSection, "VictimBeaconPlacementsTag"_jrs, "{VBEACONPLACEMENTS}"_jrs); this->victimBeaconPlacementsTag = config[configSection].get("VictimBeaconPlacementsTag"_jrs, "{VBEACONPLACEMENTS}"_jrs);
this->victimBeaconDisarmsTag = config.get(configSection, "VictimBeaconDisarmsTag"_jrs, "{VBEACONDISARMS}"_jrs); this->victimBeaconDisarmsTag = config[configSection].get("VictimBeaconDisarmsTag"_jrs, "{VBEACONDISARMS}"_jrs);
this->victimProxyPlacementsTag = config.get(configSection, "VictimProxyPlacementsTag"_jrs, "{VPROXYPLACEMENTS}"_jrs); this->victimProxyPlacementsTag = config[configSection].get("VictimProxyPlacementsTag"_jrs, "{VPROXYPLACEMENTS}"_jrs);
this->victimProxyDisarmsTag = config.get(configSection, "VictimProxyDisarmsTag"_jrs, "{VPROXYDISARMS}"_jrs); this->victimProxyDisarmsTag = config[configSection].get("VictimProxyDisarmsTag"_jrs, "{VPROXYDISARMS}"_jrs);
this->victimCapturesTag = config.get(configSection, "VictimCapturesTag"_jrs, "{VCAPTURES}"_jrs); this->victimCapturesTag = config[configSection].get("VictimCapturesTag"_jrs, "{VCAPTURES}"_jrs);
this->victimStealsTag = config.get(configSection, "VictimStealsTag"_jrs, "{VSTEALS}"_jrs); this->victimStealsTag = config[configSection].get("VictimStealsTag"_jrs, "{VSTEALS}"_jrs);
this->victimStolenTag = config.get(configSection, "VictimStolenTag"_jrs, "{VSTOLEN}"_jrs); this->victimStolenTag = config[configSection].get("VictimStolenTag"_jrs, "{VSTOLEN}"_jrs);
this->victimAccessTag = config.get(configSection, "VictimAccessTag"_jrs, "{VACCESS}"_jrs); this->victimAccessTag = config[configSection].get("VictimAccessTag"_jrs, "{VACCESS}"_jrs);
/** Building tags */ /** Building tags */
this->buildingNameTag = config.get(configSection, "BuildingNameTag"_jrs, "{BNAME}"_jrs); this->buildingNameTag = config[configSection].get("BuildingNameTag"_jrs, "{BNAME}"_jrs);
this->buildingRawNameTag = config.get(configSection, "BuildingRawNameTag"_jrs, "{BRNAME}"_jrs); this->buildingRawNameTag = config[configSection].get("BuildingRawNameTag"_jrs, "{BRNAME}"_jrs);
this->buildingHealthTag = config.get(configSection, "BuildingHealthTag"_jrs, "{BHEALTH}"_jrs); this->buildingHealthTag = config[configSection].get("BuildingHealthTag"_jrs, "{BHEALTH}"_jrs);
this->buildingMaxHealthTag = config.get(configSection, "BuildingMaxHealthTag"_jrs, "{BMHEALTH}"_jrs); this->buildingMaxHealthTag = config[configSection].get("BuildingMaxHealthTag"_jrs, "{BMHEALTH}"_jrs);
this->buildingHealthPercentageTag = config.get(configSection, "BuildingHealthPercentageTag"_jrs, "{BHP}"_jrs); this->buildingHealthPercentageTag = config[configSection].get("BuildingHealthPercentageTag"_jrs, "{BHP}"_jrs);
this->buildingArmorTag = config.get(configSection, "BuildingArmorTag"_jrs, "{BARMOR}"_jrs); this->buildingArmorTag = config[configSection].get("BuildingArmorTag"_jrs, "{BARMOR}"_jrs);
this->buildingMaxArmorTag = config.get(configSection, "BuildingMaxArmorTag"_jrs, "{BMARMOR}"_jrs); this->buildingMaxArmorTag = config[configSection].get("BuildingMaxArmorTag"_jrs, "{BMARMOR}"_jrs);
this->buildingArmorPercentageTag = config.get(configSection, "BuildingArmorPercentageTag"_jrs, "{BAP}"_jrs); this->buildingArmorPercentageTag = config[configSection].get("BuildingArmorPercentageTag"_jrs, "{BAP}"_jrs);
this->buildingDurabilityTag = config.get(configSection, "BuildingDurabilityTag"_jrs, "{BDURABILITY}"_jrs); this->buildingDurabilityTag = config[configSection].get("BuildingDurabilityTag"_jrs, "{BDURABILITY}"_jrs);
this->buildingMaxDurabilityTag = config.get(configSection, "BuildingMaxDurabilityTag"_jrs, "{BMDURABILITY}"_jrs); this->buildingMaxDurabilityTag = config[configSection].get("BuildingMaxDurabilityTag"_jrs, "{BMDURABILITY}"_jrs);
this->buildingDurabilityPercentageTag = config.get(configSection, "BuildingDurabilityPercentageTag"_jrs, "{BDP}"_jrs); this->buildingDurabilityPercentageTag = config[configSection].get("BuildingDurabilityPercentageTag"_jrs, "{BDP}"_jrs);
this->buildingTeamColorTag = config.get(configSection, "BuildingTeamColorTag"_jrs, "{BCOLOR}"_jrs); this->buildingTeamColorTag = config[configSection].get("BuildingTeamColorTag"_jrs, "{BCOLOR}"_jrs);
this->buildingTeamShortTag = config.get(configSection, "BuildingShortTeamTag"_jrs, "{BTEAMS}"_jrs); this->buildingTeamShortTag = config[configSection].get("BuildingShortTeamTag"_jrs, "{BTEAMS}"_jrs);
this->buildingTeamLongTag = config.get(configSection, "BuildingLongTeamTag"_jrs, "{BTEAML}"_jrs); this->buildingTeamLongTag = config[configSection].get("BuildingLongTeamTag"_jrs, "{BTEAML}"_jrs);
/** Ladder tags */ /** Ladder tags */
this->rankTag = config.get(configSection, "RankTag"_jrs, "{RANK}"_jrs); this->rankTag = config[configSection].get("RankTag"_jrs, "{RANK}"_jrs);
this->lastGameTag = config.get(configSection, "LastGameTag"_jrs, "{LASTGAME}"_jrs); this->lastGameTag = config[configSection].get("LastGameTag"_jrs, "{LASTGAME}"_jrs);
this->GDIScoreTag = config.get(configSection, "GDIScoreTag"_jrs, "{GDISCORE}"_jrs); this->GDIScoreTag = config[configSection].get("GDIScoreTag"_jrs, "{GDISCORE}"_jrs);
this->GDISPMTag = config.get(configSection, "GDISPMTag"_jrs, "{GDISPM}"_jrs); this->GDISPMTag = config[configSection].get("GDISPMTag"_jrs, "{GDISPM}"_jrs);
this->GDIGameTimeTag = config.get(configSection, "GDIGameTimeTag"_jrs, "{GDIGAMETIME}"_jrs); this->GDIGameTimeTag = config[configSection].get("GDIGameTimeTag"_jrs, "{GDIGAMETIME}"_jrs);
this->GDITiesTag = config.get(configSection, "GDITiesTag"_jrs, "{GDITIES}"_jrs); this->GDITiesTag = config[configSection].get("GDITiesTag"_jrs, "{GDITIES}"_jrs);
this->GDIBeaconPlacementsTag = config.get(configSection, "GDIBeaconPlacementsTag"_jrs, "{GDIBEACONPLACEMENTS}"_jrs); this->GDIBeaconPlacementsTag = config[configSection].get("GDIBeaconPlacementsTag"_jrs, "{GDIBEACONPLACEMENTS}"_jrs);
this->GDIBeaconDisarmsTag = config.get(configSection, "GDIBeaconDisarmsTag"_jrs, "{GDIBEACONDISARMS}"_jrs); this->GDIBeaconDisarmsTag = config[configSection].get("GDIBeaconDisarmsTag"_jrs, "{GDIBEACONDISARMS}"_jrs);
this->GDIProxyPlacementsTag = config.get(configSection, "GDIProxyPlacementsTag"_jrs, "{GDIPROXYPLACEMENTS}"_jrs); this->GDIProxyPlacementsTag = config[configSection].get("GDIProxyPlacementsTag"_jrs, "{GDIPROXYPLACEMENTS}"_jrs);
this->GDIProxyDisarmsTag = config.get(configSection, "GDIProxyDisarmsTag"_jrs, "{GDIPROXYDISARMS}"_jrs); this->GDIProxyDisarmsTag = config[configSection].get("GDIProxyDisarmsTag"_jrs, "{GDIPROXYDISARMS}"_jrs);
this->GDIKillsTag = config.get(configSection, "GDIKillsTag"_jrs, "{GDIKILLS}"_jrs); this->GDIKillsTag = config[configSection].get("GDIKillsTag"_jrs, "{GDIKILLS}"_jrs);
this->GDIDeathsTag = config.get(configSection, "GDIDeathsTag"_jrs, "{GDIDEATHS}"_jrs); this->GDIDeathsTag = config[configSection].get("GDIDeathsTag"_jrs, "{GDIDEATHS}"_jrs);
this->GDIVehicleKillsTag = config.get(configSection, "GDIVehicleKillsTag"_jrs, "{GDIVEHICLEKILLS}"_jrs); this->GDIVehicleKillsTag = config[configSection].get("GDIVehicleKillsTag"_jrs, "{GDIVEHICLEKILLS}"_jrs);
this->GDIDefenceKillsTag = config.get(configSection, "GDIDefenceKillsTag"_jrs, "{GDIDEFENCEKILLS}"_jrs); this->GDIDefenceKillsTag = config[configSection].get("GDIDefenceKillsTag"_jrs, "{GDIDEFENCEKILLS}"_jrs);
this->GDIBuildingKillsTag = config.get(configSection, "GDIBuildingKillsTag"_jrs, "{GDIBUILDINGKILLS}"_jrs); this->GDIBuildingKillsTag = config[configSection].get("GDIBuildingKillsTag"_jrs, "{GDIBUILDINGKILLS}"_jrs);
this->GDIKDRTag = config.get(configSection, "GDIKDRTag"_jrs, "{GDIKDR}"_jrs); this->GDIKDRTag = config[configSection].get("GDIKDRTag"_jrs, "{GDIKDR}"_jrs);
this->GDIHeadshotsTag = config.get(configSection, "GDIHeadshotsTag"_jrs, "{GDIHEADSHOTS}"_jrs); this->GDIHeadshotsTag = config[configSection].get("GDIHeadshotsTag"_jrs, "{GDIHEADSHOTS}"_jrs);
this->GDIHeadshotKillRatioTag = config.get(configSection, "GDIHeadshotKillRatioTag"_jrs, "{GDIHSKR}"_jrs); this->GDIHeadshotKillRatioTag = config[configSection].get("GDIHeadshotKillRatioTag"_jrs, "{GDIHSKR}"_jrs);
this->NodScoreTag = config.get(configSection, "NodScoreTag"_jrs, "{NODSCORE}"_jrs); this->NodScoreTag = config[configSection].get("NodScoreTag"_jrs, "{NODSCORE}"_jrs);
this->NodSPMTag = config.get(configSection, "NodSPMTag"_jrs, "{NODSPM}"_jrs); this->NodSPMTag = config[configSection].get("NodSPMTag"_jrs, "{NODSPM}"_jrs);
this->NodGameTimeTag = config.get(configSection, "NodGameTimeTag"_jrs, "{NODGAMETIME}"_jrs); this->NodGameTimeTag = config[configSection].get("NodGameTimeTag"_jrs, "{NODGAMETIME}"_jrs);
this->NodTiesTag = config.get(configSection, "NodTiesTag"_jrs, "{NODTIES}"_jrs); this->NodTiesTag = config[configSection].get("NodTiesTag"_jrs, "{NODTIES}"_jrs);
this->NodBeaconPlacementsTag = config.get(configSection, "NodBeaconPlacementsTag"_jrs, "{NODBEACONPLACEMENTS}"_jrs); this->NodBeaconPlacementsTag = config[configSection].get("NodBeaconPlacementsTag"_jrs, "{NODBEACONPLACEMENTS}"_jrs);
this->NodBeaconDisarmsTag = config.get(configSection, "NodBeaconDisarmsTag"_jrs, "{NODBEACONDISARMS}"_jrs); this->NodBeaconDisarmsTag = config[configSection].get("NodBeaconDisarmsTag"_jrs, "{NODBEACONDISARMS}"_jrs);
this->NodProxyPlacementsTag = config.get(configSection, "NodProxyPlacementsTag"_jrs, "{NODPROXYPLACEMENTS}"_jrs); this->NodProxyPlacementsTag = config[configSection].get("NodProxyPlacementsTag"_jrs, "{NODPROXYPLACEMENTS}"_jrs);
this->NodProxyDisarmsTag = config.get(configSection, "NodProxyDisarmsTag"_jrs, "{NODPROXYDISARMS}"_jrs); this->NodProxyDisarmsTag = config[configSection].get("NodProxyDisarmsTag"_jrs, "{NODPROXYDISARMS}"_jrs);
this->NodKillsTag = config.get(configSection, "NodKillsTag"_jrs, "{NODKILLS}"_jrs); this->NodKillsTag = config[configSection].get("NodKillsTag"_jrs, "{NODKILLS}"_jrs);
this->NodDeathsTag = config.get(configSection, "NodDeathsTag"_jrs, "{NODDEATHS}"_jrs); this->NodDeathsTag = config[configSection].get("NodDeathsTag"_jrs, "{NODDEATHS}"_jrs);
this->NodVehicleKillsTag = config.get(configSection, "NodVehicleKillsTag"_jrs, "{NODVEHICLEKILLS}"_jrs); this->NodVehicleKillsTag = config[configSection].get("NodVehicleKillsTag"_jrs, "{NODVEHICLEKILLS}"_jrs);
this->NodDefenceKillsTag = config.get(configSection, "NodDefenceKillsTag"_jrs, "{NODDEFENCEKILLS}"_jrs); this->NodDefenceKillsTag = config[configSection].get("NodDefenceKillsTag"_jrs, "{NODDEFENCEKILLS}"_jrs);
this->NodBuildingKillsTag = config.get(configSection, "NodBuildingKillsTag"_jrs, "{NODBUILDINGKILLS}"_jrs); this->NodBuildingKillsTag = config[configSection].get("NodBuildingKillsTag"_jrs, "{NODBUILDINGKILLS}"_jrs);
this->NodKDRTag = config.get(configSection, "NodKDRTag"_jrs, "{NODKDR}"_jrs); this->NodKDRTag = config[configSection].get("NodKDRTag"_jrs, "{NODKDR}"_jrs);
this->NodHeadshotsTag = config.get(configSection, "NodHeadshotsTag"_jrs, "{NODHEADSHOTS}"_jrs); this->NodHeadshotsTag = config[configSection].get("NodHeadshotsTag"_jrs, "{NODHEADSHOTS}"_jrs);
this->NodHeadshotKillRatioTag = config.get(configSection, "NodHeadshotKillRatioTag"_jrs, "{NODHSKR}"_jrs); this->NodHeadshotKillRatioTag = config[configSection].get("NodHeadshotKillRatioTag"_jrs, "{NODHSKR}"_jrs);
/** Other tags */ /** Other tags */
this->weaponTag = config.get(configSection, "WeaponTag"_jrs, "{WEAPON}"_jrs); this->weaponTag = config[configSection].get("WeaponTag"_jrs, "{WEAPON}"_jrs);
this->objectTag = config.get(configSection, "ObjectTag"_jrs, "{OBJECT}"_jrs); this->objectTag = config[configSection].get("ObjectTag"_jrs, "{OBJECT}"_jrs);
this->messageTag = config.get(configSection, "MessageTag"_jrs, "{MESSAGE}"_jrs); this->messageTag = config[configSection].get("MessageTag"_jrs, "{MESSAGE}"_jrs);
this->newNameTag = config.get(configSection, "NewNameTag"_jrs, "{NNAME}"_jrs); this->newNameTag = config[configSection].get("NewNameTag"_jrs, "{NNAME}"_jrs);
this->winScoreTag = config.get(configSection, "WinScoreTag"_jrs, "{WINSCORE}"_jrs); this->winScoreTag = config[configSection].get("WinScoreTag"_jrs, "{WINSCORE}"_jrs);
this->loseScoreTag = config.get(configSection, "LoseScoreTag"_jrs, "{LOSESCORE}"_jrs); this->loseScoreTag = config[configSection].get("LoseScoreTag"_jrs, "{LOSESCORE}"_jrs);
return true; return true;
} }

1
RenX.Core/RenX_TeamInfo.h

@ -25,7 +25,6 @@
*/ */
#include "Jupiter/String.h" #include "Jupiter/String.h"
#include "Jupiter/INIFile.h"
#include "RenX.h" #include "RenX.h"
/** DLL Linkage Nagging */ /** DLL Linkage Nagging */

11
RenX.ExcessiveHeadshots/ExcessiveHeadshots.cpp

@ -18,7 +18,6 @@
#include <ctime> #include <ctime>
#include "Jupiter/IRC_Client.h" #include "Jupiter/IRC_Client.h"
#include "Jupiter/INIFile.h"
#include "ExcessiveHeadshots.h" #include "ExcessiveHeadshots.h"
#include "RenX_Server.h" #include "RenX_Server.h"
#include "RenX_PlayerInfo.h" #include "RenX_PlayerInfo.h"
@ -28,11 +27,11 @@ using namespace Jupiter::literals;
bool RenX_ExcessiveHeadshotsPlugin::initialize() bool RenX_ExcessiveHeadshotsPlugin::initialize()
{ {
RenX_ExcessiveHeadshotsPlugin::ratio = this->config.getDouble(Jupiter::ReferenceString::empty, "HeadshotKillRatio"_jrs, 0.5); RenX_ExcessiveHeadshotsPlugin::ratio = this->config.get<double>("HeadshotKillRatio"_jrs, 0.5);
RenX_ExcessiveHeadshotsPlugin::minKills = this->config.getInt(Jupiter::ReferenceString::empty, "Kills"_jrs, 10); RenX_ExcessiveHeadshotsPlugin::minKills = this->config.get<unsigned int>("Kills"_jrs, 10);
RenX_ExcessiveHeadshotsPlugin::minKD = this->config.getDouble(Jupiter::ReferenceString::empty, "KillDeathRatio"_jrs, 5.0); RenX_ExcessiveHeadshotsPlugin::minKD = this->config.get<double>("KillDeathRatio"_jrs, 5.0);
RenX_ExcessiveHeadshotsPlugin::minKPS = this->config.getDouble(Jupiter::ReferenceString::empty, "KillsPerSecond"_jrs, 0.5); RenX_ExcessiveHeadshotsPlugin::minKPS = this->config.get<double>("KillsPerSecond"_jrs, 0.5);
RenX_ExcessiveHeadshotsPlugin::minFlags = this->config.getInt(Jupiter::ReferenceString::empty, "Flags"_jrs, 4); RenX_ExcessiveHeadshotsPlugin::minFlags = this->config.get<unsigned int>("Flags"_jrs, 4);
return true; return true;
} }

13
RenX.ExtraLogging/RenX_ExtraLogging.cpp

@ -17,11 +17,12 @@
*/ */
#include "Jupiter/IRC_Client.h" #include "Jupiter/IRC_Client.h"
#include "Jupiter/INIFile.h"
#include "RenX_ExtraLogging.h" #include "RenX_ExtraLogging.h"
#include "RenX_Server.h" #include "RenX_Server.h"
#include "RenX_Tags.h" #include "RenX_Tags.h"
using namespace Jupiter::literals;
RenX_ExtraLoggingPlugin::RenX_ExtraLoggingPlugin() RenX_ExtraLoggingPlugin::RenX_ExtraLoggingPlugin()
{ {
RenX_ExtraLoggingPlugin::day = localtime(std::addressof<const time_t>(time(nullptr)))->tm_yday; RenX_ExtraLoggingPlugin::day = localtime(std::addressof<const time_t>(time(nullptr)))->tm_yday;
@ -45,11 +46,11 @@ int RenX_ExtraLoggingPlugin::OnRehash()
bool RenX_ExtraLoggingPlugin::initialize() 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::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(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("ConsolePrefix"), RenX_ExtraLoggingPlugin::filePrefix); RenX_ExtraLoggingPlugin::consolePrefix = this->config.get("ConsolePrefix"_jrs, 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::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.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("PrintToConsole"), true); RenX_ExtraLoggingPlugin::printToConsole = this->config.get<bool>("PrintToConsole"_jrs, true);
const Jupiter::CStringS logFile = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("LogFile")); const Jupiter::CStringS logFile = this->config.get("LogFile"_jrs);
RenX::sanitizeTags(RenX_ExtraLoggingPlugin::filePrefix); RenX::sanitizeTags(RenX_ExtraLoggingPlugin::filePrefix);
RenX::sanitizeTags(RenX_ExtraLoggingPlugin::consolePrefix); RenX::sanitizeTags(RenX_ExtraLoggingPlugin::consolePrefix);

11
RenX.Greetings/RenX_Greetings.cpp

@ -17,12 +17,13 @@
*/ */
#include "Jupiter/IRC_Client.h" #include "Jupiter/IRC_Client.h"
#include "Jupiter/INIFile.h"
#include "RenX_Greetings.h" #include "RenX_Greetings.h"
#include "RenX_PlayerInfo.h" #include "RenX_PlayerInfo.h"
#include "RenX_Server.h" #include "RenX_Server.h"
#include "RenX_Tags.h" #include "RenX_Tags.h"
using namespace Jupiter::literals;
void RenX_GreetingsPlugin::RenX_OnJoin(RenX::Server *server, const RenX::PlayerInfo *player) void RenX_GreetingsPlugin::RenX_OnJoin(RenX::Server *server, const RenX::PlayerInfo *player)
{ {
auto sendMessage = [&](const Jupiter::ReadableString &m) auto sendMessage = [&](const Jupiter::ReadableString &m)
@ -70,11 +71,11 @@ int RenX_GreetingsPlugin::OnRehash()
bool RenX_GreetingsPlugin::initialize() bool RenX_GreetingsPlugin::initialize()
{ {
RenX_GreetingsPlugin::sendPrivate = this->config.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("SendPrivate"), true); RenX_GreetingsPlugin::sendPrivate = this->config.get<bool>("SendPrivate"_jrs, true);
RenX_GreetingsPlugin::sendMode = this->config.getInt(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("SendMode"), 0); RenX_GreetingsPlugin::sendMode = this->config.get<unsigned int>("SendMode"_jrs, 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::greetingsFile.load(this->config.get("GreetingsFile"_jrs, "RenX.Greetings.txt"_jrs));
if (RenX_GreetingsPlugin::greetingsFile.getLineCount() == 0) 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; RenX_GreetingsPlugin::lastLine = RenX_GreetingsPlugin::greetingsFile.getLineCount() - 1;
return true; return true;

25
RenX.IRCJoin/RenX_IRCJoin.cpp

@ -17,25 +17,26 @@
*/ */
#include "Jupiter/IRC_Client.h" #include "Jupiter/IRC_Client.h"
#include "Jupiter/INIFile.h"
#include "Jupiter/String.h" #include "Jupiter/String.h"
#include "RenX_Core.h" #include "RenX_Core.h"
#include "RenX_Server.h" #include "RenX_Server.h"
#include "RenX_IRCJoin.h" #include "RenX_IRCJoin.h"
using namespace Jupiter::literals;
bool RenX_IRCJoinPlugin::initialize() bool RenX_IRCJoinPlugin::initialize()
{ {
RenX_IRCJoinPlugin::publicOnly = this->config.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("PublicOnly"), true); RenX_IRCJoinPlugin::publicOnly = this->config.get<bool>("PublicOnly"_jrs, true);
RenX_IRCJoinPlugin::joinMsgAlways = this->config.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Join.MsgAlways"), false); RenX_IRCJoinPlugin::joinMsgAlways = this->config.get<bool>("Join.MsgAlways"_jrs, false);
RenX_IRCJoinPlugin::partMsgAlways = this->config.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Part.MsgAlways"), false); RenX_IRCJoinPlugin::partMsgAlways = this->config.get<bool>("Part.MsgAlways"_jrs, false);
RenX_IRCJoinPlugin::minAccessPartMessage = this->config.getInt(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Part.MinAccess"), 0); RenX_IRCJoinPlugin::minAccessPartMessage = this->config.get<int>("Part.MinAccess"_jrs, 0);
RenX_IRCJoinPlugin::maxAccessPartMessage = this->config.getInt(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Part.MaxAccess"), -1); RenX_IRCJoinPlugin::maxAccessPartMessage = this->config.get<int>("Part.MaxAccess"_jrs, -1);
RenX_IRCJoinPlugin::nameTag = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("NameTag"), STRING_LITERAL_AS_REFERENCE("{NAME}")); RenX_IRCJoinPlugin::nameTag = this->config.get("NameTag"_jrs, "{NAME}"_jrs);
RenX_IRCJoinPlugin::chanTag = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("ChannelTag"), STRING_LITERAL_AS_REFERENCE("{CHAN}")); RenX_IRCJoinPlugin::chanTag = this->config.get("ChannelTag"_jrs, "{CHAN}"_jrs);
RenX_IRCJoinPlugin::partReasonTag = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("PartReasonTag"), STRING_LITERAL_AS_REFERENCE("{REASON}")); RenX_IRCJoinPlugin::partReasonTag = this->config.get("PartReasonTag"_jrs, "{REASON}"_jrs);
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::joinFmt = this->config.get("Join.Format"_jrs, "{NAME} has joined {CHAN}!"_jrs);
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::partFmt = this->config.get("Part.Format"_jrs, "{NAME} has left {CHAN} ({REASON})!"_jrs);
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::partFmtNoReason = this->config.get("Part.FormatNoReason"_jrs, "{NAME} has left {CHAN}!"_jrs);
return true; return true;
} }

9
RenX.Ladder.All-Time/RenX_Ladder_All_Time.cpp

@ -16,7 +16,6 @@
* Written by Jessica James <jessica.aj@outlook.com> * Written by Jessica James <jessica.aj@outlook.com>
*/ */
#include "Jupiter/INIFile.h"
#include "Jupiter/IRC_Client.h" #include "Jupiter/IRC_Client.h"
#include "RenX_Ladder_All_Time.h" #include "RenX_Ladder_All_Time.h"
@ -25,12 +24,12 @@ using namespace Jupiter::literals;
bool RenX_Ladder_All_TimePlugin::initialize() bool RenX_Ladder_All_TimePlugin::initialize()
{ {
// Load database // Load database
this->database.process_file(this->config.get(Jupiter::ReferenceString::empty, "LadderDatabase"_jrs, "Ladder.db"_jrs)); this->database.process_file(this->config.get("LadderDatabase"_jrs, "Ladder.db"_jrs));
this->database.setName(this->config.get(Jupiter::ReferenceString::empty, "DatabaseName"_jrs, "All-Time"_jrs)); this->database.setName(this->config.get("DatabaseName"_jrs, "All-Time"_jrs));
this->database.setOutputTimes(this->config.getBool(Jupiter::ReferenceString::empty, "OutputTimes"_jrs, true)); this->database.setOutputTimes(this->config.get<bool>("OutputTimes"_jrs, true));
// Force database to default, if desired // Force database to default, if desired
if (this->config.getBool(Jupiter::ReferenceString::empty, "ForceDefault"_jrs, true)) if (this->config.get<bool>("ForceDefault"_jrs, true))
RenX::default_ladder_database = &this->database; RenX::default_ladder_database = &this->database;
return true; return true;

9
RenX.Ladder.Daily/RenX_Ladder_Daily.cpp

@ -17,7 +17,6 @@
*/ */
#include <ctime> #include <ctime>
#include "Jupiter/INIFile.h"
#include "Jupiter/IRC_Client.h" #include "Jupiter/IRC_Client.h"
#include "RenX_Ladder_Daily.h" #include "RenX_Ladder_Daily.h"
@ -26,15 +25,15 @@ using namespace Jupiter::literals;
bool RenX_Ladder_Daily_TimePlugin::initialize() bool RenX_Ladder_Daily_TimePlugin::initialize()
{ {
// Load database // Load database
this->database.process_file(this->config.get(Jupiter::ReferenceString::empty, "LadderDatabase"_jrs, "Ladder.Daily.db"_jrs)); this->database.process_file(this->config.get("LadderDatabase"_jrs, "Ladder.Daily.db"_jrs));
this->database.setName(this->config.get(Jupiter::ReferenceString::empty, "DatabaseName"_jrs, "Daily"_jrs)); this->database.setName(this->config.get("DatabaseName"_jrs, "Daily"_jrs));
this->database.setOutputTimes(this->config.getBool(Jupiter::ReferenceString::empty, "OutputTimes"_jrs, false)); this->database.setOutputTimes(this->config.get<bool>("OutputTimes"_jrs, false));
this->last_sorted_day = gmtime(std::addressof<const time_t>(time(0)))->tm_wday; this->last_sorted_day = gmtime(std::addressof<const time_t>(time(0)))->tm_wday;
this->database.OnPreUpdateLadder = OnPreUpdateLadder; this->database.OnPreUpdateLadder = OnPreUpdateLadder;
// Force database to default, if desired // Force database to default, if desired
if (this->config.getBool(Jupiter::ReferenceString::empty, "ForceDefault"_jrs, false)) if (this->config.get<bool>("ForceDefault"_jrs, false))
RenX::default_ladder_database = &this->database; RenX::default_ladder_database = &this->database;
return true; return true;

9
RenX.Ladder.Monthly/RenX_Ladder_Monthly.cpp

@ -17,7 +17,6 @@
*/ */
#include <ctime> #include <ctime>
#include "Jupiter/INIFile.h"
#include "Jupiter/IRC_Client.h" #include "Jupiter/IRC_Client.h"
#include "RenX_Ladder_Monthly.h" #include "RenX_Ladder_Monthly.h"
@ -26,15 +25,15 @@ using namespace Jupiter::literals;
bool RenX_Ladder_Monthly_TimePlugin::initialize() bool RenX_Ladder_Monthly_TimePlugin::initialize()
{ {
// Load database // Load database
this->database.process_file(this->config.get(Jupiter::ReferenceString::empty, "LadderDatabase"_jrs, "Ladder.Monthly.db"_jrs)); this->database.process_file(this->config.get("LadderDatabase"_jrs, "Ladder.Monthly.db"_jrs));
this->database.setName(this->config.get(Jupiter::ReferenceString::empty, "DatabaseName"_jrs, "Monthly"_jrs)); this->database.setName(this->config.get("DatabaseName"_jrs, "Monthly"_jrs));
this->database.setOutputTimes(this->config.getBool(Jupiter::ReferenceString::empty, "OutputTimes"_jrs, false)); this->database.setOutputTimes(this->config.get<bool>("OutputTimes"_jrs, false));
this->last_sorted_month = gmtime(std::addressof<const time_t>(time(0)))->tm_mon; this->last_sorted_month = gmtime(std::addressof<const time_t>(time(0)))->tm_mon;
this->database.OnPreUpdateLadder = OnPreUpdateLadder; this->database.OnPreUpdateLadder = OnPreUpdateLadder;
// Force database to default, if desired // Force database to default, if desired
if (this->config.getBool(Jupiter::ReferenceString::empty, "ForceDefault"_jrs, false)) if (this->config.get<bool>("ForceDefault"_jrs, false))
RenX::default_ladder_database = &this->database; RenX::default_ladder_database = &this->database;
return true; return true;

75
RenX.Ladder.Web/RenX_Ladder_Web.cpp

@ -17,7 +17,6 @@
*/ */
#include "Jupiter/IRC_Client.h" #include "Jupiter/IRC_Client.h"
#include "Jupiter/INIFile.h"
#include "Jupiter/HTTP.h" #include "Jupiter/HTTP.h"
#include "Jupiter/HTTP_QueryString.h" #include "Jupiter/HTTP_QueryString.h"
#include "HTTPServer.h" #include "HTTPServer.h"
@ -28,11 +27,11 @@ using namespace Jupiter::literals;
bool RenX_Ladder_WebPlugin::initialize() bool RenX_Ladder_WebPlugin::initialize()
{ {
RenX_Ladder_WebPlugin::ladder_page_name = this->config.get(Jupiter::ReferenceString::empty, "LadderPageName"_jrs, ""_jrs); RenX_Ladder_WebPlugin::ladder_page_name = this->config.get("LadderPageName"_jrs, ""_jrs);
RenX_Ladder_WebPlugin::search_page_name = this->config.get(Jupiter::ReferenceString::empty, "SearchPageName"_jrs, "search"_jrs); RenX_Ladder_WebPlugin::search_page_name = this->config.get("SearchPageName"_jrs, "search"_jrs);
RenX_Ladder_WebPlugin::profile_page_name = this->config.get(Jupiter::ReferenceString::empty, "ProfilePageName"_jrs, "profile"_jrs); RenX_Ladder_WebPlugin::profile_page_name = this->config.get("ProfilePageName"_jrs, "profile"_jrs);
RenX_Ladder_WebPlugin::web_hostname = this->config.get(Jupiter::ReferenceString::empty, "Hostname"_jrs, ""_jrs); RenX_Ladder_WebPlugin::web_hostname = this->config.get("Hostname"_jrs, ""_jrs);
RenX_Ladder_WebPlugin::web_path = this->config.get(Jupiter::ReferenceString::empty, "Path"_jrs, "/"_jrs); RenX_Ladder_WebPlugin::web_path = this->config.get("Path"_jrs, "/"_jrs);
this->init(); this->init();
@ -73,17 +72,17 @@ void RenX_Ladder_WebPlugin::init()
FILE *file; FILE *file;
int chr; 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_header_filename = this->config.get("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_footer_filename = this->config.get("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_profile_filename = this->config.get("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_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(Jupiter::ReferenceString::empty, "LadderTableFooterFilename"_jrs, "RenX.Ladder.Web.Ladder.Table.Footer.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.getInt(Jupiter::ReferenceString::empty, "EntriesPerPage"_jrs, 50); RenX_Ladder_WebPlugin::entries_per_page = this->config.get<size_t>("EntriesPerPage"_jrs, 50);
RenX_Ladder_WebPlugin::min_search_name_length = this->config.getInt(Jupiter::ReferenceString::empty, "MinSearchNameLength"_jrs, 3); RenX_Ladder_WebPlugin::min_search_name_length = this->config.get<size_t>("MinSearchNameLength"_jrs, 3);
RenX_Ladder_WebPlugin::entry_table_row = this->config.get(Jupiter::ReferenceString::empty, "EntryTableRow"_jrs, R"html(<tr><td class="data-col-a">{RANK}</td><td class="data-col-b"><a href="profile?id={STEAM}&database={OBJECT}">{NAME}</a></td><td class="data-col-a">{SCORE}</td><td class="data-col-b">{SPM}</td><td class="data-col-a">{GAMES}</td><td class="data-col-b">{WINS}</td><td class="data-col-a">{LOSSES}</td><td class="data-col-b">{WLR}</td><td class="data-col-a">{KILLS}</td><td class="data-col-b">{DEATHS}</td><td class="data-col-a">{KDR}</td></tr>)html"_jrs); RenX_Ladder_WebPlugin::entry_table_row = this->config.get("EntryTableRow"_jrs, R"html(<tr><td class="data-col-a">{RANK}</td><td class="data-col-b"><a href="profile?id={STEAM}&database={OBJECT}">{NAME}</a></td><td class="data-col-a">{SCORE}</td><td class="data-col-b">{SPM}</td><td class="data-col-a">{GAMES}</td><td class="data-col-b">{WINS}</td><td class="data-col-a">{LOSSES}</td><td class="data-col-b">{WLR}</td><td class="data-col-a">{KILLS}</td><td class="data-col-b">{DEATHS}</td><td class="data-col-a">{KDR}</td></tr>)html"_jrs);
RenX_Ladder_WebPlugin::entry_profile_previous = this->config.get(Jupiter::ReferenceString::empty, "EntryProfilePrevious"_jrs, R"html(<form class="profile-previous"><input type="hidden" name="database" value="{OBJECT}"/><input type="hidden" name="id" value="{WEAPON}"/><input class="profile-previous-submit" type="submit" value="&#x21A9 Previous" /></form>)html"_jrs); RenX_Ladder_WebPlugin::entry_profile_previous = this->config.get("EntryProfilePrevious"_jrs, R"html(<form class="profile-previous"><input type="hidden" name="database" value="{OBJECT}"/><input type="hidden" name="id" value="{WEAPON}"/><input class="profile-previous-submit" type="submit" value="&#x21A9 Previous" /></form>)html"_jrs);
RenX_Ladder_WebPlugin::entry_profile_next = this->config.get(Jupiter::ReferenceString::empty, "EntryProfileNext"_jrs, R"html(<form class="profile-next"><input type="hidden" name="database" value="{OBJECT}"/><input type="hidden" name="id" value="{VSTEAM}"/><input class="profile-next-submit" type="submit" value="Next &#x21AA" /></form>)html"_jrs); RenX_Ladder_WebPlugin::entry_profile_next = this->config.get("EntryProfileNext"_jrs, R"html(<form class="profile-next"><input type="hidden" name="database" value="{OBJECT}"/><input type="hidden" name="id" value="{VSTEAM}"/><input class="profile-next-submit" type="submit" value="Next &#x21AA" /></form>)html"_jrs);
RenX::sanitizeTags(RenX_Ladder_WebPlugin::entry_table_row); RenX::sanitizeTags(RenX_Ladder_WebPlugin::entry_table_row);
RenX::sanitizeTags(RenX_Ladder_WebPlugin::entry_profile_previous); RenX::sanitizeTags(RenX_Ladder_WebPlugin::entry_profile_previous);
@ -185,7 +184,7 @@ Jupiter::String generate_search(RenX::LadderDatabase *db)
} }
/** Database selector */ /** 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; RenX::LadderDatabase *db_ptr;
Jupiter::String result(256); Jupiter::String result(256);
@ -216,17 +215,13 @@ Jupiter::String generate_database_selector(RenX::LadderDatabase *db, const Jupit
} }
} }
Jupiter::INIFile::Section::KeyValuePair *pair; const Jupiter::ReadableString *value = query_params.get("id"_jrs);
for (size_t index = 0; index != query_params.size(); ++index) if (value != nullptr)
{
pair = query_params.getPair(index);
if (pair->getKey().equalsi("id"))
{ {
result += R"html(<input type="hidden" name="id" value=")html"_jrs; result += R"html(<input type="hidden" name="id" value=")html"_jrs;
result += pair->getValue(); result += *value;
result += R"html("/>)html"_jrs; result += R"html("/>)html"_jrs;
} }
}
result += R"database-select(</select><input type="submit" class="leaderboard-button" value="Go"/></form>)database-select"_jrs; result += R"database-select(</select><input type="submit" class="leaderboard-button" value="Go"/></form>)database-select"_jrs;
return result; return result;
@ -314,7 +309,7 @@ Jupiter::String RenX_Ladder_WebPlugin::generate_entry_table(RenX::LadderDatabase
return result; 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); 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 // include_header | include_footer | include_any_headers | include_any_footers
/** Search page */ /** 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); Jupiter::String *result = new Jupiter::String(2048);
@ -390,7 +385,7 @@ Jupiter::String *RenX_Ladder_WebPlugin::generate_search_page(RenX::LadderDatabas
} }
/** Profile page */ /** 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); Jupiter::String *result = new Jupiter::String(2048);
@ -457,7 +452,7 @@ Jupiter::String *RenX_Ladder_WebPlugin::generate_profile_page(RenX::LadderDataba
/** Content functions */ /** 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); Jupiter::String *result = new Jupiter::String(pluginInstance.header);
if (RenX::ladder_databases.size() != 0) 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) if (html_form_response.table.size() != 0)
{ {
format = static_cast<uint8_t>(html_form_response.table.getInt("format"_jrs, format)); format = html_form_response.table.getCast<uint8_t>("format"_jrs, format);
start_index = static_cast<size_t>(html_form_response.table.getInt("start"_jrs, start_index)); start_index = html_form_response.table.getCast<size_t>("start"_jrs, start_index);
count = static_cast<size_t>(html_form_response.table.getInt("count"_jrs, count)); count = html_form_response.table.getCast<size_t>("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()) if (db_name.isNotEmpty())
{ {
db = nullptr; db = nullptr;
@ -514,12 +509,12 @@ Jupiter::ReadableString *handle_search_page(const Jupiter::ReadableString &query
if (html_form_response.table.size() != 0) if (html_form_response.table.size() != 0)
{ {
format = static_cast<uint8_t>(html_form_response.table.getInt("format"_jrs, format)); format = html_form_response.table.getCast<uint8_t>("format"_jrs, format);
start_index = static_cast<size_t>(html_form_response.table.getInt("start"_jrs, start_index)); start_index = html_form_response.table.getCast<size_t>("start"_jrs, start_index);
count = static_cast<size_t>(html_form_response.table.getInt("count"_jrs, count)); count = html_form_response.table.getCast<size_t>("count"_jrs, count);
name = html_form_response.table.get("name"_jrs); 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()) if (db_name.isNotEmpty())
{ {
db = nullptr; db = nullptr;
@ -550,10 +545,10 @@ Jupiter::ReadableString *handle_profile_page(const Jupiter::ReadableString &quer
if (html_form_response.table.size() != 0) if (html_form_response.table.size() != 0)
{ {
format = static_cast<uint8_t>(html_form_response.table.getInt("format"_jrs, format)); format = html_form_response.table.getCast<uint8_t>("format"_jrs, format);
steam_id = html_form_response.table.getLongLong("id"_jrs); steam_id = html_form_response.table.getCast<uint64_t>("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()) if (db_name.isNotEmpty())
{ {
db = nullptr; db = nullptr;

7
RenX.Ladder.Web/RenX_Ladder_Web.h

@ -22,7 +22,6 @@
#include "Jupiter/Plugin.h" #include "Jupiter/Plugin.h"
#include "Jupiter/Reference_String.h" #include "Jupiter/Reference_String.h"
#include "Jupiter/CString.h" #include "Jupiter/CString.h"
#include "Jupiter/INIFile.h"
#include "RenX_Plugin.h" #include "RenX_Plugin.h"
class RenX_Ladder_WebPlugin : public RenX::Plugin class RenX_Ladder_WebPlugin : public RenX::Plugin
@ -40,9 +39,9 @@ public:
Jupiter::StringS header; Jupiter::StringS header;
Jupiter::StringS footer; 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_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::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::HashTable &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_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 getEntriesPerPage() const { return this->entries_per_page; }
inline size_t getMinSearchNameLength() const { return this->min_search_name_length; }; inline size_t getMinSearchNameLength() const { return this->min_search_name_length; };

11
RenX.Ladder.Weekly/RenX_Ladder_Weekly.cpp

@ -17,7 +17,6 @@
*/ */
#include <ctime> #include <ctime>
#include "Jupiter/INIFile.h"
#include "Jupiter/IRC_Client.h" #include "Jupiter/IRC_Client.h"
#include "RenX_Ladder_Weekly.h" #include "RenX_Ladder_Weekly.h"
@ -26,16 +25,16 @@ using namespace Jupiter::literals;
bool RenX_Ladder_Weekly_TimePlugin::initialize() bool RenX_Ladder_Weekly_TimePlugin::initialize()
{ {
// Load database // Load database
this->database.process_file(this->config.get(Jupiter::ReferenceString::empty, "LadderDatabase"_jrs, "Ladder.Weekly.db"_jrs)); this->database.process_file(this->config.get("LadderDatabase"_jrs, "Ladder.Weekly.db"_jrs));
this->database.setName(this->config.get(Jupiter::ReferenceString::empty, "DatabaseName"_jrs, "Weekly"_jrs)); this->database.setName(this->config.get("DatabaseName"_jrs, "Weekly"_jrs));
this->database.setOutputTimes(this->config.getBool(Jupiter::ReferenceString::empty, "OutputTimes"_jrs, false)); this->database.setOutputTimes(this->config.get<bool>("OutputTimes"_jrs, false));
this->last_sorted_day = gmtime(std::addressof<const time_t>(time(0)))->tm_wday; this->last_sorted_day = gmtime(std::addressof<const time_t>(time(0)))->tm_wday;
this->reset_day = this->config.getInt(Jupiter::ReferenceString::empty, "ResetDay"_jrs); this->reset_day = this->config.get<int>("ResetDay"_jrs);
this->database.OnPreUpdateLadder = OnPreUpdateLadder; this->database.OnPreUpdateLadder = OnPreUpdateLadder;
// Force database to default, if desired // Force database to default, if desired
if (this->config.getBool(Jupiter::ReferenceString::empty, "ForceDefault"_jrs, false)) if (this->config.get<bool>("ForceDefault"_jrs, false))
RenX::default_ladder_database = &this->database; RenX::default_ladder_database = &this->database;
return true; return true;

9
RenX.Ladder.Yearly/RenX_Ladder_Yearly.cpp

@ -17,7 +17,6 @@
*/ */
#include <ctime> #include <ctime>
#include "Jupiter/INIFile.h"
#include "Jupiter/IRC_Client.h" #include "Jupiter/IRC_Client.h"
#include "RenX_Ladder_Yearly.h" #include "RenX_Ladder_Yearly.h"
@ -26,15 +25,15 @@ using namespace Jupiter::literals;
bool RenX_Ladder_Yearly_TimePlugin::initialize() bool RenX_Ladder_Yearly_TimePlugin::initialize()
{ {
// Load database // Load database
this->database.process_file(this->config.get(Jupiter::ReferenceString::empty, "LadderDatabase"_jrs, "Ladder.Yearly.db"_jrs)); this->database.process_file(this->config.get("LadderDatabase"_jrs, "Ladder.Yearly.db"_jrs));
this->database.setName(this->config.get(Jupiter::ReferenceString::empty, "DatabaseName"_jrs, "Yearly"_jrs)); this->database.setName(this->config.get("DatabaseName"_jrs, "Yearly"_jrs));
this->database.setOutputTimes(this->config.getBool(Jupiter::ReferenceString::empty, "OutputTimes"_jrs, false)); this->database.setOutputTimes(this->config.get<bool>("OutputTimes"_jrs, false));
this->last_sorted_year = gmtime(std::addressof<const time_t>(time(0)))->tm_year; this->last_sorted_year = gmtime(std::addressof<const time_t>(time(0)))->tm_year;
this->database.OnPreUpdateLadder = OnPreUpdateLadder; this->database.OnPreUpdateLadder = OnPreUpdateLadder;
// Force database to default, if desired // Force database to default, if desired
if (this->config.getBool(Jupiter::ReferenceString::empty, "ForceDefault"_jrs, false)) if (this->config.get<bool>("ForceDefault"_jrs, false))
RenX::default_ladder_database = &this->database; RenX::default_ladder_database = &this->database;
return true; return true;

15
RenX.Ladder/RenX_Ladder.cpp

@ -17,7 +17,6 @@
*/ */
#include <cinttypes> #include <cinttypes>
#include "Jupiter/INIFile.h"
#include "Console_Command.h" #include "Console_Command.h"
#include "RenX_Ladder.h" #include "RenX_Ladder.h"
#include "RenX_Server.h" #include "RenX_Server.h"
@ -28,8 +27,8 @@ using namespace Jupiter::literals;
bool RenX_LadderPlugin::initialize() bool RenX_LadderPlugin::initialize()
{ {
RenX_LadderPlugin::only_pure = this->config.getBool(Jupiter::ReferenceString::empty, "OnlyPure"_jrs, false); RenX_LadderPlugin::only_pure = this->config.get<bool>("OnlyPure"_jrs, false);
int mlcpno = this->config.getInt(Jupiter::ReferenceString::empty, "MaxLadderCommandPartNameOutput"_jrs, 5); int mlcpno = this->config.get<int>("MaxLadderCommandPartNameOutput"_jrs, 5);
if (mlcpno < 0) if (mlcpno < 0)
RenX_LadderPlugin::max_ladder_command_part_name_output = 0; RenX_LadderPlugin::max_ladder_command_part_name_output = 0;
else 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()) if (server->isRanked() && server->isReliable() && server->players.size() != server->getBotCount())
{ {
char chr = static_cast<char>(team); char chr = static_cast<char>(team);
server->varData.set(this->name, "t"_jrs, Jupiter::ReferenceString(&chr, 1)); server->varData[this->name].set("t"_jrs, Jupiter::ReferenceString(&chr, 1));
server->varData.set(this->name, "w"_jrs, "1"_jrs); server->varData[this->name].set("w"_jrs, "1"_jrs);
server->updateClientList(); 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->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); server->varData[this->name].set("w"_jrs, "0"_jrs);
RenX::TeamType team = static_cast<RenX::TeamType>(server->varData.get(this->name, "t"_jrs, "\0"_jrs).get(0)); RenX::TeamType team = static_cast<RenX::TeamType>(server->varData[this->name].get("t"_jrs, "\0"_jrs).get(0));
for (size_t index = 0; index != RenX::ladder_databases.size(); ++index) for (size_t index = 0; index != RenX::ladder_databases.size(); ++index)
RenX::ladder_databases.get(index)->updateLadder(server, team); RenX::ladder_databases.get(index)->updateLadder(server, team);
} }

17
RenX.Listen/RenX_Listen.cpp

@ -17,12 +17,13 @@
*/ */
#include "Jupiter/IRC_Client.h" #include "Jupiter/IRC_Client.h"
#include "Jupiter/INIFile.h"
#include "Jupiter/CString.h" #include "Jupiter/CString.h"
#include "RenX_Listen.h" #include "RenX_Listen.h"
#include "RenX_Core.h" #include "RenX_Core.h"
#include "RenX_Server.h" #include "RenX_Server.h"
using namespace Jupiter::literals;
RenX_ListenPlugin::~RenX_ListenPlugin() RenX_ListenPlugin::~RenX_ListenPlugin()
{ {
RenX_ListenPlugin::socket.close(); RenX_ListenPlugin::socket.close();
@ -30,9 +31,10 @@ RenX_ListenPlugin::~RenX_ListenPlugin()
bool RenX_ListenPlugin::initialize() bool RenX_ListenPlugin::initialize()
{ {
uint16_t port = this->config.getInt(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Port"), 21337); uint16_t port = this->config.get<uint16_t>("Port"_jrs, 21337);
const Jupiter::ReadableString &address = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Address"), STRING_LITERAL_AS_REFERENCE("0.0.0.0")); const Jupiter::ReadableString &address = this->config.get("Address"_jrs, "0.0.0.0"_jrs);
RenX_ListenPlugin::serverSection = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("ServerSection"), this->getName()); 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); 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(); RenX::Plugin::OnRehash();
uint16_t port = this->config.getInt(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Port"), 21337); uint16_t port = this->config.get<uint16_t>("Port"_jrs, 21337);
const Jupiter::ReadableString &address = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Address"), STRING_LITERAL_AS_REFERENCE("0.0.0.0")); const Jupiter::ReadableString &address = this->config.get("Address"_jrs, "0.0.0.0"_jrs);
RenX_ListenPlugin::serverSection = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("ServerSection"), this->getName()); RenX_ListenPlugin::serverSection = this->config.get("ServerSection"_jrs, this->getName());
if (port != RenX_ListenPlugin::socket.getRemotePort() || address.equals(RenX_ListenPlugin::socket.getRemoteHostname()) == false) if (port != RenX_ListenPlugin::socket.getRemotePort() || address.equals(RenX_ListenPlugin::socket.getRemoteHostname()) == false)
{ {
puts("Notice: The Renegade-X listening socket has been changed!"); puts("Notice: The Renegade-X listening socket has been changed!");

373
RenX.Logging/RenX_Logging.cpp

@ -16,7 +16,6 @@
* Written by Jessica James <jessica.aj@outlook.com> * Written by Jessica James <jessica.aj@outlook.com>
*/ */
#include "Jupiter/INIFile.h"
#include "IRC_Bot.h" #include "IRC_Bot.h"
#include "RenX_Logging.h" #include "RenX_Logging.h"
#include "RenX_Core.h" #include "RenX_Core.h"
@ -29,404 +28,404 @@ using namespace Jupiter::literals;
bool RenX_LoggingPlugin::initialize() bool RenX_LoggingPlugin::initialize()
{ {
RenX_LoggingPlugin::muteOwnExecute = this->config.getBool(Jupiter::ReferenceString::empty, "MuteOwnExecute"_jrs, true); RenX_LoggingPlugin::muteOwnExecute = this->config.get<bool>("MuteOwnExecute"_jrs, true);
RenX_LoggingPlugin::playerRDNSPublic = this->config.getBool(Jupiter::ReferenceString::empty, "PlayerRDNSPublic"_jrs, false); RenX_LoggingPlugin::playerRDNSPublic = this->config.get<bool>("PlayerRDNSPublic"_jrs, false);
RenX_LoggingPlugin::playerIdentifyPublic = this->config.getBool(Jupiter::ReferenceString::empty, "PlayerIdentifyPublic"_jrs, false); RenX_LoggingPlugin::playerIdentifyPublic = this->config.get<bool>("PlayerIdentifyPublic"_jrs, false);
RenX_LoggingPlugin::joinPublic = this->config.getBool(Jupiter::ReferenceString::empty, "JoinPublic"_jrs, true); RenX_LoggingPlugin::joinPublic = this->config.get<bool>("JoinPublic"_jrs, true);
RenX_LoggingPlugin::partPublic = this->config.getBool(Jupiter::ReferenceString::empty, "PartPublic"_jrs, true); RenX_LoggingPlugin::partPublic = this->config.get<bool>("PartPublic"_jrs, true);
RenX_LoggingPlugin::kickPublic = this->config.getBool(Jupiter::ReferenceString::empty, "KickPublic"_jrs, true); RenX_LoggingPlugin::kickPublic = this->config.get<bool>("KickPublic"_jrs, true);
RenX_LoggingPlugin::nameChangePublic = this->config.getBool(Jupiter::ReferenceString::empty, "NameChangePublic"_jrs, true); RenX_LoggingPlugin::nameChangePublic = this->config.get<bool>("NameChangePublic"_jrs, true);
RenX_LoggingPlugin::teamChangePublic = this->config.getBool(Jupiter::ReferenceString::empty, "TeamChangePublic"_jrs, true); RenX_LoggingPlugin::teamChangePublic = this->config.get<bool>("TeamChangePublic"_jrs, true);
RenX_LoggingPlugin::speedHackPublic = this->config.getBool(Jupiter::ReferenceString::empty, "SpeedHackPublic"_jrs, false); RenX_LoggingPlugin::speedHackPublic = this->config.get<bool>("SpeedHackPublic"_jrs, false);
RenX_LoggingPlugin::playerPublic = this->config.getBool(Jupiter::ReferenceString::empty, "PlayerPublic"_jrs, false); RenX_LoggingPlugin::playerPublic = this->config.get<bool>("PlayerPublic"_jrs, false);
RenX_LoggingPlugin::chatPublic = this->config.getBool(Jupiter::ReferenceString::empty, "ChatPublic"_jrs, true); RenX_LoggingPlugin::chatPublic = this->config.get<bool>("ChatPublic"_jrs, true);
RenX_LoggingPlugin::teamChatPublic = this->config.getBool(Jupiter::ReferenceString::empty, "TeamChatPublic"_jrs, false); RenX_LoggingPlugin::teamChatPublic = this->config.get<bool>("TeamChatPublic"_jrs, false);
RenX_LoggingPlugin::radioChatPublic = this->config.getBool(Jupiter::ReferenceString::empty, "RadioChatPublic"_jrs, false); RenX_LoggingPlugin::radioChatPublic = this->config.get<bool>("RadioChatPublic"_jrs, false);
RenX_LoggingPlugin::hostChatPublic = this->config.getBool(Jupiter::ReferenceString::empty, "HostChatPublic"_jrs, true); RenX_LoggingPlugin::hostChatPublic = this->config.get<bool>("HostChatPublic"_jrs, true);
RenX_LoggingPlugin::hostPagePublic = this->config.getBool(Jupiter::ReferenceString::empty, "HostPagePublic"_jrs, false); RenX_LoggingPlugin::hostPagePublic = this->config.get<bool>("HostPagePublic"_jrs, false);
RenX_LoggingPlugin::otherChatPublic = this->config.getBool(Jupiter::ReferenceString::empty, "OtherChatPublic"_jrs, false); RenX_LoggingPlugin::otherChatPublic = this->config.get<bool>("OtherChatPublic"_jrs, false);
RenX_LoggingPlugin::deployPublic = this->config.getBool(Jupiter::ReferenceString::empty, "DeployPublic"_jrs, true); RenX_LoggingPlugin::deployPublic = this->config.get<bool>("DeployPublic"_jrs, true);
RenX_LoggingPlugin::mineDeployPublic = this->config.getBool(Jupiter::ReferenceString::empty, "MineDeployPublic"_jrs, false); RenX_LoggingPlugin::mineDeployPublic = this->config.get<bool>("MineDeployPublic"_jrs, false);
RenX_LoggingPlugin::overMinePublic = this->config.getBool(Jupiter::ReferenceString::empty, "OverMinePublic"_jrs, false); RenX_LoggingPlugin::overMinePublic = this->config.get<bool>("OverMinePublic"_jrs, false);
RenX_LoggingPlugin::disarmPublic = this->config.getBool(Jupiter::ReferenceString::empty, "DisarmPublic"_jrs, true); RenX_LoggingPlugin::disarmPublic = this->config.get<bool>("DisarmPublic"_jrs, true);
RenX_LoggingPlugin::mineDisarmPublic = this->config.getBool(Jupiter::ReferenceString::empty, "MineDisarmPublic"_jrs, false); RenX_LoggingPlugin::mineDisarmPublic = this->config.get<bool>("MineDisarmPublic"_jrs, false);
RenX_LoggingPlugin::explodePublic = this->config.getBool(Jupiter::ReferenceString::empty, "ExplodePublic"_jrs, false); RenX_LoggingPlugin::explodePublic = this->config.get<bool>("ExplodePublic"_jrs, false);
RenX_LoggingPlugin::suicidePublic = this->config.getBool(Jupiter::ReferenceString::empty, "SuicidePublic"_jrs, true); RenX_LoggingPlugin::suicidePublic = this->config.get<bool>("SuicidePublic"_jrs, true);
RenX_LoggingPlugin::killPublic = this->config.getBool(Jupiter::ReferenceString::empty, "KillPublic"_jrs, true); RenX_LoggingPlugin::killPublic = this->config.get<bool>("KillPublic"_jrs, true);
RenX_LoggingPlugin::diePublic = this->config.getBool(Jupiter::ReferenceString::empty, "DiePublic"_jrs, true); RenX_LoggingPlugin::diePublic = this->config.get<bool>("DiePublic"_jrs, true);
RenX_LoggingPlugin::destroyPublic = this->config.getBool(Jupiter::ReferenceString::empty, "DestroyPublic"_jrs, true); RenX_LoggingPlugin::destroyPublic = this->config.get<bool>("DestroyPublic"_jrs, true);
RenX_LoggingPlugin::capturePublic = this->config.getBool(Jupiter::ReferenceString::empty, "CapturePublic"_jrs, true); RenX_LoggingPlugin::capturePublic = this->config.get<bool>("CapturePublic"_jrs, true);
RenX_LoggingPlugin::neutralizePublic = this->config.getBool(Jupiter::ReferenceString::empty, "NeutralizePublic"_jrs, true); RenX_LoggingPlugin::neutralizePublic = this->config.get<bool>("NeutralizePublic"_jrs, true);
RenX_LoggingPlugin::characterPurchasePublic = this->config.getBool(Jupiter::ReferenceString::empty, "CharacterPurchasePublic"_jrs, false); RenX_LoggingPlugin::characterPurchasePublic = this->config.get<bool>("CharacterPurchasePublic"_jrs, false);
RenX_LoggingPlugin::itemPurchasePublic = this->config.getBool(Jupiter::ReferenceString::empty, "ItemPurchasePublic"_jrs, false); RenX_LoggingPlugin::itemPurchasePublic = this->config.get<bool>("ItemPurchasePublic"_jrs, false);
RenX_LoggingPlugin::weaponPurchasePublic = this->config.getBool(Jupiter::ReferenceString::empty, "WeaponPurchasePublic"_jrs, false); RenX_LoggingPlugin::weaponPurchasePublic = this->config.get<bool>("WeaponPurchasePublic"_jrs, false);
RenX_LoggingPlugin::refillPurchasePublic = this->config.getBool(Jupiter::ReferenceString::empty, "RefillPurchasePublic"_jrs, false); RenX_LoggingPlugin::refillPurchasePublic = this->config.get<bool>("RefillPurchasePublic"_jrs, false);
RenX_LoggingPlugin::vehiclePurchasePublic = this->config.getBool(Jupiter::ReferenceString::empty, "VehiclePurchasePublic"_jrs, false); RenX_LoggingPlugin::vehiclePurchasePublic = this->config.get<bool>("VehiclePurchasePublic"_jrs, false);
RenX_LoggingPlugin::vehicleSpawnPublic = this->config.getBool(Jupiter::ReferenceString::empty, "VehicleSpawnPublic"_jrs, true); RenX_LoggingPlugin::vehicleSpawnPublic = this->config.get<bool>("VehicleSpawnPublic"_jrs, true);
RenX_LoggingPlugin::spawnPublic = this->config.getBool(Jupiter::ReferenceString::empty, "SpawnPublic"_jrs, true); RenX_LoggingPlugin::spawnPublic = this->config.get<bool>("SpawnPublic"_jrs, true);
RenX_LoggingPlugin::botJoinPublic = this->config.getBool(Jupiter::ReferenceString::empty, "BotJoinPublic"_jrs, true); RenX_LoggingPlugin::botJoinPublic = this->config.get<bool>("BotJoinPublic"_jrs, true);
RenX_LoggingPlugin::vehicleCratePublic = this->config.getBool(Jupiter::ReferenceString::empty, "VehicleCratePublic"_jrs, false); RenX_LoggingPlugin::vehicleCratePublic = this->config.get<bool>("VehicleCratePublic"_jrs, false);
RenX_LoggingPlugin::TSVehicleCratePublic = this->config.getBool(Jupiter::ReferenceString::empty, "TSVehicleCratePublic"_jrs, RenX_LoggingPlugin::vehicleCratePublic); RenX_LoggingPlugin::TSVehicleCratePublic = this->config.get<bool>("TSVehicleCratePublic"_jrs, RenX_LoggingPlugin::vehicleCratePublic);
RenX_LoggingPlugin::RAVehicleCratePublic = this->config.getBool(Jupiter::ReferenceString::empty, "RAVehicleCratePublic"_jrs, RenX_LoggingPlugin::vehicleCratePublic); RenX_LoggingPlugin::RAVehicleCratePublic = this->config.get<bool>("RAVehicleCratePublic"_jrs, RenX_LoggingPlugin::vehicleCratePublic);
RenX_LoggingPlugin::deathCratePublic = this->config.getBool(Jupiter::ReferenceString::empty, "DeathCratePublic"_jrs, true); RenX_LoggingPlugin::deathCratePublic = this->config.get<bool>("DeathCratePublic"_jrs, true);
RenX_LoggingPlugin::moneyCratePublic = this->config.getBool(Jupiter::ReferenceString::empty, "MoneyCratePublic"_jrs, false); RenX_LoggingPlugin::moneyCratePublic = this->config.get<bool>("MoneyCratePublic"_jrs, false);
RenX_LoggingPlugin::characterCratePublic = this->config.getBool(Jupiter::ReferenceString::empty, "CharacterCratePublic"_jrs, false); RenX_LoggingPlugin::characterCratePublic = this->config.get<bool>("CharacterCratePublic"_jrs, false);
RenX_LoggingPlugin::spyCratePublic = this->config.getBool(Jupiter::ReferenceString::empty, "SpyCratePublic"_jrs, false); RenX_LoggingPlugin::spyCratePublic = this->config.get<bool>("SpyCratePublic"_jrs, false);
RenX_LoggingPlugin::refillCratePublic = this->config.getBool(Jupiter::ReferenceString::empty, "RefillCratePublic"_jrs, false); RenX_LoggingPlugin::refillCratePublic = this->config.get<bool>("RefillCratePublic"_jrs, false);
RenX_LoggingPlugin::timeBombCratePublic = this->config.getBool(Jupiter::ReferenceString::empty, "TimeBombCratePublic"_jrs, false); RenX_LoggingPlugin::timeBombCratePublic = this->config.get<bool>("TimeBombCratePublic"_jrs, false);
RenX_LoggingPlugin::speedCratePublic = this->config.getBool(Jupiter::ReferenceString::empty, "SpeedCratePublic"_jrs, false); RenX_LoggingPlugin::speedCratePublic = this->config.get<bool>("SpeedCratePublic"_jrs, false);
RenX_LoggingPlugin::nukeCratePublic = this->config.getBool(Jupiter::ReferenceString::empty, "NukeCratePublic"_jrs, true); RenX_LoggingPlugin::nukeCratePublic = this->config.get<bool>("NukeCratePublic"_jrs, true);
RenX_LoggingPlugin::abductionCratePublic = this->config.getBool(Jupiter::ReferenceString::empty, "AbductionCratePublic"_jrs, true); RenX_LoggingPlugin::abductionCratePublic = this->config.get<bool>("AbductionCratePublic"_jrs, true);
RenX_LoggingPlugin::unspecifiedCratePublic = this->config.getBool(Jupiter::ReferenceString::empty, "UnspecifiedCratePublic"_jrs, false); RenX_LoggingPlugin::unspecifiedCratePublic = this->config.get<bool>("UnspecifiedCratePublic"_jrs, false);
RenX_LoggingPlugin::otherCratePublic = this->config.getBool(Jupiter::ReferenceString::empty, "OtherCratePublic"_jrs, false); RenX_LoggingPlugin::otherCratePublic = this->config.get<bool>("OtherCratePublic"_jrs, false);
RenX_LoggingPlugin::stealPublic = this->config.getBool(Jupiter::ReferenceString::empty, "StealPublic"_jrs, true); RenX_LoggingPlugin::stealPublic = this->config.get<bool>("StealPublic"_jrs, true);
RenX_LoggingPlugin::donatePublic = this->config.getBool(Jupiter::ReferenceString::empty, "DonatePublic"_jrs, true); RenX_LoggingPlugin::donatePublic = this->config.get<bool>("DonatePublic"_jrs, true);
RenX_LoggingPlugin::gamePublic = this->config.getBool(Jupiter::ReferenceString::empty, "GamePublic"_jrs, true); RenX_LoggingPlugin::gamePublic = this->config.get<bool>("GamePublic"_jrs, true);
RenX_LoggingPlugin::gameOverPublic = this->config.getBool(Jupiter::ReferenceString::empty, "GameOverPublic"_jrs, true); RenX_LoggingPlugin::gameOverPublic = this->config.get<bool>("GameOverPublic"_jrs, true);
RenX_LoggingPlugin::executePublic = this->config.getBool(Jupiter::ReferenceString::empty, "ExecutePublic"_jrs, false); RenX_LoggingPlugin::executePublic = this->config.get<bool>("ExecutePublic"_jrs, false);
RenX_LoggingPlugin::playerCommandPublic = this->config.getBool(Jupiter::ReferenceString::empty, "PlayerCommandPublic"_jrs, false); RenX_LoggingPlugin::playerCommandPublic = this->config.get<bool>("PlayerCommandPublic"_jrs, false);
RenX_LoggingPlugin::subscribePublic = this->config.getBool(Jupiter::ReferenceString::empty, "SubscribePublic"_jrs, false); RenX_LoggingPlugin::subscribePublic = this->config.get<bool>("SubscribePublic"_jrs, false);
RenX_LoggingPlugin::RCONPublic = this->config.getBool(Jupiter::ReferenceString::empty, "RCONPublic"_jrs, false); RenX_LoggingPlugin::RCONPublic = this->config.get<bool>("RCONPublic"_jrs, false);
RenX_LoggingPlugin::adminLoginPublic = this->config.getBool(Jupiter::ReferenceString::empty, "AdminLoginPublic"_jrs, true); RenX_LoggingPlugin::adminLoginPublic = this->config.get<bool>("AdminLoginPublic"_jrs, true);
RenX_LoggingPlugin::adminGrantPublic = this->config.getBool(Jupiter::ReferenceString::empty, "AdminGrantPublic"_jrs, true); RenX_LoggingPlugin::adminGrantPublic = this->config.get<bool>("AdminGrantPublic"_jrs, true);
RenX_LoggingPlugin::adminLogoutPublic = this->config.getBool(Jupiter::ReferenceString::empty, "AdminLogoutPublic"_jrs, true); RenX_LoggingPlugin::adminLogoutPublic = this->config.get<bool>("AdminLogoutPublic"_jrs, true);
RenX_LoggingPlugin::adminPublic = this->config.getBool(Jupiter::ReferenceString::empty, "AdminPublic"_jrs, false); RenX_LoggingPlugin::adminPublic = this->config.get<bool>("AdminPublic"_jrs, false);
RenX_LoggingPlugin::voteCallPublic = this->config.getBool(Jupiter::ReferenceString::empty, "VoteCallPublic"_jrs, true); RenX_LoggingPlugin::voteCallPublic = this->config.get<bool>("VoteCallPublic"_jrs, true);
RenX_LoggingPlugin::voteOverPublic = this->config.getBool(Jupiter::ReferenceString::empty, "VoteOverPublic"_jrs, true); RenX_LoggingPlugin::voteOverPublic = this->config.get<bool>("VoteOverPublic"_jrs, true);
RenX_LoggingPlugin::voteCancelPublic = this->config.getBool(Jupiter::ReferenceString::empty, "VoteCancelPublic"_jrs, true); RenX_LoggingPlugin::voteCancelPublic = this->config.get<bool>("VoteCancelPublic"_jrs, true);
RenX_LoggingPlugin::votePublic = this->config.getBool(Jupiter::ReferenceString::empty, "VotePublic"_jrs, false); RenX_LoggingPlugin::votePublic = this->config.get<bool>("VotePublic"_jrs, false);
RenX_LoggingPlugin::mapChangePublic = this->config.getBool(Jupiter::ReferenceString::empty, "MapChangePublic"_jrs, true); RenX_LoggingPlugin::mapChangePublic = this->config.get<bool>("MapChangePublic"_jrs, true);
RenX_LoggingPlugin::mapLoadPublic = this->config.getBool(Jupiter::ReferenceString::empty, "MapLoadPublic"_jrs, true); RenX_LoggingPlugin::mapLoadPublic = this->config.get<bool>("MapLoadPublic"_jrs, true);
RenX_LoggingPlugin::mapStartPublic = this->config.getBool(Jupiter::ReferenceString::empty, "MapStartPublic"_jrs, true); RenX_LoggingPlugin::mapStartPublic = this->config.get<bool>("MapStartPublic"_jrs, true);
RenX_LoggingPlugin::mapPublic = this->config.getBool(Jupiter::ReferenceString::empty, "MapPublic"_jrs, false); RenX_LoggingPlugin::mapPublic = this->config.get<bool>("MapPublic"_jrs, false);
RenX_LoggingPlugin::demoRecordPublic = this->config.getBool(Jupiter::ReferenceString::empty, "DemoRecordPublic"_jrs, true); RenX_LoggingPlugin::demoRecordPublic = this->config.get<bool>("DemoRecordPublic"_jrs, true);
RenX_LoggingPlugin::demoRecordStopPublic = this->config.getBool(Jupiter::ReferenceString::empty, "DemoRecordStopPublic"_jrs, true); RenX_LoggingPlugin::demoRecordStopPublic = this->config.get<bool>("DemoRecordStopPublic"_jrs, true);
RenX_LoggingPlugin::demoPublic = this->config.getBool(Jupiter::ReferenceString::empty, "DemoPublic"_jrs, false); RenX_LoggingPlugin::demoPublic = this->config.get<bool>("DemoPublic"_jrs, false);
RenX_LoggingPlugin::logPublic = this->config.getBool(Jupiter::ReferenceString::empty, "LogPublic"_jrs, false); RenX_LoggingPlugin::logPublic = this->config.get<bool>("LogPublic"_jrs, false);
RenX_LoggingPlugin::commandPublic = this->config.getBool(Jupiter::ReferenceString::empty, "CommandPublic"_jrs, false); RenX_LoggingPlugin::commandPublic = this->config.get<bool>("CommandPublic"_jrs, false);
RenX_LoggingPlugin::errorPublic = this->config.getBool(Jupiter::ReferenceString::empty, "ErrorPublic"_jrs, false); RenX_LoggingPlugin::errorPublic = this->config.get<bool>("ErrorPublic"_jrs, false);
RenX_LoggingPlugin::versionPublic = this->config.getBool(Jupiter::ReferenceString::empty, "VersionPublic"_jrs, true); RenX_LoggingPlugin::versionPublic = this->config.get<bool>("VersionPublic"_jrs, true);
RenX_LoggingPlugin::authorizedPublic = this->config.getBool(Jupiter::ReferenceString::empty, "AuthorizedPublic"_jrs, true); RenX_LoggingPlugin::authorizedPublic = this->config.get<bool>("AuthorizedPublic"_jrs, true);
RenX_LoggingPlugin::otherPublic = this->config.getBool(Jupiter::ReferenceString::empty, "OtherPublic"_jrs, false); RenX_LoggingPlugin::otherPublic = this->config.get<bool>("OtherPublic"_jrs, false);
/** Event formats */ /** Event formats */
RenX_LoggingPlugin::playerRDNSFmt = this->config.get(Jupiter::ReferenceString::empty, "PlayerRDNSFormat"_jrs, RenX_LoggingPlugin::playerRDNSFmt = this->config.get("PlayerRDNSFormat"_jrs,
Jupiter::ReferenceString::empty); 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())); 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())); 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); 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); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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::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())); 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())); 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::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())); 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::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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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::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::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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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())); 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); 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); 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())); 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())); 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. 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())); 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())); 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.")); 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())); Jupiter::StringS::Format(IRCCOLOR "06[Other]" IRCCOLOR " %.*s", RenX::tags->messageTag.size(), RenX::tags->messageTag.ptr()));
/** Sanitize tags */ /** Sanitize tags */

135
RenX.Medals/RenX_Medals.cpp

@ -55,13 +55,13 @@ RenX_MedalsPlugin::~RenX_MedalsPlugin()
player = n->data; player = n->data;
if (player->uuid.isNotEmpty() && player->isBot == false) 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[player->uuid].set("Recs"_jrs, player->varData[this->getName()].get("Recs"_jrs));
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("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 struct CongratPlayerData
@ -109,8 +109,8 @@ void RenX_MedalsPlugin::RenX_ProcessTags(Jupiter::StringType &msg, const RenX::S
{ {
if (player != nullptr) if (player != nullptr)
{ {
const Jupiter::ReadableString &recs = RenX_MedalsPlugin::medalsFile.get(player->uuid, STRING_LITERAL_AS_REFERENCE("Recs")); const Jupiter::ReadableString &recs = RenX_MedalsPlugin::medalsFile.get(player->uuid, "Recs"_jrs);
const Jupiter::ReadableString &noobs = RenX_MedalsPlugin::medalsFile.get(player->uuid, STRING_LITERAL_AS_REFERENCE("Noobs")); const Jupiter::ReadableString &noobs = RenX_MedalsPlugin::medalsFile.get(player->uuid, "Noobs"_jrs);
msg.replace(this->INTERNAL_RECS_TAG, recs); msg.replace(this->INTERNAL_RECS_TAG, recs);
msg.replace(this->INTERNAL_NOOB_TAG, noobs); 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) 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[this->getName()].set("Recs"_jrs, RenX_MedalsPlugin::medalsFile.get(player->uuid, "Recs"_jrs));
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("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) 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[player->uuid].set("Recs"_jrs, player->varData[this->getName()].get("Recs"_jrs));
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("Noobs"_jrs, player->varData[this->getName()].get("Noobs"_jrs));
} }
} }
@ -141,31 +141,28 @@ void RenX_MedalsPlugin::RenX_OnJoin(RenX::Server *server, const RenX::PlayerInfo
if (player->uuid.isNotEmpty() && player->isBot == false && server->isMatchInProgress()) if (player->uuid.isNotEmpty() && player->isBot == false && server->isMatchInProgress())
{ {
int worth = getWorth(player); 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) if (section != nullptr)
{ {
while (section->hasKey(STRING_LITERAL_AS_REFERENCE("MaxRecs")) && section->get(STRING_LITERAL_AS_REFERENCE("MaxRecs")).asInt() < worth) while (section->get<int>("MaxRecs"_jrs, INT_MAX) < worth)
if ((section = RenX_MedalsPlugin::config.getSection(section->get(STRING_LITERAL_AS_REFERENCE("NextSection")))) == nullptr) if ((section = RenX_MedalsPlugin::config.getSection(section->get("NextSection"_jrs))) == nullptr)
return; // No matching section found. return; // No matching section found.
if (section->hasKey(STRING_LITERAL_AS_REFERENCE("1"))) size_t table_size = section->getTable().size();
{
int r; if (table_size != 0)
Jupiter::INIFile::Section::KeyValuePair *pair;
do
{ {
r = rand() % section->size(); Jupiter::StringS msg = section->get(Jupiter::StringS::Format("%u", (rand() % table_size) + 1));
pair = section->getPair(r);
} while (pair->getKey().asInt() == 0);
Jupiter::StringS msg = pair->getValue(); if (msg.isNotEmpty())
{
RenX::sanitizeTags(msg); RenX::sanitizeTags(msg);
RenX::processTags(msg, server, player); RenX::processTags(msg, server, player);
server->sendMessage(msg); server->sendMessage(msg);
} }
} }
} }
}
} }
void RenX_MedalsPlugin::RenX_OnGameOver(RenX::Server *server, RenX::WinType winType, const RenX::TeamType &team, int gScore, int nScore) void RenX_MedalsPlugin::RenX_OnGameOver(RenX::Server *server, RenX::WinType winType, const RenX::TeamType &team, int gScore, int nScore)
@ -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) 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::Plugin::OnRehash();
RenX_MedalsPlugin::medalsFile.sync(RenX_MedalsPlugin::medalsFileName); RenX_MedalsPlugin::medalsFile.write(RenX_MedalsPlugin::medalsFileName);
RenX_MedalsPlugin::medalsFile.flushData(); RenX_MedalsPlugin::medalsFile.erase();
init(); init();
return 0; return 0;
} }
void RenX_MedalsPlugin::init() void RenX_MedalsPlugin::init()
{ {
RenX_MedalsPlugin::killCongratDelay = this->config.getInt(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("KillCongratDelay"), 60); RenX_MedalsPlugin::killCongratDelay = std::chrono::seconds(this->config.get<long long>("KillCongratDelay"_jrs, 60));
RenX_MedalsPlugin::vehicleKillCongratDelay = this->config.getInt(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("VehicleKillCongratDelay"), 60); RenX_MedalsPlugin::vehicleKillCongratDelay = std::chrono::seconds(this->config.get<long long>("VehicleKillCongratDelay"_jrs, 60));
RenX_MedalsPlugin::kdrCongratDelay = this->config.getInt(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("KDRCongratDelay"), 60); RenX_MedalsPlugin::kdrCongratDelay = std::chrono::seconds(this->config.get<long long>("KDRCongratDelay"_jrs, 60));
RenX_MedalsPlugin::medalsFileName = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("MedalsFile"), STRING_LITERAL_AS_REFERENCE("Medals.ini")); RenX_MedalsPlugin::medalsFileName = this->config.get("MedalsFile"_jrs, "Medals.ini"_jrs);
RenX_MedalsPlugin::medalsFile.readFile(RenX_MedalsPlugin::medalsFileName); RenX_MedalsPlugin::medalsFile.read(RenX_MedalsPlugin::medalsFileName);
RenX_MedalsPlugin::firstSection = RenX_MedalsPlugin::config.get(Jupiter::StringS::empty, STRING_LITERAL_AS_REFERENCE("FirstSection")); RenX_MedalsPlugin::firstSection = RenX_MedalsPlugin::config.get("FirstSection"_jrs);
RenX_MedalsPlugin::recsTag = RenX_MedalsPlugin::config.get(Jupiter::String::empty, STRING_LITERAL_AS_REFERENCE("RecsTag"), STRING_LITERAL_AS_REFERENCE("{RECS}")); RenX_MedalsPlugin::recsTag = RenX_MedalsPlugin::config.get("RecsTag"_jrs, "{RECS}"_jrs);
RenX_MedalsPlugin::noobTag = RenX_MedalsPlugin::config.get(Jupiter::String::empty, STRING_LITERAL_AS_REFERENCE("NoobsTag"), STRING_LITERAL_AS_REFERENCE("{NOOBS}")); RenX_MedalsPlugin::noobTag = RenX_MedalsPlugin::config.get("NoobsTag"_jrs, "{NOOBS}"_jrs);
RenX_MedalsPlugin::worthTag = RenX_MedalsPlugin::config.get(Jupiter::String::empty, STRING_LITERAL_AS_REFERENCE("WorthTag"), STRING_LITERAL_AS_REFERENCE("{WORTH}")); RenX_MedalsPlugin::worthTag = RenX_MedalsPlugin::config.get("WorthTag"_jrs, "{WORTH}"_jrs);
RenX::Core *core = RenX::getCore(); RenX::Core *core = RenX::getCore();
unsigned int sCount = core->getServerCount(); unsigned int sCount = core->getServerCount();
@ -296,8 +293,8 @@ void RenX_MedalsPlugin::init()
for (Jupiter::DLList<RenX::PlayerInfo>::Node *n = server->players.getNode(0); n != nullptr; n = n->next) for (Jupiter::DLList<RenX::PlayerInfo>::Node *n = server->players.getNode(0); n != nullptr; n = n->next)
{ {
player = n->data; 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[this->getName()].set("Recs"_jrs, RenX_MedalsPlugin::medalsFile[player->name].get("Recs"_jrs));
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("Noobs"_jrs, RenX_MedalsPlugin::medalsFile[player->name].get("Noobs"_jrs));
} }
} }
} }
@ -312,11 +309,11 @@ RenX_MedalsPlugin pluginInstance;
void RecsGameCommand::create() void RecsGameCommand::create()
{ {
this->addTrigger(STRING_LITERAL_AS_REFERENCE("recs")); this->addTrigger("recs"_jrs);
this->addTrigger(STRING_LITERAL_AS_REFERENCE("recommends")); this->addTrigger("recommends"_jrs);
this->addTrigger(STRING_LITERAL_AS_REFERENCE("recommendations")); this->addTrigger("recommendations"_jrs);
this->addTrigger(STRING_LITERAL_AS_REFERENCE("noobs")); this->addTrigger("noobs"_jrs);
this->addTrigger(STRING_LITERAL_AS_REFERENCE("n00bs")); this->addTrigger("n00bs"_jrs);
} }
void RecsGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, const Jupiter::ReadableString &parameters) void RecsGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, const Jupiter::ReadableString &parameters)
@ -326,26 +323,26 @@ void RecsGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, co
RenX::PlayerInfo *target = source->getPlayerByPartName(parameters); RenX::PlayerInfo *target = source->getPlayerByPartName(parameters);
if (target == nullptr) if (target == nullptr)
{ {
Jupiter::INIFile::Section *section = pluginInstance.medalsFile.getSection(parameters); Jupiter::Config *section = pluginInstance.medalsFile.getSection(parameters);
if (section == nullptr) 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 else
{ {
unsigned int recs = section->get(STRING_LITERAL_AS_REFERENCE("Recs")).asUnsignedInt(); unsigned int recs = section->get<unsigned int>("Recs"_jrs);
unsigned int noobs = section->get(STRING_LITERAL_AS_REFERENCE("Noobs")).asUnsignedInt(); unsigned int noobs = section->get<unsigned int>("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)); 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()) 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) 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) else if (target == player)
RecsGameCommand::trigger(source, player, Jupiter::ReferenceString::empty); 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 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()) 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))); 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() void RecGameCommand::create()
{ {
this->addTrigger(STRING_LITERAL_AS_REFERENCE("rec")); this->addTrigger("rec"_jrs);
this->addTrigger(STRING_LITERAL_AS_REFERENCE("recommend")); this->addTrigger("recommend"_jrs);
} }
void RecGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, const Jupiter::ReadableString &parameters) void RecGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, const Jupiter::ReadableString &parameters)
@ -373,23 +370,23 @@ void RecGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, con
if (target == nullptr) if (target == nullptr)
target = source->getPlayerByPartName(Jupiter::ReferenceString::getWord(parameters, 0, WHITESPACE)); target = source->getPlayerByPartName(Jupiter::ReferenceString::getWord(parameters, 0, WHITESPACE));
if (target == nullptr) if (target == nullptr)
source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Player not found! Syntax: rec <player>")); source->sendMessage(player, "Error: Player not found! Syntax: rec <player>"_jrs);
else if (target->uuid.isEmpty()) 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) 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) else if (target == player)
{ {
addNoob(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()) else if (player->varData["RenX.Medals"_jrs].get("gr"_jrs) != nullptr && player->adminType.isEmpty())
source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("You can only give one recommendation per game.")); source->sendMessage(player, "You can only give one recommendation per game."_jrs);
else else
{ {
addRec(target); addRec(target);
source->sendMessage(Jupiter::StringS::Format("%.*s has recommended %.*s!", player->name.size(), player->name.ptr(), target->name.size(), target->name.ptr())); 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); else RecsGameCommand_instance.trigger(source, player, parameters);
@ -407,8 +404,8 @@ GAME_COMMAND_INIT(RecGameCommand)
void NoobGameCommand::create() void NoobGameCommand::create()
{ {
this->addTrigger(STRING_LITERAL_AS_REFERENCE("noob")); this->addTrigger("noob"_jrs);
this->addTrigger(STRING_LITERAL_AS_REFERENCE("n00b")); this->addTrigger("n00b"_jrs);
} }
void NoobGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, const Jupiter::ReadableString &parameters) void NoobGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, const Jupiter::ReadableString &parameters)
@ -419,18 +416,18 @@ void NoobGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, co
if (target == nullptr) if (target == nullptr)
target = source->getPlayerByPartName(Jupiter::ReferenceString::getWord(parameters, 0, WHITESPACE)); target = source->getPlayerByPartName(Jupiter::ReferenceString::getWord(parameters, 0, WHITESPACE));
if (target == nullptr) 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()) 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) else if (target->isBot)
source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Bots can not receive n00bs.")); source->sendMessage(player, "Error: Bots can not receive n00bs."_jrs);
else if (player->varData.get(STRING_LITERAL_AS_REFERENCE("RenX.Medals"), STRING_LITERAL_AS_REFERENCE("gn")) != nullptr && player->adminType.isEmpty()) else if (player->varData["RenX.Medals"_jrs].get("gn"_jrs) != nullptr && player->adminType.isEmpty())
source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("You can only give one noob per game.")); source->sendMessage(player, "You can only give one noob per game."_jrs);
else else
{ {
addNoob(target); addNoob(target);
source->sendMessage(Jupiter::StringS::Format("%.*s has noob'd %.*s!", player->name.size(), player->name.ptr(), target->name.size(), target->name.ptr())); 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); else RecsGameCommand_instance.trigger(source, player, parameters);
@ -447,23 +444,23 @@ GAME_COMMAND_INIT(NoobGameCommand)
void addRec(const RenX::PlayerInfo *player, int amount) void addRec(const RenX::PlayerInfo *player, int amount)
{ {
if (player->uuid.matchi("Player*") == false && player->isBot == false) 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) void addNoob(const RenX::PlayerInfo *player, int amount)
{ {
if (player->uuid.matchi("Player*") == false && player->isBot == false) 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) unsigned long getRecs(const RenX::PlayerInfo *player)
{ {
return player->varData.getInt(pluginInstance.getName(), STRING_LITERAL_AS_REFERENCE("Recs")); return player->varData[pluginInstance.getName()].get<unsigned long>("Recs"_jrs);
} }
unsigned long getNoobs(const RenX::PlayerInfo *player) unsigned long getNoobs(const RenX::PlayerInfo *player)
{ {
return player->varData.getInt(pluginInstance.getName(), STRING_LITERAL_AS_REFERENCE("Noobs")); return player->varData[pluginInstance.getName()].get<unsigned long>("Noobs"_jrs);
} }
int getWorth(const RenX::PlayerInfo *player) int getWorth(const RenX::PlayerInfo *player)

10
RenX.Medals/RenX_Medals.h

@ -19,8 +19,8 @@
#if !defined _RENX_MEDALS_H_HEADER #if !defined _RENX_MEDALS_H_HEADER
#define _RENX_MEDALS_H_HEADER #define _RENX_MEDALS_H_HEADER
#include <chrono>
#include "Jupiter/Plugin.h" #include "Jupiter/Plugin.h"
#include "Jupiter/INIFile.h"
#include "Jupiter/String.h" #include "Jupiter/String.h"
#include "RenX_Plugin.h" #include "RenX_Plugin.h"
#include "RenX_GameCommand.h" #include "RenX_GameCommand.h"
@ -57,15 +57,15 @@ public: // Jupiter::Plugin
int OnRehash() override; int OnRehash() override;
public: public:
time_t killCongratDelay; std::chrono::milliseconds killCongratDelay;
time_t vehicleKillCongratDelay; std::chrono::milliseconds vehicleKillCongratDelay;
time_t kdrCongratDelay; std::chrono::milliseconds kdrCongratDelay;
Jupiter::StringS recsTag; Jupiter::StringS recsTag;
Jupiter::StringS noobTag; Jupiter::StringS noobTag;
Jupiter::StringS worthTag; Jupiter::StringS worthTag;
Jupiter::StringS firstSection; Jupiter::StringS firstSection;
Jupiter::StringS medalsFileName; Jupiter::StringS medalsFileName;
Jupiter::INIFile medalsFile; Jupiter::INIConfig medalsFile;
private: private:
Jupiter::StringS INTERNAL_RECS_TAG; Jupiter::StringS INTERNAL_RECS_TAG;

3
RenX.MinPlayers/RenX_MinPlayers.cpp

@ -17,7 +17,6 @@
*/ */
#include "Jupiter/IRC_Client.h" #include "Jupiter/IRC_Client.h"
#include "Jupiter/INIFile.h"
#include "RenX_Server.h" #include "RenX_Server.h"
#include "RenX_PlayerInfo.h" #include "RenX_PlayerInfo.h"
#include "RenX_MinPlayers.h" #include "RenX_MinPlayers.h"
@ -26,7 +25,7 @@ using namespace Jupiter::literals;
bool RenX_MinPlayersPlugin::initialize() bool RenX_MinPlayersPlugin::initialize()
{ {
RenX_MinPlayersPlugin::player_threshold = this->config.getInt(Jupiter::ReferenceString::empty, "PlayerThreshold"_jrs, 20); RenX_MinPlayersPlugin::player_threshold = this->config.get<size_t>("PlayerThreshold"_jrs, 20);
return true; return true;
} }

338
RenX.ModSystem/RenX_ModSystem.cpp

@ -28,15 +28,15 @@ using namespace Jupiter::literals;
bool RenX_ModSystemPlugin::initialize() bool RenX_ModSystemPlugin::initialize()
{ {
RenX_ModSystemPlugin::lockSteam = this->config.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("LockSteam"), true); RenX_ModSystemPlugin::lockSteam = this->config.get<bool>("LockSteam"_jrs, true);
RenX_ModSystemPlugin::lockIP = this->config.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("LockIP"), false); RenX_ModSystemPlugin::lockIP = this->config.get<bool>("LockIP"_jrs, false);
RenX_ModSystemPlugin::lockName = this->config.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("LockName"), false); RenX_ModSystemPlugin::lockName = this->config.get<bool>("LockName"_jrs, false);
RenX_ModSystemPlugin::kickLockMismatch = this->config.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("KickLockMismatch"), true); RenX_ModSystemPlugin::kickLockMismatch = this->config.get<bool>("KickLockMismatch"_jrs, true);
RenX_ModSystemPlugin::autoAuthSteam = this->config.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("AutoAuthSteam"), true); RenX_ModSystemPlugin::autoAuthSteam = this->config.get<bool>("AutoAuthSteam"_jrs, true);
RenX_ModSystemPlugin::autoAuthIP = this->config.getBool(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("AutoAuthIP"), false); RenX_ModSystemPlugin::autoAuthIP = this->config.get<bool>("AutoAuthIP"_jrs, false);
RenX_ModSystemPlugin::atmDefault = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("ATMDefault")); RenX_ModSystemPlugin::atmDefault = this->config.get("ATMDefault"_jrs);
RenX_ModSystemPlugin::moderatorGroup = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Moderator"), STRING_LITERAL_AS_REFERENCE("Moderator")); RenX_ModSystemPlugin::moderatorGroup = this->config.get("Moderator"_jrs, "Moderator"_jrs);
RenX_ModSystemPlugin::administratorGroup = this->config.get(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("Administrator"), STRING_LITERAL_AS_REFERENCE("Administrator")); RenX_ModSystemPlugin::administratorGroup = this->config.get("Administrator"_jrs, "Administrator"_jrs);
ModGroup *group; ModGroup *group;
Jupiter::ReferenceString dotLockSteam = ".LockSteam"; Jupiter::ReferenceString dotLockSteam = ".LockSteam";
@ -50,7 +50,7 @@ bool RenX_ModSystemPlugin::initialize()
Jupiter::ReferenceString dotPrefix = ".Prefix"; Jupiter::ReferenceString dotPrefix = ".Prefix";
Jupiter::ReferenceString dotGamePrefix = ".GamePrefix"; 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()) while (groupName.isNotEmpty())
{ {
@ -58,45 +58,45 @@ bool RenX_ModSystemPlugin::initialize()
group->name = groupName; group->name = groupName;
groupName += dotLockSteam; groupName += dotLockSteam;
group->lockSteam = this->config.getBool(Jupiter::ReferenceString::empty, groupName, RenX_ModSystemPlugin::lockSteam); group->lockSteam = this->config.get<bool>(groupName, RenX_ModSystemPlugin::lockSteam);
groupName.truncate(dotLockSteam.size()); groupName.truncate(dotLockSteam.size());
groupName += dotLockIP; groupName += dotLockIP;
group->lockIP = this->config.getBool(Jupiter::ReferenceString::empty, groupName, RenX_ModSystemPlugin::lockIP); group->lockIP = this->config.get<bool>(groupName, RenX_ModSystemPlugin::lockIP);
groupName.truncate(dotLockIP.size()); groupName.truncate(dotLockIP.size());
groupName += dotLockName; groupName += dotLockName;
group->lockName = this->config.getBool(Jupiter::ReferenceString::empty, groupName, RenX_ModSystemPlugin::lockName); group->lockName = this->config.get<bool>(groupName, RenX_ModSystemPlugin::lockName);
groupName.truncate(dotLockName.size()); groupName.truncate(dotLockName.size());
groupName += dotKickLockMismatch; groupName += dotKickLockMismatch;
group->kickLockMismatch = this->config.getBool(Jupiter::ReferenceString::empty, groupName, RenX_ModSystemPlugin::kickLockMismatch); group->kickLockMismatch = this->config.get<bool>(groupName, RenX_ModSystemPlugin::kickLockMismatch);
groupName.truncate(dotKickLockMismatch.size()); groupName.truncate(dotKickLockMismatch.size());
groupName += dotAutoAuthSteam; groupName += dotAutoAuthSteam;
group->autoAuthSteam = this->config.getBool(Jupiter::ReferenceString::empty, groupName, RenX_ModSystemPlugin::autoAuthSteam); group->autoAuthSteam = this->config.get<bool>(groupName, RenX_ModSystemPlugin::autoAuthSteam);
groupName.truncate(dotAutoAuthSteam.size()); groupName.truncate(dotAutoAuthSteam.size());
groupName += dotAutoAuthIP; groupName += dotAutoAuthIP;
group->autoAuthIP = this->config.getBool(Jupiter::ReferenceString::empty, groupName, RenX_ModSystemPlugin::autoAuthIP); group->autoAuthIP = this->config.get<bool>(groupName, RenX_ModSystemPlugin::autoAuthIP);
groupName.truncate(dotAutoAuthIP.size()); groupName.truncate(dotAutoAuthIP.size());
groupName += dotAccess; groupName += dotAccess;
group->access = this->config.getInt(Jupiter::ReferenceString::empty, groupName); group->access = this->config.get<int>(groupName);
groupName.truncate(dotAccess.size()); groupName.truncate(dotAccess.size());
groupName += dotPrefix; groupName += dotPrefix;
group->prefix = this->config.get(Jupiter::ReferenceString::empty, groupName); group->prefix = this->config.get(groupName);
groupName.truncate(dotPrefix.size()); groupName.truncate(dotPrefix.size());
groupName += dotGamePrefix; groupName += dotGamePrefix;
group->gamePrefix = this->config.get(Jupiter::ReferenceString::empty, groupName); group->gamePrefix = this->config.get(groupName);
groupName.truncate(dotGamePrefix.size()); groupName.truncate(dotGamePrefix.size());
RenX_ModSystemPlugin::groups.add(group); RenX_ModSystemPlugin::groups.add(group);
groupName += dotNext; groupName += dotNext;
groupName = this->config.get(Jupiter::ReferenceString::empty, groupName); groupName = this->config.get(groupName);
} }
RenX::Core *core = RenX::getCore(); RenX::Core *core = RenX::getCore();
@ -159,10 +159,10 @@ int RenX_ModSystemPlugin::auth(RenX::Server *server, const RenX::PlayerInfo *pla
ModGroup *group; ModGroup *group;
if (player->uuid.isNotEmpty()) if (player->uuid.isNotEmpty())
{ {
Jupiter::INIFile::Section *section = this->config.getSection(player->uuid); Jupiter::Config *section = this->config.getSection(player->uuid);
if (section != nullptr) 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()) if (groupName.isEmpty())
group = RenX_ModSystemPlugin::groups.get(0); group = RenX_ModSystemPlugin::groups.get(0);
else else
@ -174,10 +174,10 @@ int RenX_ModSystemPlugin::auth(RenX::Server *server, const RenX::PlayerInfo *pla
auto sectionAuth = [&] auto sectionAuth = [&]
{ {
player->varData.set(this->name, STRING_LITERAL_AS_REFERENCE("Group"), group->name); player->varData[this->name].set("Group"_jrs, group->name);
player->formatNamePrefix = section->get(STRING_LITERAL_AS_REFERENCE("Prefix"), group->prefix); player->formatNamePrefix = section->get("Prefix"_jrs, group->prefix);
player->gamePrefix = section->get(STRING_LITERAL_AS_REFERENCE("GamePrefix"), group->gamePrefix); player->gamePrefix = section->get("GamePrefix"_jrs, group->gamePrefix);
player->access = section->getInt(STRING_LITERAL_AS_REFERENCE("Access"), group->access); player->access = section->get<int>("Access"_jrs, group->access);
if (player->access != 0) 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())); 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) if (forceAuth)
return sectionAuth(); return sectionAuth();
bool lockSteam_l = section->getBool(STRING_LITERAL_AS_REFERENCE("LockSteam"), group->lockSteam); bool lockSteam_l = section->get<bool>("LockSteam"_jrs, group->lockSteam);
bool lockIP_l = section->getBool(STRING_LITERAL_AS_REFERENCE("LockIP"), group->lockIP); bool lockIP_l = section->get<bool>("LockIP"_jrs, group->lockIP);
bool lockName_l = section->getBool(STRING_LITERAL_AS_REFERENCE("LockName"), group->lockName); bool lockName_l = section->get<bool>("LockName"_jrs, group->lockName);
bool kickLockMismatch_l = section->getBool(STRING_LITERAL_AS_REFERENCE("KickLockMismatch"), group->kickLockMismatch); bool kickLockMismatch_l = section->get<bool>("KickLockMismatch"_jrs, group->kickLockMismatch);
bool autoAuthSteam_l = section->getBool(STRING_LITERAL_AS_REFERENCE("AutoAuthSteam"), group->autoAuthSteam); bool autoAuthSteam_l = section->get<bool>("AutoAuthSteam"_jrs, group->autoAuthSteam);
bool autoAuthIP_l = section->getBool(STRING_LITERAL_AS_REFERENCE("AutoAuthIP"), group->autoAuthIP); bool autoAuthIP_l = section->get<bool>("AutoAuthIP"_jrs, group->autoAuthIP);
uint64_t steamid = section->get(STRING_LITERAL_AS_REFERENCE("SteamID")).asUnsignedLongLong(); uint64_t steamid = section->get("SteamID"_jrs).asUnsignedLongLong();
const Jupiter::ReadableString &ip = section->get(STRING_LITERAL_AS_REFERENCE("LastIP")); const Jupiter::ReadableString &ip = section->get("LastIP"_jrs);
const Jupiter::ReadableString &name = section->get(STRING_LITERAL_AS_REFERENCE("Name")); 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))) 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) 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; return -1;
} }
} }
} }
group = this->getDefaultGroup(); 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->formatNamePrefix = group->prefix;
player->gamePrefix = group->gamePrefix; player->gamePrefix = group->gamePrefix;
return player->access = group->access; return player->access = group->access;
@ -232,7 +232,7 @@ void RenX_ModSystemPlugin::tempAuth(RenX::Server *server, const RenX::PlayerInfo
{ {
if (group == nullptr) if (group == nullptr)
group = this->getDefaultGroup(); 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->formatNamePrefix = group->prefix;
player->gamePrefix = group->gamePrefix; player->gamePrefix = group->gamePrefix;
player->access = group->access; 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 RenX_ModSystemPlugin::set(RenX::PlayerInfo *player, RenX_ModSystemPlugin::ModGroup *group)
{ {
bool r = this->config.set(player->uuid, STRING_LITERAL_AS_REFERENCE("Group"), group->name); bool r = this->config[player->uuid].set("Group"_jrs, group->name);
this->config.set(player->uuid, STRING_LITERAL_AS_REFERENCE("SteamID"), Jupiter::StringS::Format("%llu", player->steamid)); this->config[player->uuid].set("SteamID"_jrs, Jupiter::StringS::Format("%llu", player->steamid));
this->config.set(player->uuid, STRING_LITERAL_AS_REFERENCE("LastIP"), player->ip); this->config[player->uuid].set("LastIP"_jrs, player->ip);
this->config.set(player->uuid, STRING_LITERAL_AS_REFERENCE("Name"), player->name); this->config[player->uuid].set("Name"_jrs, player->name);
this->config.sync(); this->config.write();
return r; return r;
} }
@ -279,11 +279,11 @@ RenX_ModSystemPlugin::ModGroup *RenX_ModSystemPlugin::getGroupByIndex(size_t ind
int RenX_ModSystemPlugin::getConfigAccess(const Jupiter::ReadableString &uuid) const 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) if (section == nullptr)
return RenX_ModSystemPlugin::groups.get(0)->access; return RenX_ModSystemPlugin::groups.get(0)->access;
RenX_ModSystemPlugin::ModGroup *group = RenX_ModSystemPlugin::getGroupByName(section->get(STRING_LITERAL_AS_REFERENCE("Group")), groups.get(0)); RenX_ModSystemPlugin::ModGroup *group = RenX_ModSystemPlugin::getGroupByName(section->get("Group"_jrs), groups.get(0));
return section->getInt(STRING_LITERAL_AS_REFERENCE("Access"), group->access); return section->get<int>("Access"_jrs, group->access);
} }
size_t RenX_ModSystemPlugin::getGroupCount() const size_t RenX_ModSystemPlugin::getGroupCount() const
@ -326,7 +326,7 @@ RenX_ModSystemPlugin::~RenX_ModSystemPlugin()
player = n->data; player = n->data;
if (player->isBot == false) 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->gamePrefix.truncate(player->gamePrefix.size());
player->formatNamePrefix.truncate(player->formatNamePrefix.size()); player->formatNamePrefix.truncate(player->formatNamePrefix.size());
if (player->adminType.equals("administrator")) 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()) 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) if (section != nullptr)
{ {
section->set(STRING_LITERAL_AS_REFERENCE("SteamID"), Jupiter::StringS::Format("%llu", player->steamid)); section->set("SteamID"_jrs, Jupiter::StringS::Format("%llu", player->steamid));
section->set(STRING_LITERAL_AS_REFERENCE("LastIP"), player->ip); section->set("LastIP"_jrs, player->ip);
section->set(STRING_LITERAL_AS_REFERENCE("Name"), player->name); section->set("Name"_jrs, player->name);
} }
} }
} }
@ -430,7 +430,7 @@ RenX_ModSystemPlugin pluginInstance;
void AuthIRCCommand::create() void AuthIRCCommand::create()
{ {
this->addTrigger(STRING_LITERAL_AS_REFERENCE("auth")); this->addTrigger("auth"_jrs);
this->setAccessLevel(3); this->setAccessLevel(3);
} }
@ -453,32 +453,32 @@ void AuthIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &cha
serverMatch = true; serverMatch = true;
player = server->getPlayerByPartName(parameters); player = server->getPlayerByPartName(parameters);
if (player == nullptr) if (player == nullptr)
source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Player not found.")); source->sendNotice(nick, "Error: Player not found."_jrs);
else else
{ {
int uAccess = source->getAccessLevel(channel, nick); int uAccess = source->getAccessLevel(channel, nick);
int cAccess = pluginInstance.getConfigAccess(player->uuid); int cAccess = pluginInstance.getConfigAccess(player->uuid);
if (cAccess > uAccess && uAccess < static_cast<int>(source->getPrefixes().size())) if (cAccess > uAccess && uAccess < static_cast<int>(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) 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) 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 else
{ {
RenX_ModSystemPlugin::ModGroup *defaultGroup = pluginInstance.getDefaultGroup(); RenX_ModSystemPlugin::ModGroup *defaultGroup = pluginInstance.getDefaultGroup();
if (pluginInstance.auth(server, player) == -1) if (pluginInstance.auth(server, player) == -1)
source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Player failed to pass strict lock checks. Player kicked.")); source->sendNotice(nick, "Error: Player failed to pass strict lock checks. Player kicked."_jrs);
else if (defaultGroup->name.equals(player->varData.get(pluginInstance.getName(), STRING_LITERAL_AS_REFERENCE("Group")))) else if (defaultGroup->name.equals(player->varData[pluginInstance.getName()].get("Group"_jrs)))
source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Failed to authenticate player.")); source->sendNotice(nick, "Error: Failed to authenticate player."_jrs);
else else
source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Player authenticated successfully.")); source->sendNotice(nick, "Player authenticated successfully."_jrs);
} }
} }
} }
} }
if (serverMatch == false) 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 else
@ -497,10 +497,10 @@ IRC_COMMAND_INIT(AuthIRCCommand)
void DeAuthIRCCommand::create() void DeAuthIRCCommand::create()
{ {
this->addTrigger(STRING_LITERAL_AS_REFERENCE("unauth")); this->addTrigger("unauth"_jrs);
this->addTrigger(STRING_LITERAL_AS_REFERENCE("deauth")); this->addTrigger("deauth"_jrs);
this->addTrigger(STRING_LITERAL_AS_REFERENCE("demod")); this->addTrigger("demod"_jrs);
this->addTrigger(STRING_LITERAL_AS_REFERENCE("dtm")); this->addTrigger("dtm"_jrs);
this->setAccessLevel(3); this->setAccessLevel(3);
} }
@ -523,22 +523,22 @@ void DeAuthIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &c
serverMatch = true; serverMatch = true;
player = server->getPlayerByPartName(parameters); player = server->getPlayerByPartName(parameters);
if (player == nullptr) if (player == nullptr)
source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Player not found.")); source->sendNotice(nick, "Error: Player not found."_jrs);
else else
{ {
int uAccess = source->getAccessLevel(channel, nick); int uAccess = source->getAccessLevel(channel, nick);
int cAccess = pluginInstance.getConfigAccess(player->uuid); int cAccess = pluginInstance.getConfigAccess(player->uuid);
if (cAccess > uAccess && uAccess < static_cast<int>(source->getPrefixes().size())) if (cAccess > uAccess && uAccess < static_cast<int>(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)) else if (pluginInstance.resetAccess(player))
source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Player unauthenticated successfully.")); source->sendNotice(nick, "Player unauthenticated successfully."_jrs);
else else
source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Player not authenticated.")); source->sendNotice(nick, "Error: Player not authenticated."_jrs);
} }
} }
} }
if (serverMatch == false) 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 else
@ -557,7 +557,7 @@ IRC_COMMAND_INIT(DeAuthIRCCommand)
void ATMIRCCommand::create() void ATMIRCCommand::create()
{ {
this->addTrigger(STRING_LITERAL_AS_REFERENCE("atm")); this->addTrigger("atm"_jrs);
this->setAccessLevel(3); this->setAccessLevel(3);
} }
@ -581,10 +581,10 @@ void ATMIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &chan
int index = parameters.asInt(); int index = parameters.asInt();
if (index < 0 || index >= static_cast<int>(pluginInstance.groups.size())) if (index < 0 || index >= static_cast<int>(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) 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; return;
} }
else else
@ -593,7 +593,7 @@ void ATMIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &chan
if (group->access > source->getAccessLevel(channel, nick)) if (group->access > source->getAccessLevel(channel, nick))
{ {
group = pluginInstance.getDefaultATMGroup(); 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); playerName = playerName.gotoWord(1, WHITESPACE);
if (playerName.isEmpty()) if (playerName.isEmpty())
@ -601,7 +601,7 @@ void ATMIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &chan
} }
} }
if (group == nullptr) if (group == nullptr)
source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Invalid group.")); source->sendNotice(nick, "Error: Invalid group."_jrs);
else else
{ {
for (unsigned int i = 0; i != RenX::getCore()->getServerCount(); i++) 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; serverMatch = true;
player = server->getPlayerByPartName(playerName); player = server->getPlayerByPartName(playerName);
if (player == nullptr) 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) 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 else
{ {
pluginInstance.tempAuth(server, player, group); 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) 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() void AddIRCCommand::create()
{ {
this->addTrigger(STRING_LITERAL_AS_REFERENCE("addmod")); this->addTrigger("addmod"_jrs);
this->addTrigger(STRING_LITERAL_AS_REFERENCE("add")); this->addTrigger("add"_jrs);
this->addTrigger(STRING_LITERAL_AS_REFERENCE("set")); this->addTrigger("set"_jrs);
this->setAccessLevel(5); this->setAccessLevel(5);
} }
void AddIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &channel, const Jupiter::ReadableString &nick, const Jupiter::ReadableString &parameters) void AddIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &channel, const Jupiter::ReadableString &nick, const Jupiter::ReadableString &parameters)
{ {
if (parameters.wordCount(WHITESPACE) < 2) if (parameters.wordCount(WHITESPACE) < 2)
source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too few parameters. Syntax: add <level> <player>")); source->sendNotice(nick, "Error: Too few parameters. Syntax: add <level> <player>"_jrs);
else else
{ {
Jupiter::IRC::Client::Channel *chan = source->getChannel(channel); 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(); int index = parameters.asInt();
if (index < 0 || index >= static_cast<int>(pluginInstance.groups.size())) if (index < 0 || index >= static_cast<int>(pluginInstance.groups.size()))
source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Invalid group index.")); source->sendNotice(nick, "Error: Invalid group index."_jrs);
else else
{ {
group = pluginInstance.groups.get(index); group = pluginInstance.groups.get(index);
@ -675,7 +675,7 @@ void AddIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &chan
} }
} }
if (group == nullptr) if (group == nullptr)
source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Invalid group.")); source->sendNotice(nick, "Error: Invalid group."_jrs);
else else
{ {
for (unsigned int i = 0; i != RenX::getCore()->getServerCount(); i++) 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; serverMatch = true;
player = server->getPlayerByPartName(playerName); player = server->getPlayerByPartName(playerName);
if (player == nullptr) 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) 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()) 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 else
{ {
pluginInstance.resetAccess(player); pluginInstance.resetAccess(player);
@ -703,7 +703,7 @@ void AddIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &chan
} }
} }
if (serverMatch == false) 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() void DelIRCCommand::create()
{ {
this->addTrigger(STRING_LITERAL_AS_REFERENCE("delmod")); this->addTrigger("delmod"_jrs);
this->addTrigger(STRING_LITERAL_AS_REFERENCE("remmod")); this->addTrigger("remmod"_jrs);
this->addTrigger(STRING_LITERAL_AS_REFERENCE("del")); this->addTrigger("del"_jrs);
this->addTrigger(STRING_LITERAL_AS_REFERENCE("rem")); this->addTrigger("rem"_jrs);
this->setAccessLevel(5); this->setAccessLevel(5);
} }
void DelIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &channel, const Jupiter::ReadableString &nick, const Jupiter::ReadableString &parameters) void DelIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &channel, const Jupiter::ReadableString &nick, const Jupiter::ReadableString &parameters)
{ {
if (parameters.isEmpty()) if (parameters.isEmpty())
source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too few parameters. Syntax: del <player>")); source->sendNotice(nick, "Error: Too few parameters. Syntax: del <player>"_jrs);
else else
{ {
Jupiter::IRC::Client::Channel *chan = source->getChannel(channel); 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 (player == nullptr)
{ {
if (pluginInstance.modsFile.remove(parameters)) 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 else
{ {
size_t index = pluginInstance.modsFile.getSections(); auto bucket_itr = pluginInstance.modsFile.getSections().begin();
Jupiter::INIFile::Section *section; auto bucket_end = pluginInstance.modsFile.getSections().end();
DelIRCCommand_trigger_loop: while (bucket_itr != bucket_end)
if (index != 0)
{ {
section = pluginInstance.modsFile.getSection(--index); for (auto entry_itr = bucket_itr->m_entries.getHead(); entry_itr != nullptr; entry_itr = entry_itr->next)
if (section->get(STRING_LITERAL_AS_REFERENCE("Name")).equalsi(parameters))
{ {
if (pluginInstance.modsFile.remove(index)) if (entry_itr->data->value.get("Name"_jrs).equalsi(parameters))
source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Player has been removed from the moderator list.")); {
if (pluginInstance.modsFile.remove(entry_itr->data->key))
source->sendNotice(nick, "Player has been removed from the moderator list."_jrs);
else else
source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Unknown error occurred.")); 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) 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)) 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 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) 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() void ForceAuthIRCCommand::create()
{ {
this->addTrigger(STRING_LITERAL_AS_REFERENCE("fauth")); this->addTrigger("fauth"_jrs);
this->addTrigger(STRING_LITERAL_AS_REFERENCE("forceauth")); this->addTrigger("forceauth"_jrs);
this->setAccessLevel(4); this->setAccessLevel(4);
} }
@ -825,31 +829,31 @@ void ForceAuthIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString
serverMatch = true; serverMatch = true;
player = server->getPlayerByPartName(parameters); player = server->getPlayerByPartName(parameters);
if (player == nullptr) if (player == nullptr)
source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Player not found.")); source->sendNotice(nick, "Error: Player not found."_jrs);
else else
{ {
int uAccess = source->getAccessLevel(channel, nick); int uAccess = source->getAccessLevel(channel, nick);
int cAccess = pluginInstance.getConfigAccess(player->uuid); int cAccess = pluginInstance.getConfigAccess(player->uuid);
if (cAccess > uAccess && uAccess < static_cast<int>(source->getPrefixes().size())) if (cAccess > uAccess && uAccess < static_cast<int>(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) 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) 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 else
{ {
RenX_ModSystemPlugin::ModGroup *defaultGroup = pluginInstance.getDefaultGroup(); RenX_ModSystemPlugin::ModGroup *defaultGroup = pluginInstance.getDefaultGroup();
pluginInstance.auth(server, player, false, true); pluginInstance.auth(server, player, false, true);
if (defaultGroup->name.equals(player->varData.get(pluginInstance.getName(), STRING_LITERAL_AS_REFERENCE("Group")))) if (defaultGroup->name.equals(player->varData[pluginInstance.getName()].get("Group"_jrs)))
source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Failed to authenticate player.")); source->sendNotice(nick, "Error: Failed to authenticate player."_jrs);
else else
source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Player authenticated successfully.")); source->sendNotice(nick, "Player authenticated successfully."_jrs);
} }
} }
} }
} }
if (serverMatch == false) 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 else
@ -868,35 +872,37 @@ IRC_COMMAND_INIT(ForceAuthIRCCommand)
void ModListIRCCommand::create() void ModListIRCCommand::create()
{ {
this->addTrigger(STRING_LITERAL_AS_REFERENCE("modlist")); this->addTrigger("modlist"_jrs);
this->addTrigger(STRING_LITERAL_AS_REFERENCE("mlist")); this->addTrigger("mlist"_jrs);
} }
void ModListIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &channel, const Jupiter::ReadableString &nick, const Jupiter::ReadableString &parameters) void ModListIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &channel, const Jupiter::ReadableString &nick, const Jupiter::ReadableString &parameters)
{ {
RenX_ModSystemPlugin::ModGroup *group; RenX_ModSystemPlugin::ModGroup *group;
Jupiter::INIFile::Section *section;
size_t i;
Jupiter::String msg; Jupiter::String msg;
size_t msgBaseSize; size_t msgBaseSize;
bool haveMods = false; bool haveMods = false;
for (Jupiter::DLList<RenX_ModSystemPlugin::ModGroup>::Node *n = pluginInstance.groups.getNode(0); n != nullptr; n = n->next) for (Jupiter::DLList<RenX_ModSystemPlugin::ModGroup>::Node *n = pluginInstance.groups.getHead(); n != nullptr; n = n->next)
{ {
group = n->data; group = n->data;
msg = group->prefix; msg = group->prefix;
msg += group->name; msg += group->name;
msg.aformat(IRCNORMAL " (Access: %d): ", group->access); msg.aformat(IRCNORMAL " (Access: %d): ", group->access);
msgBaseSize = msg.size(); msgBaseSize = msg.size();
i = pluginInstance.modsFile.getSections(); auto bucket_itr = pluginInstance.modsFile.getSections().begin();
while (i != 0) 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 (in_entry.value.get("Group"_jrs).equalsi(group->name))
if (section->get(STRING_LITERAL_AS_REFERENCE("Group")).equalsi(group->name))
{ {
msg += section->get(STRING_LITERAL_AS_REFERENCE("Name"), section->getName()); msg += in_entry.value.get("Name"_jrs, in_entry.value.getName());
msg += STRING_LITERAL_AS_REFERENCE(", "); msg += ", "_jrs;
}
} }
};
pluginInstance.modsFile.getSections().callback(entry_callback);
if (msg.size() != msgBaseSize) if (msg.size() != msgBaseSize)
{ {
msg.truncate(2); msg.truncate(2);
@ -905,7 +911,7 @@ void ModListIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &
} }
} }
if (!haveMods) 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 &) const Jupiter::ReadableString &ModListIRCCommand::getHelp(const Jupiter::ReadableString &)
@ -922,7 +928,7 @@ IRC_COMMAND_INIT(ModListIRCCommand)
void AuthGameCommand::create() void AuthGameCommand::create()
{ {
this->addTrigger(STRING_LITERAL_AS_REFERENCE("auth")); this->addTrigger("auth"_jrs);
this->setAccessLevel(3); this->setAccessLevel(3);
} }
@ -932,32 +938,32 @@ void AuthGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, co
{ {
RenX::PlayerInfo *target = source->getPlayerByPartName(parameters); RenX::PlayerInfo *target = source->getPlayerByPartName(parameters);
if (target == nullptr) 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) 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 else
{ {
int cAccess = pluginInstance.getConfigAccess(target->uuid); int cAccess = pluginInstance.getConfigAccess(target->uuid);
if (cAccess > player->access) 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) 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) 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 else
{ {
RenX_ModSystemPlugin::ModGroup *defaultGroup = pluginInstance.getDefaultGroup(); RenX_ModSystemPlugin::ModGroup *defaultGroup = pluginInstance.getDefaultGroup();
if (pluginInstance.auth(source, player) == -1) if (pluginInstance.auth(source, player) == -1)
source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Player failed to pass strict lock checks. Player kicked.")); source->sendMessage(player, "Error: Player failed to pass strict lock checks. Player kicked."_jrs);
else if (defaultGroup->name.equals(player->varData.get(pluginInstance.getName(), STRING_LITERAL_AS_REFERENCE("Group")))) else if (defaultGroup->name.equals(player->varData[pluginInstance.getName()].get("Group"_jrs)))
source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Failed to authenticate player.")); source->sendMessage(player, "Error: Failed to authenticate player."_jrs);
else else
source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Player authenticated successfully.")); source->sendMessage(player, "Player authenticated successfully."_jrs);
} }
} }
} }
else else
source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Too few parameters. Syntax: auth <player>")); source->sendMessage(player, "Error: Too few parameters. Syntax: auth <player>"_jrs);
} }
const Jupiter::ReadableString &AuthGameCommand::getHelp(const Jupiter::ReadableString &) const Jupiter::ReadableString &AuthGameCommand::getHelp(const Jupiter::ReadableString &)
@ -972,7 +978,7 @@ GAME_COMMAND_INIT(AuthGameCommand)
void ATMGameCommand::create() void ATMGameCommand::create()
{ {
this->addTrigger(STRING_LITERAL_AS_REFERENCE("atm")); this->addTrigger("atm"_jrs);
this->setAccessLevel(3); this->setAccessLevel(3);
} }
@ -988,10 +994,10 @@ void ATMGameCommand::trigger(RenX::Server *server, RenX::PlayerInfo *player, con
int index = parameters.asInt(); int index = parameters.asInt();
if (index < 0 || index >= static_cast<int>(pluginInstance.groups.size())) if (index < 0 || index >= static_cast<int>(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) 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; return;
} }
else else
@ -1000,7 +1006,7 @@ void ATMGameCommand::trigger(RenX::Server *server, RenX::PlayerInfo *player, con
if (group->access > player->access) if (group->access > player->access)
{ {
group = pluginInstance.getDefaultATMGroup(); 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); playerName = playerName.gotoWord(1, WHITESPACE);
} }
@ -1009,20 +1015,20 @@ void ATMGameCommand::trigger(RenX::Server *server, RenX::PlayerInfo *player, con
{ {
target = server->getPlayerByPartName(playerName); target = server->getPlayerByPartName(playerName);
if (target == nullptr) 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) 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 else
{ {
pluginInstance.tempAuth(server, target, group); 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 else
server->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Invalid group.")); server->sendMessage(player, "Error: Invalid group."_jrs);
} }
else else
server->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Too few parameters. Syntax: auth <player>")); server->sendMessage(player, "Error: Too few parameters. Syntax: auth <player>"_jrs);
} }
const Jupiter::ReadableString &ATMGameCommand::getHelp(const Jupiter::ReadableString &) const Jupiter::ReadableString &ATMGameCommand::getHelp(const Jupiter::ReadableString &)
@ -1037,8 +1043,8 @@ GAME_COMMAND_INIT(ATMGameCommand)
void ForceAuthGameCommand::create() void ForceAuthGameCommand::create()
{ {
this->addTrigger(STRING_LITERAL_AS_REFERENCE("fauth")); this->addTrigger("fauth"_jrs);
this->addTrigger(STRING_LITERAL_AS_REFERENCE("forceauth")); this->addTrigger("forceauth"_jrs);
this->setAccessLevel(4); this->setAccessLevel(4);
} }
@ -1048,31 +1054,31 @@ void ForceAuthGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *playe
{ {
RenX::PlayerInfo *target = source->getPlayerByPartName(parameters); RenX::PlayerInfo *target = source->getPlayerByPartName(parameters);
if (target == nullptr) 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) 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 else
{ {
int cAccess = pluginInstance.getConfigAccess(target->uuid); int cAccess = pluginInstance.getConfigAccess(target->uuid);
if (cAccess > player->access) 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) 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) 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 else
{ {
RenX_ModSystemPlugin::ModGroup *defaultGroup = pluginInstance.getDefaultGroup(); RenX_ModSystemPlugin::ModGroup *defaultGroup = pluginInstance.getDefaultGroup();
pluginInstance.auth(source, player, false, true); pluginInstance.auth(source, player, false, true);
if (defaultGroup->name.equals(player->varData.get(pluginInstance.getName(), STRING_LITERAL_AS_REFERENCE("Group")))) if (defaultGroup->name.equals(player->varData[pluginInstance.getName()].get("Group"_jrs)))
source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Failed to authenticate player.")); source->sendMessage(player, "Error: Failed to authenticate player."_jrs);
else else
source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Player authenticated successfully.")); source->sendMessage(player, "Player authenticated successfully."_jrs);
} }
} }
} }
else else
source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Too few parameters. Syntax: fauth <player>")); source->sendMessage(player, "Error: Too few parameters. Syntax: fauth <player>"_jrs);
} }
const Jupiter::ReadableString &ForceAuthGameCommand::getHelp(const Jupiter::ReadableString &) const Jupiter::ReadableString &ForceAuthGameCommand::getHelp(const Jupiter::ReadableString &)

3
RenX.ModSystem/RenX_ModSystem.h

@ -22,7 +22,6 @@
#include "Jupiter/Plugin.h" #include "Jupiter/Plugin.h"
#include "Jupiter/Reference_String.h" #include "Jupiter/Reference_String.h"
#include "Jupiter/String.h" #include "Jupiter/String.h"
#include "Jupiter/INIFile.h"
#include "Jupiter/DLList.h" #include "Jupiter/DLList.h"
#include "IRC_Command.h" #include "IRC_Command.h"
#include "RenX_Plugin.h" #include "RenX_Plugin.h"
@ -104,7 +103,7 @@ public: // RenX::Plugin
public: // Jupiter::Plugin public: // Jupiter::Plugin
int OnRehash() override; int OnRehash() override;
Jupiter::INIFile &modsFile = Jupiter::Plugin::config; Jupiter::Config &modsFile = Jupiter::Plugin::config;
private: private:
bool lockSteam; bool lockSteam;
bool lockIP; bool lockIP;

21
RenX.ServerList/RenX_ServerList.cpp

@ -17,7 +17,6 @@
*/ */
#include "Jupiter/IRC_Client.h" #include "Jupiter/IRC_Client.h"
#include "Jupiter/INIFile.h"
#include "Jupiter/HTTP.h" #include "Jupiter/HTTP.h"
#include "Jupiter/HTTP_QueryString.h" #include "Jupiter/HTTP_QueryString.h"
#include "HTTPServer.h" #include "HTTPServer.h"
@ -146,12 +145,12 @@ Jupiter::String sanitize_game(const Jupiter::ReadableString &in_str)
bool RenX_ServerListPlugin::initialize() bool RenX_ServerListPlugin::initialize()
{ {
RenX_ServerListPlugin::web_hostname = this->config.get(Jupiter::ReferenceString::empty, "Hostname"_jrs, ""_jrs); RenX_ServerListPlugin::web_hostname = this->config.get("Hostname"_jrs, ""_jrs);
RenX_ServerListPlugin::web_path = this->config.get(Jupiter::ReferenceString::empty, "Path"_jrs, "/"_jrs); RenX_ServerListPlugin::web_path = this->config.get("Path"_jrs, "/"_jrs);
RenX_ServerListPlugin::server_list_page_name = this->config.get(Jupiter::ReferenceString::empty, "ServersPageName"_jrs, "servers.jsp"_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(Jupiter::ReferenceString::empty, "HumanServersPageName"_jrs, "servers_long.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(Jupiter::ReferenceString::empty, "ServerPageName"_jrs, "server.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(Jupiter::ReferenceString::empty, "ServersGamePageName"_jrs, "browser.jsp"_jrs); RenX_ServerListPlugin::game_server_list_page_name = this->config.get("ServersGamePageName"_jrs, "browser.jsp"_jrs);
/** Initialize content */ /** Initialize content */
Jupiter::HTTP::Server &server = getHTTPServer(); Jupiter::HTTP::Server &server = getHTTPServer();
@ -559,7 +558,7 @@ void RenX_ServerListPlugin::addServerToServerList(RenX::Server *server)
server_json_block += '}'; 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() void RenX_ServerListPlugin::updateServerList()
@ -613,7 +612,7 @@ void RenX_ServerListPlugin::RenX_OnServerDisconnect(RenX::Server *server, RenX::
this->updateServerList(); this->updateServerList();
// remove from individual listing // 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 *) 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) if (html_form_response.table.size() != 0)
{ {
address = html_form_response.table.get("ip"_jrs, address); address = html_form_response.table.get("ip"_jrs, address);
port = html_form_response.table.getInt("port"_jrs, port); port = html_form_response.table.getCast<int>("port"_jrs, port);
} }
// search for server // search for server
@ -714,7 +713,7 @@ Jupiter::ReadableString *handle_server_page(const Jupiter::ReadableString &query
} }
// return server data // 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) Jupiter::ReadableString *handle_game_server_list_page(const Jupiter::ReadableString &query_string)

13
RenX.SetJoin/RenX_SetJoin.cpp

@ -17,7 +17,6 @@
*/ */
#include "Jupiter/IRC_Client.h" #include "Jupiter/IRC_Client.h"
#include "Jupiter/INIFile.h"
#include "RenX_PlayerInfo.h" #include "RenX_PlayerInfo.h"
#include "RenX_Server.h" #include "RenX_Server.h"
#include "RenX_SetJoin.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()) 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()) if (setjoin.isNotEmpty())
server->sendMessage(Jupiter::StringS::Format("[%.*s] %.*s", player->name.size(), player->name.ptr(), setjoin.size(), setjoin.ptr())); 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()) 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()) if (setjoin.isNotEmpty())
source->sendMessage(player, Jupiter::StringS::Format("[%.*s] %.*s", player->name.size(), player->name.ptr(), setjoin.size(), setjoin.ptr())); 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); 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()) 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()) if (setjoin.isNotEmpty())
source->sendMessage(Jupiter::StringS::Format("[%.*s] %.*s", player->name.size(), player->name.ptr(), setjoin.size(), setjoin.ptr())); 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); 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 (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())); 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); 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()) if (parameters.isNotEmpty())
{ {
pluginInstance.setjoin_file.set(Jupiter::ReferenceString::empty, player->uuid, parameters); pluginInstance.setjoin_file.set(player->uuid, parameters);
pluginInstance.setjoin_file.sync(); 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())); 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); else DelJoinGameCommand_instance.trigger(source, player, parameters);

3
RenX.SetJoin/RenX_SetJoin.h

@ -20,14 +20,13 @@
#define _RENX_SETJOIN_H_HEADER #define _RENX_SETJOIN_H_HEADER
#include "Jupiter/Plugin.h" #include "Jupiter/Plugin.h"
#include "Jupiter/INIFile.h"
#include "RenX_Plugin.h" #include "RenX_Plugin.h"
#include "RenX_GameCommand.h" #include "RenX_GameCommand.h"
class RenX_SetJoinPlugin : public RenX::Plugin class RenX_SetJoinPlugin : public RenX::Plugin
{ {
public: public:
Jupiter::INIFile &setjoin_file = Jupiter::Plugin::config; Jupiter::Config &setjoin_file = Jupiter::Plugin::config;
public: // RenX::Plugin public: // RenX::Plugin
void RenX_OnJoin(RenX::Server *server, const RenX::PlayerInfo *player) override; void RenX_OnJoin(RenX::Server *server, const RenX::PlayerInfo *player) override;

50
RenX.Warn/RenX_Warn.cpp

@ -21,10 +21,12 @@
#include "RenX_PlayerInfo.h" #include "RenX_PlayerInfo.h"
#include "RenX_Warn.h" #include "RenX_Warn.h"
using namespace Jupiter::literals;
bool RenX_WarnPlugin::initialize() bool RenX_WarnPlugin::initialize()
{ {
RenX_WarnPlugin::maxWarns = this->config.getInt(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("MaxWarns"), 3); RenX_WarnPlugin::maxWarns = this->config.get<int>("MaxWarns"_jrs, 3);
RenX_WarnPlugin::warnAction = this->config.getInt(Jupiter::ReferenceString::empty, STRING_LITERAL_AS_REFERENCE("MaxAction"), -1); RenX_WarnPlugin::warnAction = this->config.get<int>("MaxAction"_jrs, -1);
return true; return true;
} }
@ -43,8 +45,8 @@ STRING_LITERAL_AS_NAMED_REFERENCE(WARNS_KEY, "w");
void WarnIRCCommand::create() void WarnIRCCommand::create()
{ {
this->addTrigger(STRING_LITERAL_AS_REFERENCE("warn")); this->addTrigger("warn"_jrs);
this->addTrigger(STRING_LITERAL_AS_REFERENCE("w")); this->addTrigger("w"_jrs);
this->setAccessLevel(2); this->setAccessLevel(2);
} }
@ -68,7 +70,7 @@ void WarnIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &cha
player = server->getPlayerByPartName(parameters); player = server->getPlayerByPartName(parameters);
if (player != nullptr) if (player != nullptr)
{ {
int warns = player->varData.getInt(pluginInstance.getName(), WARNS_KEY) + 1; int warns = player->varData[pluginInstance.getName()].get<int>(WARNS_KEY) + 1;
if (warns > pluginInstance.maxWarns) if (warns > pluginInstance.maxWarns)
{ {
switch (pluginInstance.warnAction) 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)); 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; break;
default: 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)); 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; break;
} }
} }
else 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)); 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)); 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 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 else
source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Error: Too Few Parameters. Syntax: Warn <Player>")); source->sendNotice(nick, "Error: Too Few Parameters. Syntax: Warn <Player>"_jrs);
} }
const Jupiter::ReadableString &WarnIRCCommand::getHelp(const Jupiter::ReadableString &) const Jupiter::ReadableString &WarnIRCCommand::getHelp(const Jupiter::ReadableString &)
@ -113,9 +115,9 @@ IRC_COMMAND_INIT(WarnIRCCommand)
void PardonIRCCommand::create() void PardonIRCCommand::create()
{ {
this->addTrigger(STRING_LITERAL_AS_REFERENCE("pardon")); this->addTrigger("pardon"_jrs);
this->addTrigger(STRING_LITERAL_AS_REFERENCE("forgive")); this->addTrigger("forgive"_jrs);
this->addTrigger(STRING_LITERAL_AS_REFERENCE("unwarn")); this->addTrigger("unwarn"_jrs);
this->setAccessLevel(2); this->setAccessLevel(2);
} }
@ -139,7 +141,7 @@ void PardonIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &c
player = server->getPlayerByPartName(parameters); player = server->getPlayerByPartName(parameters);
if (player != nullptr) 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())); 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())); 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 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 else
@ -166,8 +168,8 @@ IRC_COMMAND_INIT(PardonIRCCommand)
void WarnGameCommand::create() void WarnGameCommand::create()
{ {
this->addTrigger(STRING_LITERAL_AS_REFERENCE("warn")); this->addTrigger("warn"_jrs);
this->addTrigger(STRING_LITERAL_AS_REFERENCE("w")); this->addTrigger("w"_jrs);
this->setAccessLevel(1); this->setAccessLevel(1);
} }
@ -178,7 +180,7 @@ void WarnGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player, co
RenX::PlayerInfo *target = source->getPlayerByPartName(parameters); RenX::PlayerInfo *target = source->getPlayerByPartName(parameters);
if (target != nullptr) if (target != nullptr)
{ {
int warns = target->varData.getInt(pluginInstance.getName(), WARNS_KEY) + 1; int warns = target->varData[pluginInstance.getName()].get<int>(WARNS_KEY) + 1;
if (warns > pluginInstance.maxWarns) if (warns > pluginInstance.maxWarns)
{ {
switch (pluginInstance.warnAction) 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)); 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; break;
default: 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)); 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; break;
} }
} }
else 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(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)); source->sendMessage(player, Jupiter::StringS::Format("%.*s has been warned; they now have %d warnings.", target->name.size(), target->name.ptr(), warns));
} }
} }
} }
else else
source->sendMessage(player, STRING_LITERAL_AS_REFERENCE("Error: Too few parameters. Syntax: Warn <Player>")); source->sendMessage(player, "Error: Too few parameters. Syntax: Warn <Player>"_jrs);
} }
const Jupiter::ReadableString &WarnGameCommand::getHelp(const Jupiter::ReadableString &) const Jupiter::ReadableString &WarnGameCommand::getHelp(const Jupiter::ReadableString &)
@ -217,9 +219,9 @@ GAME_COMMAND_INIT(WarnGameCommand)
void PardonGameCommand::create() void PardonGameCommand::create()
{ {
this->addTrigger(STRING_LITERAL_AS_REFERENCE("pardon")); this->addTrigger("pardon"_jrs);
this->addTrigger(STRING_LITERAL_AS_REFERENCE("forgive")); this->addTrigger("forgive"_jrs);
this->addTrigger(STRING_LITERAL_AS_REFERENCE("unwarn")); this->addTrigger("unwarn"_jrs);
this->setAccessLevel(1); this->setAccessLevel(1);
} }
@ -230,7 +232,7 @@ void PardonGameCommand::trigger(RenX::Server *source, RenX::PlayerInfo *player,
RenX::PlayerInfo *target = source->getPlayerByPartName(parameters); RenX::PlayerInfo *target = source->getPlayerByPartName(parameters);
if (target != nullptr) 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(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())); source->sendMessage(player, Jupiter::StringS::Format("%.*s has been pardoned; their warnings have been reset.", target->name.size(), target->name.ptr()));
} }

33
SetJoin/SetJoin.cpp

@ -17,18 +17,19 @@
*/ */
#include <cstring> #include <cstring>
#include "Jupiter/INIFile.h"
#include "Jupiter/Functions.h" #include "Jupiter/Functions.h"
#include "SetJoin.h" #include "SetJoin.h"
#include "IRC_Bot.h" #include "IRC_Bot.h"
using namespace Jupiter::literals;
void SetJoinPlugin::OnJoin(Jupiter::IRC::Client *server, const Jupiter::ReadableString &chan, const Jupiter::ReadableString &nick) 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.isNotEmpty())
{ {
if (setjoin == nullptr) 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 else
server->sendMessage(chan, Jupiter::StringS::Format(IRCBOLD IRCCOLOR "07[%.*s]" IRCCOLOR IRCBOLD ": %.*s", nick.size(), nick.ptr(), setjoin.size(), setjoin.ptr())); 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() 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 &parameters) void SetJoinIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &channel, const Jupiter::ReadableString &nick, const Jupiter::ReadableString &parameters)
{ {
if (parameters.isNotEmpty()) if (parameters.isNotEmpty())
{ {
pluginInstance.setjoin_file.set(source->getConfigSection(), nick, parameters); pluginInstance.setjoin_file[source->getConfigSection()].set(nick, parameters);
pluginInstance.setjoin_file.sync(); pluginInstance.setjoin_file.write();
source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Your join message has been set.")); source->sendMessage(channel, "Your join message has been set."_jrs);
} }
else source->sendMessage(channel, STRING_LITERAL_AS_REFERENCE("Too few parameters! Syntax: setjoin <message>")); else source->sendMessage(channel, "Too few parameters! Syntax: setjoin <message>"_jrs);
} }
const Jupiter::ReadableString &SetJoinIRCCommand::getHelp(const Jupiter::ReadableString &) const Jupiter::ReadableString &SetJoinIRCCommand::getHelp(const Jupiter::ReadableString &)
@ -66,14 +67,14 @@ IRC_COMMAND_INIT(SetJoinIRCCommand)
void ViewJoinIRCCommand::create() void ViewJoinIRCCommand::create()
{ {
this->addTrigger(STRING_LITERAL_AS_REFERENCE("viewJoin")); this->addTrigger("viewJoin"_jrs);
this->addTrigger(STRING_LITERAL_AS_REFERENCE("vJoin")); this->addTrigger("vJoin"_jrs);
} }
void ViewJoinIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &channel, const Jupiter::ReadableString &nick, const Jupiter::ReadableString &parameters) void ViewJoinIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &channel, const Jupiter::ReadableString &nick, const Jupiter::ReadableString &parameters)
{ {
const Jupiter::ReadableString &target = parameters.isEmpty() ? nick : parameters; 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()) if (r.isEmpty())
source->sendMessage(channel, Jupiter::StringS::Format("No setjoin has been set for \"%.*s\".", target.size(), target.ptr())); source->sendMessage(channel, Jupiter::StringS::Format("No setjoin has been set for \"%.*s\".", target.size(), target.ptr()));
@ -93,15 +94,15 @@ IRC_COMMAND_INIT(ViewJoinIRCCommand)
void DelJoinIRCCommand::create() void DelJoinIRCCommand::create()
{ {
this->addTrigger(STRING_LITERAL_AS_REFERENCE("delJoin")); this->addTrigger("delJoin"_jrs);
this->addTrigger(STRING_LITERAL_AS_REFERENCE("dJoin")); this->addTrigger("dJoin"_jrs);
} }
void DelJoinIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &channel, const Jupiter::ReadableString &nick, const Jupiter::ReadableString &parameters) void DelJoinIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString &channel, const Jupiter::ReadableString &nick, const Jupiter::ReadableString &parameters)
{ {
if (pluginInstance.setjoin_file.remove(source->getConfigSection(), nick)) if (pluginInstance.setjoin_file[source->getConfigSection()].remove(nick))
source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("Your setjoin has been deleted successfully.")); source->sendNotice(nick, "Your setjoin has been deleted successfully."_jrs);
else source->sendNotice(nick, STRING_LITERAL_AS_REFERENCE("No setjoin was found to delete.")); else source->sendNotice(nick, "No setjoin was found to delete."_jrs);
} }
const Jupiter::ReadableString &DelJoinIRCCommand::getHelp(const Jupiter::ReadableString &) const Jupiter::ReadableString &DelJoinIRCCommand::getHelp(const Jupiter::ReadableString &)

2
SetJoin/SetJoin.h

@ -25,7 +25,7 @@
class SetJoinPlugin : public Jupiter::Plugin class SetJoinPlugin : public Jupiter::Plugin
{ {
public: 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; void OnJoin(Jupiter::IRC::Client *server, const Jupiter::ReadableString &chan, const Jupiter::ReadableString &nick) override;
}; };

Loading…
Cancel
Save