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
69 for (
auto const& itemString :
Acore::
Tokenize(items,
' ', true))
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 }
SQLTransaction< CharacterDatabaseConnection > CharacterDatabaseTransaction
Definition DatabaseEnvFwd.h:69
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
Definition DatabaseEnv.cpp:21
std::uint32_t uint32
Definition Define.h:107
@ LANG_COMMAND_INVALID_ITEM_COUNT
Definition Language.h:84
@ LANG_COMMAND_MAIL_ITEMS_LIMIT
Definition Language.h:85
@ LANG_MAIL_SENT
Definition Language.h:213
@ LANG_COMMAND_ITEMIDINVALID
Definition Language.h:476
#define MAX_MAIL_ITEMS
Definition Mail.h:33
@ MAIL_STATIONERY_GM
Definition Mail.h:59
@ MAIL_NORMAL
Definition Mail.h:37
#define sObjectMgr
Definition ObjectMgr.h:1723
std::string playerLink(std::string const &name) const
Definition Chat.h:231
void PSendSysMessage(std::string_view str, bool escapeCharacters=false)
Definition Chat.cpp:219
WorldSession * GetSession()
Definition Chat.h:242
void SendErrorMessage(uint32 entry)
Definition Chat.cpp:224
virtual void SendSysMessage(std::string_view str, bool escapeCharacters=false)
Definition Chat.cpp:168
static Item * CreateItem(uint32 item, uint32 count, Player const *player=nullptr, bool clone=false, uint32 randomPropertyId=0)
Definition Item.cpp:1087
LowType GetCounter() const
Definition ObjectGuid.h:145
uint32 LowType
Definition ObjectGuid.h:122
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:114
Player * GetPlayer() const
Definition WorldSession.h:454
Definition AsioHacksFwd.h:47
std::string StringFormat(FormatStringView fmt, Args &&... args)
Default AC string format function.
Definition StringFormat.h:44
std::vector< std::string_view > Tokenize(std::string_view str, char sep, bool keepEmpty)
Definition Tokenize.cpp:20
static Optional< PlayerIdentifier > FromTargetOrSelf(ChatHandler *handler)
Definition ChatCommandTags.h:189
Definition ItemTemplate.h:619
int32 MaxCount
Definition ItemTemplate.h:644
uint32 GetMaxStackSize() const
Definition ItemTemplate.h:727