From 073955e899895534c1bee4575500e6e3ddc1e2c2 Mon Sep 17 00:00:00 2001 From: JustinAJ Date: Thu, 26 Mar 2015 20:46:30 -0400 Subject: [PATCH] IRCPrefix is now prepended to all IRC output messages, if one is defined; Added RenX_OnIDChange() event --- Release/Plugins/RenX.Core.lib | Bin 107378 -> 107830 bytes RenX.Core/RenX_Plugin.cpp | 5 +++ RenX.Core/RenX_Plugin.h | 1 + RenX.Core/RenX_Server.cpp | 82 +++++++++++++++++++++++++++++----- 4 files changed, 76 insertions(+), 12 deletions(-) diff --git a/Release/Plugins/RenX.Core.lib b/Release/Plugins/RenX.Core.lib index a5613f0bafa3f41d3a24fa6e75f8949fcd23be40..b5ec07e71fd4c87e39921e69e37b88d604de40d3 100644 GIT binary patch delta 12467 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 F{Tr4#rT+i` diff --git a/RenX.Core/RenX_Plugin.cpp b/RenX.Core/RenX_Plugin.cpp index 0431434..6403751 100644 --- a/RenX.Core/RenX_Plugin.cpp +++ b/RenX.Core/RenX_Plugin.cpp @@ -80,6 +80,11 @@ void RenX::Plugin::RenX_OnTeamChange(Server *, const PlayerInfo *, const TeamTyp return; } +void RenX::Plugin::RenX_OnIDChange(Server *, const PlayerInfo *, int) +{ + return; +} + void RenX::Plugin::RenX_OnExecute(Server *, const PlayerInfo *, const Jupiter::ReadableString &) { return; diff --git a/RenX.Core/RenX_Plugin.h b/RenX.Core/RenX_Plugin.h index f9566d8..4497f55 100644 --- a/RenX.Core/RenX_Plugin.h +++ b/RenX.Core/RenX_Plugin.h @@ -52,6 +52,7 @@ namespace RenX virtual void RenX_OnPart(Server *server, const PlayerInfo *player); virtual void RenX_OnNameChange(Server *server, const PlayerInfo *player, const Jupiter::ReadableString &newPlayerName); virtual void RenX_OnTeamChange(Server *server, const PlayerInfo *player, const TeamType &oldTeam); + virtual void RenX_OnIDChange(Server *server, const PlayerInfo *player, int oldID); virtual void RenX_OnExecute(Server *server, const PlayerInfo *player, const Jupiter::ReadableString &command); virtual void RenX_OnPlayer(Server *server, const Jupiter::ReadableString &raw); diff --git a/RenX.Core/RenX_Server.cpp b/RenX.Core/RenX_Server.cpp index de14f13..6840eca 100644 --- a/RenX.Core/RenX_Server.cpp +++ b/RenX.Core/RenX_Server.cpp @@ -590,7 +590,7 @@ void RenX::Server::sendPubChan(const char *fmt, ...) const va_list args; va_start(args, fmt); Jupiter::StringL msg; - const Jupiter::ReadableString &serverPrefix = RenX::Server::IRCPrefix; + const Jupiter::ReadableString &serverPrefix = RenX::Server::getPrefix(); if (serverPrefix.isEmpty() == false) { msg += serverPrefix; @@ -599,13 +599,25 @@ void RenX::Server::sendPubChan(const char *fmt, ...) const } else msg.vformat(fmt, args); va_end(args); - RenX::Server::sendPubChan(msg); + for (size_t i = 0; i != serverManager->size(); i++) + serverManager->getServer(i)->messageChannels(RenX::Server::logChanType, msg); } void RenX::Server::sendPubChan(const Jupiter::ReadableString &msg) const { - for (size_t i = 0; i != serverManager->size(); i++) - serverManager->getServer(i)->messageChannels(RenX::Server::logChanType, msg); + const Jupiter::ReadableString &prefix = this->getPrefix(); + if (prefix.isEmpty() == false) + { + Jupiter::String m(msg.size() + prefix.size() + 1); + m.set(prefix); + m += ' '; + m += msg; + for (size_t i = 0; i != serverManager->size(); i++) + serverManager->getServer(i)->messageChannels(RenX::Server::logChanType, m); + } + else + for (size_t i = 0; i != serverManager->size(); i++) + serverManager->getServer(i)->messageChannels(RenX::Server::logChanType, msg); } void RenX::Server::sendAdmChan(const char *fmt, ...) const @@ -622,17 +634,30 @@ void RenX::Server::sendAdmChan(const char *fmt, ...) const } else msg.vformat(fmt, args); va_end(args); - RenX::Server::sendAdmChan(msg); + for (size_t i = 0; i != serverManager->size(); i++) + serverManager->getServer(i)->messageChannels(RenX::Server::adminLogChanType, msg); } void RenX::Server::sendAdmChan(const Jupiter::ReadableString &msg) const { - for (size_t i = 0; i != serverManager->size(); i++) - serverManager->getServer(i)->messageChannels(RenX::Server::adminLogChanType, msg); + const Jupiter::ReadableString &prefix = this->getPrefix(); + if (prefix.isEmpty() == false) + { + Jupiter::String m(msg.size() + prefix.size() + 1); + m.set(prefix); + m += ' '; + m += msg; + for (size_t i = 0; i != serverManager->size(); i++) + serverManager->getServer(i)->messageChannels(RenX::Server::adminLogChanType, m); + } + else + for (size_t i = 0; i != serverManager->size(); i++) + serverManager->getServer(i)->messageChannels(RenX::Server::adminLogChanType, msg); } void RenX::Server::sendLogChan(const char *fmt, ...) const { + IRC_Bot *server; va_list args; va_start(args, fmt); Jupiter::StringL msg; @@ -645,17 +670,38 @@ void RenX::Server::sendLogChan(const char *fmt, ...) const } else msg.vformat(fmt, args); va_end(args); - RenX::Server::sendLogChan(msg); + for (size_t i = 0; i != serverManager->size(); i++) + { + server = serverManager->getServer(i); + server->messageChannels(RenX::Server::logChanType, msg); + server->messageChannels(RenX::Server::adminLogChanType, msg); + } } void RenX::Server::sendLogChan(const Jupiter::ReadableString &msg) const { - for (size_t i = 0; i != serverManager->size(); i++) + IRC_Bot *server; + const Jupiter::ReadableString &prefix = this->getPrefix(); + if (prefix.isEmpty() == false) { - IRC_Bot *server = serverManager->getServer(i); - server->messageChannels(RenX::Server::logChanType, msg); - server->messageChannels(RenX::Server::adminLogChanType, msg); + Jupiter::String m(msg.size() + prefix.size() + 1); + m.set(prefix); + m += ' '; + m += msg; + for (size_t i = 0; i != serverManager->size(); i++) + { + server = serverManager->getServer(i); + server->messageChannels(RenX::Server::logChanType, m); + server->messageChannels(RenX::Server::adminLogChanType, m); + } } + else + for (size_t i = 0; i != serverManager->size(); i++) + { + server = serverManager->getServer(i); + server->messageChannels(RenX::Server::logChanType, msg); + server->messageChannels(RenX::Server::adminLogChanType, msg); + } } #define PARSE_PLAYER_DATA_P(DATA) \ @@ -1612,6 +1658,18 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) player->name = newName; onAction(); } + else if (subHeader.equals("ChangeID;")) + { + // "to" | New ID | "from" | Old ID + int oldID = buff.getToken(5, RenX::DelimC).asInt(); + RenX::PlayerInfo *player = this->getPlayer(oldID); + if (player != nullptr) + { + player->id = buff.getToken(3, RenX::DelimC).asInt(); + for (size_t i = 0; i < xPlugins.size(); i++) + xPlugins.get(i)->RenX_OnIDChange(this, player, oldID); + } + } else { Jupiter::ReferenceString raw = buff.gotoToken(1, RenX::DelimC);