diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Item/Item.cpp | 9 | ||||
-rw-r--r-- | src/server/game/Server/Packets/ItemPackets.cpp | 8 | ||||
-rw-r--r-- | src/server/game/Server/Packets/ItemPackets.h | 11 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.h | 2 |
5 files changed, 26 insertions, 6 deletions
diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp index 31af5e7b182..5aa196e9fbc 100644 --- a/src/server/game/Entities/Item/Item.cpp +++ b/src/server/game/Entities/Item/Item.cpp @@ -29,6 +29,7 @@ #include "Player.h" #include "Opcodes.h" #include "WorldSession.h" +#include "ItemPackets.h" void AddItemsSetItem(Player* player, Item* item) { @@ -1048,10 +1049,10 @@ void Item::SendTimeUpdate(Player* owner) if (!duration) return; - WorldPacket data(SMSG_ITEM_TIME_UPDATE, (8+4)); - data << GetGUID(); - data << uint32(duration); - owner->GetSession()->SendPacket(&data); + WorldPackets::Item::ItemTimeUpdate itemTimeUpdate; + itemTimeUpdate.ItemGuid = GetGUID(); + itemTimeUpdate.DurationLeft = duration; + owner->GetSession()->SendPacket(itemTimeUpdate.Write()); } Item* Item::CreateItem(uint32 itemEntry, uint32 count, Player const* player) diff --git a/src/server/game/Server/Packets/ItemPackets.cpp b/src/server/game/Server/Packets/ItemPackets.cpp index b5465b47e35..3d62b1bb575 100644 --- a/src/server/game/Server/Packets/ItemPackets.cpp +++ b/src/server/game/Server/Packets/ItemPackets.cpp @@ -42,6 +42,14 @@ void WorldPackets::Item::SellItem::Read() _worldPacket >> Amount; } +WorldPacket const* WorldPackets::Item::ItemTimeUpdate::Write() +{ + _worldPacket << ItemGuid; + _worldPacket << DurationLeft; + + return &_worldPacket; +} + WorldPacket const* WorldPackets::Item::SetProficiency::Write() { _worldPacket << ProficiencyMask; diff --git a/src/server/game/Server/Packets/ItemPackets.h b/src/server/game/Server/Packets/ItemPackets.h index d84d2266a3c..f5c8bbf24b7 100644 --- a/src/server/game/Server/Packets/ItemPackets.h +++ b/src/server/game/Server/Packets/ItemPackets.h @@ -70,6 +70,17 @@ namespace WorldPackets uint32 Amount = 0; }; + class ItemTimeUpdate final : public ServerPacket + { + public: + ItemTimeUpdate() : ServerPacket(SMSG_ITEM_TIME_UPDATE, 8 + 4) { } + + WorldPacket const* Write() override; + + ObjectGuid ItemGuid; + uint32 DurationLeft = 0; + }; + class SetProficiency final : public ServerPacket { public: diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index d1502e0c863..338d95fe800 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -1049,7 +1049,7 @@ void OpcodeTable::Initialize() DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_REMOVE_PASSIVE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_SEND_PASSIVE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_TEXT_QUERY_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_TIME_UPDATE, STATUS_UNHANDLED, 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); DEFINE_SERVER_OPCODE_HANDLER(SMSG_LEARNED_DANCE_MOVES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_LEARNED_SPELLS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index b33f218c898..704d71bcef9 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -441,7 +441,7 @@ enum OpcodeClient : uint32 CMSG_OBJECT_UPDATE_RESCUED = 0xBADD, CMSG_OFFER_PETITION = 0xBADD, CMSG_OPENING_CINEMATIC = 0xBADD, - CMSG_OPEN_ITEM = 0xBADD, + CMSG_OPEN_ITEM = 0x08AD, CMSG_OPT_OUT_OF_LOOT = 0xBADD, CMSG_PAGE_TEXT_QUERY = 0x0BBB, CMSG_PARTY_SILENCE = 0xBADD, |