Core/Packets: converted SMSG_QUEST_UPDATE_COMPLETE, SMSG_QUEST_UPDATE_FAILED_TIMER, SMSG_QUEST_GIVER_INVALID_QUEST, SMSG_QUEST_GIVER_QUEST_FAILED, MSG_QUEST_PUSH_RESULT, SMSG_QUEST_GIVER_STATUS_MULTIPLE and SMSG_QUEST_LOG_FULL to packet class

This commit is contained in:
Ovahlord
2020-02-01 15:47:58 +01:00
parent 9c0755a343
commit 3c378d7b0d
6 changed files with 164 additions and 58 deletions

View File

@@ -15430,8 +15430,8 @@ bool Player::SatisfyQuestLog(bool msg) const
if (msg)
{
WorldPacket data(SMSG_QUESTLOG_FULL, 0);
SendDirectMessage(&data);
WorldPackets::Quest::QuestLogFull packet;
SendDirectMessage(packet.Write());
}
return false;
}
@@ -16778,10 +16778,9 @@ void Player::SendQuestComplete(Quest const* quest) const
{
if (quest)
{
WorldPacket data(SMSG_QUESTUPDATE_COMPLETE, 4);
data << uint32(quest->GetQuestId());
SendDirectMessage(&data);
TC_LOG_DEBUG("network", "WORLD: Sent SMSG_QUESTUPDATE_COMPLETE quest = %u", quest->GetQuestId());
WorldPackets::Quest::QuestUpdateComplete packet;
packet.QuestID = quest->GetQuestId();
SendDirectMessage(packet.Write());
}
}
@@ -16817,30 +16816,28 @@ void Player::SendQuestFailed(uint32 questId, InventoryResult reason) const
{
if (questId)
{
WorldPacket data(SMSG_QUESTGIVER_QUEST_FAILED, 4 + 4);
data << uint32(questId);
data << uint32(reason); // failed reason (valid reasons: 4, 16, 50, 17, 74, other values show default message)
SendDirectMessage(&data);
WorldPackets::Quest::QuestGiverQuestFailed packet;
packet.QuestID = questId;
packet.Reason = reason;
SendDirectMessage(packet.Write());
}
}
void Player::SendQuestTimerFailed(uint32 quest_id) const
void Player::SendQuestTimerFailed(uint32 questId) const
{
if (quest_id)
if (questId)
{
WorldPacket data(SMSG_QUESTUPDATE_FAILEDTIMER, 4);
data << uint32(quest_id);
SendDirectMessage(&data);
TC_LOG_DEBUG("network", "WORLD: Sent SMSG_QUESTUPDATE_FAILEDTIMER");
WorldPackets::Quest::QuestUpdateFailedTimer packet;
packet.QuestID = questId;
SendDirectMessage(packet.Write());
}
}
void Player::SendCanTakeQuestResponse(QuestFailedReason msg) const
void Player::SendCanTakeQuestResponse(QuestFailedReason reason) const
{
WorldPacket data(SMSG_QUESTGIVER_QUEST_INVALID, 4);
data << uint32(msg);
SendDirectMessage(&data);
TC_LOG_DEBUG("network", "WORLD: Sent SMSG_QUESTGIVER_QUEST_INVALID");
WorldPackets::Quest::QuestGiverInvalidQuest packet;
packet.Reason = reason;
SendDirectMessage(packet.Write());
}
void Player::SendQuestConfirmAccept(Quest const* quest, Player* receiver) const
@@ -16868,11 +16865,10 @@ void Player::SendPushToPartyResponse(Player* player, uint8 msg) const
{
if (player)
{
WorldPacket data(MSG_QUEST_PUSH_RESULT, 8 + 1);
data << uint64(player->GetGUID());
data << uint8(msg); // valid values: 0-8
SendDirectMessage(&data);
TC_LOG_DEBUG("network", "WORLD: Sent MSG_QUEST_PUSH_RESULT");
WorldPackets::Quest::QuestPushResultResponse packet;
packet.SenderGUID = player->GetGUID();
packet.Result = msg;
SendDirectMessage(packet.Write());
}
}
@@ -16903,10 +16899,7 @@ void Player::SendQuestUpdateAddPlayer(Quest const* quest, uint16 newCount)
void Player::SendQuestGiverStatusMultiple()
{
uint32 count = 0;
WorldPacket data(SMSG_QUESTGIVER_STATUS_MULTIPLE, 4);
data << uint32(count); // placeholder
WorldPackets::Quest::QuestGiverStatusMultiple response;
for (auto itr = m_clientGUIDs.begin(); itr != m_clientGUIDs.end(); ++itr)
{
@@ -16921,11 +16914,7 @@ void Player::SendQuestGiverStatusMultiple()
if (!questgiver->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER))
continue;
questStatus = GetQuestDialogStatus(questgiver);
data << uint64(questgiver->GetGUID());
data << int32(questStatus);
++count;
response.QuestGiver.emplace_back(questgiver->GetGUID(), GetQuestDialogStatus(questgiver));
}
else if (itr->IsGameObject())
{
@@ -16933,16 +16922,11 @@ void Player::SendQuestGiverStatusMultiple()
if (!questgiver || questgiver->GetGoType() != GAMEOBJECT_TYPE_QUESTGIVER)
continue;
questStatus = GetQuestDialogStatus(questgiver);
data << uint64(questgiver->GetGUID());
data << int32(questStatus);
++count;
response.QuestGiver.emplace_back(questgiver->GetGUID(), GetQuestDialogStatus(questgiver));
}
}
data.put<uint32>(0, count); // write real count
SendDirectMessage(&data);
SendDirectMessage(response.Write());
}
bool Player::HasPvPForcingQuest() const

