mirror of
https://github.com/azerothcore/mod-anticheat.git
synced 2026-01-13 00:58:35 +00:00
Auto Jailing: Spell Cast Disable, code clean up
Permanent silence casted on offender when using .anticheat jail or if auto jail is turned on, they will not be able to cast any spells to teleport out of there. Code Style Clean up review on the TC Side of the module thanks to @jackpoz that i was able to bring over to this module and remove magic number dealing with resurrection sickness.
This commit is contained in:
@@ -30,7 +30,9 @@ enum Spells
|
|||||||
{
|
{
|
||||||
SHACKLES = 38505,
|
SHACKLES = 38505,
|
||||||
LFG_SPELL_DUNGEON_DESERTER = 71041,
|
LFG_SPELL_DUNGEON_DESERTER = 71041,
|
||||||
BG_SPELL_DESERTER = 26013
|
BG_SPELL_DESERTER = 26013,
|
||||||
|
SILENCED = 23207,
|
||||||
|
RESURRECTION_SICKNESS = 15007
|
||||||
};
|
};
|
||||||
|
|
||||||
AnticheatMgr::AnticheatMgr()
|
AnticheatMgr::AnticheatMgr()
|
||||||
@@ -88,7 +90,7 @@ void AnticheatMgr::WalkOnWaterHackDetection(Player* player, MovementInfo moveme
|
|||||||
|
|
||||||
// Prevents the False Positive for water walking when you ressurrect.
|
// Prevents the False Positive for water walking when you ressurrect.
|
||||||
// Aura 15007 (Resurrection sickness) is given while dead before returning back to life.
|
// Aura 15007 (Resurrection sickness) is given while dead before returning back to life.
|
||||||
if (player->HasAuraType(SPELL_AURA_GHOST) && player->HasAura(15007))
|
if (player->HasAuraType(SPELL_AURA_GHOST) && player->HasAura(RESURRECTION_SICKNESS))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (m_Players[key].GetLastMovementInfo().HasMovementFlag(MOVEMENTFLAG_WATERWALKING) && movementInfo.HasMovementFlag(MOVEMENTFLAG_WATERWALKING))
|
if (m_Players[key].GetLastMovementInfo().HasMovementFlag(MOVEMENTFLAG_WATERWALKING) && movementInfo.HasMovementFlag(MOVEMENTFLAG_WATERWALKING))
|
||||||
@@ -191,8 +193,7 @@ void AnticheatMgr::IgnoreControlHackDetection(Player* player, MovementInfo movem
|
|||||||
if (m_Players[key].GetTotalReports() > sConfigMgr->GetOption<uint32>("Anticheat.ReportsForIngameWarnings", 70))
|
if (m_Players[key].GetTotalReports() > sConfigMgr->GetOption<uint32>("Anticheat.ReportsForIngameWarnings", 70))
|
||||||
{
|
{
|
||||||
// display warning at the center of the screen, hacky way?
|
// display warning at the center of the screen, hacky way?
|
||||||
std::string str = "";
|
std::string str = "|cFFFFFC00[Playername:|cFF00FFFF[|cFF60FF00" + std::string(player->GetName().c_str()) + "|cFF00FFFF] Possible Ignore Control Hack Detected!";
|
||||||
str = "|cFFFFFC00[Playername:|cFF00FFFF[|cFF60FF00" + std::string(player->GetName().c_str()) + "|cFF00FFFF] Possible Ignore Control Hack Detected!";
|
|
||||||
WorldPacket data(SMSG_NOTIFICATION, (str.size() + 1));
|
WorldPacket data(SMSG_NOTIFICATION, (str.size() + 1));
|
||||||
data << str;
|
data << str;
|
||||||
sWorld->SendGlobalGMMessage(&data);
|
sWorld->SendGlobalGMMessage(&data);
|
||||||
@@ -259,8 +260,7 @@ void AnticheatMgr::ZAxisHackDetection(Player* player, MovementInfo movementInfo)
|
|||||||
if (m_Players[key].GetTotalReports() > sConfigMgr->GetOption<uint32>("Anticheat.ReportsForIngameWarnings", 70))
|
if (m_Players[key].GetTotalReports() > sConfigMgr->GetOption<uint32>("Anticheat.ReportsForIngameWarnings", 70))
|
||||||
{
|
{
|
||||||
// display warning at the center of the screen, hacky way?
|
// display warning at the center of the screen, hacky way?
|
||||||
std::string str = "";
|
std::string str = "|cFFFFFC00[Playername:|cFF00FFFF[|cFF60FF00" + std::string(player->GetName().c_str()) + "|cFF00FFFF] Possible Ignore Zaxis Hack Detected!";
|
||||||
str = "|cFFFFFC00[Playername:|cFF00FFFF[|cFF60FF00" + std::string(player->GetName().c_str()) + "|cFF00FFFF] Possible Ignore Zaxis Hack Detected!";
|
|
||||||
WorldPacket data(SMSG_NOTIFICATION, (str.size() + 1));
|
WorldPacket data(SMSG_NOTIFICATION, (str.size() + 1));
|
||||||
data << str;
|
data << str;
|
||||||
sWorld->SendGlobalGMMessage(&data);
|
sWorld->SendGlobalGMMessage(&data);
|
||||||
@@ -304,8 +304,7 @@ void AnticheatMgr::TeleportHackDetection(Player* player, MovementInfo movementIn
|
|||||||
if (m_Players[key].GetTotalReports() > sConfigMgr->GetOption<uint32>("Anticheat.ReportsForIngameWarnings", 70))
|
if (m_Players[key].GetTotalReports() > sConfigMgr->GetOption<uint32>("Anticheat.ReportsForIngameWarnings", 70))
|
||||||
{
|
{
|
||||||
// display warning at the center of the screen, hacky way?
|
// display warning at the center of the screen, hacky way?
|
||||||
std::string str = "";
|
std::string str = "|cFFFFFC00[Playername:|cFF00FFFF[|cFF60FF00" + std::string(player->GetName().c_str()) + "|cFF00FFFF] Possible Teleport Hack Detected!";
|
||||||
str = "|cFFFFFC00[Playername:|cFF00FFFF[|cFF60FF00" + std::string(player->GetName().c_str()) + "|cFF00FFFF] Possible Teleport Hack Detected!";
|
|
||||||
WorldPacket data(SMSG_NOTIFICATION, (str.size() + 1));
|
WorldPacket data(SMSG_NOTIFICATION, (str.size() + 1));
|
||||||
data << str;
|
data << str;
|
||||||
sWorld->SendGlobalGMMessage(&data);
|
sWorld->SendGlobalGMMessage(&data);
|
||||||
@@ -437,8 +436,6 @@ void AnticheatMgr::SpeedHackDetection(Player* player, MovementInfo movementInfo)
|
|||||||
case 718: //Transport: The Mighty Wind (Icecrown Citadel Raid)
|
case 718: //Transport: The Mighty Wind (Icecrown Citadel Raid)
|
||||||
return;
|
return;
|
||||||
break;
|
break;
|
||||||
default:
|
|
||||||
break;// Should never happen
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32 distance2D = (uint32)movementInfo.pos.GetExactDist2d(&m_Players[key].GetLastMovementInfo().pos);
|
uint32 distance2D = (uint32)movementInfo.pos.GetExactDist2d(&m_Players[key].GetLastMovementInfo().pos);
|
||||||
@@ -622,8 +619,7 @@ void AnticheatMgr::BuildReport(Player* player, uint16 reportType)
|
|||||||
if (m_Players[key].GetTotalReports() > sConfigMgr->GetOption<uint32>("Anticheat.ReportsForIngameWarnings", 70))
|
if (m_Players[key].GetTotalReports() > sConfigMgr->GetOption<uint32>("Anticheat.ReportsForIngameWarnings", 70))
|
||||||
{
|
{
|
||||||
// display warning at the center of the screen, hacky way?
|
// display warning at the center of the screen, hacky way?
|
||||||
std::string str = "";
|
std::string str = "|cFFFFFC00[Playername:|cFF00FFFF[|cFF60FF00" + std::string(player->GetName().c_str()) + "|cFF00FFFF] Possible cheater!";
|
||||||
str = "|cFFFFFC00[Playername:|cFF00FFFF[|cFF60FF00" + std::string(player->GetName().c_str()) + "|cFF00FFFF] Possible cheater!";
|
|
||||||
WorldPacket data(SMSG_NOTIFICATION, (str.size() + 1));
|
WorldPacket data(SMSG_NOTIFICATION, (str.size() + 1));
|
||||||
data << str;
|
data << str;
|
||||||
sWorld->SendGlobalGMMessage(&data);
|
sWorld->SendGlobalGMMessage(&data);
|
||||||
@@ -641,8 +637,7 @@ void AnticheatMgr::BuildReport(Player* player, uint16 reportType)
|
|||||||
LOG_INFO("module", "AnticheatMgr:: Reports reached assigned threshhold and counteracted by kicking player {} ({})", player->GetName(), player->GetGUID().ToString());
|
LOG_INFO("module", "AnticheatMgr:: Reports reached assigned threshhold and counteracted by kicking player {} ({})", player->GetName(), player->GetGUID().ToString());
|
||||||
}
|
}
|
||||||
// display warning at the center of the screen, hacky way?
|
// display warning at the center of the screen, hacky way?
|
||||||
std::string str = "";
|
std::string str = "|cFFFFFC00[Playername:|cFF00FFFF[|cFF60FF00" + std::string(player->GetName().c_str()) + "|cFF00FFFF] Auto Kicked for Reaching Cheat Threshhold!";
|
||||||
str = "|cFFFFFC00[Playername:|cFF00FFFF[|cFF60FF00" + std::string(player->GetName().c_str()) + "|cFF00FFFF] Auto Kicked for Reaching Cheat Threshhold!";
|
|
||||||
WorldPacket data(SMSG_NOTIFICATION, (str.size() + 1));
|
WorldPacket data(SMSG_NOTIFICATION, (str.size() + 1));
|
||||||
data << str;
|
data << str;
|
||||||
sWorld->SendGlobalGMMessage(&data);
|
sWorld->SendGlobalGMMessage(&data);
|
||||||
@@ -668,8 +663,7 @@ void AnticheatMgr::BuildReport(Player* player, uint16 reportType)
|
|||||||
LOG_INFO("module", "AnticheatMgr:: Reports reached assigned threshhold and counteracted by banning player {} ({})", player->GetName(), player->GetGUID().ToString());
|
LOG_INFO("module", "AnticheatMgr:: Reports reached assigned threshhold and counteracted by banning player {} ({})", player->GetName(), player->GetGUID().ToString());
|
||||||
}
|
}
|
||||||
// display warning at the center of the screen, hacky way?
|
// display warning at the center of the screen, hacky way?
|
||||||
std::string str = "";
|
std::string str = "|cFFFFFC00[Playername:|cFF00FFFF[|cFF60FF00" + std::string(player->GetName().c_str()) + "|cFF00FFFF] Auto Banned Account for Reaching Cheat Threshhold!";
|
||||||
str = "|cFFFFFC00[Playername:|cFF00FFFF[|cFF60FF00" + std::string(player->GetName().c_str()) + "|cFF00FFFF] Auto Banned Account for Reaching Cheat Threshhold!";
|
|
||||||
WorldPacket data(SMSG_NOTIFICATION, (str.size() + 1));
|
WorldPacket data(SMSG_NOTIFICATION, (str.size() + 1));
|
||||||
data << str;
|
data << str;
|
||||||
sWorld->SendGlobalGMMessage(&data);
|
sWorld->SendGlobalGMMessage(&data);
|
||||||
@@ -698,8 +692,7 @@ void AnticheatMgr::BuildReport(Player* player, uint16 reportType)
|
|||||||
LOG_INFO("module", "AnticheatMgr:: Reports reached assigned threshhold and counteracted by jailing player {} ({})", player->GetName(), player->GetGUID().ToString());
|
LOG_INFO("module", "AnticheatMgr:: Reports reached assigned threshhold and counteracted by jailing player {} ({})", player->GetName(), player->GetGUID().ToString());
|
||||||
}
|
}
|
||||||
// display warning at the center of the screen, hacky way?
|
// display warning at the center of the screen, hacky way?
|
||||||
std::string str = "";
|
std::string str = "|cFFFFFC00[Playername:|cFF00FFFF[|cFF60FF00" + std::string(player->GetName().c_str()) + "|cFF00FFFF] Auto Jailed Account for Reaching Cheat Threshhold!";
|
||||||
str = "|cFFFFFC00[Playername:|cFF00FFFF[|cFF60FF00" + std::string(player->GetName().c_str()) + "|cFF00FFFF] Auto Jailed Account for Reaching Cheat Threshhold!";
|
|
||||||
WorldPacket data(SMSG_NOTIFICATION, (str.size() + 1));
|
WorldPacket data(SMSG_NOTIFICATION, (str.size() + 1));
|
||||||
data << str;
|
data << str;
|
||||||
sWorld->SendGlobalGMMessage(&data);
|
sWorld->SendGlobalGMMessage(&data);
|
||||||
@@ -711,8 +704,10 @@ void AnticheatMgr::BuildReport(Player* player, uint16 reportType)
|
|||||||
player->CastSpell(player, SHACKLES); // Shackle him in place to ensure no exploit happens for jail break attempt
|
player->CastSpell(player, SHACKLES); // Shackle him in place to ensure no exploit happens for jail break attempt
|
||||||
Aura* dungdesert = player->AddAura(LFG_SPELL_DUNGEON_DESERTER, player);// LFG_SPELL_DUNGEON_DESERTER
|
Aura* dungdesert = player->AddAura(LFG_SPELL_DUNGEON_DESERTER, player);// LFG_SPELL_DUNGEON_DESERTER
|
||||||
Aura* bgdesert = player->AddAura(BG_SPELL_DESERTER, player);// BG_SPELL_DESERTER
|
Aura* bgdesert = player->AddAura(BG_SPELL_DESERTER, player);// BG_SPELL_DESERTER
|
||||||
|
Aura* silent = player->AddAura(SILENCED, player);// SILENCED
|
||||||
dungdesert->SetDuration(-1);
|
dungdesert->SetDuration(-1);
|
||||||
bgdesert->SetDuration(-1);
|
bgdesert->SetDuration(-1);
|
||||||
|
silent->SetDuration(-1);
|
||||||
|
|
||||||
if (sConfigMgr->GetOption<bool>("Anticheat.AnnounceJail", true))
|
if (sConfigMgr->GetOption<bool>("Anticheat.AnnounceJail", true))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -31,7 +31,8 @@ enum Spells
|
|||||||
{
|
{
|
||||||
SHACKLES = 38505,
|
SHACKLES = 38505,
|
||||||
LFG_SPELL_DUNGEON_DESERTER = 71041,
|
LFG_SPELL_DUNGEON_DESERTER = 71041,
|
||||||
BG_SPELL_DESERTER = 26013
|
BG_SPELL_DESERTER = 26013,
|
||||||
|
SILENCED = 23207
|
||||||
};
|
};
|
||||||
|
|
||||||
class anticheat_commandscript : public CommandScript
|
class anticheat_commandscript : public CommandScript
|
||||||
@@ -139,8 +140,10 @@ public:
|
|||||||
pTarget->CastSpell(pTarget, SHACKLES); // Shackle him in place to ensure no exploit happens for jail break attempt
|
pTarget->CastSpell(pTarget, SHACKLES); // Shackle him in place to ensure no exploit happens for jail break attempt
|
||||||
Aura* dungdesert = pTarget->AddAura(LFG_SPELL_DUNGEON_DESERTER, pTarget);// LFG_SPELL_DUNGEON_DESERTER
|
Aura* dungdesert = pTarget->AddAura(LFG_SPELL_DUNGEON_DESERTER, pTarget);// LFG_SPELL_DUNGEON_DESERTER
|
||||||
Aura* bgdesert = pTarget->AddAura(BG_SPELL_DESERTER, pTarget);// BG_SPELL_DESERTER
|
Aura* bgdesert = pTarget->AddAura(BG_SPELL_DESERTER, pTarget);// BG_SPELL_DESERTER
|
||||||
|
Aura* silent = pTarget->AddAura(SILENCED, pTarget);// SILENCED
|
||||||
dungdesert->SetDuration(-1);
|
dungdesert->SetDuration(-1);
|
||||||
bgdesert->SetDuration(-1);
|
bgdesert->SetDuration(-1);
|
||||||
|
silent->SetDuration(-1);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -176,10 +179,8 @@ public:
|
|||||||
if (pTarget == handler->GetSession()->GetPlayer())
|
if (pTarget == handler->GetSession()->GetPlayer())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
WorldLocation Aloc;
|
WorldLocation Aloc = WorldLocation(0, -8833.37f, 628.62f, 94.00f, 1.06f);// Stormwind
|
||||||
WorldLocation Hloc;
|
WorldLocation Hloc = WorldLocation(1, 1569.59f, -4397.63f, 16.06f, 0.54f);// Orgrimmar
|
||||||
Aloc = WorldLocation(0, -8833.37f, 628.62f, 94.00f, 1.06f);// Stormwind
|
|
||||||
Hloc = WorldLocation(1, 1569.59f, -4397.63f, 16.06f, 0.54f);// Orgrimmar
|
|
||||||
|
|
||||||
if (pTarget->GetTeamId() == TEAM_ALLIANCE)
|
if (pTarget->GetTeamId() == TEAM_ALLIANCE)
|
||||||
{
|
{
|
||||||
@@ -194,6 +195,7 @@ public:
|
|||||||
pTarget->RemoveAura(SHACKLES);// remove shackles
|
pTarget->RemoveAura(SHACKLES);// remove shackles
|
||||||
pTarget->RemoveAura(LFG_SPELL_DUNGEON_DESERTER);// LFG_SPELL_DUNGEON_DESERTER
|
pTarget->RemoveAura(LFG_SPELL_DUNGEON_DESERTER);// LFG_SPELL_DUNGEON_DESERTER
|
||||||
pTarget->RemoveAura(BG_SPELL_DESERTER);// BG_SPELL_DESERTER
|
pTarget->RemoveAura(BG_SPELL_DESERTER);// BG_SPELL_DESERTER
|
||||||
|
pTarget->RemoveAura(SILENCED);// SILENCED
|
||||||
sAnticheatMgr->AnticheatDeleteCommand(pTarget->GetGUID());// deletes auto reports on player
|
sAnticheatMgr->AnticheatDeleteCommand(pTarget->GetGUID());// deletes auto reports on player
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
Reference in New Issue
Block a user