diff --git a/Release/Bot.lib b/Release/Bot.lib index c955f56..0d164b0 100644 Binary files a/Release/Bot.lib and b/Release/Bot.lib differ diff --git a/Release/Plugins/RenX.Core.lib b/Release/Plugins/RenX.Core.lib index 1e31821..f54cf03 100644 Binary files a/Release/Plugins/RenX.Core.lib and b/Release/Plugins/RenX.Core.lib differ diff --git a/RenX.Core/RenX_Server.cpp b/RenX.Core/RenX_Server.cpp index 37a577b..bb8319f 100644 --- a/RenX.Core/RenX_Server.cpp +++ b/RenX.Core/RenX_Server.cpp @@ -26,6 +26,7 @@ #include "RenX_Functions.h" #include "RenX_Plugin.h" #include "RenX_BanDatabase.h" +#include "RenX_Tags.h" int RenX::Server::think() { @@ -476,12 +477,14 @@ bool RenX::Server::changeTeam(RenX::PlayerInfo *player, bool resetCredits) const Jupiter::ReadableString &RenX::Server::getPrefix() const { - return RenX::Server::IRCPrefix; + static Jupiter::StringS parsed; + RenX::processTags(parsed = RenX::Server::IRCPrefix, this); + return parsed; } void RenX::Server::setPrefix(const Jupiter::ReadableString &prefix) { - RenX::Server::IRCPrefix = prefix; + RenX::sanitizeTags(RenX::Server::IRCPrefix = prefix); } const Jupiter::ReadableString &RenX::Server::getCommandPrefix() const diff --git a/RenX.Core/RenX_Tags.cpp b/RenX.Core/RenX_Tags.cpp index b426305..acb6357 100644 --- a/RenX.Core/RenX_Tags.cpp +++ b/RenX.Core/RenX_Tags.cpp @@ -71,6 +71,10 @@ TagsImp::TagsImp() this->INTERNAL_USER_TAG = this->getUniqueInternalTag(); this->INTERNAL_SERVER_NAME_TAG = this->getUniqueInternalTag(); this->INTERNAL_MAP_TAG = this->getUniqueInternalTag(); + this->INTERNAL_SERVER_HOSTNAME_TAG = this->getUniqueInternalTag(); + this->INTERNAL_SERVER_PORT_TAG = this->getUniqueInternalTag(); + this->INTERNAL_SOCKET_HOSTNAME_TAG = this->getUniqueInternalTag(); + this->INTERNAL_SOCKET_PORT_TAG = this->getUniqueInternalTag(); /** Player tags*/ this->INTERNAL_NAME_TAG = this->getUniqueInternalTag(); @@ -163,6 +167,10 @@ TagsImp::TagsImp() this->userTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("UserTag"), STRING_LITERAL_AS_REFERENCE("{USER}")); this->serverNameTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("ServerNameTag"), STRING_LITERAL_AS_REFERENCE("{SERVERNAME}")); this->mapTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("MapTag"), STRING_LITERAL_AS_REFERENCE("{MAP}")); + this->serverHostnameTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("ServerHostnameTag"), STRING_LITERAL_AS_REFERENCE("{SERVERHOST}")); + this->serverPortTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("ServerPortTag"), STRING_LITERAL_AS_REFERENCE("{SERVERPORT}")); + this->socketHostnameTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("SocketHostnameTag"), STRING_LITERAL_AS_REFERENCE("{SOCKHOST}")); + this->socketPortTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("SocketPortTag"), STRING_LITERAL_AS_REFERENCE("{SOCKPORT}")); /** Player tags */ this->nameTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("NameTag"), STRING_LITERAL_AS_REFERENCE("{NAME}")); @@ -255,6 +263,10 @@ void TagsImp::processTags(Jupiter::StringType &msg, const RenX::Server *server, msg.replace(this->INTERNAL_USER_TAG, server->getUser()); msg.replace(this->INTERNAL_SERVER_NAME_TAG, server->getName()); msg.replace(this->INTERNAL_MAP_TAG, server->getMap()); + msg.replace(this->INTERNAL_SERVER_HOSTNAME_TAG, server->getHostname()); + msg.replace(this->INTERNAL_SERVER_PORT_TAG, Jupiter::StringS::Format("%u", server->getPort())); + msg.replace(this->INTERNAL_SOCKET_HOSTNAME_TAG, server->getSocketHostname()); + msg.replace(this->INTERNAL_SOCKET_PORT_TAG, Jupiter::StringS::Format("%u", server->getSocketPort())); if (player != nullptr) { msg.replace(this->INTERNAL_STEAM_TAG, server->formatSteamID(player)); @@ -353,6 +365,10 @@ void TagsImp::sanitizeTags(Jupiter::StringType &fmt) fmt.replace(this->userTag, this->INTERNAL_USER_TAG); fmt.replace(this->serverNameTag, this->INTERNAL_SERVER_NAME_TAG); fmt.replace(this->mapTag, this->INTERNAL_MAP_TAG); + fmt.replace(this->serverHostnameTag, this->INTERNAL_SERVER_HOSTNAME_TAG); + fmt.replace(this->serverPortTag, this->INTERNAL_SERVER_PORT_TAG); + fmt.replace(this->socketHostnameTag, this->INTERNAL_SOCKET_HOSTNAME_TAG); + fmt.replace(this->socketPortTag, this->INTERNAL_SOCKET_PORT_TAG); /** Player tags */ fmt.replace(this->nameTag, this->INTERNAL_NAME_TAG); diff --git a/RenX.Core/RenX_Tags.h b/RenX.Core/RenX_Tags.h index df8ce5b..2d970d5 100644 --- a/RenX.Core/RenX_Tags.h +++ b/RenX.Core/RenX_Tags.h @@ -60,6 +60,10 @@ namespace RenX Jupiter::StringS INTERNAL_USER_TAG; Jupiter::StringS INTERNAL_SERVER_NAME_TAG; Jupiter::StringS INTERNAL_MAP_TAG; + Jupiter::StringS INTERNAL_SERVER_HOSTNAME_TAG; + Jupiter::StringS INTERNAL_SERVER_PORT_TAG; + Jupiter::StringS INTERNAL_SOCKET_HOSTNAME_TAG; + Jupiter::StringS INTERNAL_SOCKET_PORT_TAG; /** Player tags */ Jupiter::StringS INTERNAL_NAME_TAG; @@ -152,6 +156,10 @@ namespace RenX Jupiter::StringS userTag; Jupiter::StringS serverNameTag; Jupiter::StringS mapTag; + Jupiter::StringS serverHostnameTag; + Jupiter::StringS serverPortTag; + Jupiter::StringS socketHostnameTag; + Jupiter::StringS socketPortTag; /** Player tags */ Jupiter::StringS nameTag;