From 6901c90279fc03d73cefbc4dba230282f99bc6b7 Mon Sep 17 00:00:00 2001 From: JAJames Date: Mon, 22 Aug 2016 10:17:27 -0400 Subject: [PATCH] Added support for new HWID log Revised nBab's pull request Removed compiled .lib files --- Release/Bot.lib | Bin 24276 -> 0 bytes Release/Plugins/RenX.Core.lib | Bin 208484 -> 0 bytes RenX.Core/RenX_Functions.cpp | 124 +++++++--------------------------- RenX.Core/RenX_Plugin.cpp | 5 ++ RenX.Core/RenX_Plugin.h | 1 + RenX.Core/RenX_Server.cpp | 19 ++++++ 6 files changed, 49 insertions(+), 100 deletions(-) delete mode 100644 Release/Bot.lib delete mode 100644 Release/Plugins/RenX.Core.lib diff --git a/Release/Bot.lib b/Release/Bot.lib deleted file mode 100644 index d652ed9d18eb687248e5e163d096a0f9c830650f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24276 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

+#x;2?d9&HOACr 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 diff --git a/RenX.Core/RenX_Functions.cpp b/RenX.Core/RenX_Functions.cpp index 80d2617..5f181a3 100644 --- a/RenX.Core/RenX_Functions.cpp +++ b/RenX.Core/RenX_Functions.cpp @@ -92,6 +92,9 @@ Jupiter::ReferenceString translated_Vehicle_StealthTank = STRING_LITERAL_AS_REFE Jupiter::ReferenceString translated_Vehicle_Chinook_Nod = STRING_LITERAL_AS_REFERENCE("Nod Chinook"); Jupiter::ReferenceString translated_Vehicle_Apache = STRING_LITERAL_AS_REFERENCE("Apache"); +Jupiter::ReferenceString translated_Vehicle_ReconBike = STRING_LITERAL_AS_REFERENCE("Recon Bike"); +Jupiter::ReferenceString translated_Vehicle_TickTank = STRING_LITERAL_AS_REFERENCE("Tick Tank"); + /** GDI Vehicles */ Jupiter::ReferenceString translated_Vehicle_Harvester_GDI = STRING_LITERAL_AS_REFERENCE("GDI Harvester"); Jupiter::ReferenceString translated_Vehicle_Humvee = STRING_LITERAL_AS_REFERENCE("Humvee"); @@ -102,6 +105,10 @@ Jupiter::ReferenceString translated_Vehicle_MammothTank = STRING_LITERAL_AS_REFE Jupiter::ReferenceString translated_Vehicle_Chinook_GDI = STRING_LITERAL_AS_REFERENCE("GDI Chinook"); Jupiter::ReferenceString translated_Vehicle_Orca = STRING_LITERAL_AS_REFERENCE("Orca"); +Jupiter::ReferenceString translated_Vehicle_HoverMRLS = STRING_LITERAL_AS_REFERENCE("Hover MRLS"); +Jupiter::ReferenceString translated_Vehicle_Titan = STRING_LITERAL_AS_REFERENCE("Titan"); +Jupiter::ReferenceString translated_Vehicle_Wolverine = STRING_LITERAL_AS_REFERENCE("Wolverine"); + /** Other Vehicles */ Jupiter::ReferenceString translated_Vehicle_A10_DmgType_GattlingGun = STRING_LITERAL_AS_REFERENCE("A10 Thunderbolt Gattling Gun"); Jupiter::ReferenceString translated_Vehicle_A10_DmgType_Bomb = STRING_LITERAL_AS_REFERENCE("A10 Thunderbolt Bomb"); @@ -260,6 +267,9 @@ Jupiter::ReferenceString translated_DmgType_StealthTank = STRING_LITERAL_AS_REFE Jupiter::ReferenceString translated_DmgType_Chinook_Nod = STRING_LITERAL_AS_REFERENCE("Nod Chinook"); Jupiter::ReferenceString translated_DmgType_Apache = STRING_LITERAL_AS_REFERENCE("Apache"); +Jupiter::ReferenceString translated_Vehicle_ReconBike_DmgType = STRING_LITERAL_AS_REFERENCE("Recon Bike"); +Jupiter::ReferenceString translated_Vehicle_TickTank_DmgType = STRING_LITERAL_AS_REFERENCE("Tick Tank"); + /** GDI Vehicles */ Jupiter::ReferenceString translated_DmgType_Harvester_GDI = STRING_LITERAL_AS_REFERENCE("GDI Harvester"); Jupiter::ReferenceString translated_DmgType_Humvee = STRING_LITERAL_AS_REFERENCE("Humvee"); @@ -270,6 +280,10 @@ Jupiter::ReferenceString translated_DmgType_MammothTank = STRING_LITERAL_AS_REFE Jupiter::ReferenceString translated_DmgType_Chinook_GDI = STRING_LITERAL_AS_REFERENCE("GDI Chinook"); Jupiter::ReferenceString translated_DmgType_Orca = STRING_LITERAL_AS_REFERENCE("Orca"); +Jupiter::ReferenceString translated_Vehicle_HoverMRLS_DmgType = STRING_LITERAL_AS_REFERENCE("Hover MRLS"); +Jupiter::ReferenceString translated_Vehicle_Titan_DmgType = STRING_LITERAL_AS_REFERENCE("Titan"); +Jupiter::ReferenceString translated_Vehicle_Wolverine_DmgType = STRING_LITERAL_AS_REFERENCE("Wolverine"); + /** Other Vehicles */ Jupiter::ReferenceString translated_DmgType_A10_Missile = STRING_LITERAL_AS_REFERENCE("A10 Missile"); @@ -335,30 +349,6 @@ Jupiter::ReferenceString translated_IonCannonBeacon = STRING_LITERAL_AS_REFERENC Jupiter::ReferenceString translated_NukeBeacon = STRING_LITERAL_AS_REFERENCE("Nuclear Strike Beacon"); Jupiter::ReferenceString translated_KillZDamageType = STRING_LITERAL_AS_REFERENCE("Kill Zone"); -/***************************** - * TIBERIAN SUN TRANSLATIONS - *****************************/ - -/** Nod Tiberian Sun Vehicles */ -Jupiter::ReferenceString translated_TS_Vehicle_Buggy = STRING_LITERAL_AS_REFERENCE("TS Buggy"); -Jupiter::ReferenceString translated_TS_Vehicle_ReconBike = STRING_LITERAL_AS_REFERENCE("Recon Bike"); -Jupiter::ReferenceString translated_TS_Vehicle_TickTank = STRING_LITERAL_AS_REFERENCE("Tick-Tank"); - -/** GDI Tiberian Sun Vehicles */ -Jupiter::ReferenceString translated_TS_Vehicle_HoverMRLS = STRING_LITERAL_AS_REFERENCE("Hover MRLS"); -Jupiter::ReferenceString translated_TS_Vehicle_Titan = STRING_LITERAL_AS_REFERENCE("Titan"); -Jupiter::ReferenceString translated_TS_Vehicle_Wolverine = STRING_LITERAL_AS_REFERENCE("Wolverine"); - -/** Nod Tiberian Sun Vehicle Damage Types */ -Jupiter::ReferenceString translated_TS_Vehicle_Buggy_DmgType = STRING_LITERAL_AS_REFERENCE("TS Buggy"); -Jupiter::ReferenceString translated_TS_Vehicle_ReconBike_DmgType = STRING_LITERAL_AS_REFERENCE("Recon Bike"); -Jupiter::ReferenceString translated_TS_Vehicle_TickTank_DmgType = STRING_LITERAL_AS_REFERENCE("Tick-Tank"); - -/** GDI Tiberian Sun Vehicle Damage Types*/ -Jupiter::ReferenceString translated_TS_Vehicle_HoverMRLS_DmgType = STRING_LITERAL_AS_REFERENCE("Hover MRLS"); -Jupiter::ReferenceString translated_TS_Vehicle_Titan_DmgType = STRING_LITERAL_AS_REFERENCE("Titan"); -Jupiter::ReferenceString translated_TS_Vehicle_Wolverine_DmgType = STRING_LITERAL_AS_REFERENCE("Wolverine"); - RenX::TeamType RenX::getTeam(int teamNum) { switch (teamNum) @@ -507,85 +497,13 @@ const Jupiter::ReferenceString RenX::translateName(const Jupiter::ReadableString Jupiter::ReferenceString object = obj; - if (object.find(STRING_LITERAL_AS_REFERENCE("TS_")) == 0) - { - object.shiftRight(3); - if (object.find(STRING_LITERAL_AS_REFERENCE("Vehicle_")) == 0) - { - object.shiftRight(8); - - /** Nod Tiberian Sun Vehicles */ - if (object.equals(STRING_LITERAL_AS_REFERENCE("Buggy"))) return translated_TS_Vehicle_Buggy; - if (object.equals(STRING_LITERAL_AS_REFERENCE("ReconBike"))) return translated_TS_Vehicle_ReconBike; - if (object.equals(STRING_LITERAL_AS_REFERENCE("TickTank"))) return translated_TS_Vehicle_TickTank; - - /** GDI Tiberian Sun Vehicles */ - if (object.equals(STRING_LITERAL_AS_REFERENCE("HoverMRLS"))) return translated_TS_Vehicle_HoverMRLS; - if (object.equals(STRING_LITERAL_AS_REFERENCE("Titan"))) return translated_TS_Vehicle_Titan; - if (object.equals(STRING_LITERAL_AS_REFERENCE("Wolverine"))) return translated_TS_Vehicle_Wolverine; - - /** Nod Tiberian Sun Vehicle Damage Types */ - if (object.equals(STRING_LITERAL_AS_REFERENCE("Buggy_DmgType"))) return translated_TS_Vehicle_Buggy_DmgType; - if (object.equals(STRING_LITERAL_AS_REFERENCE("ReconBike_DmgType"))) return translated_TS_Vehicle_ReconBike_DmgType; - if (object.equals(STRING_LITERAL_AS_REFERENCE("TickTank_DmgType"))) return translated_TS_Vehicle_TickTank_DmgType; - - /** GDI Tiberian Sun Vehicle Damage Types */ - if (object.equals(STRING_LITERAL_AS_REFERENCE("HoverMRLS_DmgType"))) return translated_TS_Vehicle_HoverMRLS_DmgType; - if (object.equals(STRING_LITERAL_AS_REFERENCE("Titan_DmgType"))) return translated_TS_Vehicle_Titan_DmgType; - if (object.equals(STRING_LITERAL_AS_REFERENCE("Wolverine_DmgType"))) return translated_TS_Vehicle_Wolverine_DmgType; - } - return object; - } - - /** Fort Vehicles */ if (object.find(STRING_LITERAL_AS_REFERENCE("nBab_")) == 0) - { - object.shiftRight(3); - if (object.find(STRING_LITERAL_AS_REFERENCE("TS_")) == 0) - { - object.shiftRight(3); - if (object.find(STRING_LITERAL_AS_REFERENCE("Vehicle_")) == 0) - { - object.shiftRight(8); - /** Nod Tiberian Sun Vehicles */ - if (object.equals(STRING_LITERAL_AS_REFERENCE("Buggy"))) return translated_TS_Vehicle_Buggy; - } - } - else if (object.find(STRING_LITERAL_AS_REFERENCE("Vehicle_")) == 0) - { - object.shiftRight(8); - - /** Nod Tiberian Sun Vehicles */ - if (object.equals(STRING_LITERAL_AS_REFERENCE("ReconBike"))) return translated_TS_Vehicle_ReconBike; - if (object.equals(STRING_LITERAL_AS_REFERENCE("TickTank"))) return translated_TS_Vehicle_TickTank; - - /** GDI Tiberian Sun Vehicles */ - if (object.equals(STRING_LITERAL_AS_REFERENCE("HoverMRLS"))) return translated_TS_Vehicle_HoverMRLS; - if (object.equals(STRING_LITERAL_AS_REFERENCE("Titan"))) return translated_TS_Vehicle_Titan; - if (object.equals(STRING_LITERAL_AS_REFERENCE("Wolverine"))) return translated_TS_Vehicle_Wolverine; - - /** Nod Vehicles */ - if (object.equals(STRING_LITERAL_AS_REFERENCE("Harvester_Nod"))) return translated_Vehicle_Harvester_Nod; - if (object.equals(STRING_LITERAL_AS_REFERENCE("Buggy"))) return translated_Vehicle_Buggy; - if (object.equals(STRING_LITERAL_AS_REFERENCE("Artillery"))) return translated_Vehicle_Artillery; - if (object.equals(STRING_LITERAL_AS_REFERENCE("APC_Nod"))) return translated_Vehicle_APC_Nod; - if (object.equals(STRING_LITERAL_AS_REFERENCE("LightTank"))) return translated_Vehicle_LightTank; - if (object.equals(STRING_LITERAL_AS_REFERENCE("FlameTank"))) return translated_Vehicle_FlameTank; - if (object.equals(STRING_LITERAL_AS_REFERENCE("StealthTank"))) return translated_Vehicle_StealthTank; - - /** GDI Vehicles */ - if (object.equals(STRING_LITERAL_AS_REFERENCE("Harvester_GDI"))) return translated_Vehicle_Harvester_GDI; - if (object.equals(STRING_LITERAL_AS_REFERENCE("Humvee"))) return translated_Vehicle_Humvee; - if (object.equals(STRING_LITERAL_AS_REFERENCE("MRLS"))) return translated_Vehicle_MRLS; - if (object.equals(STRING_LITERAL_AS_REFERENCE("APC_GDI"))) return translated_Vehicle_APC_GDI; - if (object.equals(STRING_LITERAL_AS_REFERENCE("MediumTank"))) return translated_Vehicle_MediumTank; - if (object.equals(STRING_LITERAL_AS_REFERENCE("MammothTank"))) return translated_Vehicle_MammothTank; - } - return object; - } + object.shiftRight(5); if (object.find(STRING_LITERAL_AS_REFERENCE("Rx_")) == 0) object.shiftRight(3); + else if (object.find(STRING_LITERAL_AS_REFERENCE("TS_")) == 0) + object.shiftRight(3); if (object.find(STRING_LITERAL_AS_REFERENCE("Vehicle_")) == 0) { @@ -602,6 +520,9 @@ const Jupiter::ReferenceString RenX::translateName(const Jupiter::ReadableString if (object.equals(STRING_LITERAL_AS_REFERENCE("Chinook_Nod"))) return translated_Vehicle_Chinook_Nod; if (object.equals(STRING_LITERAL_AS_REFERENCE("Apache"))) return translated_Vehicle_Apache; + if (object.equals(STRING_LITERAL_AS_REFERENCE("ReconBike"))) return translated_Vehicle_ReconBike; + if (object.equals(STRING_LITERAL_AS_REFERENCE("TickTank"))) return translated_Vehicle_TickTank; + /** GDI Vehicles */ if (object.equals(STRING_LITERAL_AS_REFERENCE("Harvester_GDI"))) return translated_Vehicle_Harvester_GDI; if (object.equals(STRING_LITERAL_AS_REFERENCE("Humvee"))) return translated_Vehicle_Humvee; @@ -612,6 +533,10 @@ const Jupiter::ReferenceString RenX::translateName(const Jupiter::ReadableString if (object.equals(STRING_LITERAL_AS_REFERENCE("Chinook_GDI"))) return translated_Vehicle_Chinook_GDI; if (object.equals(STRING_LITERAL_AS_REFERENCE("Orca"))) return translated_Vehicle_Orca; + if (object.equals(STRING_LITERAL_AS_REFERENCE("HoverMRLS"))) return translated_Vehicle_HoverMRLS; + if (object.equals(STRING_LITERAL_AS_REFERENCE("Titan"))) return translated_Vehicle_Titan; + if (object.equals(STRING_LITERAL_AS_REFERENCE("Wolverine"))) return translated_Vehicle_Wolverine; + /** Other Vehicles */ if (object.equals(STRING_LITERAL_AS_REFERENCE("A10_DmgType_GattlingGun"))) return translated_Vehicle_A10_DmgType_GattlingGun; if (object.equals(STRING_LITERAL_AS_REFERENCE("A10_DmgType_Bomb"))) return translated_Vehicle_A10_DmgType_Bomb; @@ -813,7 +738,6 @@ const Jupiter::ReferenceString RenX::translateName(const Jupiter::ReadableString else if (object.find(STRING_LITERAL_AS_REFERENCE("CapturableMCT_")) == 0) { object.shiftRight(14); - /** Fort structures */ if (object.equals(STRING_LITERAL_AS_REFERENCE("Fort"))) return translated_CapturableMCT_Fort; if (object.equals(STRING_LITERAL_AS_REFERENCE("MC"))) return translated_CapturableMCT_MC; if (object.equals(STRING_LITERAL_AS_REFERENCE("Fort_Internals"))) return translated_CapturableMCT_Fort_Internals; diff --git a/RenX.Core/RenX_Plugin.cpp b/RenX.Core/RenX_Plugin.cpp index 49ade7f..07f2b0b 100644 --- a/RenX.Core/RenX_Plugin.cpp +++ b/RenX.Core/RenX_Plugin.cpp @@ -111,6 +111,11 @@ void RenX::Plugin::RenX_OnTeamChange(Server *, const PlayerInfo *, const TeamTyp return; } +void RenX::Plugin::RenX_OnHWID(Server *, const PlayerInfo *) +{ + return; +} + void RenX::Plugin::RenX_OnIDChange(Server *, const PlayerInfo *, int) { return; diff --git a/RenX.Core/RenX_Plugin.h b/RenX.Core/RenX_Plugin.h index 915394f..86380df 100644 --- a/RenX.Core/RenX_Plugin.h +++ b/RenX.Core/RenX_Plugin.h @@ -61,6 +61,7 @@ namespace RenX virtual void RenX_OnKick(Server *server, const PlayerInfo *player, const Jupiter::ReadableString &reason); 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_OnHWID(Server *server, const PlayerInfo *player); virtual void RenX_OnIDChange(Server *server, const PlayerInfo *player, int oldID); virtual void RenX_OnRank(Server *server, const PlayerInfo *player); virtual void RenX_OnDev(Server *server, const PlayerInfo *player); diff --git a/RenX.Core/RenX_Server.cpp b/RenX.Core/RenX_Server.cpp index 28ec8f8..426ae05 100644 --- a/RenX.Core/RenX_Server.cpp +++ b/RenX.Core/RenX_Server.cpp @@ -2664,6 +2664,22 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) xPlugins.get(i)->RenX_OnTeamChange(this, player, oldTeam); } } + else if (subHeader.equals("HWID;")) + { + // ["player" |] Player | "hwid" | HWID + size_t offset = 0; + if (tokens.getToken(2).equals("player")) + offset = 1; + + RenX::PlayerInfo *player = parseGetPlayerOrAdd(tokens.getToken(2 + offset)); + player->hwid = tokens.getToken(4 + offset); + + if (player->isBot == false) + this->banCheck(player); + + for (size_t index = 0; index < xPlugins.size(); ++index) + xPlugins.get(index)->RenX_OnHWID(this, player); + } else if (subHeader.equals("Exit;")) { // Player @@ -2709,13 +2725,16 @@ void RenX::Server::processLine(const Jupiter::ReadableString &line) if (player != nullptr) { player->id = tokens.getToken(3).asInt(); + if (player->isBot == false) this->banCheck(player); + if (this->devBot && player->global_rank != 0U) { if (this->rconVersion >= 4) this->sendData(Jupiter::StringS::Format("dset_rank %d %d\n", player->id, player->global_rank)); } + for (size_t i = 0; i < xPlugins.size(); i++) xPlugins.get(i)->RenX_OnIDChange(this, player, oldID); }