55 {
56 if (!target)
57 {
59 }
60
61 if (!target)
62 {
63 return false;
64 }
65
66
67 std::vector<std::pair<uint32, uint32>> itemList;
68
70 {
72
74 switch (itemTokens.size())
75 {
76 case 1:
77 itemCount = 1;
78 break;
79 case 2:
80 itemCount = *Acore::StringTo<uint32>(itemTokens.at(1));
81 break;
82 default:
84 continue;
85 }
86
87 uint32 itemID = *Acore::StringTo<uint32>(itemTokens.at(0));
88
90 if (!itemTemplate)
91 {
93 return false;
94 }
95
97 {
99 return false;
100 }
101
103 {
106 }
107
108 itemList.emplace_back(itemID, itemCount);
109
111 {
113 return false;
114 }
115 }
116
117
119
120
124
125 for (auto const& [itemID, itemCount] : itemList)
126 {
128 {
129 item->SaveToDB(trans);
130 draft.AddItem(item);
131 }
132 }
133
134 draft.SendMailTo(trans,
MailReceiver(target->GetConnectedPlayer(), target->GetGUID().GetCounter()), sender);
136
138 return true;
139 }
std::uint32_t uint32
Definition: Define.h:108
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
Definition: DatabaseEnv.cpp:21
SQLTransaction< CharacterDatabaseConnection > CharacterDatabaseTransaction
Definition: DatabaseEnvFwd.h:70
#define sObjectMgr
Definition: ObjectMgr.h:1640
#define MAX_MAIL_ITEMS
Definition: Mail.h:34
@ MAIL_STATIONERY_GM
Definition: Mail.h:60
@ MAIL_NORMAL
Definition: Mail.h:38
@ LANG_COMMAND_INVALID_ITEM_COUNT
Definition: Language.h:84
@ LANG_COMMAND_MAIL_ITEMS_LIMIT
Definition: Language.h:85
@ LANG_MAIL_SENT
Definition: Language.h:209
@ LANG_COMMAND_ITEMIDINVALID
Definition: Language.h:450
std::string StringFormatFmt(FormatString< Args... > fmt, Args &&... args)
Definition: StringFormat.h:48
std::vector< std::string_view > Tokenize(std::string_view str, char sep, bool keepEmpty)
Definition: Tokenize.cpp:20
std::string playerLink(std::string const &name) const
Definition: Chat.h:128
WorldSession * GetSession()
Definition: Chat.h:139
void SendErrorMessage(uint32 entry)
Definition: Chat.cpp:152
void PSendSysMessage(char const *fmt, Args &&... args)
Definition: Chat.h:60
virtual void SendSysMessage(std::string_view str, bool escapeCharacters=false)
Definition: Chat.cpp:101
static Optional< PlayerIdentifier > FromTargetOrSelf(ChatHandler *handler)
Definition: ChatCommandTags.h:188
static Item * CreateItem(uint32 item, uint32 count, Player const *player=nullptr, bool clone=false, uint32 randomPropertyId=0)
Definition: Item.cpp:1088
Definition: ItemTemplate.h:628
int32 MaxCount
Definition: ItemTemplate.h:653
uint32 GetMaxStackSize() const
Definition: ItemTemplate.h:738
static ObjectGuid GetGUID(Object const *o)
Definition: Object.h:106
LowType GetCounter() const
Definition: ObjectGuid.h:147
uint32 LowType
Definition: ObjectGuid.h:124
Player * GetPlayer() const
Definition: WorldSession.h:364