From ba002c8b5e8b7835016081e10a8d088716c12074 Mon Sep 17 00:00:00 2001 From: JustinAJ Date: Sun, 8 Feb 2015 23:50:09 -0500 Subject: [PATCH] Finished player data tracking for RCONv3. Player beacon disarms, building captures, vehicle steals, and vehicles stolen now tracked; appropriate tags added. --- Release/Plugins/RenX.Core.lib | Bin 99250 -> 99250 bytes RenX.Core/RenX_PlayerInfo.h | 4 +++ RenX.Core/RenX_Server.cpp | 49 +++++++++++++++++++++++++++------- RenX.Core/RenX_Tags.cpp | 32 ++++++++++++++++++++++ RenX.Core/RenX_Tags.h | 16 +++++++++++ 5 files changed, 91 insertions(+), 10 deletions(-) diff --git a/Release/Plugins/RenX.Core.lib b/Release/Plugins/RenX.Core.lib index 88a8c715163fbca4d511aeea1d30387680f23116..c5036ba26646e09272f5d82b9719c41ac86b9022 100644 GIT binary patch delta 6466 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 delta 6466 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 diff --git a/RenX.Core/RenX_PlayerInfo.h b/RenX.Core/RenX_PlayerInfo.h index 327e9dd..ae9b108 100644 --- a/RenX.Core/RenX_PlayerInfo.h +++ b/RenX.Core/RenX_PlayerInfo.h @@ -68,6 +68,10 @@ namespace RenX unsigned int wins = 0; unsigned int loses = 0; unsigned int beaconPlacements = 0; + unsigned int beaconDisarms = 0; + unsigned int captures = 0; + unsigned int steals = 0; + unsigned int stolen = 0; mutable Jupiter::StringS gamePrefix; mutable Jupiter::StringS formatNamePrefix; diff --git a/RenX.Core/RenX_Server.cpp b/RenX.Core/RenX_Server.cpp index 800573a..02d74c4 100644 --- a/RenX.Core/RenX_Server.cpp +++ b/RenX.Core/RenX_Server.cpp @@ -154,7 +154,8 @@ int RenX::Server::send(const Jupiter::ReadableString &command) { char *t = new char[command.size() + 2]; *t = 'c'; - for (size_t i = 0; i != command.size(); i++) t[i + 1] = command.get(i); + for (size_t i = 0; i != command.size(); i++) + t[i + 1] = command.get(i); t[command.size() + 1] = '\n'; int r; if (RenX::Server::profile->mustSanitize) @@ -211,7 +212,9 @@ int RenX::Server::sendData(const Jupiter::ReadableString &data) RenX::PlayerInfo *RenX::Server::getPlayer(int id) const { if (RenX::Server::players.size() == 0) return nullptr; - for (Jupiter::DLList::Node *node = RenX::Server::players.getNode(0); node != nullptr; node = node->next) if (node->data->id == id) return node->data; + for (Jupiter::DLList::Node *node = RenX::Server::players.getNode(0); node != nullptr; node = node->next) + if (node->data->id == id) + return node->data; return nullptr; } @@ -485,9 +488,10 @@ RenX::GameCommand *RenX::Server::getCommand(unsigned int index) const RenX::GameCommand *RenX::Server::getCommand(const Jupiter::ReadableString &trigger) const { + RenX::GameCommand *cmd; for (size_t i = 0; i != RenX::Server::commands.size(); i++) { - RenX::GameCommand *cmd = RenX::Server::commands.get(i); + cmd = RenX::Server::commands.get(i); if (cmd->matches(trigger)) return cmd; } @@ -539,26 +543,22 @@ void RenX::Server::addCommand(RenX::GameCommand *command) bool RenX::Server::removeCommand(RenX::GameCommand *command) { for (size_t i = 0; i != RenX::Server::commands.size(); i++) - { if (RenX::Server::commands.get(i) == command) { delete RenX::Server::commands.remove(i); return true; } - } return false; } bool RenX::Server::removeCommand(const Jupiter::ReadableString &trigger) { for (size_t i = 0; i != RenX::Server::commands.size(); i++) - { if (RenX::Server::commands.get(i)->matches(trigger)) { delete RenX::Server::commands.remove(i); return true; } - } return false; } @@ -682,6 +682,8 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) player = n->data; if (player != nullptr) { + player->score = 0.0f; + player->credits = 0.0f; player->kills = 0; player->deaths = 0; player->suicides = 0; @@ -689,6 +691,11 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) player->vehicleKills = 0; player->buildingKills = 0; player->defenceKills = 0; + player->beaconPlacements = 0; + player->beaconDisarms = 0; + player->captures = 0; + player->steals = 0; + player->stolen = 0; } } } @@ -878,7 +885,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) RenX::PlayerInfo *player = parseGetPlayerOrAdd(buff.getToken(4, RenX::DelimC)); Jupiter::ReferenceString objectType = buff.getToken(2, RenX::DelimC); if (objectType.match("*Beacon")) - player->beaconPlacements++; + player->beaconDisarms++; for (size_t i = 0; i < xPlugins.size(); i++) xPlugins.get(i)->RenX_OnDisarm(this, player, objectType); onAction(); @@ -903,6 +910,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) } TeamType oldTeam = teamToken.isEmpty() ? TeamType::None : RenX::getTeam(teamToken.get(0)); RenX::PlayerInfo *player = parseGetPlayerOrAdd(buff.getToken(4, RenX::DelimC)); + player->captures++; for (size_t i = 0; i < xPlugins.size(); i++) xPlugins.get(i)->RenX_OnCapture(this, player, building, oldTeam); onAction(); @@ -936,6 +944,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) if (playerToken.isEmpty() == false) { RenX::PlayerInfo *player = parseGetPlayerOrAdd(playerToken); + player->deaths++; Jupiter::ReferenceString type = buff.getToken(4, RenX::DelimC); Jupiter::ReferenceString damageType; if (type.equals("by")) @@ -965,6 +974,9 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) else kID = kIDToken.asInt(); RenX::PlayerInfo *killer = getPlayerOrAdd(kName, kID, vTeam, kIsBot, 0, Jupiter::ReferenceString::empty); + killer->kills++; + if (damageType.equals("Rx_DmgType_Headshot")) + killer->headshots++; for (size_t i = 0; i < xPlugins.size(); i++) xPlugins.get(i)->RenX_OnKill(this, killer, player, damageType); } @@ -977,6 +989,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) } else if (type.equals("suicide by")) { + player->suicides++; damageType = buff.getToken(5, RenX::DelimC); for (size_t i = 0; i < xPlugins.size(); i++) xPlugins.get(i)->RenX_OnSuicide(this, player, damageType); @@ -993,6 +1006,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) if (byLine.equals("by")) { RenX::PlayerInfo *player = parseGetPlayerOrAdd(buff.getToken(4, RenX::DelimC)); + player->steals++; for (size_t i = 0; i < xPlugins.size(); i++) xPlugins.get(i)->RenX_OnSteal(this, player, vehicle); } @@ -1000,6 +1014,8 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) { RenX::PlayerInfo *victim = parseGetPlayerOrAdd(buff.getToken(4, RenX::DelimC)); RenX::PlayerInfo *player = parseGetPlayerOrAdd(buff.getToken(6, RenX::DelimC)); + player->steals++; + victim->stolen++; for (size_t i = 0; i < xPlugins.size(); i++) xPlugins.get(i)->RenX_OnSteal(this, player, vehicle, victim); } @@ -1036,10 +1052,8 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) team = RenX::getTeam(teamToken.get(0)); if (idToken.equals("ai") || idToken.isEmpty()) - { for (size_t i = 0; i < xPlugins.size(); i++) xPlugins.get(i)->RenX_OnDestroy(this, name, team, objectName, RenX::getEnemy(team), damageType, type); - } else { int id; @@ -1051,6 +1065,20 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) } id = idToken.asInt(); RenX::PlayerInfo *player = getPlayerOrAdd(name, id, team, isBot, 0, Jupiter::ReferenceString::empty); + switch (type) + { + case RenX::ObjectType::Vehicle: + player->vehicleKills++; + break; + case RenX::ObjectType::Building: + player->buildingKills++; + break; + case RenX::ObjectType::Defence: + player->defenceKills++; + break; + default: + break; + } for (size_t i = 0; i < xPlugins.size(); i++) xPlugins.get(i)->RenX_OnDestroy(this, player, objectName, damageType, type); } @@ -1149,6 +1177,7 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) if (buff.getToken(5, RenX::DelimC).equals("steamid")) steamid = buff.getToken(6, RenX::DelimC).asUnsignedLongLong(); RenX::PlayerInfo *player = getPlayerOrAdd(name, id, team, isBot, steamid, buff.getToken(4, RenX::DelimC)); + player->joinTime = time(0); for (size_t i = 0; i < xPlugins.size(); i++) xPlugins.get(i)->RenX_OnJoin(this, player); } diff --git a/RenX.Core/RenX_Tags.cpp b/RenX.Core/RenX_Tags.cpp index 3e264d8..83b77a7 100644 --- a/RenX.Core/RenX_Tags.cpp +++ b/RenX.Core/RenX_Tags.cpp @@ -102,6 +102,10 @@ TagsImp::TagsImp() this->INTERNAL_WINS_TAG = this->getUniqueInternalTag(); this->INTERNAL_LOSES_TAG = this->getUniqueInternalTag(); this->INTERNAL_BEACON_PLACEMENTS_TAG = this->getUniqueInternalTag(); + this->INTERNAL_BEACON_DISARMS_TAG = this->getUniqueInternalTag(); + this->INTERNAL_CAPTURES_TAG = this->getUniqueInternalTag(); + this->INTERNAL_STEALS_TAG = this->getUniqueInternalTag(); + this->INTERNAL_STOLEN_TAG = this->getUniqueInternalTag(); this->INTERNAL_ACCESS_TAG = this->getUniqueInternalTag(); /** Victim tags */ @@ -133,6 +137,10 @@ TagsImp::TagsImp() this->INTERNAL_VICTIM_WINS_TAG = this->getUniqueInternalTag(); this->INTERNAL_VICTIM_LOSES_TAG = this->getUniqueInternalTag(); this->INTERNAL_VICTIM_BEACON_PLACEMENTS_TAG = this->getUniqueInternalTag(); + this->INTERNAL_VICTIM_BEACON_DISARMS_TAG = this->getUniqueInternalTag(); + this->INTERNAL_VICTIM_CAPTURES_TAG = this->getUniqueInternalTag(); + this->INTERNAL_VICTIM_STEALS_TAG = this->getUniqueInternalTag(); + this->INTERNAL_VICTIM_STOLEN_TAG = this->getUniqueInternalTag(); this->INTERNAL_VICTIM_ACCESS_TAG = this->getUniqueInternalTag(); /** Other tags */ @@ -187,6 +195,10 @@ TagsImp::TagsImp() 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->beaconDisarmsTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("BeaconDisarmsTag"), STRING_LITERAL_AS_REFERENCE("{BEACONDISARMS}")); + this->capturesTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("CapturesTag"), STRING_LITERAL_AS_REFERENCE("{CAPTURES}")); + this->stealsTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("StealsTag"), STRING_LITERAL_AS_REFERENCE("{STEALS}")); + this->stolenTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("StolenTag"), STRING_LITERAL_AS_REFERENCE("{STOLEN}")); this->accessTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("AccessTag"), STRING_LITERAL_AS_REFERENCE("{ACCESS}")); /** Victim player tags */ @@ -218,6 +230,10 @@ TagsImp::TagsImp() 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->victimBeaconDisarmsTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimBeaconDisarmsTag"), STRING_LITERAL_AS_REFERENCE("{VBEACONDISARMS}")); + this->victimCapturesTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimCapturesTag"), STRING_LITERAL_AS_REFERENCE("{VCAPTURES}")); + this->victimStealsTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimStealsTag"), STRING_LITERAL_AS_REFERENCE("{VSTEALS}")); + this->victimStolenTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimStolenTag"), STRING_LITERAL_AS_REFERENCE("{VSTOLEN}")); this->victimAccessTag = Jupiter::IRC::Client::Config->get(configSection, STRING_LITERAL_AS_REFERENCE("VictimAccessTag"), STRING_LITERAL_AS_REFERENCE("{VACCESS}")); /** Other tags */ @@ -280,6 +296,10 @@ void TagsImp::processTags(Jupiter::StringType &msg, const RenX::Server *server, 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_BEACON_DISARMS_TAG, Jupiter::StringS::Format("%u", player->beaconDisarms)); + msg.replace(this->INTERNAL_CAPTURES_TAG, Jupiter::StringS::Format("%u", player->captures)); + msg.replace(this->INTERNAL_STEALS_TAG, Jupiter::StringS::Format("%u", player->steals)); + msg.replace(this->INTERNAL_STOLEN_TAG, Jupiter::StringS::Format("%u", player->stolen)); msg.replace(this->INTERNAL_ACCESS_TAG, Jupiter::StringS::Format("%d", player->access)); } if (victim != nullptr) @@ -311,6 +331,10 @@ void TagsImp::processTags(Jupiter::StringType &msg, const RenX::Server *server, 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_BEACON_DISARMS_TAG, Jupiter::StringS::Format("%u", victim->beaconDisarms)); + msg.replace(this->INTERNAL_VICTIM_CAPTURES_TAG, Jupiter::StringS::Format("%u", victim->captures)); + msg.replace(this->INTERNAL_VICTIM_STEALS_TAG, Jupiter::StringS::Format("%u", victim->steals)); + msg.replace(this->INTERNAL_VICTIM_STOLEN_TAG, Jupiter::StringS::Format("%u", victim->stolen)); msg.replace(this->INTERNAL_VICTIM_ACCESS_TAG, Jupiter::StringS::Format("%d", victim->access)); } @@ -363,6 +387,10 @@ void TagsImp::sanitizeTags(Jupiter::StringType &fmt) 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->beaconDisarmsTag, this->INTERNAL_BEACON_DISARMS_TAG); + fmt.replace(this->capturesTag, this->INTERNAL_CAPTURES_TAG); + fmt.replace(this->stealsTag, this->INTERNAL_STEALS_TAG); + fmt.replace(this->stolenTag, this->INTERNAL_STOLEN_TAG); fmt.replace(this->accessTag, this->INTERNAL_ACCESS_TAG); /** Victim tags */ @@ -394,6 +422,10 @@ void TagsImp::sanitizeTags(Jupiter::StringType &fmt) 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->victimBeaconDisarmsTag, this->INTERNAL_VICTIM_BEACON_DISARMS_TAG); + fmt.replace(this->victimCapturesTag, this->INTERNAL_VICTIM_CAPTURES_TAG); + fmt.replace(this->victimStealsTag, this->INTERNAL_VICTIM_STEALS_TAG); + fmt.replace(this->victimStolenTag, this->INTERNAL_VICTIM_STOLEN_TAG); fmt.replace(this->victimAccessTag, this->INTERNAL_VICTIM_ACCESS_TAG); /** Other tags */ diff --git a/RenX.Core/RenX_Tags.h b/RenX.Core/RenX_Tags.h index df5f49a..05886b3 100644 --- a/RenX.Core/RenX_Tags.h +++ b/RenX.Core/RenX_Tags.h @@ -92,6 +92,10 @@ namespace RenX Jupiter::StringS INTERNAL_WINS_TAG; Jupiter::StringS INTERNAL_LOSES_TAG; Jupiter::StringS INTERNAL_BEACON_PLACEMENTS_TAG; + Jupiter::StringS INTERNAL_BEACON_DISARMS_TAG; + Jupiter::StringS INTERNAL_CAPTURES_TAG; + Jupiter::StringS INTERNAL_STEALS_TAG; + Jupiter::StringS INTERNAL_STOLEN_TAG; Jupiter::StringS INTERNAL_ACCESS_TAG; /** Victim tags */ @@ -123,6 +127,10 @@ namespace RenX Jupiter::StringS INTERNAL_VICTIM_WINS_TAG; Jupiter::StringS INTERNAL_VICTIM_LOSES_TAG; Jupiter::StringS INTERNAL_VICTIM_BEACON_PLACEMENTS_TAG; + Jupiter::StringS INTERNAL_VICTIM_BEACON_DISARMS_TAG; + Jupiter::StringS INTERNAL_VICTIM_CAPTURES_TAG; + Jupiter::StringS INTERNAL_VICTIM_STEALS_TAG; + Jupiter::StringS INTERNAL_VICTIM_STOLEN_TAG; Jupiter::StringS INTERNAL_VICTIM_ACCESS_TAG; /** Other tags */ @@ -177,6 +185,10 @@ namespace RenX Jupiter::StringS winsTag; Jupiter::StringS losesTag; Jupiter::StringS beaconPlacementsTag; + Jupiter::StringS beaconDisarmsTag; + Jupiter::StringS capturesTag; + Jupiter::StringS stealsTag; + Jupiter::StringS stolenTag; Jupiter::StringS accessTag; /** Victim tags */ @@ -208,6 +220,10 @@ namespace RenX Jupiter::StringS victimWinsTag; Jupiter::StringS victimLosesTag; Jupiter::StringS victimBeaconPlacementsTag; + Jupiter::StringS victimBeaconDisarmsTag; + Jupiter::StringS victimCapturesTag; + Jupiter::StringS victimStealsTag; + Jupiter::StringS victimStolenTag; Jupiter::StringS victimAccessTag; /** Other tags */