aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOvahlord <dreadkiller@gmx.de>2024-07-31 17:38:39 +0200
committerOvahlord <dreadkiller@gmx.de>2024-07-31 17:38:39 +0200
commit8a3a46050cf945ef205c7c281a60ceaae39b3c3f (patch)
tree2ac4ec48f390aa36b99822c9c9718e20a3424bc5
parent58456bff19c8872e6030df6dc1c1ab26d664db7d (diff)
Core/Packets: enabled and added packet class for SMSG_REQUEST_PVP_REWARDS_RESPONSE
-rw-r--r--src/server/game/Entities/Player/Player.cpp4
-rw-r--r--src/server/game/Server/Packets/BattlegroundPackets.cpp14
-rw-r--r--src/server/game/Server/Packets/BattlegroundPackets.h17
-rw-r--r--src/server/game/Server/Packets/LFGPackets.cpp55
-rw-r--r--src/server/game/Server/Packets/LFGPackets.h32
-rw-r--r--src/server/game/Server/Packets/LFGPacketsCommon.cpp55
-rw-r--r--src/server/game/Server/Packets/LFGPacketsCommon.h35
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp2
8 files changed, 124 insertions, 90 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 1dc712130ad..85b6ef3f9fb 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -6696,8 +6696,8 @@ void Player::SendCurrencies() const
void Player::SendPvpRewards() const
{
- //WorldPacket packet(SMSG_REQUEST_PVP_REWARDS_RESPONSE, 24);
- //GetSession()->SendPacket(&packet);
+ WorldPackets::Battleground::RequestPvPRewardsResponse pvpRewardsResponse;
+ SendDirectMessage(pvpRewardsResponse.Write());
}
void Player::SetCreateCurrency(uint32 id, uint32 amount)
diff --git a/src/server/game/Server/Packets/BattlegroundPackets.cpp b/src/server/game/Server/Packets/BattlegroundPackets.cpp
index 5b583ee11f7..cd4b1717bbf 100644
--- a/src/server/game/Server/Packets/BattlegroundPackets.cpp
+++ b/src/server/game/Server/Packets/BattlegroundPackets.cpp
@@ -430,3 +430,17 @@ WorldPacket const* WorldPackets::Battleground::CapturePointRemoved::Write()
_worldPacket << CapturePointGUID;
return &_worldPacket;
}
+
+WorldPacket const* WorldPackets::Battleground::RequestPvPRewardsResponse::Write()
+{
+ _worldPacket << FirstRandomBGWinReward;
+ _worldPacket << FirstRandomBGLossReward;
+ _worldPacket << NthRandomBGWinReward;
+ _worldPacket << NthRandomBGLossReward;
+ _worldPacket << RatedBGRewards;
+ _worldPacket << Arena2v2Rewards;
+ _worldPacket << Arena3v3Rewards;
+ _worldPacket << Arena5v5Rewards;
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/BattlegroundPackets.h b/src/server/game/Server/Packets/BattlegroundPackets.h
index a320ca96399..b4857330df0 100644
--- a/src/server/game/Server/Packets/BattlegroundPackets.h
+++ b/src/server/game/Server/Packets/BattlegroundPackets.h
@@ -566,6 +566,23 @@ namespace WorldPackets
ObjectGuid CapturePointGUID;
};
+
+ class RequestPvPRewardsResponse final : public ServerPacket
+ {
+ public:
+ RequestPvPRewardsResponse() : ServerPacket(SMSG_REQUEST_PVP_REWARDS_RESPONSE) { }
+
+ WorldPacket const* Write() override;
+
+ WorldPackets::LFG::LfgPlayerQuestReward FirstRandomBGWinReward;
+ WorldPackets::LFG::LfgPlayerQuestReward FirstRandomBGLossReward;
+ WorldPackets::LFG::LfgPlayerQuestReward NthRandomBGWinReward;
+ WorldPackets::LFG::LfgPlayerQuestReward NthRandomBGLossReward;
+ WorldPackets::LFG::LfgPlayerQuestReward RatedBGRewards;
+ WorldPackets::LFG::LfgPlayerQuestReward Arena2v2Rewards;
+ WorldPackets::LFG::LfgPlayerQuestReward Arena3v3Rewards;
+ WorldPackets::LFG::LfgPlayerQuestReward Arena5v5Rewards;
+ };
}
}
diff --git a/src/server/game/Server/Packets/LFGPackets.cpp b/src/server/game/Server/Packets/LFGPackets.cpp
index 0e933141dcf..54d3b6ad30f 100644
--- a/src/server/game/Server/Packets/LFGPackets.cpp
+++ b/src/server/game/Server/Packets/LFGPackets.cpp
@@ -92,61 +92,6 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::LFG::LFGBlackList const&
return data;
}
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::LFG::LfgPlayerQuestRewardItem const& playerQuestRewardItem)
-{
- data << int32(playerQuestRewardItem.ItemID);
- data << int32(playerQuestRewardItem.Quantity);
-
- return data;
-}
-
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::LFG::LfgPlayerQuestRewardCurrency const& playerQuestRewardCurrency)
-{
- data << int32(playerQuestRewardCurrency.CurrencyID);
- data << int32(playerQuestRewardCurrency.Quantity);
-
- return data;
-}
-
-ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::LFG::LfgPlayerQuestReward const& playerQuestReward)
-{
- data << uint8(playerQuestReward.Mask);
- data << int32(playerQuestReward.RewardMoney);
- data << int32(playerQuestReward.RewardXP);
- data << uint32(playerQuestReward.Item.size());
- data << uint32(playerQuestReward.Currency.size());
- data << uint32(playerQuestReward.BonusCurrency.size());
-
- for (WorldPackets::LFG::LfgPlayerQuestRewardItem const& item : playerQuestReward.Item)
- data << item;
-
- for (WorldPackets::LFG::LfgPlayerQuestRewardCurrency const& currency : playerQuestReward.Currency)
- data << currency;
-
- for (WorldPackets::LFG::LfgPlayerQuestRewardCurrency const& bonusCurrency : playerQuestReward.BonusCurrency)
- data << bonusCurrency;
-
- data.WriteBit(playerQuestReward.RewardSpellID.has_value());
- data.WriteBit(playerQuestReward.Unused1.has_value());
- data.WriteBit(playerQuestReward.Unused2.has_value());
- data.WriteBit(playerQuestReward.Honor.has_value());
- data.FlushBits();
-
- if (playerQuestReward.RewardSpellID)
- data << int32(*playerQuestReward.RewardSpellID);
-
- if (playerQuestReward.Unused1)
- data << int32(*playerQuestReward.Unused1);
-
- if (playerQuestReward.Unused2)
- data << uint64(*playerQuestReward.Unused2);
-
- if (playerQuestReward.Honor)
- data << int32(*playerQuestReward.Honor);
-
- return data;
-}
-
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::LFG::LfgPlayerDungeonInfo const& playerDungeonInfo)
{
data << uint32(playerDungeonInfo.Slot);
diff --git a/src/server/game/Server/Packets/LFGPackets.h b/src/server/game/Server/Packets/LFGPackets.h
index 3ca806fe187..9155c55fb45 100644
--- a/src/server/game/Server/Packets/LFGPackets.h
+++ b/src/server/game/Server/Packets/LFGPackets.h
@@ -155,38 +155,6 @@ namespace WorldPackets
std::vector<LFGBlackListSlot> Slot;
};
- struct LfgPlayerQuestRewardItem
- {
- LfgPlayerQuestRewardItem() = default;
- LfgPlayerQuestRewardItem(int32 itemId, int32 quantity) : ItemID(itemId), Quantity(quantity) { }
-
- int32 ItemID = 0;
- int32 Quantity = 0;
- };
-
- struct LfgPlayerQuestRewardCurrency
- {
- LfgPlayerQuestRewardCurrency() = default;
- LfgPlayerQuestRewardCurrency(int32 currencyID, int32 quantity) : CurrencyID(currencyID), Quantity(quantity) { }
-
- int32 CurrencyID = 0;
- int32 Quantity = 0;
- };
-
- struct LfgPlayerQuestReward
- {
- uint8 Mask = 0; // Roles required for this reward, only used by ShortageReward in SMSG_LFG_PLAYER_INFO
- int32 RewardMoney = 0; // Only used by SMSG_LFG_PLAYER_INFO
- int32 RewardXP = 0;
- std::vector<LfgPlayerQuestRewardItem> Item;
- std::vector<LfgPlayerQuestRewardCurrency> Currency; // Only used by SMSG_LFG_PLAYER_INFO
- std::vector<LfgPlayerQuestRewardCurrency> BonusCurrency; // Only used by SMSG_LFG_PLAYER_INFO
- Optional<int32> RewardSpellID; // Only used by SMSG_LFG_PLAYER_INFO
- Optional<int32> Unused1;
- Optional<uint64> Unused2;
- Optional<int32> Honor; // Only used by SMSG_REQUEST_PVP_REWARDS_RESPONSE
- };
-
struct LfgPlayerDungeonInfo
{
uint32 Slot = 0;
diff --git a/src/server/game/Server/Packets/LFGPacketsCommon.cpp b/src/server/game/Server/Packets/LFGPacketsCommon.cpp
index a88cc08977e..cace6d46439 100644
--- a/src/server/game/Server/Packets/LFGPacketsCommon.cpp
+++ b/src/server/game/Server/Packets/LFGPacketsCommon.cpp
@@ -40,3 +40,58 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::LFG::RideTicket const& ti
return data;
}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::LFG::LfgPlayerQuestRewardItem const& playerQuestRewardItem)
+{
+ data << int32(playerQuestRewardItem.ItemID);
+ data << int32(playerQuestRewardItem.Quantity);
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::LFG::LfgPlayerQuestRewardCurrency const& playerQuestRewardCurrency)
+{
+ data << int32(playerQuestRewardCurrency.CurrencyID);
+ data << int32(playerQuestRewardCurrency.Quantity);
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::LFG::LfgPlayerQuestReward const& playerQuestReward)
+{
+ data << uint8(playerQuestReward.Mask);
+ data << int32(playerQuestReward.RewardMoney);
+ data << int32(playerQuestReward.RewardXP);
+ data << uint32(playerQuestReward.Item.size());
+ data << uint32(playerQuestReward.Currency.size());
+ data << uint32(playerQuestReward.BonusCurrency.size());
+
+ for (WorldPackets::LFG::LfgPlayerQuestRewardItem const& item : playerQuestReward.Item)
+ data << item;
+
+ for (WorldPackets::LFG::LfgPlayerQuestRewardCurrency const& currency : playerQuestReward.Currency)
+ data << currency;
+
+ for (WorldPackets::LFG::LfgPlayerQuestRewardCurrency const& bonusCurrency : playerQuestReward.BonusCurrency)
+ data << bonusCurrency;
+
+ data.WriteBit(playerQuestReward.RewardSpellID.has_value());
+ data.WriteBit(playerQuestReward.Unused1.has_value());
+ data.WriteBit(playerQuestReward.Unused2.has_value());
+ data.WriteBit(playerQuestReward.Honor.has_value());
+ data.FlushBits();
+
+ if (playerQuestReward.RewardSpellID)
+ data << int32(*playerQuestReward.RewardSpellID);
+
+ if (playerQuestReward.Unused1)
+ data << int32(*playerQuestReward.Unused1);
+
+ if (playerQuestReward.Unused2)
+ data << uint64(*playerQuestReward.Unused2);
+
+ if (playerQuestReward.Honor)
+ data << int32(*playerQuestReward.Honor);
+
+ return data;
+}
diff --git a/src/server/game/Server/Packets/LFGPacketsCommon.h b/src/server/game/Server/Packets/LFGPacketsCommon.h
index 2244b7dcd31..c7837d5c150 100644
--- a/src/server/game/Server/Packets/LFGPacketsCommon.h
+++ b/src/server/game/Server/Packets/LFGPacketsCommon.h
@@ -40,10 +40,45 @@ namespace WorldPackets
Timestamp<> Time;
bool Unknown925 = false;
};
+
+ struct LfgPlayerQuestRewardItem
+ {
+ LfgPlayerQuestRewardItem() = default;
+ LfgPlayerQuestRewardItem(int32 itemId, int32 quantity) : ItemID(itemId), Quantity(quantity) { }
+
+ int32 ItemID = 0;
+ int32 Quantity = 0;
+ };
+
+ struct LfgPlayerQuestRewardCurrency
+ {
+ LfgPlayerQuestRewardCurrency() = default;
+ LfgPlayerQuestRewardCurrency(int32 currencyID, int32 quantity) : CurrencyID(currencyID), Quantity(quantity) { }
+
+ int32 CurrencyID = 0;
+ int32 Quantity = 0;
+ };
+
+ struct LfgPlayerQuestReward
+ {
+ uint8 Mask = 0; // Roles required for this reward, only used by ShortageReward in SMSG_LFG_PLAYER_INFO
+ int32 RewardMoney = 0; // Only used by SMSG_LFG_PLAYER_INFO
+ int32 RewardXP = 0;
+ std::vector<LfgPlayerQuestRewardItem> Item;
+ std::vector<LfgPlayerQuestRewardCurrency> Currency; // Only used by SMSG_LFG_PLAYER_INFO
+ std::vector<LfgPlayerQuestRewardCurrency> BonusCurrency; // Only used by SMSG_LFG_PLAYER_INFO
+ Optional<int32> RewardSpellID; // Only used by SMSG_LFG_PLAYER_INFO
+ Optional<int32> Unused1;
+ Optional<uint64> Unused2;
+ Optional<int32> Honor; // Only used by SMSG_REQUEST_PVP_REWARDS_RESPONSE
+ };
}
}
ByteBuffer& operator>>(ByteBuffer& data, WorldPackets::LFG::RideTicket& ticket);
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::LFG::RideTicket const& ticket);
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::LFG::LfgPlayerQuestRewardItem const& playerQuestRewardItem);
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::LFG::LfgPlayerQuestRewardCurrency const& playerQuestRewardCurrency);
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::LFG::LfgPlayerQuestReward const& playerQuestReward);
#endif // LFGPacketsCommon_h__
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index e183516e4cf..f3ecb895b1b 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -1865,7 +1865,7 @@ void OpcodeTable::InitializeServerOpcodes()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REPLACE_TROPHY_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REPORT_PVP_PLAYER_AFK_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REQUEST_CEMETERY_LIST_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_REQUEST_PVP_REWARDS_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_REQUEST_PVP_REWARDS_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_REQUEST_SCHEDULED_PVP_INFO_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_COMPRESSION_CONTEXT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_FAILED_NOTIFY, STATUS_NEVER, CONNECTION_TYPE_REALM);