From c2b3a0defb40f8171d6d1b114b4c21a45d0c24ba Mon Sep 17 00:00:00 2001 From: JustinAJ Date: Sat, 31 Jan 2015 18:13:30 -0500 Subject: [PATCH] Additional tags added; PlayerInfo IRC command now configurable. --- Release/Plugins/RenX.Core.lib | Bin 77548 -> 77548 bytes RenX.Commands/RenX_Commands.cpp | 26 ++++++- RenX.Commands/RenX_Commands.h | 4 ++ RenX.Core/RenX_Tags.cpp | 120 ++++++++++++++++++++++++++++++++ RenX.Core/RenX_Tags.h | 60 ++++++++++++++++ 5 files changed, 208 insertions(+), 2 deletions(-) diff --git a/Release/Plugins/RenX.Core.lib b/Release/Plugins/RenX.Core.lib index 86278a9dd9349388d379a422d8087ec41edd6f0e..d2d92491e748e0fa0b5988b58c1017bd3f62ce83 100644 GIT binary patch delta 5052 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 F{|BwWW*`6n diff --git a/RenX.Commands/RenX_Commands.cpp b/RenX.Commands/RenX_Commands.cpp index 58e1c54..e024162 100644 --- a/RenX.Commands/RenX_Commands.cpp +++ b/RenX.Commands/RenX_Commands.cpp @@ -24,6 +24,7 @@ #include "RenX_PlayerInfo.h" #include "RenX_Functions.h" #include "RenX_BanDatabase.h" +#include "RenX_Tags.h" inline bool togglePhasing(RenX::Server *server, bool newState) { @@ -65,6 +66,11 @@ void RenX_CommandsPlugin::RenX_OnDie(RenX::Server *server, const RenX::PlayerInf int RenX_CommandsPlugin::OnRehash() { RenX_CommandsPlugin::_defaultTempBanTime = Jupiter::IRC::Client::Config->getLongLong(RenX_CommandsPlugin::getName(), STRING_LITERAL_AS_REFERENCE("TBanTime"), 86400); + RenX_CommandsPlugin::playerInfoFormat = Jupiter::IRC::Client::Config->get(RenX_CommandsPlugin::getName(), STRING_LITERAL_AS_REFERENCE("PlayerInfoFormat"), STRING_LITERAL_AS_REFERENCE(IRCCOLOR "03[Player Info]" IRCCOLOR "04 Name: " IRCBOLD "{RNAME}" IRCBOLD " - ID: {ID} - Team: " IRCBOLD "{TEAML}" IRCBOLD " - Vehicle Kills: {VEHICLEKILLS} - Building Kills {BUILDINGKILLS} - Kills {KILLS} - Deaths: {DEATHS} - KDR: {KDR} - Access: {ACCESS}")); + RenX_CommandsPlugin::adminPlayerInfoFormat = Jupiter::IRC::Client::Config->get(RenX_CommandsPlugin::getName(), STRING_LITERAL_AS_REFERENCE("AdminPlayerInfoFormat"), Jupiter::StringS::Format("%.*s - IP: " IRCBOLD "{IP}" IRCBOLD " - Steam ID: " IRCBOLD "{STEAM}", RenX_CommandsPlugin::playerInfoFormat.size(), RenX_CommandsPlugin::playerInfoFormat.ptr())); + + RenX::sanitizeTags(RenX_CommandsPlugin::playerInfoFormat); + RenX::sanitizeTags(RenX_CommandsPlugin::adminPlayerInfoFormat); return 0; } @@ -73,6 +79,16 @@ time_t RenX_CommandsPlugin::getTBanTime() return RenX_CommandsPlugin::_defaultTempBanTime; } +const Jupiter::ReadableString &RenX_CommandsPlugin::getPlayerInfoFormat() const +{ + return RenX_CommandsPlugin::playerInfoFormat; +} + +const Jupiter::ReadableString &RenX_CommandsPlugin::getAdminPlayerInfoFormat() const +{ + return RenX_CommandsPlugin::adminPlayerInfoFormat; +} + RenX_CommandsPlugin::RenX_CommandsPlugin() { this->OnRehash(); @@ -421,7 +437,13 @@ void PlayerInfoIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableStrin player = node->data; if (player->name.findi(parameters) != Jupiter::INVALID_INDEX) { - const Jupiter::ReadableString &teamColor = RenX::getTeamColor(player->team); + if (source->getAccessLevel(channel, nick) > 1) + msg = pluginInstance.getAdminPlayerInfoFormat(); + else + msg = pluginInstance.getPlayerInfoFormat(); + RenX::processTags(msg, server, player); + source->sendMessage(channel, msg); + /*const Jupiter::ReadableString &teamColor = RenX::getTeamColor(player->team); const Jupiter::ReadableString &teamName = RenX::getFullTeamName(player->team); msg.format(IRCCOLOR "03[Player Info]" IRCCOLOR "%.*s Name: " IRCBOLD "%.*s" IRCBOLD " - ID: %d - Team: " IRCBOLD "%.*s" IRCBOLD " - Vehicle Kills: %u - Defence Kills: %u - Building Kills: %u - Kills: %u (%u headshots) - Deaths: %u (%u suicides) - KDR: %.2f - Access: %d", teamColor.size(), teamColor.ptr(), player->name.size(), player->name.ptr(), player->id, teamName.size(), teamName.ptr(), player->vehicleKills, player->defenceKills, player->buildingKills, player->kills, player->headshots, player->deaths, player->suicides, ((float)player->kills) / (player->deaths == 0 ? 1.0 : (float)player->deaths), player->access); if (source->getAccessLevel(channel, nick) > 1) @@ -446,7 +468,7 @@ void PlayerInfoIRCCommand::trigger(IRC_Bot *source, const Jupiter::ReadableStrin msg += player->adminType; msg += IRCBOLD; } - source->sendMessage(channel, msg); + source->sendMessage(channel, msg);*/ } } } diff --git a/RenX.Commands/RenX_Commands.h b/RenX.Commands/RenX_Commands.h index 2cc7b37..78aba29 100644 --- a/RenX.Commands/RenX_Commands.h +++ b/RenX.Commands/RenX_Commands.h @@ -38,11 +38,15 @@ public: // Jupiter::Plugin public: time_t getTBanTime(); + const Jupiter::ReadableString &getPlayerInfoFormat() const; + const Jupiter::ReadableString &getAdminPlayerInfoFormat() const; RenX_CommandsPlugin(); private: STRING_LITERAL_AS_NAMED_REFERENCE(name, "RenX.Commands"); time_t _defaultTempBanTime; + Jupiter::StringS playerInfoFormat; + Jupiter::StringS adminPlayerInfoFormat; }; GENERIC_CONSOLE_COMMAND(RCONConsoleCommand) diff --git a/RenX.Core/RenX_Tags.cpp b/RenX.Core/RenX_Tags.cpp index 04cdff4..30fa4ba 100644 --- a/RenX.Core/RenX_Tags.cpp +++ b/RenX.Core/RenX_Tags.cpp @@ -68,6 +68,21 @@ TagsImp::TagsImp() this->INTERNAL_TEAM_COLOR_TAG = STRING_LITERAL_AS_REFERENCE("\0TC\0"); this->INTERNAL_TEAM_SHORT_TAG = STRING_LITERAL_AS_REFERENCE("\0TS\0"); this->INTERNAL_TEAM_LONG_TAG = STRING_LITERAL_AS_REFERENCE("\0TL\0"); + this->INTERNAL_PING_TAG = STRING_LITERAL_AS_REFERENCE("\0PNG\0"); + this->INTERNAL_SCORE_TAG = STRING_LITERAL_AS_REFERENCE("\0SCR\0"); + this->INTERNAL_CREDITS_TAG = STRING_LITERAL_AS_REFERENCE("\0CRD\0"); + this->INTERNAL_KILLS_TAG = STRING_LITERAL_AS_REFERENCE("\0KIL\0"); + this->INTERNAL_DEATHS_TAG = STRING_LITERAL_AS_REFERENCE("\0DTH\0"); + this->INTERNAL_KDR_TAG = STRING_LITERAL_AS_REFERENCE("\0KDR\0"); + this->INTERNAL_SUICIDES_TAG = STRING_LITERAL_AS_REFERENCE("\0SCD\0"); + this->INTERNAL_HEADSHOTS_TAG = STRING_LITERAL_AS_REFERENCE("\0HDS\0"); + this->INTERNAL_VEHICLE_KILLS_TAG = STRING_LITERAL_AS_REFERENCE("\0VKS\0"); + this->INTERNAL_BUILDING_KILLS_TAG = STRING_LITERAL_AS_REFERENCE("\0BKS\0"); + this->INTERNAL_DEFENCE_KILLS_TAG = STRING_LITERAL_AS_REFERENCE("\0DKS\0"); + this->INTERNAL_WINS_TAG = STRING_LITERAL_AS_REFERENCE("\0WIN\0"); + this->INTERNAL_LOSES_TAG = STRING_LITERAL_AS_REFERENCE("\0LOS\0"); + this->INTERNAL_BEACON_PLACEMENTS_TAG = STRING_LITERAL_AS_REFERENCE("\0BPC\0"); + this->INTERNAL_ACCESS_TAG = STRING_LITERAL_AS_REFERENCE("\0ACS\0"); /** Victim tags */ this->INTERNAL_VICTIM_NAME_TAG = STRING_LITERAL_AS_REFERENCE("\0VNAME\0"); @@ -84,6 +99,21 @@ TagsImp::TagsImp() this->INTERNAL_VICTIM_TEAM_COLOR_TAG = STRING_LITERAL_AS_REFERENCE("\0VTC\0"); this->INTERNAL_VICTIM_TEAM_SHORT_TAG = STRING_LITERAL_AS_REFERENCE("\0VTS\0"); this->INTERNAL_VICTIM_TEAM_LONG_TAG = STRING_LITERAL_AS_REFERENCE("\0VTL\0"); + this->INTERNAL_VICTIM_PING_TAG = STRING_LITERAL_AS_REFERENCE("\0VPNG\0"); + this->INTERNAL_VICTIM_SCORE_TAG = STRING_LITERAL_AS_REFERENCE("\0VSCR\0"); + this->INTERNAL_VICTIM_CREDITS_TAG = STRING_LITERAL_AS_REFERENCE("\0VCRD\0"); + this->INTERNAL_VICTIM_KILLS_TAG = STRING_LITERAL_AS_REFERENCE("\0VKIL\0"); + this->INTERNAL_VICTIM_DEATHS_TAG = STRING_LITERAL_AS_REFERENCE("\0VDTH\0"); + this->INTERNAL_VICTIM_KDR_TAG = STRING_LITERAL_AS_REFERENCE("\0VKDR\0"); + this->INTERNAL_VICTIM_SUICIDES_TAG = STRING_LITERAL_AS_REFERENCE("\0VSCD\0"); + this->INTERNAL_VICTIM_HEADSHOTS_TAG = STRING_LITERAL_AS_REFERENCE("\0VHDS\0"); + this->INTERNAL_VICTIM_VEHICLE_KILLS_TAG = STRING_LITERAL_AS_REFERENCE("\0VVKS\0"); + this->INTERNAL_VICTIM_BUILDING_KILLS_TAG = STRING_LITERAL_AS_REFERENCE("\0VBKS\0"); + this->INTERNAL_VICTIM_DEFENCE_KILLS_TAG = STRING_LITERAL_AS_REFERENCE("\0VDKS\0"); + this->INTERNAL_VICTIM_WINS_TAG = STRING_LITERAL_AS_REFERENCE("\0VWIN\0"); + this->INTERNAL_VICTIM_LOSES_TAG = STRING_LITERAL_AS_REFERENCE("\0VLOS\0"); + this->INTERNAL_VICTIM_BEACON_PLACEMENTS_TAG = STRING_LITERAL_AS_REFERENCE("\0VBPC\0"); + this->INTERNAL_VICTIM_ACCESS_TAG = STRING_LITERAL_AS_REFERENCE("\0VACS\0"); /** Other tags */ this->INTERNAL_WEAPON_TAG = STRING_LITERAL_AS_REFERENCE("\0WEP\0"); @@ -120,6 +150,21 @@ TagsImp::TagsImp() this->teamColorTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("TeamColorTag"), STRING_LITERAL_AS_REFERENCE("{TCOLOR}")); this->teamShortTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("ShortTeamTag"), STRING_LITERAL_AS_REFERENCE("{TEAMS}")); this->teamLongTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("LongTeamTag"), STRING_LITERAL_AS_REFERENCE("{TEAML}")); + this->pingTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("PingTag"), STRING_LITERAL_AS_REFERENCE("{PING}")); + this->scoreTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("ScoreTag"), STRING_LITERAL_AS_REFERENCE("{SCORE}")); + this->creditsTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("CreditsTag"), STRING_LITERAL_AS_REFERENCE("{CREDITS}")); + this->killsTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("KillsTag"), STRING_LITERAL_AS_REFERENCE("{KILLS}")); + this->deathsTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("DeathsTag"), STRING_LITERAL_AS_REFERENCE("{DEATHS}")); + this->kdrTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("KDRTag"), STRING_LITERAL_AS_REFERENCE("{KDR}")); + this->suicidesTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("SuicidesTag"), STRING_LITERAL_AS_REFERENCE("{SUICIDES}")); + this->headshotsTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("HeadshotsTag"), STRING_LITERAL_AS_REFERENCE("{HEADSHOTS}")); + this->vehicleKillsTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VehicleKillsTag"), STRING_LITERAL_AS_REFERENCE("{VEHICLEKILLS}")); + this->buildingKillsTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("BuildingKillsTag"), STRING_LITERAL_AS_REFERENCE("{BUILDINGKILLS}")); + this->defenceKillsTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("DefenceKillsTag"), STRING_LITERAL_AS_REFERENCE("{DEFENCEKILLS}")); + this->winsTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("WinsTag"), STRING_LITERAL_AS_REFERENCE("{WINS}")); + this->losesTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("LosesTag"), STRING_LITERAL_AS_REFERENCE("{LOSES}")); + this->beaconPlacementsTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("BeaconPlacementsTag"), STRING_LITERAL_AS_REFERENCE("{BEACONPLACEMENTS}")); + this->accessTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("AccessTag"), STRING_LITERAL_AS_REFERENCE("{ACCESS}")); /** Victim player tags */ this->victimNameTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimNameTag"), STRING_LITERAL_AS_REFERENCE("{VNAME}")); @@ -136,6 +181,21 @@ TagsImp::TagsImp() this->victimTeamColorTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimTeamColorTag"), STRING_LITERAL_AS_REFERENCE("{VTCOLOR}")); this->victimTeamShortTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimShortTeamTag"), STRING_LITERAL_AS_REFERENCE("{VTEAMS}")); this->victimTeamLongTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimLongTeamTag"), STRING_LITERAL_AS_REFERENCE("{VTEAML}")); + this->victimPingTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimPingTag"), STRING_LITERAL_AS_REFERENCE("{VPING}")); + this->victimScoreTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimScoreTag"), STRING_LITERAL_AS_REFERENCE("{VSCORE}")); + this->victimCreditsTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimCreditsTag"), STRING_LITERAL_AS_REFERENCE("{VCREDITS}")); + this->victimKillsTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimKillsTag"), STRING_LITERAL_AS_REFERENCE("{VKILLS}")); + this->victimDeathsTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimDeathsTag"), STRING_LITERAL_AS_REFERENCE("{VDEATHS}")); + this->victimKDRTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimKDRTag"), STRING_LITERAL_AS_REFERENCE("{VKDR}")); + this->victimSuicidesTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimSuicidesTag"), STRING_LITERAL_AS_REFERENCE("{VSUICIDES}")); + this->victimHeadshotsTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimHeadshotsTag"), STRING_LITERAL_AS_REFERENCE("{VHEADSHOTS}")); + this->victimVehicleKillsTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimVehicleKillsTag"), STRING_LITERAL_AS_REFERENCE("{VVEHICLEKILLS}")); + this->victimBuildingKillsTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimBuildingKillsTag"), STRING_LITERAL_AS_REFERENCE("{VBUILDINGKILLS}")); + this->victimDefenceKillsTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimDefenceKillsTag"), STRING_LITERAL_AS_REFERENCE("{VDEFENCEKILLS}")); + this->victimWinsTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimWinsTag"), STRING_LITERAL_AS_REFERENCE("{VWINS}")); + this->victimLosesTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimLosesTag"), STRING_LITERAL_AS_REFERENCE("{VLOSES}")); + this->victimBeaconPlacementsTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimBeaconPlacementsTag"), STRING_LITERAL_AS_REFERENCE("{VBEACONPLACEMENTS}")); + this->victimAccessTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimAccessTag"), STRING_LITERAL_AS_REFERENCE("{VACCESS}")); /** Other tags */ this->weaponTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("WeaponTag"), STRING_LITERAL_AS_REFERENCE("{WEAPON}")); @@ -180,6 +240,21 @@ void TagsImp::processTags(Jupiter::StringType &msg, const RenX::Server *server, msg.replace(this->INTERNAL_TEAM_COLOR_TAG, RenX::getTeamColor(player->team)); msg.replace(this->INTERNAL_TEAM_SHORT_TAG, RenX::getTeamName(player->team)); msg.replace(this->INTERNAL_TEAM_LONG_TAG, RenX::getFullTeamName(player->team)); + msg.replace(this->INTERNAL_PING_TAG, Jupiter::StringS::Format("%.2f", player->ping)); + msg.replace(this->INTERNAL_SCORE_TAG, Jupiter::StringS::Format("%.0f", player->score)); + msg.replace(this->INTERNAL_CREDITS_TAG, Jupiter::StringS::Format("%.0f", player->credits)); + msg.replace(this->INTERNAL_KILLS_TAG, Jupiter::StringS::Format("%u", player->kills)); + msg.replace(this->INTERNAL_DEATHS_TAG, Jupiter::StringS::Format("%u", player->deaths)); + msg.replace(this->INTERNAL_KDR_TAG, Jupiter::StringS::Format("%.2f", static_cast(player->kills) / (player->deaths == 0 ? 1.0f : static_cast(player->deaths)))); + msg.replace(this->INTERNAL_SUICIDES_TAG, Jupiter::StringS::Format("%u", player->suicides)); + msg.replace(this->INTERNAL_HEADSHOTS_TAG, Jupiter::StringS::Format("%u", player->headshots)); + msg.replace(this->INTERNAL_VEHICLE_KILLS_TAG, Jupiter::StringS::Format("%u", player->vehicleKills)); + msg.replace(this->INTERNAL_BUILDING_KILLS_TAG, Jupiter::StringS::Format("%u", player->buildingKills)); + msg.replace(this->INTERNAL_DEFENCE_KILLS_TAG, Jupiter::StringS::Format("%u", player->defenceKills)); + msg.replace(this->INTERNAL_WINS_TAG, Jupiter::StringS::Format("%u", player->wins)); + msg.replace(this->INTERNAL_LOSES_TAG, Jupiter::StringS::Format("%u", player->loses)); + msg.replace(this->INTERNAL_BEACON_PLACEMENTS_TAG, Jupiter::StringS::Format("%u", player->beaconPlacements)); + msg.replace(this->INTERNAL_ACCESS_TAG, Jupiter::StringS::Format("%d", player->access)); } if (victim != nullptr) { @@ -196,6 +271,21 @@ void TagsImp::processTags(Jupiter::StringType &msg, const RenX::Server *server, msg.replace(this->INTERNAL_VICTIM_TEAM_COLOR_TAG, RenX::getTeamColor(victim->team)); msg.replace(this->INTERNAL_VICTIM_TEAM_SHORT_TAG, RenX::getTeamName(victim->team)); msg.replace(this->INTERNAL_VICTIM_TEAM_LONG_TAG, RenX::getFullTeamName(victim->team)); + msg.replace(this->INTERNAL_VICTIM_PING_TAG, Jupiter::StringS::Format("%f", victim->ping)); + msg.replace(this->INTERNAL_VICTIM_SCORE_TAG, Jupiter::StringS::Format("%f", victim->score)); + msg.replace(this->INTERNAL_VICTIM_CREDITS_TAG, Jupiter::StringS::Format("%f", victim->credits)); + msg.replace(this->INTERNAL_VICTIM_KILLS_TAG, Jupiter::StringS::Format("%u", victim->kills)); + msg.replace(this->INTERNAL_VICTIM_DEATHS_TAG, Jupiter::StringS::Format("%u", victim->deaths)); + msg.replace(this->INTERNAL_VICTIM_KDR_TAG, Jupiter::StringS::Format("%.2f", static_cast(victim->kills) / (victim->deaths == 0 ? 1.0f : static_cast(victim->deaths)))); + msg.replace(this->INTERNAL_VICTIM_SUICIDES_TAG, Jupiter::StringS::Format("%u", victim->suicides)); + msg.replace(this->INTERNAL_VICTIM_HEADSHOTS_TAG, Jupiter::StringS::Format("%u", victim->headshots)); + msg.replace(this->INTERNAL_VICTIM_VEHICLE_KILLS_TAG, Jupiter::StringS::Format("%u", victim->vehicleKills)); + msg.replace(this->INTERNAL_VICTIM_BUILDING_KILLS_TAG, Jupiter::StringS::Format("%u", victim->buildingKills)); + msg.replace(this->INTERNAL_VICTIM_DEFENCE_KILLS_TAG, Jupiter::StringS::Format("%u", victim->defenceKills)); + msg.replace(this->INTERNAL_VICTIM_WINS_TAG, Jupiter::StringS::Format("%u", victim->wins)); + msg.replace(this->INTERNAL_VICTIM_LOSES_TAG, Jupiter::StringS::Format("%u", victim->loses)); + msg.replace(this->INTERNAL_VICTIM_BEACON_PLACEMENTS_TAG, Jupiter::StringS::Format("%u", victim->beaconPlacements)); + msg.replace(this->INTERNAL_VICTIM_ACCESS_TAG, Jupiter::StringS::Format("%d", victim->access)); } Jupiter::ArrayList &xPlugins = *RenX::getCore()->getPlugins(); @@ -230,6 +320,21 @@ void TagsImp::sanitizeTags(Jupiter::StringType &fmt) fmt.replace(this->teamColorTag, this->INTERNAL_TEAM_COLOR_TAG); fmt.replace(this->teamShortTag, this->INTERNAL_TEAM_SHORT_TAG); fmt.replace(this->teamLongTag, this->INTERNAL_TEAM_LONG_TAG); + fmt.replace(this->pingTag, this->INTERNAL_PING_TAG); + fmt.replace(this->scoreTag, this->INTERNAL_SCORE_TAG); + fmt.replace(this->creditsTag, this->INTERNAL_CREDITS_TAG); + fmt.replace(this->killsTag, this->INTERNAL_KILLS_TAG); + fmt.replace(this->deathsTag, this->INTERNAL_DEATHS_TAG); + fmt.replace(this->kdrTag, this->INTERNAL_KDR_TAG); + fmt.replace(this->suicidesTag, this->INTERNAL_SUICIDES_TAG); + fmt.replace(this->headshotsTag, this->INTERNAL_HEADSHOTS_TAG); + fmt.replace(this->vehicleKillsTag, this->INTERNAL_VEHICLE_KILLS_TAG); + fmt.replace(this->buildingKillsTag, this->INTERNAL_BUILDING_KILLS_TAG); + fmt.replace(this->defenceKillsTag, this->INTERNAL_DEFENCE_KILLS_TAG); + fmt.replace(this->winsTag, this->INTERNAL_WINS_TAG); + fmt.replace(this->losesTag, this->INTERNAL_LOSES_TAG); + fmt.replace(this->beaconPlacementsTag, this->INTERNAL_BEACON_PLACEMENTS_TAG); + fmt.replace(this->accessTag, this->INTERNAL_ACCESS_TAG); /** Victim tags */ fmt.replace(this->victimNameTag, this->INTERNAL_VICTIM_NAME_TAG); @@ -246,6 +351,21 @@ void TagsImp::sanitizeTags(Jupiter::StringType &fmt) fmt.replace(this->victimTeamColorTag, this->INTERNAL_VICTIM_TEAM_COLOR_TAG); fmt.replace(this->victimTeamShortTag, this->INTERNAL_VICTIM_TEAM_SHORT_TAG); fmt.replace(this->victimTeamLongTag, this->INTERNAL_VICTIM_TEAM_LONG_TAG); + fmt.replace(this->victimPingTag, this->INTERNAL_VICTIM_PING_TAG); + fmt.replace(this->victimScoreTag, this->INTERNAL_VICTIM_SCORE_TAG); + fmt.replace(this->victimCreditsTag, this->INTERNAL_VICTIM_CREDITS_TAG); + fmt.replace(this->victimKillsTag, this->INTERNAL_VICTIM_KILLS_TAG); + fmt.replace(this->victimDeathsTag, this->INTERNAL_VICTIM_DEATHS_TAG); + fmt.replace(this->victimKDRTag, this->INTERNAL_VICTIM_KDR_TAG); + fmt.replace(this->victimSuicidesTag, this->INTERNAL_VICTIM_SUICIDES_TAG); + fmt.replace(this->victimHeadshotsTag, this->INTERNAL_VICTIM_HEADSHOTS_TAG); + fmt.replace(this->victimVehicleKillsTag, this->INTERNAL_VICTIM_VEHICLE_KILLS_TAG); + fmt.replace(this->victimBuildingKillsTag, this->INTERNAL_VICTIM_BUILDING_KILLS_TAG); + fmt.replace(this->victimDefenceKillsTag, this->INTERNAL_VICTIM_DEFENCE_KILLS_TAG); + fmt.replace(this->victimWinsTag, this->INTERNAL_VICTIM_WINS_TAG); + fmt.replace(this->victimLosesTag, this->INTERNAL_VICTIM_LOSES_TAG); + fmt.replace(this->victimBeaconPlacementsTag, this->INTERNAL_VICTIM_BEACON_PLACEMENTS_TAG); + fmt.replace(this->victimAccessTag, this->INTERNAL_VICTIM_ACCESS_TAG); /** Other tags */ fmt.replace(this->weaponTag, this->INTERNAL_WEAPON_TAG); diff --git a/RenX.Core/RenX_Tags.h b/RenX.Core/RenX_Tags.h index e9e1730..5915d8f 100644 --- a/RenX.Core/RenX_Tags.h +++ b/RenX.Core/RenX_Tags.h @@ -75,6 +75,21 @@ namespace RenX Jupiter::ReferenceString INTERNAL_TEAM_COLOR_TAG; Jupiter::ReferenceString INTERNAL_TEAM_SHORT_TAG; Jupiter::ReferenceString INTERNAL_TEAM_LONG_TAG; + Jupiter::ReferenceString INTERNAL_PING_TAG; + Jupiter::ReferenceString INTERNAL_SCORE_TAG; + Jupiter::ReferenceString INTERNAL_CREDITS_TAG; + Jupiter::ReferenceString INTERNAL_KILLS_TAG; + Jupiter::ReferenceString INTERNAL_DEATHS_TAG; + Jupiter::ReferenceString INTERNAL_KDR_TAG; + Jupiter::ReferenceString INTERNAL_SUICIDES_TAG; + Jupiter::ReferenceString INTERNAL_HEADSHOTS_TAG; + Jupiter::ReferenceString INTERNAL_VEHICLE_KILLS_TAG; + Jupiter::ReferenceString INTERNAL_BUILDING_KILLS_TAG; + Jupiter::ReferenceString INTERNAL_DEFENCE_KILLS_TAG; + Jupiter::ReferenceString INTERNAL_WINS_TAG; + Jupiter::ReferenceString INTERNAL_LOSES_TAG; + Jupiter::ReferenceString INTERNAL_BEACON_PLACEMENTS_TAG; + Jupiter::ReferenceString INTERNAL_ACCESS_TAG; /** Victim tags */ Jupiter::ReferenceString INTERNAL_VICTIM_NAME_TAG; @@ -91,6 +106,21 @@ namespace RenX Jupiter::ReferenceString INTERNAL_VICTIM_TEAM_COLOR_TAG; Jupiter::ReferenceString INTERNAL_VICTIM_TEAM_SHORT_TAG; Jupiter::ReferenceString INTERNAL_VICTIM_TEAM_LONG_TAG; + Jupiter::ReferenceString INTERNAL_VICTIM_PING_TAG; + Jupiter::ReferenceString INTERNAL_VICTIM_SCORE_TAG; + Jupiter::ReferenceString INTERNAL_VICTIM_CREDITS_TAG; + Jupiter::ReferenceString INTERNAL_VICTIM_KILLS_TAG; + Jupiter::ReferenceString INTERNAL_VICTIM_DEATHS_TAG; + Jupiter::ReferenceString INTERNAL_VICTIM_KDR_TAG; + Jupiter::ReferenceString INTERNAL_VICTIM_SUICIDES_TAG; + Jupiter::ReferenceString INTERNAL_VICTIM_HEADSHOTS_TAG; + Jupiter::ReferenceString INTERNAL_VICTIM_VEHICLE_KILLS_TAG; + Jupiter::ReferenceString INTERNAL_VICTIM_BUILDING_KILLS_TAG; + Jupiter::ReferenceString INTERNAL_VICTIM_DEFENCE_KILLS_TAG; + Jupiter::ReferenceString INTERNAL_VICTIM_WINS_TAG; + Jupiter::ReferenceString INTERNAL_VICTIM_LOSES_TAG; + Jupiter::ReferenceString INTERNAL_VICTIM_BEACON_PLACEMENTS_TAG; + Jupiter::ReferenceString INTERNAL_VICTIM_ACCESS_TAG; /** Other tags */ Jupiter::ReferenceString INTERNAL_WEAPON_TAG; @@ -127,6 +157,21 @@ namespace RenX Jupiter::StringS teamColorTag; Jupiter::StringS teamShortTag; Jupiter::StringS teamLongTag; + Jupiter::StringS pingTag; + Jupiter::StringS scoreTag; + Jupiter::StringS creditsTag; + Jupiter::StringS killsTag; + Jupiter::StringS deathsTag; + Jupiter::StringS kdrTag; + Jupiter::StringS suicidesTag; + Jupiter::StringS headshotsTag; + Jupiter::StringS vehicleKillsTag; + Jupiter::StringS buildingKillsTag; + Jupiter::StringS defenceKillsTag; + Jupiter::StringS winsTag; + Jupiter::StringS losesTag; + Jupiter::StringS beaconPlacementsTag; + Jupiter::StringS accessTag; /** Victim tags */ Jupiter::StringS victimNameTag; @@ -143,6 +188,21 @@ namespace RenX Jupiter::StringS victimTeamColorTag; Jupiter::StringS victimTeamShortTag; Jupiter::StringS victimTeamLongTag; + Jupiter::StringS victimPingTag; + Jupiter::StringS victimScoreTag; + Jupiter::StringS victimCreditsTag; + Jupiter::StringS victimKillsTag; + Jupiter::StringS victimDeathsTag; + Jupiter::StringS victimKDRTag; + Jupiter::StringS victimSuicidesTag; + Jupiter::StringS victimHeadshotsTag; + Jupiter::StringS victimVehicleKillsTag; + Jupiter::StringS victimBuildingKillsTag; + Jupiter::StringS victimDefenceKillsTag; + Jupiter::StringS victimWinsTag; + Jupiter::StringS victimLosesTag; + Jupiter::StringS victimBeaconPlacementsTag; + Jupiter::StringS victimAccessTag; /** Other tags */ Jupiter::StringS weaponTag;