View File

@@ -1440,8 +1440,8 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
void SendQuestReward(Quest const* quest, Creature const* questGiver, uint32 xp);
void SendQuestFailed(uint32 questId, InventoryResult reason = EQUIP_ERR_OK) const;
void SendQuestTimerFailed(uint32 questId) const;
void SendCanTakeQuestResponse(QuestFailedReason msg) const;
void SendQuestConfirmAccept(Quest const* quest, Player* pReceiver) const;
void SendCanTakeQuestResponse(QuestFailedReason reason) const;
void SendQuestConfirmAccept(Quest const* quest, Player* receiver) const;
void SendPushToPartyResponse(Player* player, uint8 msg) const;
void SendQuestUpdateAddCredit(Quest const* quest, ObjectGuid guid, uint32 creatureOrGOIdx, uint16 count);
void SendQuestUpdateAddPlayer(Quest const* quest, uint16 newCount);

View File

@@ -194,6 +194,7 @@ WorldPacket const* WorldPackets::Quest::QuestConfirmAcceptResponse::Write()
_worldPacket << uint32(QuestID);
_worldPacket << QuestTitle;
_worldPacket << InitiatedBy;
return &_worldPacket;
}
@@ -204,6 +205,7 @@ WorldPacket const* WorldPackets::Quest::QuestUpdateAddCredit::Write()
_worldPacket << uint32(Count);
_worldPacket << uint32(Required);
_worldPacket << VictimGUID;
return &_worldPacket;
}
@@ -212,6 +214,56 @@ WorldPacket const* WorldPackets::Quest::QuestUpdateAddPvPCredit::Write()
_worldPacket << uint32(QuestID);
_worldPacket << uint32(Count);
_worldPacket << uint32(Required);
return &_worldPacket;
}
WorldPacket const* WorldPackets::Quest::QuestUpdateComplete::Write()
{
_worldPacket << uint32(QuestID);
return &_worldPacket;
}
WorldPacket const* WorldPackets::Quest::QuestUpdateFailedTimer::Write()
{
_worldPacket << uint32(QuestID);
return &_worldPacket;
}
WorldPacket const* WorldPackets::Quest::QuestGiverInvalidQuest::Write()
{
_worldPacket << uint32(Reason);
return &_worldPacket;
}
WorldPacket const* WorldPackets::Quest::QuestGiverQuestFailed::Write()
{
_worldPacket << uint32(QuestID);
_worldPacket << uint32(Reason);
return &_worldPacket;
}
WorldPacket const* WorldPackets::Quest::QuestPushResultResponse::Write()
{
_worldPacket << SenderGUID;
_worldPacket << uint8(Result);
return &_worldPacket;
}
WorldPacket const* WorldPackets::Quest::QuestGiverStatusMultiple::Write()
{
_worldPacket << int32(QuestGiver.size());
for (QuestGiverInfo const& questGiver : QuestGiver)
{
_worldPacket << questGiver.Guid;
_worldPacket << uint32(questGiver.Status);
}
return &_worldPacket;
}

View File

