diff options
author | Azazel <azazel.kon@gmail.com> | 2011-06-03 11:54:44 +0600 |
---|---|---|
committer | Azazel <azazel.kon@gmail.com> | 2011-06-03 11:54:44 +0600 |
commit | 9f8e4b031e4fd31f1260503f0f03e8ce62a0b1c2 (patch) | |
tree | b6ea3766073f2e7a3af4c3481264bea4225131a6 | |
parent | 550dca123236337f94387e64fd6c4b1d88df885e (diff) |
Core/Quests: add anti-cheat check in quest reward method
-rwxr-xr-x | src/server/game/Server/Protocol/Handlers/QuestHandler.cpp | 10 |
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); |