From c39cafe639c78a9573ae61ea265a98223c443203 Mon Sep 17 00:00:00 2001 From: Jessica James Date: Sat, 25 Jan 2020 12:52:15 -0600 Subject: [PATCH] Implemented tolerance; defined to 1 --- src/Plugins/RenX/RenX.KickDupes/RenX_KickDupes.cpp | 7 +++++-- src/Plugins/RenX/RenX.KickDupes/RenX_KickDupes.h | 3 +++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Plugins/RenX/RenX.KickDupes/RenX_KickDupes.cpp b/src/Plugins/RenX/RenX.KickDupes/RenX_KickDupes.cpp index 1464560..11c3656 100644 --- a/src/Plugins/RenX/RenX.KickDupes/RenX_KickDupes.cpp +++ b/src/Plugins/RenX/RenX.KickDupes/RenX_KickDupes.cpp @@ -41,10 +41,13 @@ void RenX_KickDupesPlugin::RenX_OnPlayerIdentify(RenX::Server &in_server, const } // Check to see if any other players on the server have the same HWID + size_t hits{}; for (auto& player : in_server.players) { if (player.hwid == in_player.hwid && player.id != in_player.id) { - // Two players have the same HWID, but separate player IDs; kick the pre-existing player. - in_server.forceKickPlayer(player, "Ghost client detected"_jrs); + // Two players have the same HWID, but separate player IDs; kick the pre-existing player if there's too many. + if (++hits > s_tolerance) { + in_server.forceKickPlayer(player, "Ghost client detected"_jrs); + } } } } diff --git a/src/Plugins/RenX/RenX.KickDupes/RenX_KickDupes.h b/src/Plugins/RenX/RenX.KickDupes/RenX_KickDupes.h index d535bae..2798ee9 100644 --- a/src/Plugins/RenX/RenX.KickDupes/RenX_KickDupes.h +++ b/src/Plugins/RenX/RenX.KickDupes/RenX_KickDupes.h @@ -30,6 +30,9 @@ class RenX_KickDupesPlugin : public RenX::Plugin public: // RenX::Plugin void RenX_OnPlayerIdentify(RenX::Server &server, const RenX::PlayerInfo &player) override; + +private: + static constexpr size_t s_tolerance{ 1 }; }; #endif // _RENX_KICKDUPES_H_HEADER