aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVincent-Michael <Vincent_Michael@gmx.de>2015-08-08 12:40:43 +0200
committerVincent-Michael <Vincent_Michael@gmx.de>2015-08-08 12:40:43 +0200
commitc9e138d66d6a455a72d3fefbc0e4d5998bc338d6 (patch)
tree644dd21d95804f3d67caf7cb55b4f02f7a0cdd6a /src
parenta76fdb9d38c78d931375de235171e11ac75c5cbb (diff)
Core/PacketIO: Updated and enabled SMSG_QUEST_GIVER_INVALID_QUEST opcode
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp13
-rw-r--r--src/server/game/Entities/Player/Player.h2
-rw-r--r--src/server/game/Server/Packets/QuestPackets.cpp14
-rw-r--r--src/server/game/Server/Packets/QuestPackets.h12
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp2
5 files changed, 36 insertions, 7 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index f73cecb758b..a263f2664e6 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -16399,12 +16399,15 @@ void Player::SendQuestTimerFailed(uint32 quest_id)
}
}
-void Player::SendCanTakeQuestResponse(QuestFailedReason msg) const
+void Player::SendCanTakeQuestResponse(QuestFailedReason reason, bool sendErrorMessage /*= true*/, std::string reasonText /*= ""*/) const
{
- WorldPacket data(SMSG_QUEST_GIVER_INVALID_QUEST, 4);
- data << uint32(msg);
- GetSession()->SendPacket(&data);
- TC_LOG_DEBUG("network", "WORLD: Sent SMSG_QUESTGIVER_QUEST_INVALID");
+ WorldPackets::Quest::QuestGiverInvalidQuest questGiverInvalidQuest;
+
+ questGiverInvalidQuest.Reason = reason;
+ questGiverInvalidQuest.SendErrorMessage = sendErrorMessage;
+ questGiverInvalidQuest.ReasonText = reasonText;
+
+ GetSession()->SendPacket(questGiverInvalidQuest.Write());
}
void Player::SendQuestConfirmAccept(Quest const* quest, Player* receiver)
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 60bc7752430..4dda7d05c6f 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -1723,7 +1723,7 @@ class Player : public Unit, public GridObject<Player>
void SendQuestReward(Quest const* quest, uint32 XP);
void SendQuestFailed(uint32 questId, InventoryResult reason = EQUIP_ERR_OK);
void SendQuestTimerFailed(uint32 questId);
- void SendCanTakeQuestResponse(QuestFailedReason msg) const;
+ void SendCanTakeQuestResponse(QuestFailedReason reason, bool sendErrorMessage = true, std::string reasonText = "") const;
void SendQuestConfirmAccept(Quest const* quest, Player* receiver);
void SendPushToPartyResponse(Player* player, QuestPushReason reason);
void SendQuestUpdateAddCredit(Quest const* quest, ObjectGuid guid, QuestObjective const& obj, uint16 count);
diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp
index ac1374d8e7a..ca3442d897f 100644
--- a/src/server/game/Server/Packets/QuestPackets.cpp
+++ b/src/server/game/Server/Packets/QuestPackets.cpp
@@ -509,3 +509,17 @@ void WorldPackets::Quest::QuestPushResult::Read()
_worldPacket >> QuestID;
_worldPacket >> Result;
}
+
+WorldPacket const* WorldPackets::Quest::QuestGiverInvalidQuest::Write()
+{
+ _worldPacket << Reason;
+
+ _worldPacket.WriteBit(SendErrorMessage);
+ _worldPacket.WriteBits(ReasonText.length(), 9);
+
+ _worldPacket.FlushBits();
+
+ _worldPacket.WriteString(ReasonText);
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h
index 022458a07eb..84cf36d1fbc 100644
--- a/src/server/game/Server/Packets/QuestPackets.h
+++ b/src/server/game/Server/Packets/QuestPackets.h
@@ -515,6 +515,18 @@ namespace WorldPackets
uint32 QuestID = 0;
uint8 Result = 0;
};
+
+ class QuestGiverInvalidQuest final : public ServerPacket
+ {
+ public:
+ QuestGiverInvalidQuest() : ServerPacket(SMSG_QUEST_GIVER_INVALID_QUEST, 16 + 1) { }
+
+ WorldPacket const* Write() override;
+
+ uint32 Reason = 0;
+ bool SendErrorMessage = false;
+ std::string ReasonText;
+ };
}
}
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index f1fc365bbdc..c30f81b7f6c 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -1514,7 +1514,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_COMPLETION_NPC_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_CONFIRM_ACCEPT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_FORCE_REMOVED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_GIVER_INVALID_QUEST, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_GIVER_INVALID_QUEST, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_GIVER_OFFER_REWARD_MESSAGE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_GIVER_QUEST_COMPLETE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_GIVER_QUEST_DETAILS, STATUS_NEVER, CONNECTION_TYPE_REALM);