aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDuarte Duarte <dnpd.dd@gmail.com>2015-03-14 21:43:44 +0000
committerDuarte Duarte <dnpd.dd@gmail.com>2015-03-14 21:43:44 +0000
commit70364a6b0cd1ac09c202275f2fa39c4bce16bef7 (patch)
tree72e6c0519548a90e1ff680b8b3982f98e036fb91 /src
parent1ab186070fc9f03ca6b789b85fd688784e4818c9 (diff)
parent0d050bb112dbd3a18edd41933f68f750c175f6f3 (diff)
Merge pull request #14368 from DJScias/opcodes
Core/Packets: updated and enabled CMSG_QUESTGIVER_ACCEPT_QUEST
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Handlers/QuestHandler.cpp19
-rw-r--r--src/server/game/Server/Packets/QuestPackets.cpp7
-rw-r--r--src/server/game/Server/Packets/QuestPackets.h12
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp2
-rw-r--r--src/server/game/Server/WorldSession.h3
5 files changed, 29 insertions, 14 deletions
diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp
index c5e0fc2e3b5..a13145394e5 100644
--- a/src/server/game/Handlers/QuestHandler.cpp
+++ b/src/server/game/Handlers/QuestHandler.cpp
@@ -95,16 +95,11 @@ void WorldSession::HandleQuestgiverHelloOpcode(WorldPackets::Quest::QuestGiverHe
creature->AI()->sGossipHello(_player);
}
-void WorldSession::HandleQuestgiverAcceptQuestOpcode(WorldPacket& recvData)
+void WorldSession::HandleQuestgiverAcceptQuestOpcode(WorldPackets::Quest::QuestGiverAcceptQuest& packet)
{
- ObjectGuid guid;
- uint32 questId;
- uint32 unk1;
- recvData >> guid >> questId >> unk1;
-
- TC_LOG_DEBUG("network", "WORLD: Received CMSG_QUESTGIVER_ACCEPT_QUEST %s, quest = %u, unk1 = %u", guid.ToString().c_str(), questId, unk1);
+ 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 = ObjectAccessor::GetObjectByTypeMask(*_player, guid, TYPEMASK_UNIT|TYPEMASK_GAMEOBJECT|TYPEMASK_ITEM|TYPEMASK_PLAYER);
+ Object* object = ObjectAccessor::GetObjectByTypeMask(*_player, packet.QuestGiverGUID, TYPEMASK_UNIT | TYPEMASK_GAMEOBJECT | TYPEMASK_ITEM | TYPEMASK_PLAYER);
#define CLOSE_GOSSIP_CLEAR_DIVIDER() \
do { \
@@ -121,8 +116,8 @@ void WorldSession::HandleQuestgiverAcceptQuestOpcode(WorldPacket& recvData)
if (Player* playerQuestObject = object->ToPlayer())
{
- if ((!_player->GetDivider().IsEmpty() && _player->GetDivider() != guid) ||
- ((object != _player && !playerQuestObject->CanShareQuest(questId))))
+ if ((!_player->GetDivider().IsEmpty() && _player->GetDivider() != packet.QuestGiverGUID) ||
+ ((object != _player && !playerQuestObject->CanShareQuest(packet.QuestID))))
{
CLOSE_GOSSIP_CLEAR_DIVIDER();
return;
@@ -130,7 +125,7 @@ void WorldSession::HandleQuestgiverAcceptQuestOpcode(WorldPacket& recvData)
}
else
{
- if (!object->hasQuest(questId))
+ if (!object->hasQuest(packet.QuestID))
{
CLOSE_GOSSIP_CLEAR_DIVIDER();
return;
@@ -141,7 +136,7 @@ void WorldSession::HandleQuestgiverAcceptQuestOpcode(WorldPacket& recvData)
if (!_player->CanInteractWithQuestGiver(object))
return;
- if (Quest const* quest = sObjectMgr->GetQuestTemplate(questId))
+ if (Quest const* quest = sObjectMgr->GetQuestTemplate(packet.QuestID))
{
// prevent cheating
if (!GetPlayer()->CanTakeQuest(quest, true))
diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp
index 471d4846f16..8b14366b334 100644
--- a/src/server/game/Server/Packets/QuestPackets.cpp
+++ b/src/server/game/Server/Packets/QuestPackets.cpp
@@ -426,3 +426,10 @@ void WorldPackets::Quest::QuestGiverQueryQuest::Read()
_worldPacket >> QuestID;
RespondToGiver = _worldPacket.ReadBit();
}
+
+void WorldPackets::Quest::QuestGiverAcceptQuest::Read()
+{
+ _worldPacket >> QuestGiverGUID;
+ _worldPacket >> QuestID;
+ StartCheat = _worldPacket.ReadBit();
+}
diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h
index 9dea2ba1cff..3c20ead28ae 100644
--- a/src/server/game/Server/Packets/QuestPackets.h
+++ b/src/server/game/Server/Packets/QuestPackets.h
@@ -405,6 +405,18 @@ namespace WorldPackets
int32 QuestID = 0;
bool RespondToGiver = false;
};
+
+ class QuestGiverAcceptQuest final : public ClientPacket
+ {
+ public:
+ QuestGiverAcceptQuest(WorldPacket&& packet) : ClientPacket(CMSG_QUESTGIVER_ACCEPT_QUEST, std::move(packet)) { }
+
+ void Read() override;
+
+ ObjectGuid QuestGiverGUID;
+ int32 QuestID = 0;
+ bool StartCheat = false;
+ };
}
}
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index d0187793acc..637d81a592f 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -660,7 +660,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_QUERY_PETITION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Petition::QueryPetition, &WorldSession::HandleQueryPetition);
DEFINE_OPCODE_HANDLER_OLD(CMSG_QUERY_SCENARIO_POI, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_HANDLER(CMSG_QUERY_TIME, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Query::QueryTime, &WorldSession::HandleQueryTimeOpcode);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_QUESTGIVER_ACCEPT_QUEST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestgiverAcceptQuestOpcode);
+ DEFINE_HANDLER(CMSG_QUESTGIVER_ACCEPT_QUEST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Quest::QuestGiverAcceptQuest, &WorldSession::HandleQuestgiverAcceptQuestOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_QUESTGIVER_CANCEL, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
DEFINE_HANDLER(CMSG_QUESTGIVER_CHOOSE_REWARD, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Quest::QuestGiverChooseReward, &WorldSession::HandleQuestgiverChooseRewardOpcode);
DEFINE_HANDLER(CMSG_QUESTGIVER_COMPLETE_QUEST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Quest::QuestGiverCompleteQuest, &WorldSession::HandleQuestgiverCompleteQuest);
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index c93c3cfcc33..7d7591c7aef 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -331,6 +331,7 @@ namespace WorldPackets
class QuestGiverCompleteQuest;
class QuestGiverRequestReward;
class QuestGiverQueryQuest;
+ class QuestGiverAcceptQuest;
}
namespace Social
@@ -1094,7 +1095,7 @@ class WorldSession
void HandleQuestgiverStatusQueryOpcode(WorldPackets::Quest::QuestGiverStatusQuery& packet);
void HandleQuestgiverStatusMultipleQuery(WorldPackets::Quest::QuestGiverStatusMultipleQuery& packet);
void HandleQuestgiverHelloOpcode(WorldPackets::Quest::QuestGiverHello& packet);
- void HandleQuestgiverAcceptQuestOpcode(WorldPacket& recvPacket);
+ void HandleQuestgiverAcceptQuestOpcode(WorldPackets::Quest::QuestGiverAcceptQuest& packet);
void HandleQuestgiverQueryQuestOpcode(WorldPackets::Quest::QuestGiverQueryQuest& packet);
void HandleQuestgiverChooseRewardOpcode(WorldPackets::Quest::QuestGiverChooseReward& packet);
void HandleQuestgiverRequestRewardOpcode(WorldPackets::Quest::QuestGiverRequestReward& packet);