diff --git a/RenX.Commands/RenX_Commands.cpp b/RenX.Commands/RenX_Commands.cpp index 6f72d53..f9de819 100644 --- a/RenX.Commands/RenX_Commands.cpp +++ b/RenX.Commands/RenX_Commands.cpp @@ -1883,8 +1883,9 @@ void BanSearchIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableString entry = entries.get(i); if (isMatch(type)) { + time_t current_time = std::chrono::system_clock::to_time_t(entry->timestamp); Jupiter::StringS &ip_str = Jupiter::Socket::ntop4(entry->ip); - strftime(timeStr, sizeof(timeStr), "%b %d %Y, %H:%M:%S", localtime(std::addressof(std::chrono::system_clock::to_time_t(entry->timestamp)))); + strftime(timeStr, sizeof(timeStr), "%b %d %Y, %H:%M:%S", localtime(¤t_time)); if ((entry->flags & 0x7FFF) == 0) types = " NULL;"_jrs; @@ -2347,8 +2348,9 @@ void ExemptionSearchIRCCommand::trigger(IRC_Bot *source, const Jupiter::Readable entry = entries.get(i); if (isMatch(type)) { + time_t current_time = std::chrono::system_clock::to_time_t(entry->timestamp); Jupiter::StringS &ip_str = Jupiter::Socket::ntop4(entry->ip); - strftime(timeStr, sizeof(timeStr), "%b %d %Y, %H:%M:%S", localtime(std::addressof(std::chrono::system_clock::to_time_t(entry->timestamp)))); + strftime(timeStr, sizeof(timeStr), "%b %d %Y, %H:%M:%S", localtime(¤t_time)); if ((entry->flags & 0xFF) == 0) types = " NULL;"_jrs; diff --git a/RenX.Core/RenX_Server.cpp b/RenX.Core/RenX_Server.cpp index 66be97f..0b5f718 100644 --- a/RenX.Core/RenX_Server.cpp +++ b/RenX.Core/RenX_Server.cpp @@ -559,7 +559,8 @@ void RenX::Server::banCheck(RenX::PlayerInfo &player) char timeStr[256]; if (last_to_expire[0] != nullptr) // Game ban { - strftime(timeStr, sizeof(timeStr), "%b %d %Y at %H:%M:%S", localtime(std::addressof(std::chrono::system_clock::to_time_t(last_to_expire[0]->timestamp + last_to_expire[0]->length)))); + time_t current_time = std::chrono::system_clock::to_time_t(last_to_expire[0]->timestamp + last_to_expire[0]->length); + strftime(timeStr, sizeof(timeStr), "%b %d %Y at %H:%M:%S", localtime(¤t_time)); if (last_to_expire[0]->length == std::chrono::seconds::zero()) this->forceKickPlayer(player, Jupiter::StringS::Format("You were permanently banned from %.*s on %s for: %.*s", RenX::Server::ban_from_str.size(), RenX::Server::ban_from_str.ptr(), timeStr, last_to_expire[0]->reason.size(), last_to_expire[0]->reason.ptr())); else @@ -571,7 +572,8 @@ void RenX::Server::banCheck(RenX::PlayerInfo &player) { if (last_to_expire[1] != nullptr) // Chat ban { - strftime(timeStr, sizeof(timeStr), "%b %d %Y at %H:%M:%S", localtime(std::addressof(std::chrono::system_clock::to_time_t(last_to_expire[1]->timestamp + last_to_expire[1]->length)))); + time_t current_time = std::chrono::system_clock::to_time_t(last_to_expire[1]->timestamp + last_to_expire[1]->length); + strftime(timeStr, sizeof(timeStr), "%b %d %Y at %H:%M:%S", localtime(¤t_time)); this->mute(player); if (last_to_expire[1]->length == std::chrono::seconds::zero()) this->sendMessage(player, Jupiter::StringS::Format("You were permanently muted on this server on %s for: %.*s", timeStr, last_to_expire[1]->reason.size(), last_to_expire[1]->reason.ptr())); @@ -582,7 +584,8 @@ void RenX::Server::banCheck(RenX::PlayerInfo &player) } else if (last_to_expire[2] != nullptr) // Bot ban { - strftime(timeStr, sizeof(timeStr), "%b %d %Y at %H:%M:%S", localtime(std::addressof(std::chrono::system_clock::to_time_t(last_to_expire[2]->timestamp + last_to_expire[2]->length)))); + time_t current_time = std::chrono::system_clock::to_time_t(last_to_expire[2]->timestamp + last_to_expire[2]->length); + strftime(timeStr, sizeof(timeStr), "%b %d %Y at %H:%M:%S", localtime(¤t_time)); if (last_to_expire[2]->length == std::chrono::seconds::zero()) this->sendMessage(player, Jupiter::StringS::Format("You were permanently bot-muted on this server on %s for: %.*s", timeStr, last_to_expire[2]->reason.size(), last_to_expire[2]->reason.ptr())); else @@ -590,7 +593,8 @@ void RenX::Server::banCheck(RenX::PlayerInfo &player) } if (last_to_expire[3] != nullptr) // Vote ban { - strftime(timeStr, sizeof(timeStr), "%b %d %Y at %H:%M:%S", localtime(std::addressof(std::chrono::system_clock::to_time_t(last_to_expire[3]->timestamp + last_to_expire[3]->length)))); + time_t current_time = std::chrono::system_clock::to_time_t(last_to_expire[3]->timestamp + last_to_expire[3]->length); + strftime(timeStr, sizeof(timeStr), "%b %d %Y at %H:%M:%S", localtime(¤t_time)); if (last_to_expire[3]->length == std::chrono::seconds::zero()) this->sendMessage(player, Jupiter::StringS::Format("You were permanently vote-muted on this server on %s for: %.*s", timeStr, last_to_expire[3]->reason.size(), last_to_expire[3]->reason.ptr())); else @@ -598,8 +602,9 @@ void RenX::Server::banCheck(RenX::PlayerInfo &player) } if (last_to_expire[4] != nullptr) // Mine ban { + time_t current_time = std::chrono::system_clock::to_time_t(last_to_expire[4]->timestamp + last_to_expire[4]->length); this->mineBan(player); - strftime(timeStr, sizeof(timeStr), "%b %d %Y at %H:%M:%S", localtime(std::addressof(std::chrono::system_clock::to_time_t(last_to_expire[4]->timestamp + last_to_expire[4]->length)))); + strftime(timeStr, sizeof(timeStr), "%b %d %Y at %H:%M:%S", localtime(¤t_time)); if (last_to_expire[4]->length == std::chrono::seconds::zero()) this->sendMessage(player, Jupiter::StringS::Format("You were permanently mine-banned on this server on %s for: %.*s", timeStr, last_to_expire[4]->reason.size(), last_to_expire[4]->reason.ptr())); else @@ -607,7 +612,8 @@ void RenX::Server::banCheck(RenX::PlayerInfo &player) } if (last_to_expire[5] != nullptr) // Ladder ban { - strftime(timeStr, sizeof(timeStr), "%b %d %Y at %H:%M:%S", localtime(std::addressof(std::chrono::system_clock::to_time_t(last_to_expire[5]->timestamp + last_to_expire[5]->length)))); + time_t current_time = std::chrono::system_clock::to_time_t(last_to_expire[5]->timestamp + last_to_expire[5]->length); + strftime(timeStr, sizeof(timeStr), "%b %d %Y at %H:%M:%S", localtime(¤t_time)); if (last_to_expire[5]->length == std::chrono::seconds::zero()) this->sendMessage(player, Jupiter::StringS::Format("You were permanently ladder-banned on this server on %s for: %.*s", timeStr, last_to_expire[5]->reason.size(), last_to_expire[5]->reason.ptr())); else diff --git a/RenX.ExtraLogging/RenX_ExtraLogging.cpp b/RenX.ExtraLogging/RenX_ExtraLogging.cpp index a1d38f6..3089af4 100644 --- a/RenX.ExtraLogging/RenX_ExtraLogging.cpp +++ b/RenX.ExtraLogging/RenX_ExtraLogging.cpp @@ -25,7 +25,8 @@ using namespace Jupiter::literals; RenX_ExtraLoggingPlugin::RenX_ExtraLoggingPlugin() { - RenX_ExtraLoggingPlugin::day = localtime(std::addressof(time(nullptr)))->tm_yday; + time_t current_time = time(nullptr); + RenX_ExtraLoggingPlugin::day = localtime(¤t_time)->tm_yday; } RenX_ExtraLoggingPlugin::~RenX_ExtraLoggingPlugin() @@ -76,7 +77,8 @@ int RenX_ExtraLoggingPlugin::think() { if (RenX_ExtraLoggingPlugin::file != nullptr && RenX_ExtraLoggingPlugin::newDayFmt.isNotEmpty()) { - int currentDay = localtime(std::addressof(time(nullptr)))->tm_yday; + time_t current_time = time(nullptr); + int currentDay = localtime(¤t_time)->tm_yday; if (currentDay != RenX_ExtraLoggingPlugin::day) { RenX_ExtraLoggingPlugin::day = currentDay; diff --git a/RenX.Ladder.Daily/RenX_Ladder_Daily.cpp b/RenX.Ladder.Daily/RenX_Ladder_Daily.cpp index d76d4d3..bbd46ec 100644 --- a/RenX.Ladder.Daily/RenX_Ladder_Daily.cpp +++ b/RenX.Ladder.Daily/RenX_Ladder_Daily.cpp @@ -24,12 +24,13 @@ using namespace Jupiter::literals; bool RenX_Ladder_Daily_TimePlugin::initialize() { + time_t current_time = time(0); // Load database this->database.process_file(this->config.get("LadderDatabase"_jrs, "Ladder.Daily.db"_jrs)); this->database.setName(this->config.get("DatabaseName"_jrs, "Daily"_jrs)); this->database.setOutputTimes(this->config.get("OutputTimes"_jrs, false)); - this->last_sorted_day = gmtime(std::addressof(time(0)))->tm_wday; + this->last_sorted_day = gmtime(¤t_time)->tm_wday; this->database.OnPreUpdateLadder = OnPreUpdateLadder; // Force database to default, if desired @@ -44,7 +45,8 @@ RenX_Ladder_Daily_TimePlugin pluginInstance; void OnPreUpdateLadder(RenX::LadderDatabase &database, RenX::Server &, const RenX::TeamType &) { - tm *tm_ptr = gmtime(std::addressof(time(0))); + time_t current_time = time(0); + tm *tm_ptr = gmtime(¤t_time); if (pluginInstance.last_sorted_day != tm_ptr->tm_wday) database.erase(); pluginInstance.last_sorted_day = tm_ptr->tm_wday; diff --git a/RenX.Ladder.Monthly/RenX_Ladder_Monthly.cpp b/RenX.Ladder.Monthly/RenX_Ladder_Monthly.cpp index f227b72..8a89bf9 100644 --- a/RenX.Ladder.Monthly/RenX_Ladder_Monthly.cpp +++ b/RenX.Ladder.Monthly/RenX_Ladder_Monthly.cpp @@ -24,12 +24,13 @@ using namespace Jupiter::literals; bool RenX_Ladder_Monthly_TimePlugin::initialize() { + time_t current_time = time(0); // Load database this->database.process_file(this->config.get("LadderDatabase"_jrs, "Ladder.Monthly.db"_jrs)); this->database.setName(this->config.get("DatabaseName"_jrs, "Monthly"_jrs)); this->database.setOutputTimes(this->config.get("OutputTimes"_jrs, false)); - this->last_sorted_month = gmtime(std::addressof(time(0)))->tm_mon; + this->last_sorted_month = gmtime(¤t_time)->tm_mon; this->database.OnPreUpdateLadder = OnPreUpdateLadder; // Force database to default, if desired @@ -44,7 +45,8 @@ RenX_Ladder_Monthly_TimePlugin pluginInstance; void OnPreUpdateLadder(RenX::LadderDatabase &database, RenX::Server &, const RenX::TeamType &) { - tm *tm_ptr = gmtime(std::addressof(time(0))); + time_t current_time = time(0); + tm *tm_ptr = gmtime(¤t_time); if (pluginInstance.last_sorted_month != tm_ptr->tm_mon) database.erase(); pluginInstance.last_sorted_month = tm_ptr->tm_mon; diff --git a/RenX.Ladder.Weekly/RenX_Ladder_Weekly.cpp b/RenX.Ladder.Weekly/RenX_Ladder_Weekly.cpp index 5f255e6..6388a26 100644 --- a/RenX.Ladder.Weekly/RenX_Ladder_Weekly.cpp +++ b/RenX.Ladder.Weekly/RenX_Ladder_Weekly.cpp @@ -24,12 +24,13 @@ using namespace Jupiter::literals; bool RenX_Ladder_Weekly_TimePlugin::initialize() { + time_t current_time = time(0); // Load database this->database.process_file(this->config.get("LadderDatabase"_jrs, "Ladder.Weekly.db"_jrs)); this->database.setName(this->config.get("DatabaseName"_jrs, "Weekly"_jrs)); this->database.setOutputTimes(this->config.get("OutputTimes"_jrs, false)); - this->last_sorted_day = gmtime(std::addressof(time(0)))->tm_wday; + this->last_sorted_day = gmtime(¤t_time)->tm_wday; this->reset_day = this->config.get("ResetDay"_jrs); this->database.OnPreUpdateLadder = OnPreUpdateLadder; @@ -45,7 +46,8 @@ RenX_Ladder_Weekly_TimePlugin pluginInstance; void OnPreUpdateLadder(RenX::LadderDatabase &database, RenX::Server &, const RenX::TeamType &) { - tm *tm_ptr = gmtime(std::addressof(time(0))); + time_t current_time = time(0); + tm *tm_ptr = gmtime(¤t_time); if (pluginInstance.last_sorted_day != tm_ptr->tm_wday && tm_ptr->tm_wday == pluginInstance.reset_day) database.erase(); pluginInstance.last_sorted_day = tm_ptr->tm_wday; diff --git a/RenX.Ladder.Yearly/RenX_Ladder_Yearly.cpp b/RenX.Ladder.Yearly/RenX_Ladder_Yearly.cpp index 295abb6..2e41718 100644 --- a/RenX.Ladder.Yearly/RenX_Ladder_Yearly.cpp +++ b/RenX.Ladder.Yearly/RenX_Ladder_Yearly.cpp @@ -24,12 +24,13 @@ using namespace Jupiter::literals; bool RenX_Ladder_Yearly_TimePlugin::initialize() { + time_t current_time = time(0); // Load database this->database.process_file(this->config.get("LadderDatabase"_jrs, "Ladder.Yearly.db"_jrs)); this->database.setName(this->config.get("DatabaseName"_jrs, "Yearly"_jrs)); this->database.setOutputTimes(this->config.get("OutputTimes"_jrs, false)); - this->last_sorted_year = gmtime(std::addressof(time(0)))->tm_year; + this->last_sorted_year = gmtime(¤t_time)->tm_year; this->database.OnPreUpdateLadder = OnPreUpdateLadder; // Force database to default, if desired @@ -44,7 +45,8 @@ RenX_Ladder_Yearly_TimePlugin pluginInstance; void OnPreUpdateLadder(RenX::LadderDatabase &database, RenX::Server &, const RenX::TeamType &) { - tm *tm_ptr = gmtime(std::addressof(time(0))); + time_t current_time = time(0); + tm *tm_ptr = gmtime(¤t_time); if (pluginInstance.last_sorted_year != tm_ptr->tm_year) database.erase(); pluginInstance.last_sorted_year = tm_ptr->tm_year; diff --git a/RenX.ServerList/RenX_ServerList.cpp b/RenX.ServerList/RenX_ServerList.cpp index 49eccd7..60b0723 100644 --- a/RenX.ServerList/RenX_ServerList.cpp +++ b/RenX.ServerList/RenX_ServerList.cpp @@ -450,7 +450,7 @@ void RenX_ServerListPlugin::addServerToServerList(RenX::Server &server) // append to server_list_json - if (RenX_ServerListPlugin::server_list_json.isEmpty()) + if (RenX_ServerListPlugin::server_list_json.size() <= 2) { RenX_ServerListPlugin::server_list_json = '['; RenX_ServerListPlugin::server_list_json += server_as_json(server); @@ -533,17 +533,15 @@ void RenX_ServerListPlugin::addServerToServerList(RenX::Server &server) auto node = server.players.begin(); - while (node != server.players.end()) + if (node != server.players.end()) { - if (node->isBot == false) - { - server_json_block += "{\"Name\":\""_jrs; - server_json_block += jsonify(node->name); - server_json_block += "\"}"_jrs; - - ++node; - break; - } + server_json_block += "{\"Name\":\""_jrs; + server_json_block += jsonify(node->name); + server_json_block += "\", \"isBot\":"_jrs; + server_json_block += json_bool_as_cstring(node->isBot); + server_json_block += ", \"Team\":"_jrs; + server_json_block.aformat("%d", static_cast(node->team)); + server_json_block += "}"_jrs; ++node; } @@ -552,7 +550,11 @@ void RenX_ServerListPlugin::addServerToServerList(RenX::Server &server) { server_json_block += ",{\"Name\":\""_jrs; server_json_block += jsonify(node->name); - server_json_block += "\"}"_jrs; + server_json_block += "\", \"isBot\":"_jrs; + server_json_block += json_bool_as_cstring(node->isBot); + server_json_block += ", \"Team\":"_jrs; + server_json_block.aformat("%d", static_cast(node->team)); + server_json_block += "}"_jrs; ++node; } @@ -571,7 +573,7 @@ void RenX_ServerListPlugin::updateServerList() size_t index = 0; RenX::Server *server; - // regenerate server_list_json and server_list_Game + // regenerate server_list_json and server_list_Game RenX_ServerListPlugin::server_list_json = '['; RenX_ServerListPlugin::server_list_game = server_list_game_header;