aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzazel <azazel.kon@gmail.com>2011-06-03 11:54:44 +0600
committerAzazel <azazel.kon@gmail.com>2011-06-03 11:54:44 +0600
commit9f8e4b031e4fd31f1260503f0f03e8ce62a0b1c2 (patch)
treeb6ea3766073f2e7a3af4c3481264bea4225131a6
parent550dca123236337f94387e64fd6c4b1d88df885e (diff)
Core/Quests: add anti-cheat check in quest reward method
-rwxr-xr-xsrc/server/game/Server/Protocol/Handlers/QuestHandler.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/server/game/Server/Protocol/Handlers/QuestHandler.cpp b/src/server/game/Server/Protocol/Handlers/QuestHandler.cpp
index 324403d98b5..ae095eb4183 100755
--- a/src/server/game/Server/Protocol/Handlers/QuestHandler.cpp
+++ b/src/server/game/Server/Protocol/Handlers/QuestHandler.cpp
@@ -305,9 +305,15 @@ void WorldSession::HandleQuestgiverChooseRewardOpcode(WorldPacket & recv_data)
if (!_player->CanInteractWithQuestGiver(pObject))
return;
- Quest const *pQuest = sObjectMgr->GetQuestTemplate(quest);
- if (pQuest)
+ if (Quest const *pQuest = sObjectMgr->GetQuestTemplate(quest))
{
+ if ((!_player->CanSeeStartQuest(pQuest) && _player->GetQuestStatus(quest) == QUEST_STATUS_NONE) ||
+ (_player->GetQuestStatus(quest) != QUEST_STATUS_COMPLETE && !pQuest->IsAutoComplete()))
+ {
+ sLog->outError("HACK ALERT: Player %s (guid: %u) is trying to complete quest (id: %u) but he has no right to do it!",
+ _player->GetName(), _player->GetGUID(), quest);
+ return;
+ }
if (_player->CanRewardQuest(pQuest, reward, true))
{
_player->RewardQuest(pQuest, reward, pObject);