diff options
| author | Shauren <shauren.trinity@gmail.com> | 2015-10-19 21:18:48 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2015-10-19 21:18:48 +0200 |
| commit | d03ff1433f76008c1add502737b15afac4a168b3 (patch) | |
| tree | 11aaa23f6cb96dca7fa10491c3c65a6ae846a2a1 /src/server/game/Server | |
| parent | b09aa673678970986904b4db7e4286a1588746e7 (diff) | |
Core/PacketIO: Updated and enabled item refund opcodes
Diffstat (limited to 'src/server/game/Server')
| -rw-r--r-- | src/server/game/Server/Packets/ItemPackets.cpp | 57 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/ItemPackets.h | 54 | ||||
| -rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 10 |
3 files changed, 116 insertions, 5 deletions
diff --git a/src/server/game/Server/Packets/ItemPackets.cpp b/src/server/game/Server/Packets/ItemPackets.cpp index b6b69b84eac..81b1c845ac9 100644 --- a/src/server/game/Server/Packets/ItemPackets.cpp +++ b/src/server/game/Server/Packets/ItemPackets.cpp @@ -71,6 +71,63 @@ void WorldPackets::Item::GetItemPurchaseData::Read() _worldPacket >> ItemGUID; } +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Item::ItemPurchaseRefundItem& refundItem) +{ + data << refundItem.ItemID; + data << refundItem.ItemCount; + + return data; +} + +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Item::ItemPurchaseRefundCurrency& refundCurrency) +{ + data << refundCurrency.CurrencyID; + data << refundCurrency.CurrencyCount; + + return data; +} + +ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Item::ItemPurchaseContents& purchaseContents) +{ + data << purchaseContents.Money; + for (uint32 i = 0; i < 5; ++i) + data << purchaseContents.Items[i]; + + for (uint32 i = 0; i < 5; ++i) + data << purchaseContents.Currencies[i]; + + return data; +} + +WorldPacket const* WorldPackets::Item::SetItemPurchaseData::Write() +{ + _worldPacket << ItemGUID; + _worldPacket << Contents; + _worldPacket << Flags; + _worldPacket << PurchaseTime; + + return &_worldPacket; +} + +WorldPacket const* WorldPackets::Item::ItemPurchaseRefundResult::Write() +{ + _worldPacket << ItemGUID; + _worldPacket << uint8(Result); + _worldPacket.WriteBit(Contents.is_initialized()); + _worldPacket.FlushBits(); + if (Contents) + _worldPacket << *Contents; + + return &_worldPacket; +} + +WorldPacket const* WorldPackets::Item::ItemExpirePurchaseRefund::Write() +{ + _worldPacket << ItemGUID; + + return &_worldPacket; +} + void WorldPackets::Item::RepairItem::Read() { _worldPacket >> NpcGUID; diff --git a/src/server/game/Server/Packets/ItemPackets.h b/src/server/game/Server/Packets/ItemPackets.h index db7e9a01c0a..5435559fc74 100644 --- a/src/server/game/Server/Packets/ItemPackets.h +++ b/src/server/game/Server/Packets/ItemPackets.h @@ -115,6 +115,60 @@ namespace WorldPackets ObjectGuid ItemGUID; }; + struct ItemPurchaseRefundItem + { + int32 ItemID = 0; + int32 ItemCount = 0; + }; + + struct ItemPurchaseRefundCurrency + { + int32 CurrencyID = 0; + int32 CurrencyCount = 0; + }; + + struct ItemPurchaseContents + { + uint32 Money = 0; + ItemPurchaseRefundItem Items[5] = { }; + ItemPurchaseRefundCurrency Currencies[5] = { }; + }; + + class SetItemPurchaseData final : public ServerPacket + { + public: + SetItemPurchaseData() : ServerPacket(SMSG_SET_ITEM_PURCHASE_DATA, 4 + 4 + 4 + 5 * (4 + 4) + 5 * (4 + 4) + 16) { } + + WorldPacket const* Write() override; + + uint32 PurchaseTime = 0; + uint32 Flags = 0; + ItemPurchaseContents Contents; + ObjectGuid ItemGUID; + }; + + class ItemPurchaseRefundResult final : public ServerPacket + { + public: + ItemPurchaseRefundResult() : ServerPacket(SMSG_ITEM_PURCHASE_REFUND_RESULT, 1 + 4 + 5 * (4 + 4) + 5 * (4 + 4) + 16) { } + + WorldPacket const* Write() override; + + uint8 Result = 0; + ObjectGuid ItemGUID; + Optional<ItemPurchaseContents> Contents; + }; + + class ItemExpirePurchaseRefund final : public ServerPacket + { + public: + ItemExpirePurchaseRefund() : ServerPacket(SMSG_ITEM_EXPIRE_PURCHASE_REFUND, 16) { } + + WorldPacket const* Write() override; + + ObjectGuid ItemGUID; + }; + class RepairItem final : public ClientPacket { public: diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index c59a4bb3175..5f41c357fe4 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -398,7 +398,7 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_GENERATE_RANDOM_CHARACTER_NAME, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::GenerateRandomCharacterName, &WorldSession::HandleRandomizeCharNameOpcode); DEFINE_HANDLER(CMSG_GET_CHALLENGE_MODE_REWARDS, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_GET_GARRISON_INFO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Garrison::GetGarrisonInfo, &WorldSession::HandleGetGarrisonInfo); - DEFINE_HANDLER(CMSG_GET_ITEM_PURCHASE_DATA, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Item::GetItemPurchaseData, &WorldSession::HandleGetItemPurchaseData); + DEFINE_HANDLER(CMSG_GET_ITEM_PURCHASE_DATA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Item::GetItemPurchaseData, &WorldSession::HandleGetItemPurchaseData); DEFINE_HANDLER(CMSG_GET_MIRROR_IMAGE_DATA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Spells::GetMirrorImageData, &WorldSession::HandleMirrorImageDataRequest); DEFINE_HANDLER(CMSG_GET_PVP_OPTIONS_ENABLED, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Battleground::GetPVPOptionsEnabled, &WorldSession::HandleGetPVPOptionsEnabled); DEFINE_HANDLER(CMSG_GET_REMAINING_GAME_TIME, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL); @@ -1259,9 +1259,9 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_IS_QUEST_COMPLETE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_COOLDOWN, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_ENCHANT_TIME_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_EXPIRE_PURCHASE_REFUND, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_PURCHASE_REFUND_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_ENCHANT_TIME_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_EXPIRE_PURCHASE_REFUND, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_PURCHASE_REFUND_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_PUSH_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_TIME_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_KICK_REASON, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1616,7 +1616,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_FACTION_VISIBLE, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_FLAT_SPELL_MODIFIER, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_FORCED_REACTIONS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_ITEM_PURCHASE_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_ITEM_PURCHASE_DATA, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_LOOT_METHOD_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_MAX_WEEKLY_QUANTITY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SET_MELEE_ANIM_KIT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); |
