From 1ae4749762bb4b175ed353d2b864527de0ce8077 Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Fri, 3 Jan 2020 23:43:19 +0100 Subject: [PATCH] Core/Quests: convert CMSG_QUEST_GIVER_ACCEPT_QUEST and CMSG_QUEST_GIVER_CHOOSE_REWARD to packet class --- src/server/game/Handlers/QuestHandler.cpp | 66 ++++++++----------- src/server/game/Server/Packets/AllPackets.h | 1 + .../game/Server/Packets/QuestPackets.cpp | 15 ++++- src/server/game/Server/Packets/QuestPackets.h | 24 +++++++ src/server/game/Server/Protocol/Opcodes.cpp | 16 ++--- src/server/game/Server/Protocol/Opcodes.h | 20 +++--- src/server/game/Server/WorldSession.cpp | 14 ++-- src/server/game/Server/WorldSession.h | 10 ++- 8 files changed, 101 insertions(+), 65 deletions(-) diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp index 938c955b0e..04f7851afa 100644 --- a/src/server/game/Handlers/QuestHandler.cpp +++ b/src/server/game/Handlers/QuestHandler.cpp @@ -31,6 +31,7 @@ #include "ObjectMgr.h" #include "Player.h" #include "QuestDef.h" +#include "QuestPackets.h" #include "ScriptMgr.h" #include "World.h" #include "WorldPacket.h" @@ -103,20 +104,15 @@ void WorldSession::HandleQuestgiverHelloOpcode(WorldPacket& recvData) _player->SendPreparedGossip(creature); } -void WorldSession::HandleQuestgiverAcceptQuestOpcode(WorldPacket& recvData) +void WorldSession::HandleQuestgiverAcceptQuestOpcode(WorldPackets::Quest::QuestGiverAcceptQuest& packet) { - ObjectGuid guid; - uint32 questId; - uint32 startCheat; - recvData >> guid >> questId >> startCheat; - - TC_LOG_DEBUG("network", "WORLD: Received CMSG_QUESTGIVER_ACCEPT_QUEST %s, quest = %u, startCheat = %u", guid.ToString().c_str(), questId, startCheat); + TC_LOG_DEBUG("network", "WORLD: Received CMSG_QUESTGIVER_ACCEPT_QUEST %s, quest = %u, startCheat = %u", packet.QuestGiverGUID.ToString().c_str(), packet.QuestID, packet.StartCheat); Object* object; - if (!guid.IsPlayer()) - object = ObjectAccessor::GetObjectByTypeMask(*_player, guid, TYPEMASK_UNIT | TYPEMASK_GAMEOBJECT | TYPEMASK_ITEM); + if (!packet.QuestGiverGUID.IsPlayer()) + object = ObjectAccessor::GetObjectByTypeMask(*_player, packet.QuestGiverGUID, TYPEMASK_UNIT | TYPEMASK_GAMEOBJECT | TYPEMASK_ITEM); else - object = ObjectAccessor::FindPlayer(guid); + object = ObjectAccessor::FindPlayer(packet.QuestGiverGUID); #define CLOSE_GOSSIP_CLEAR_SHARING_INFO() \ do { \ @@ -133,7 +129,7 @@ void WorldSession::HandleQuestgiverAcceptQuestOpcode(WorldPacket& recvData) if (Player* playerQuestObject = object->ToPlayer()) { - if ((_player->GetPlayerSharingQuest() && _player->GetPlayerSharingQuest() != guid) || !playerQuestObject->CanShareQuest(questId)) + if ((_player->GetPlayerSharingQuest() && _player->GetPlayerSharingQuest() != packet.QuestGiverGUID) || !playerQuestObject->CanShareQuest(packet.QuestID)) { CLOSE_GOSSIP_CLEAR_SHARING_INFO(); return; @@ -146,7 +142,7 @@ void WorldSession::HandleQuestgiverAcceptQuestOpcode(WorldPacket& recvData) } else { - if (!object->hasQuest(questId)) + if (!object->hasQuest(packet.QuestID)) { CLOSE_GOSSIP_CLEAR_SHARING_INFO(); return; @@ -160,7 +156,7 @@ void WorldSession::HandleQuestgiverAcceptQuestOpcode(WorldPacket& recvData) return; } - if (Quest const* quest = sObjectMgr->GetQuestTemplate(questId)) + if (Quest const* quest = sObjectMgr->GetQuestTemplate(packet.QuestID)) { // prevent cheating if (!GetPlayer()->CanTakeQuest(quest, true)) @@ -196,7 +192,7 @@ void WorldSession::HandleQuestgiverAcceptQuestOpcode(WorldPacket& recvData) if (player->CanTakeQuest(quest, true)) { - player->SetQuestSharingInfo(_player->GetGUID(), questId); + player->SetQuestSharingInfo(_player->GetGUID(), packet.QuestID); // need confirmation that any gossip window will close player->PlayerTalkClass->SendCloseGossip(); @@ -265,21 +261,17 @@ void WorldSession::HandleQuestQueryOpcode(WorldPacket& recvData) _player->PlayerTalkClass->SendQuestQueryResponse(quest); } -void WorldSession::HandleQuestgiverChooseRewardOpcode(WorldPacket& recvData) +void WorldSession::HandleQuestgiverChooseRewardOpcode(WorldPackets::Quest::QuestGiverChooseReward& packet) { - uint32 questId, reward; - ObjectGuid guid; - recvData >> guid >> questId >> reward; - - if (reward >= QUEST_REWARD_CHOICES_COUNT) + if (packet.ItemChoiceID >= QUEST_REWARD_CHOICES_COUNT) { - TC_LOG_ERROR("entities.player.cheat", "Error in CMSG_QUESTGIVER_CHOOSE_REWARD: player %s (guid %d) tried to get invalid reward (%u) (possible packet-hacking detected)", _player->GetName().c_str(), _player->GetGUID().GetCounter(), reward); + TC_LOG_ERROR("entities.player.cheat", "Error in CMSG_QUESTGIVER_CHOOSE_REWARD: player %s (guid %d) tried to get invalid reward (%u) (possible packet-hacking detected)", _player->GetName().c_str(), _player->GetGUID().GetCounter(), packet.ItemChoiceID); return; } - TC_LOG_DEBUG("network", "WORLD: Received CMSG_QUESTGIVER_CHOOSE_REWARD npc = %s, quest = %u, reward = %u", guid.ToString().c_str(), questId, reward); + TC_LOG_DEBUG("network", "WORLD: Received CMSG_QUESTGIVER_CHOOSE_REWARD npc = %s, quest = %u, reward = %u", packet.QuestGiverGUID.ToString().c_str(), packet.QuestID, packet.ItemChoiceID); - Quest const* quest = sObjectMgr->GetQuestTemplate(questId); + Quest const* quest = sObjectMgr->GetQuestTemplate(packet.QuestID); if (!quest) return; @@ -287,8 +279,8 @@ void WorldSession::HandleQuestgiverChooseRewardOpcode(WorldPacket& recvData) if (!quest->HasFlag(QUEST_FLAGS_AUTOCOMPLETE)) { - object = ObjectAccessor::GetObjectByTypeMask(*_player, guid, TYPEMASK_UNIT|TYPEMASK_GAMEOBJECT); - if (!object || !object->hasInvolvedQuest(questId)) + object = ObjectAccessor::GetObjectByTypeMask(*_player, packet.QuestGiverGUID, TYPEMASK_UNIT|TYPEMASK_GAMEOBJECT); + if (!object || !object->hasInvolvedQuest(packet.QuestID)) return; // some kind of WPE protection @@ -296,17 +288,17 @@ void WorldSession::HandleQuestgiverChooseRewardOpcode(WorldPacket& recvData) return; } - if ((!_player->CanSeeStartQuest(quest) && _player->GetQuestStatus(questId) == QUEST_STATUS_NONE) || - (_player->GetQuestStatus(questId) != QUEST_STATUS_COMPLETE && !quest->IsAutoComplete())) + if ((!_player->CanSeeStartQuest(quest) && _player->GetQuestStatus(packet.QuestID) == QUEST_STATUS_NONE) || + (_player->GetQuestStatus(packet.QuestID) != QUEST_STATUS_COMPLETE && !quest->IsAutoComplete())) { TC_LOG_ERROR("entities.player.cheat", "Error in QUEST_STATUS_COMPLETE: player %s (guid %u) tried to complete quest %u, but is not allowed to do so (possible packet-hacking or high latency)", - _player->GetName().c_str(), _player->GetGUID().GetCounter(), questId); + _player->GetName().c_str(), _player->GetGUID().GetCounter(), packet.QuestID); return; } - if (_player->CanRewardQuest(quest, reward, true)) + if (_player->CanRewardQuest(quest, packet.ItemChoiceID, true)) { - _player->RewardQuest(quest, reward, object); + _player->RewardQuest(quest, packet.ItemChoiceID, object); switch (object->GetTypeId()) { @@ -314,7 +306,7 @@ void WorldSession::HandleQuestgiverChooseRewardOpcode(WorldPacket& recvData) case TYPEID_PLAYER: { // Send next quest - if (Quest const* nextQuest = _player->GetNextQuest(guid, quest)) + if (Quest const* nextQuest = _player->GetNextQuest(packet.QuestGiverGUID, quest)) { // Only send the quest to the player if the conditions are met if (_player->CanTakeQuest(nextQuest, false)) @@ -322,19 +314,19 @@ void WorldSession::HandleQuestgiverChooseRewardOpcode(WorldPacket& recvData) if (nextQuest->IsAutoAccept() && _player->CanAddQuest(nextQuest, true)) _player->AddQuestAndCheckCompletion(nextQuest, object); - _player->PlayerTalkClass->SendQuestGiverQuestDetails(nextQuest, guid, true, false); + _player->PlayerTalkClass->SendQuestGiverQuestDetails(nextQuest, packet.QuestGiverGUID, true, false); } } _player->PlayerTalkClass->ClearMenus(); if (Creature* creatureQGiver = object->ToCreature()) - creatureQGiver->AI()->QuestReward(_player, quest, reward); + creatureQGiver->AI()->QuestReward(_player, quest, packet.ItemChoiceID); break; } case TYPEID_GAMEOBJECT: { // Send next quest - if (Quest const* nextQuest = _player->GetNextQuest(guid, quest)) + if (Quest const* nextQuest = _player->GetNextQuest(packet.QuestGiverGUID, quest)) { // Only send the quest to the player if the conditions are met if (_player->CanTakeQuest(nextQuest, false)) @@ -342,13 +334,13 @@ void WorldSession::HandleQuestgiverChooseRewardOpcode(WorldPacket& recvData) if (nextQuest->IsAutoAccept() && _player->CanAddQuest(nextQuest, true)) _player->AddQuestAndCheckCompletion(nextQuest, object); - _player->PlayerTalkClass->SendQuestGiverQuestDetails(nextQuest, guid, true, false); + _player->PlayerTalkClass->SendQuestGiverQuestDetails(nextQuest, packet.QuestGiverGUID, true, false); } } _player->PlayerTalkClass->ClearMenus(); if (GameObject* questGiver = object->ToGameObject()) - questGiver->AI()->QuestReward(_player, quest, reward); + questGiver->AI()->QuestReward(_player, quest, packet.ItemChoiceID); break; } default: @@ -356,7 +348,7 @@ void WorldSession::HandleQuestgiverChooseRewardOpcode(WorldPacket& recvData) } } else - _player->PlayerTalkClass->SendQuestGiverOfferReward(quest, guid, true); + _player->PlayerTalkClass->SendQuestGiverOfferReward(quest, packet.QuestGiverGUID, true); } void WorldSession::HandleQuestgiverRequestRewardOpcode(WorldPacket& recvData) diff --git a/src/server/game/Server/Packets/AllPackets.h b/src/server/game/Server/Packets/AllPackets.h index 8106a39f37..b6c3b4a058 100644 --- a/src/server/game/Server/Packets/AllPackets.h +++ b/src/server/game/Server/Packets/AllPackets.h @@ -21,6 +21,7 @@ #include "AuthenticationPackets.h" #include "GuildPackets.h" #include "LFGPackets.h" +#include "QuestPackets.h" #include "SystemPackets.h" #endif // AllPackets_h__ diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp index 7cb596d8a1..4c6adf76c5 100644 --- a/src/server/game/Server/Packets/QuestPackets.cpp +++ b/src/server/game/Server/Packets/QuestPackets.cpp @@ -37,7 +37,6 @@ WorldPacket const* WorldPackets::Quest::QuestGiverRequestItems::Write() _worldPacket << uint32(obj.ObjectID); _worldPacket << uint32(obj.Amount); _worldPacket << uint32(obj.DisplayID); - } _worldPacket << uint32(Currency.size()); @@ -52,3 +51,17 @@ WorldPacket const* WorldPackets::Quest::QuestGiverRequestItems::Write() return &_worldPacket; } + +void WorldPackets::Quest::QuestGiverAcceptQuest::Read() +{ + _worldPacket >> QuestGiverGUID; + _worldPacket >> QuestID; + _worldPacket >> StartCheat; +} + +void WorldPackets::Quest::QuestGiverChooseReward::Read() +{ + _worldPacket >> QuestGiverGUID; + _worldPacket >> QuestID; + _worldPacket >> ItemChoiceID; +} diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h index e0d6ee75ce..ad22ca5a4e 100644 --- a/src/server/game/Server/Packets/QuestPackets.h +++ b/src/server/game/Server/Packets/QuestPackets.h @@ -62,6 +62,30 @@ namespace WorldPackets std::string QuestTitle; std::string CompletionText; }; + + class QuestGiverAcceptQuest final : public ClientPacket + { + public: + QuestGiverAcceptQuest(WorldPacket&& packet) : ClientPacket(CMSG_QUEST_GIVER_ACCEPT_QUEST, std::move(packet)) { } + + void Read() override; + + ObjectGuid QuestGiverGUID; + uint32 QuestID = 0; + uint32 StartCheat = 0; + }; + + class QuestGiverChooseReward final : public ClientPacket + { + public: + QuestGiverChooseReward(WorldPacket&& packet) : ClientPacket(CMSG_QUEST_GIVER_CHOOSE_REWARD, std::move(packet)) { } + + void Read() override; + + ObjectGuid QuestGiverGUID; + int32 QuestID = 0; + int32 ItemChoiceID = 0; + }; } } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 2232b718f7..6a5152ddf9 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -511,14 +511,14 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_QUERY_INSPECT_ACHIEVEMENTS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQueryInspectAchievements ); DEFINE_HANDLER(CMSG_QUERY_QUESTS_COMPLETED, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQueryQuestsCompleted ); DEFINE_HANDLER(CMSG_QUERY_TIME, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQueryTimeOpcode ); - DEFINE_HANDLER(CMSG_QUESTGIVER_ACCEPT_QUEST, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestgiverAcceptQuestOpcode); - DEFINE_HANDLER(CMSG_QUESTGIVER_CHOOSE_REWARD, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestgiverChooseRewardOpcode); - DEFINE_HANDLER(CMSG_QUESTGIVER_COMPLETE_QUEST, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestgiverCompleteQuest ); - DEFINE_HANDLER(CMSG_QUESTGIVER_HELLO, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestgiverHelloOpcode ); - DEFINE_HANDLER(CMSG_QUESTGIVER_QUERY_QUEST, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestgiverQueryQuestOpcode); - DEFINE_HANDLER(CMSG_QUESTGIVER_REQUEST_REWARD, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestgiverRequestRewardOpcode); - DEFINE_HANDLER(CMSG_QUESTGIVER_STATUS_MULTIPLE_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestgiverStatusMultipleQuery); - DEFINE_HANDLER(CMSG_QUESTGIVER_STATUS_QUERY, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestgiverStatusQueryOpcode); + DEFINE_HANDLER(CMSG_QUEST_GIVER_ACCEPT_QUEST, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestgiverAcceptQuestOpcode); + DEFINE_HANDLER(CMSG_QUEST_GIVER_CHOOSE_REWARD, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestgiverChooseRewardOpcode); + DEFINE_HANDLER(CMSG_QUEST_GIVER_COMPLETE_QUEST, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestgiverCompleteQuest ); + DEFINE_HANDLER(CMSG_QUEST_GIVER_HELLO, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestgiverHelloOpcode ); + DEFINE_HANDLER(CMSG_QUEST_GIVER_QUERY_QUEST, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestgiverQueryQuestOpcode); + DEFINE_HANDLER(CMSG_QUEST_GIVER_REQUEST_REWARD, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestgiverRequestRewardOpcode); + DEFINE_HANDLER(CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestgiverStatusMultipleQuery); + DEFINE_HANDLER(CMSG_QUEST_GIVER_STATUS_QUERY, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestgiverStatusQueryOpcode); DEFINE_HANDLER(CMSG_QUESTLOG_REMOVE_QUEST, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleQuestLogRemoveQuest ); DEFINE_HANDLER(CMSG_QUEST_CONFIRM_ACCEPT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestConfirmAccept ); DEFINE_HANDLER(CMSG_QUEST_NPC_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestNPCQuery ); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index 445297eca7..3ba5a05b9e 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -426,16 +426,16 @@ enum OpcodeClient : uint16 CMSG_QUERY_INSPECT_ACHIEVEMENTS = 0x4D27, CMSG_QUERY_QUESTS_COMPLETED = 0x2317, CMSG_QUERY_TIME = 0x0A36, - CMSG_QUESTGIVER_ACCEPT_QUEST = 0x6B37, - CMSG_QUESTGIVER_CANCEL = 0x0000, - CMSG_QUESTGIVER_CHOOSE_REWARD = 0x2125, - CMSG_QUESTGIVER_COMPLETE_QUEST = 0x0114, - CMSG_QUESTGIVER_HELLO = 0x0D17, - CMSG_QUESTGIVER_QUERY_QUEST = 0x2F14, - CMSG_QUESTGIVER_QUEST_AUTOLAUNCH = 0x0000, - CMSG_QUESTGIVER_REQUEST_REWARD = 0x2534, - CMSG_QUESTGIVER_STATUS_MULTIPLE_QUERY = 0x6305, - CMSG_QUESTGIVER_STATUS_QUERY = 0x4407, + CMSG_QUEST_GIVER_ACCEPT_QUEST = 0x6B37, + CMSG_QUEST_GIVER_CANCEL = 0x0000, + CMSG_QUEST_GIVER_CHOOSE_REWARD = 0x2125, + CMSG_QUEST_GIVER_COMPLETE_QUEST = 0x0114, + CMSG_QUEST_GIVER_HELLO = 0x0D17, + CMSG_QUEST_GIVER_QUERY_QUEST = 0x2F14, + CMSG_QUEST_GIVER_QUEST_AUTOLAUNCH = 0x0000, + CMSG_QUEST_GIVER_REQUEST_REWARD = 0x2534, + CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY = 0x6305, + CMSG_QUEST_GIVER_STATUS_QUERY = 0x4407, CMSG_QUESTLOG_REMOVE_QUEST = 0x0D16, CMSG_QUESTLOG_SWAP_QUEST = 0x0000, CMSG_QUEST_CONFIRM_ACCEPT = 0x0D15, diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 30d79ae754..84aff8a6cc 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -1357,7 +1357,7 @@ uint32 WorldSession::DosProtection::GetMaxPacketCounterAllowed(uint16 opcode) co case CMSG_PLAYER_LOGOUT: // 0 1 case CMSG_LOGOUT_REQUEST: // 0 1 case CMSG_PET_RENAME: // 0 1 - case CMSG_QUESTGIVER_REQUEST_REWARD: // 0 1 + case CMSG_QUEST_GIVER_REQUEST_REWARD: // 0 1 case CMSG_COMPLETE_CINEMATIC: // 0 1 case CMSG_BANKER_ACTIVATE: // 0 1 case CMSG_BUY_BANK_SLOT: // 0 1 @@ -1368,18 +1368,18 @@ uint32 WorldSession::DosProtection::GetMaxPacketCounterAllowed(uint16 opcode) co case CMSG_QUEST_QUERY: // 0 1.5 case CMSG_GAMEOBJECT_QUERY: // 0 1.5 case CMSG_CREATURE_QUERY: // 0 1.5 - case CMSG_QUESTGIVER_STATUS_QUERY: // 0 1.5 + case CMSG_QUEST_GIVER_STATUS_QUERY: // 0 1.5 case CMSG_GUILD_QUERY: // 0 1.5 case CMSG_ARENA_TEAM_QUERY: // 0 1.5 case CMSG_TAXINODE_STATUS_QUERY: // 0 1.5 case CMSG_TAXIQUERYAVAILABLENODES: // 0 1.5 - case CMSG_QUESTGIVER_QUERY_QUEST: // 0 1.5 + case CMSG_QUEST_GIVER_QUERY_QUEST: // 0 1.5 case CMSG_PAGE_TEXT_QUERY: // 0 1.5 case CMSG_GUILD_BANK_TEXT_QUERY: // 0 1.5 case MSG_CORPSE_QUERY: // 0 1.5 case MSG_MOVE_SET_FACING: // 0 1.5 case CMSG_REQUEST_PARTY_MEMBER_STATS: // 0 1.5 - case CMSG_QUESTGIVER_COMPLETE_QUEST: // 0 1.5 + case CMSG_QUEST_GIVER_COMPLETE_QUEST: // 0 1.5 case CMSG_SET_ACTION_BUTTON: // 0 1.5 case CMSG_RESET_INSTANCES: // 0 1.5 case CMSG_HEARTH_AND_RESURRECT: // 0 1.5 @@ -1406,7 +1406,7 @@ uint32 WorldSession::DosProtection::GetMaxPacketCounterAllowed(uint16 opcode) co case CMSG_QUEST_CONFIRM_ACCEPT: // 0 2 case CMSG_GUILD_EVENT_LOG_QUERY: // 0 2.5 case CMSG_READY_FOR_ACCOUNT_DATA_TIMES: // 0 2.5 - case CMSG_QUESTGIVER_STATUS_MULTIPLE_QUERY: // 0 2.5 + case CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY: // 0 2.5 case CMSG_BEGIN_TRADE: // 0 2.5 case CMSG_INITIATE_TRADE: // 0 3 case CMSG_MESSAGECHAT_ADDON_BATTLEGROUND: // 0 3.5 @@ -1441,9 +1441,9 @@ uint32 WorldSession::DosProtection::GetMaxPacketCounterAllowed(uint16 opcode) co break; } - case CMSG_QUESTGIVER_ACCEPT_QUEST: // 0 4 + case CMSG_QUEST_GIVER_ACCEPT_QUEST: // 0 4 case CMSG_QUESTLOG_REMOVE_QUEST: // 0 4 - case CMSG_QUESTGIVER_CHOOSE_REWARD: // 0 4 + case CMSG_QUEST_GIVER_CHOOSE_REWARD: // 0 4 case CMSG_CONTACT_LIST: // 0 5 case CMSG_LEARN_PREVIEW_TALENTS: // 0 6 case CMSG_AUTOBANK_ITEM: // 0 6 diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 815a619760..23682dcef1 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -124,6 +124,12 @@ namespace WorldPackets class GuildChallengeUpdateRequest; class RequestGuildRewardsList; } + + namespace Quest + { + class QuestGiverAcceptQuest; + class QuestGiverChooseReward; + } } enum AccountDataType @@ -856,9 +862,9 @@ class TC_GAME_API WorldSession void HandleQuestgiverStatusQueryOpcode(WorldPacket& recvPacket); void HandleQuestgiverStatusMultipleQuery(WorldPacket& recvPacket); void HandleQuestgiverHelloOpcode(WorldPacket& recvPacket); - void HandleQuestgiverAcceptQuestOpcode(WorldPacket& recvPacket); + void HandleQuestgiverAcceptQuestOpcode(WorldPackets::Quest::QuestGiverAcceptQuest& packet); void HandleQuestgiverQueryQuestOpcode(WorldPacket& recvPacket); - void HandleQuestgiverChooseRewardOpcode(WorldPacket& recvPacket); + void HandleQuestgiverChooseRewardOpcode(WorldPackets::Quest::QuestGiverChooseReward& packet); void HandleQuestgiverRequestRewardOpcode(WorldPacket& recvPacket); void HandleQuestQueryOpcode(WorldPacket& recvPacket); void HandleQuestgiverCancel(WorldPacket& recvData);