mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-23 10:26:28 +01:00
Core/PacketIO: Added CMSG_REQUEST_WORLD_QUEST_UPDATE / SMSG_WORLD_QUEST_UPDATE opcodes
This commit is contained in:
@@ -435,7 +435,7 @@ void WorldSession::HandleQuestLogRemoveQuest(WorldPackets::Quest::QuestLogRemove
|
||||
}
|
||||
|
||||
_player->TakeQuestSourceItem(questId, true); // remove quest src item from player
|
||||
_player->AbandonQuest(questId); // remove all quest items player received before abandoning quest. Note, this does not remove normal drop items that happen to be quest requirements.
|
||||
_player->AbandonQuest(questId); // remove all quest items player received before abandoning quest. Note, this does not remove normal drop items that happen to be quest requirements.
|
||||
_player->RemoveActiveQuest(questId);
|
||||
_player->RemoveCriteriaTimer(CRITERIA_TIMED_TYPE_QUEST, questId);
|
||||
|
||||
@@ -669,3 +669,13 @@ void WorldSession::HandleQuestgiverStatusMultipleQuery(WorldPackets::Quest::Ques
|
||||
|
||||
SendPacket(response.Write());
|
||||
}
|
||||
|
||||
void WorldSession::HandleRequestWorldQuestUpdate(WorldPackets::Quest::RequestWorldQuestUpdate& /*packet*/)
|
||||
{
|
||||
WorldPackets::Quest::WorldQuestUpdate response;
|
||||
|
||||
/// @todo: 7.x Has to be implemented
|
||||
//response.WorldQuestUpdates.push_back(WorldPackets::Quest::WorldQuestUpdateInfo(lastUpdate, questID, timer, variableID, value));
|
||||
|
||||
SendPacket(response.Write());
|
||||
}
|
||||
|
||||
@@ -576,3 +576,19 @@ WorldPacket const* WorldPackets::Quest::DailyQuestsReset::Write()
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
WorldPacket const* WorldPackets::Quest::WorldQuestUpdate::Write()
|
||||
{
|
||||
_worldPacket << uint32(WorldQuestUpdates.size());
|
||||
|
||||
for (WorldQuestUpdateInfo const& worldQuestUpdate : WorldQuestUpdates)
|
||||
{
|
||||
_worldPacket << int32(worldQuestUpdate.LastUpdate);
|
||||
_worldPacket << uint32(worldQuestUpdate.QuestID);
|
||||
_worldPacket << uint32(worldQuestUpdate.Timer);
|
||||
_worldPacket << int32(worldQuestUpdate.VariableID);
|
||||
_worldPacket << int32(worldQuestUpdate.Value);
|
||||
}
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
@@ -594,6 +594,36 @@ namespace WorldPackets
|
||||
|
||||
int32 Count = 0;
|
||||
};
|
||||
|
||||
class RequestWorldQuestUpdate final : public ClientPacket
|
||||
{
|
||||
public:
|
||||
RequestWorldQuestUpdate(WorldPacket&& packet) : ClientPacket(CMSG_REQUEST_WORLD_QUEST_UPDATE, std::move(packet)) { }
|
||||
|
||||
void Read() override { }
|
||||
};
|
||||
|
||||
struct WorldQuestUpdateInfo
|
||||
{
|
||||
WorldQuestUpdateInfo(int32 lastUpdate, uint32 questID, uint32 timer, int32 variableID, int32 value) :
|
||||
LastUpdate(lastUpdate), QuestID(questID), Timer(timer), VariableID(variableID), Value(value) { }
|
||||
int32 LastUpdate;
|
||||
uint32 QuestID;
|
||||
uint32 Timer;
|
||||
// WorldState
|
||||
int32 VariableID;
|
||||
int32 Value;
|
||||
};
|
||||
|
||||
class WorldQuestUpdate final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
WorldQuestUpdate() : ServerPacket(SMSG_WORLD_QUEST_UPDATE, 100) { }
|
||||
|
||||
WorldPacket const* Write() override;
|
||||
|
||||
std::vector<WorldQuestUpdateInfo> WorldQuestUpdates;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -677,6 +677,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_HANDLER(CMSG_REQUEST_VEHICLE_NEXT_SEAT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestVehicleNextSeat);
|
||||
DEFINE_HANDLER(CMSG_REQUEST_VEHICLE_PREV_SEAT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestVehiclePrevSeat);
|
||||
DEFINE_HANDLER(CMSG_REQUEST_VEHICLE_SWITCH_SEAT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestVehicleSwitchSeat);
|
||||
DEFINE_HANDLER(CMSG_REQUEST_WORLD_QUEST_UPDATE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestWorldQuestUpdate);
|
||||
DEFINE_HANDLER(CMSG_REQUEST_WOW_TOKEN_MARKET_PRICE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestWowTokenMarketPrice);
|
||||
DEFINE_HANDLER(CMSG_RESET_CHALLENGE_MODE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_RESET_INSTANCES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleResetInstancesOpcode);
|
||||
@@ -1766,6 +1767,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WEEKLY_SPELL_USAGE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WHO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WHO_IS, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WORLD_QUEST_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WORLD_SERVER_INFO, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WORLD_TEXT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_WOW_TOKEN_AUCTION_SOLD, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
|
||||
@@ -592,6 +592,7 @@ enum OpcodeClient : uint32
|
||||
CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x321C,
|
||||
CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x321B,
|
||||
CMSG_REQUEST_VEHICLE_SWITCH_SEAT = 0x321D,
|
||||
CMSG_REQUEST_WORLD_QUEST_UPDATE = 0x3323,
|
||||
CMSG_REQUEST_WOW_TOKEN_MARKET_PRICE = 0x36EC,
|
||||
CMSG_RESET_CHALLENGE_MODE = 0x31EB,
|
||||
CMSG_RESET_INSTANCES = 0x366D,
|
||||
@@ -1674,6 +1675,7 @@ enum OpcodeServer : uint32
|
||||
SMSG_WEEKLY_SPELL_USAGE = 0x2C18,
|
||||
SMSG_WHO = 0x2BAE,
|
||||
SMSG_WHO_IS = 0x26CB,
|
||||
SMSG_WORLD_QUEST_UPDATE = 0x283C,
|
||||
SMSG_WORLD_SERVER_INFO = 0x25C0,
|
||||
SMSG_WORLD_TEXT = 0x2824,
|
||||
SMSG_WOW_TOKEN_AUCTION_SOLD = 0x2813,
|
||||
|
||||
@@ -558,6 +558,7 @@ namespace WorldPackets
|
||||
class QuestLogRemoveQuest;
|
||||
class QuestPushResult;
|
||||
class PushQuestToParty;
|
||||
class RequestWorldQuestUpdate;
|
||||
}
|
||||
|
||||
namespace RaF
|
||||
@@ -1464,6 +1465,7 @@ class TC_GAME_API WorldSession
|
||||
void HandleQuestgiverQuestAutoLaunch(WorldPacket& recvPacket);
|
||||
void HandlePushQuestToParty(WorldPackets::Quest::PushQuestToParty& packet);
|
||||
void HandleQuestPushResult(WorldPackets::Quest::QuestPushResult& packet);
|
||||
void HandleRequestWorldQuestUpdate(WorldPackets::Quest::RequestWorldQuestUpdate& packet);
|
||||
|
||||
void HandleChatMessageOpcode(WorldPackets::Chat::ChatMessage& chatMessage);
|
||||
void HandleChatMessageWhisperOpcode(WorldPackets::Chat::ChatMessageWhisper& chatMessageWhisper);
|
||||
|
||||
Reference in New Issue
Block a user