TrinityCore
Loading...
Searching...
No Matches
ItemPackets.h
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef TRINITYCORE_ITEM_PACKETS_H
19#define TRINITYCORE_ITEM_PACKETS_H
20
21#include "Packet.h"
23#include "DBCEnums.h"
24#include "ItemDefines.h"
25#include "ItemPacketsCommon.h"
26#include "ObjectGuid.h"
27#include "Optional.h"
28#include <array>
29
30struct VoidStorageItem;
31enum class BagSlotFlags : uint32;
32
33namespace WorldPackets
34{
35 namespace Item
36 {
37 class BuyBackItem final : public ClientPacket
38 {
39 public:
40 explicit BuyBackItem(WorldPacket&& packet) : ClientPacket(CMSG_BUY_BACK_ITEM, std::move(packet)) { }
41
42 void Read() override;
43
46 };
47
48 class BuyItem final : public ClientPacket
49 {
50 public:
51 explicit BuyItem(WorldPacket&& packet) : ClientPacket(CMSG_BUY_ITEM, std::move(packet)) { }
52
53 void Read() override;
54
62 };
63
65 {
66 public:
67 explicit BuySucceeded() : ServerPacket(SMSG_BUY_SUCCEEDED, 16 + 4 + 4 + 4 + 4) { }
68
69 WorldPacket const* Write() override;
70
75 };
76
77 class BuyFailed final : ServerPacket
78 {
79 public:
80 explicit BuyFailed() : ServerPacket(SMSG_BUY_FAILED, 16 + 4 + 1) { }
81
82 WorldPacket const* Write() override;
83
87 };
88
89 class GetItemPurchaseData final : public ClientPacket
90 {
91 public:
93
94 void Read() override;
95
97 };
98
104
110
117
119 {
120 public:
121 explicit SetItemPurchaseData() : ServerPacket(SMSG_SET_ITEM_PURCHASE_DATA, 4 + 4 + 4 + 5 * (4 + 4) + 5 * (4 + 4) + 16) { }
122
123 WorldPacket const* Write() override;
124
129 };
130
131 class ItemPurchaseRefund final : public ClientPacket
132 {
133 public:
135
136 void Read() override;
137
139 };
140
142 {
143 public:
144 explicit ItemPurchaseRefundResult() : ServerPacket(SMSG_ITEM_PURCHASE_REFUND_RESULT, 1 + 4 + 5 * (4 + 4) + 5 * (4 + 4) + 16) { }
145
146 WorldPacket const* Write() override;
147
151 };
152
154 {
155 public:
157
158 WorldPacket const* Write() override;
159
161 };
162
163 class RepairItem final : public ClientPacket
164 {
165 public:
166 explicit RepairItem(WorldPacket&& packet) : ClientPacket(CMSG_REPAIR_ITEM, std::move(packet)) { }
167
168 void Read() override;
169
172 bool UseGuildBank = false;
173 };
174
175 class SellItem final : public ClientPacket
176 {
177 public:
178 explicit SellItem(WorldPacket&& packet) : ClientPacket(CMSG_SELL_ITEM, std::move(packet)) { }
179
180 void Read() override;
181
185 };
186
187 class SellAllJunkItems final : public ClientPacket
188 {
189 public:
191
192 void Read() override;
193
195 };
196
197 class ItemTimeUpdate final : public ServerPacket
198 {
199 public:
201
202 WorldPacket const* Write() override;
203
206 };
207
208 class SetProficiency final : public ServerPacket
209 {
210 public:
212
213 WorldPacket const* Write() override;
214
217 };
218
235
236 class SplitItem final : public ClientPacket
237 {
238 public:
239 explicit SplitItem(WorldPacket&& packet) : ClientPacket(CMSG_SPLIT_ITEM, std::move(packet)) { }
240
241 void Read() override;
242
249 };
250
251 class SwapInvItem final : public ClientPacket
252 {
253 public:
254 explicit SwapInvItem(WorldPacket&& packet) : ClientPacket(CMSG_SWAP_INV_ITEM, std::move(packet)) { }
255
256 void Read() override;
257
261 };
262
263 class SwapItem final : public ClientPacket
264 {
265 public:
266 explicit SwapItem(WorldPacket&& packet) : ClientPacket(CMSG_SWAP_ITEM, std::move(packet)) { }
267
268 void Read() override;
269
275 };
276
277 class AutoEquipItem final : public ClientPacket
278 {
279 public:
280 explicit AutoEquipItem(WorldPacket&& packet) : ClientPacket(CMSG_AUTO_EQUIP_ITEM, std::move(packet)) { }
281
282 void Read() override;
283
287 };
288
289 class AutoEquipItemSlot final : public ClientPacket
290 {
291 public:
293
294 void Read() override;
295
299 };
300
301 class AutoStoreBagItem final : public ClientPacket
302 {
303 public:
305
306 void Read() override;
307
312 };
313
314 class DestroyItem final : public ClientPacket
315 {
316 public:
317 explicit DestroyItem(WorldPacket&& packet) : ClientPacket(CMSG_DESTROY_ITEM, std::move(packet)) { }
318
319 void Read() override;
320
324 };
325
326 class SellResponse final : public ServerPacket
327 {
328 public:
329 explicit SellResponse() : ServerPacket(SMSG_SELL_RESPONSE, 16 + 16 + 1) { }
330
331 WorldPacket const* Write() override;
332
334 std::vector<ObjectGuid> ItemGUIDs;
336 };
337
338 class ItemPushResult final : public ServerPacket
339 {
340 public:
347
348 explicit ItemPushResult() : ServerPacket(SMSG_ITEM_PUSH_RESULT, 16 + 1 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 16 + 1 + 1 + 1 + 1) { }
349
350 WorldPacket const* Write() override;
351
356 int32 ProxyItemID = 0; // Item ID used for updating quest progress
357 // only set if different than real ID (similar to CreatureTemplate.KillCredit)
367 std::vector<UiEventToast> Toasts;
370 bool Pushed = false;
372 bool Created = false;
373 bool FakeQuestItem = false;
374 bool IsBonusRoll = false;
375 bool IsPersonalLoot = false;
376 };
377
378 class ReadItem final : public ClientPacket
379 {
380 public:
381 explicit ReadItem(WorldPacket&& packet) : ClientPacket(CMSG_READ_ITEM, std::move(packet)) { }
382
383 void Read() override;
384
387 };
388
390 {
391 public:
393
394 WorldPacket const* Write() override;
395
399 };
400
401 class ReadItemResultOK final : public ServerPacket
402 {
403 public:
405
406 WorldPacket const* Write() override;
407
409 };
410
411 class WrapItem final : public ClientPacket
412 {
413 public:
414 explicit WrapItem(WorldPacket&& packet) : ClientPacket(CMSG_WRAP_ITEM, std::move(packet)) { }
415
416 void Read() override;
417
419 };
420
422 {
423 public:
425
426 void Read() override;
427
429 };
430
431 class ItemCooldown final : public ServerPacket
432 {
433 public:
435
436 WorldPacket const* Write() override;
437
441 };
442
457
470
471 class UseCritterItem final : public ClientPacket
472 {
473 public:
474 explicit UseCritterItem(WorldPacket&& packet) : ClientPacket(CMSG_USE_CRITTER_ITEM, std::move(packet)) { }
475
476 void Read() override;
477
479 };
480
481 class SocketGems final : public ClientPacket
482 {
483 public:
484 explicit SocketGems(WorldPacket&& packet) : ClientPacket(CMSG_SOCKET_GEMS, std::move(packet)) { }
485
486 void Read() override;
487
489 std::array<ObjectGuid, MAX_ITEM_PROTO_SOCKETS> GemItem = { };
490 };
491
492 class SocketGemsSuccess final : public ServerPacket
493 {
494 public:
496
497 WorldPacket const* Write() override;
498
500 };
501
503 {
504 public:
506
507 void Read() override { }
508 };
509
510 class SortBags final : public ClientPacket
511 {
512 public:
513 SortBags(WorldPacket&& packet) : ClientPacket(CMSG_SORT_BAGS, std::move(packet)) { }
514
515 void Read() override { }
516 };
517
518 class SortBankBags final : public ClientPacket
519 {
520 public:
521 explicit SortBankBags(WorldPacket&& packet) : ClientPacket(CMSG_SORT_BANK_BAGS, std::move(packet)) { }
522
523 void Read() override { }
524 };
525
526 class BagCleanupFinished final : public ServerPacket
527 {
528 public:
530
531 WorldPacket const* Write() override { return &_worldPacket; }
532 };
533
534 class RemoveNewItem final : public ClientPacket
535 {
536 public:
537 explicit RemoveNewItem(WorldPacket&& packet) : ClientPacket(CMSG_REMOVE_NEW_ITEM, std::move(packet)) { }
538
539 void Read() override;
540
542 };
543
545 {
546 public:
548
549 WorldPacket const* Write() override { return &_worldPacket; }
550 };
551
552 class ChangeBagSlotFlag final : public ClientPacket
553 {
554 public:
556
557 void Read() override;
558
561 bool On = false;
562 };
563
565 {
566 public:
568
569 void Read() override;
570
573 bool On = false;
574 };
575
577 {
578 public:
580
581 void Read() override;
582
583 bool Disable = false;
584 };
585
587 {
588 public:
590
591 void Read() override;
592
593 bool Disable = false;
594 };
595
597 {
598 public:
600
601 void Read() override;
602
603 bool Disable = false;
604 };
605
606 class AddItemPassive final : public ServerPacket
607 {
608 public:
610
611 WorldPacket const* Write() override;
612
614 };
615
616 class RemoveItemPassive final : public ServerPacket
617 {
618 public:
620
621 WorldPacket const* Write() override;
622
624 };
625
626 class SendItemPassives final : public ServerPacket
627 {
628 public:
630
631 WorldPacket const* Write() override;
632
633 std::vector<int32> SpellID;
634 };
635 }
636}
637
638#endif // TRINITYCORE_ITEM_PACKETS_H
uint8_t uint8
Definition Define.h:156
int32_t int32
Definition Define.h:150
uint64_t uint64
Definition Define.h:153
uint32_t uint32
Definition Define.h:154
@ EQUIP_ERR_OK
Definition ItemDefines.h:26
BuyResult
@ BUY_ERR_CANT_FIND_ITEM
SellResult
@ SELL_ERR_UNK
ItemVendorType
@ ITEM_VENDOR_TYPE_NONE
@ SMSG_READ_ITEM_RESULT_FAILED
Definition Opcodes.h:2195
@ SMSG_ITEM_EXPIRE_PURCHASE_REFUND
Definition Opcodes.h:1765
@ SMSG_REMOVE_ITEM_PASSIVE
Definition Opcodes.h:2209
@ SMSG_ENCHANTMENT_LOG
Definition Opcodes.h:1437
@ SMSG_SET_PROFICIENCY
Definition Opcodes.h:2296
@ SMSG_ITEM_PUSH_RESULT
Definition Opcodes.h:1768
@ SMSG_INVENTORY_FULL_OVERFLOW
Definition Opcodes.h:1758
@ SMSG_BUY_FAILED
Definition Opcodes.h:1243
@ SMSG_BAG_CLEANUP_FINISHED
Definition Opcodes.h:1177
@ SMSG_SOCKET_GEMS_SUCCESS
Definition Opcodes.h:2312
@ SMSG_SELL_RESPONSE
Definition Opcodes.h:2258
@ SMSG_READ_ITEM_RESULT_OK
Definition Opcodes.h:2196
@ SMSG_BUY_SUCCEEDED
Definition Opcodes.h:1244
@ SMSG_SEND_ITEM_PASSIVES
Definition Opcodes.h:2260
@ SMSG_ITEM_COOLDOWN
Definition Opcodes.h:1763
@ SMSG_ITEM_PURCHASE_REFUND_RESULT
Definition Opcodes.h:1767
@ SMSG_ADD_ITEM_PASSIVE
Definition Opcodes.h:1120
@ SMSG_SET_ITEM_PURCHASE_DATA
Definition Opcodes.h:2286
@ SMSG_INVENTORY_CHANGE_FAILURE
Definition Opcodes.h:1756
@ SMSG_ITEM_TIME_UPDATE
Definition Opcodes.h:1769
@ SMSG_ITEM_ENCHANT_TIME_UPDATE
Definition Opcodes.h:1764
@ CMSG_REPAIR_ITEM
Definition Opcodes.h:824
@ CMSG_CHANGE_BAG_SLOT_FLAG
Definition Opcodes.h:180
@ CMSG_BUY_ITEM
Definition Opcodes.h:147
@ CMSG_AUTO_EQUIP_ITEM
Definition Opcodes.h:92
@ CMSG_SET_BACKPACK_AUTOSORT_DISABLED
Definition Opcodes.h:903
@ CMSG_BUY_BACK_ITEM
Definition Opcodes.h:146
@ CMSG_SORT_ACCOUNT_BANK_BAGS
Definition Opcodes.h:949
@ CMSG_SORT_BAGS
Definition Opcodes.h:950
@ CMSG_READ_ITEM
Definition Opcodes.h:815
@ CMSG_SOCKET_GEMS
Definition Opcodes.h:948
@ CMSG_AUTO_STORE_BAG_ITEM
Definition Opcodes.h:95
@ CMSG_USE_CRITTER_ITEM
Definition Opcodes.h:1027
@ CMSG_SORT_BANK_BAGS
Definition Opcodes.h:951
@ CMSG_SPLIT_ITEM
Definition Opcodes.h:962
@ CMSG_CANCEL_TEMP_ENCHANTMENT
Definition Opcodes.h:173
@ CMSG_WRAP_ITEM
Definition Opcodes.h:1043
@ CMSG_GET_ITEM_PURCHASE_DATA
Definition Opcodes.h:389
@ CMSG_AUTO_EQUIP_ITEM_SLOT
Definition Opcodes.h:93
@ CMSG_CHANGE_BANK_BAG_SLOT_FLAG
Definition Opcodes.h:181
@ CMSG_SET_BACKPACK_SELL_JUNK_DISABLED
Definition Opcodes.h:904
@ CMSG_SELL_ALL_JUNK_ITEMS
Definition Opcodes.h:886
@ CMSG_DESTROY_ITEM
Definition Opcodes.h:321
@ CMSG_REMOVE_NEW_ITEM
Definition Opcodes.h:821
@ CMSG_SWAP_INV_ITEM
Definition Opcodes.h:978
@ CMSG_ITEM_PURCHASE_REFUND
Definition Opcodes.h:514
@ CMSG_SWAP_ITEM
Definition Opcodes.h:979
@ CMSG_SET_BANK_AUTOSORT_DISABLED
Definition Opcodes.h:905
@ CMSG_SELL_ITEM
Definition Opcodes.h:887
std::optional< T > Optional
Optional helper class to wrap optional values within.
Definition Optional.h:25
BagSlotFlags
Definition Player.h:864
Definition Item.h:179
WorldPacket const * Write() override
AutoEquipItemSlot(WorldPacket &&packet)
AutoEquipItem(WorldPacket &&packet)
AutoStoreBagItem(WorldPacket &&packet)
WorldPacket const * Write() override
BuyBackItem(WorldPacket &&packet)
Definition ItemPackets.h:40
WorldPacket const * Write() override
BuyItem(WorldPacket &&packet)
Definition ItemPackets.h:51
WorldPacket const * Write() override
CancelTempEnchantment(WorldPacket &&packet)
ChangeBagSlotFlag(WorldPacket &&packet)
ChangeBankBagSlotFlag(WorldPacket &&packet)
DestroyItem(WorldPacket &&packet)
WorldPacket const * Write() override
GetItemPurchaseData(WorldPacket &&packet)
Definition ItemPackets.h:92
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
Optional< ItemPurchaseContents > Contents
ItemPurchaseRefund(WorldPacket &&packet)
Optional< Crafting::CraftingData > CraftingData
Optional< uint32 > FirstCraftOperationID
WorldPacket const * Write() override
std::vector< UiEventToast > Toasts
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
ReadItem(WorldPacket &&packet)
WorldPacket const * Write() override
RemoveNewItem(WorldPacket &&packet)
RepairItem(WorldPacket &&packet)
SellAllJunkItems(WorldPacket &&packet)
SellItem(WorldPacket &&packet)
WorldPacket const * Write() override
std::vector< ObjectGuid > ItemGUIDs
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
WorldPacket const * Write() override
SocketGems(WorldPacket &&packet)
std::array< ObjectGuid, MAX_ITEM_PROTO_SOCKETS > GemItem
SortAccountBankBags(WorldPacket &&packet)
SortBags(WorldPacket &&packet)
SortBankBags(WorldPacket &&packet)
SplitItem(WorldPacket &&packet)
SwapInvItem(WorldPacket &&packet)
SwapItem(WorldPacket &&packet)
UseCritterItem(WorldPacket &&packet)
WrapItem(WorldPacket &&packet)
WorldPacket _worldPacket
Definition Packet.h:43
STL namespace.
ItemPurchaseRefundCurrency Currencies[5]