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
73 if (itemTokens.size() != 2)
74 {
76 continue;
77 }
78
79 uint32 itemID = *Acore::StringTo<uint32>(itemTokens.at(0));
80 uint32 itemCount = *Acore::StringTo<uint32>(itemTokens.at(1));
81
83 if (!itemTemplate)
84 {
87 return false;
88 }
89
91 {
94 return false;
95 }
96
98 {
101 }
102
103 itemList.emplace_back(itemID, itemCount);
104
106 {
109 return false;
110 }
111 }
112
113
115
116
120
121 for (auto const& [itemID, itemCount] : itemList)
122 {
124 {
125 item->SaveToDB(trans);
126 draft.AddItem(item);
127 }
128 }
129
130 draft.SendMailTo(trans,
MailReceiver(target->GetConnectedPlayer(), target->GetGUID().GetCounter()), sender);
132
134 return true;
135 }
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(std::string_view fmt, Args &&... args)
Definition: StringFormat.h:44
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:111
WorldSession * GetSession()
Definition: Chat.h:122
void SetSentErrorMessage(bool val)
Definition: Chat.h:118
void PSendSysMessage(char const *fmt, Args &&... args)
Definition: Chat.h:60
virtual void SendSysMessage(std::string_view str, bool escapeCharacters=false)
Definition: Chat.cpp:103
static Optional< PlayerIdentifier > FromTargetOrSelf(ChatHandler *handler)
Definition: ChatCommandTags.h:189
static Item * CreateItem(uint32 item, uint32 count, Player const *player=nullptr, bool clone=false, uint32 randomPropertyId=0)
Definition: Item.cpp:1089
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:361