@@ -351,6 +351,76 @@ namespace WorldPackets
uint32 Count = 0;
uint32 Required = 0;
};
class QuestUpdateComplete final : public ServerPacket
{
public:
QuestUpdateComplete() : ServerPacket(SMSG_QUEST_UPDATE_COMPLETE, 4) { }
WorldPacket const* Write() override;
int32 QuestID = 0;
};
class QuestUpdateFailedTimer final : public ServerPacket
{
public:
QuestUpdateFailedTimer() : ServerPacket(SMSG_QUEST_UPDATE_FAILED_TIMER, 4) { }
WorldPacket const* Write() override;
uint32 QuestID = 0;
};
class QuestGiverInvalidQuest final : public ServerPacket
{
public:
QuestGiverInvalidQuest() : ServerPacket(SMSG_QUEST_GIVER_INVALID_QUEST, 6) { }
WorldPacket const* Write() override;
uint32 Reason = 0;
};
class QuestGiverQuestFailed final : public ServerPacket
{
public:
QuestGiverQuestFailed() : ServerPacket(SMSG_QUEST_GIVER_QUEST_FAILED, 8) { }
WorldPacket const* Write() override;
uint32 QuestID = 0;
uint32 Reason = 0;
};
class QuestPushResultResponse final : public ServerPacket
{
public:
QuestPushResultResponse() : ServerPacket(OpcodeServer(MSG_QUEST_PUSH_RESULT), 8 + 1) { }
WorldPacket const* Write() override;
ObjectGuid SenderGUID;
uint8 Result = 0;
};
class QuestGiverStatusMultiple final : public ServerPacket
{
public:
QuestGiverStatusMultiple() : ServerPacket(SMSG_QUEST_GIVER_STATUS_MULTIPLE, 24) { }
WorldPacket const* Write() override;
std::vector<QuestGiverInfo> QuestGiver;
};
class QuestLogFull final : public ServerPacket
{
public:
QuestLogFull() : ServerPacket(SMSG_QUEST_LOG_FULL, 0) { }
WorldPacket const* Write() override { return &_worldPacket; }
};
}
}

View File

@@ -1139,18 +1139,18 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUESTGIVER_OFFER_REWARD, 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);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUESTGIVER_QUEST_FAILED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUESTGIVER_QUEST_INVALID, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_GIVER_QUEST_FAILED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_GIVER_INVALID_QUEST, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_GIVER_QUEST_LIST_MESSAGE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_GIVER_REQUEST_ITEMS, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_GIVER_STATUS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUESTGIVER_STATUS_MULTIPLE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUESTLOG_FULL, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_GIVER_STATUS_MULTIPLE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_LOG_FULL, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_UPDATE_ADD_CREDIT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_UPDATE_ADD_PVP_CREDIT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUESTUPDATE_COMPLETE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUESTUPDATE_FAILED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUESTUPDATE_FAILEDTIMER, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_UPDATE_COMPLETE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_UPDATE_FAILED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_UPDATE_FAILED_TIMER, 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_REMOVE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_NPC_QUERY_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);

View File

@@ -1096,19 +1096,19 @@ enum OpcodeServer
SMSG_QUESTGIVER_OFFER_REWARD = 0x2427,
SMSG_QUEST_GIVER_QUEST_COMPLETE = 0x55A4,
SMSG_QUEST_GIVER_QUEST_DETAILS = 0x2425,
SMSG_QUESTGIVER_QUEST_FAILED = 0x4236,
SMSG_QUESTGIVER_QUEST_INVALID = 0x4016,
SMSG_QUEST_GIVER_QUEST_FAILED = 0x4236,
SMSG_QUEST_GIVER_INVALID_QUEST = 0x4016,
SMSG_QUEST_GIVER_QUEST_LIST_MESSAGE = 0x0134,
SMSG_QUEST_GIVER_REQUEST_ITEMS = 0x6236,
SMSG_QUEST_GIVER_STATUS = 0x2115,
SMSG_QUESTGIVER_STATUS_MULTIPLE = 0x4F25,
SMSG_QUESTLOG_FULL = 0x0E36,
SMSG_QUEST_GIVER_STATUS_MULTIPLE = 0x4F25,
SMSG_QUEST_LOG_FULL = 0x0E36,
SMSG_QUESTUPDATE_ADD_ITEM = 0x0000,
SMSG_QUEST_UPDATE_ADD_CREDIT = 0x0D27,
SMSG_QUEST_UPDATE_ADD_PVP_CREDIT = 0x4416,
SMSG_QUESTUPDATE_COMPLETE = 0x2937,
SMSG_QUESTUPDATE_FAILED = 0x6324,
SMSG_QUESTUPDATE_FAILEDTIMER = 0x6427,
SMSG_QUEST_UPDATE_COMPLETE = 0x2937,
SMSG_QUEST_UPDATE_FAILED = 0x6324,
SMSG_QUEST_UPDATE_FAILED_TIMER = 0x6427,
SMSG_QUEST_NPC_QUERY_RESPONSE = 0x75A1,
SMSG_QUEST_CONFIRM_ACCEPT = 0x6F07,
SMSG_QUEST_FORCE_REMOVE = 0x6605,