From 9b4aae9fa87a0bedd20f486860098b17e59fb3ee Mon Sep 17 00:00:00 2001 From: M'Dic Date: Wed, 29 Mar 2023 14:32:57 -0400 Subject: [PATCH] add (conf\cm): Counter Measure Fly Hack New Counter Measure FlyHACK New conf: Anticheat.CM.FLYHACK --- conf/Anticheat.conf.dist | 11 +++++++++++ src/AnticheatMgr.cpp | 23 +++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/conf/Anticheat.conf.dist b/conf/Anticheat.conf.dist index 28dacee..d929ccc 100644 --- a/conf/Anticheat.conf.dist +++ b/conf/Anticheat.conf.dist @@ -190,6 +190,17 @@ Anticheat.CM.TIMEMANIPULATION = 1 Anticheat.CM.Teleport = 0 +# +# Anticheat.CM.FLYHACK +# +# Description: Sets player back to the ground if fly hack is detected +# +# Default: 0 - (Disabled) +# 1 - (Enabled) +# + +Anticheat.CM.FLYHACK = 0 + # # Anticheat.CM.WriteLog # diff --git a/src/AnticheatMgr.cpp b/src/AnticheatMgr.cpp index ba176dd..d5b79b3 100644 --- a/src/AnticheatMgr.cpp +++ b/src/AnticheatMgr.cpp @@ -326,6 +326,29 @@ void AnticheatMgr::FlyHackDetection(Player* player, MovementInfo movementInfo) LOG_INFO("anticheat.module", "AnticheatMgr:: Fly-Hack detected player {} ({}) - Latency: {} ms - IP: {} - Cheat Flagged At: {}", player->GetName(), player->GetGUID().ToString(), latency, player->GetSession()->GetRemoteAddress().c_str(), goXYZ); } + if (sConfigMgr->GetOption("Anticheat.CM.FLYHACK", true)) + { // display warning at the center of the screen, hacky way? + std::string str = "|cFFFFFC00[Playername:|cFF00FFFF[|cFF60FF00" + std::string(player->GetName().c_str()) + "|cFF00FFFF] FLY HACK COUNTER MEASURE ALERT"; + WorldPacket data(SMSG_NOTIFICATION, (str.size() + 1)); + data << str; + sWorld->SendGlobalGMMessage(&data); + + Player* cheatertarget = player->GetSession()->GetPlayer(); + + WorldPacket cheater(12); + cheater.SetOpcode(SMSG_MOVE_UNSET_CAN_FLY); + + cheater << cheatertarget->GetPackGUID(); + cheater << uint32(0); + cheatertarget->SendMessageToSet(&cheater, true); + } + + if (sConfigMgr->GetOption("Anticheat.CM.ALERTCHAT", true)) + { + std::string str = "|cFFFFFC00 FLY HACK COUNTER MEASURE ALERT"; + sWorld->SendGMText(LANG_ANTICHEAT_COUNTERMEASURE, str.c_str(), player->GetName().c_str(), player->GetName().c_str()); + } + BuildReport(player, FLY_HACK_REPORT); }