87 {
88 if (!player)
89 {
91 }
92
93 if (!player)
94 {
96 return false;
97 }
98
99 Player* target = player->GetConnectedPlayer();
100 if (!target)
101 {
103 return false;
104 }
105
106 std::array<uint32, MAX_ITEM_SUBCLASS_CONTAINER> freeSlotsInBags = { };
107 uint32 freeSlotsForBags = 0;
108 bool haveFreeSlot = false;
109
110
112 {
114 {
115 haveFreeSlot = true;
117 }
118 }
119
120
122 {
124 {
125 if (
ItemTemplate const* bagTemplate = bag->GetTemplate())
126 {
128 {
129 haveFreeSlot = true;
130 freeSlotsInBags[bagTemplate->SubClass] += bag->GetFreeSlots();
131 }
132 }
133 }
134 else
135 {
136 ++freeSlotsForBags;
137 }
138 }
139
140 std::ostringstream str;
141
142 if (haveFreeSlot)
143 {
144 str <<
"Player " << target->
GetName() <<
" have ";
145 bool initialize = true;
146
148 {
149 if (
uint32 freeSlots = freeSlotsInBags[i])
150 {
152 if (!initialize)
153 {
154 str << ", ";
155 }
156
157 str << "|c";
159 str << freeSlots << " in " << bagSpecString << " bags|r";
160
161 initialize = false;
162 }
163 }
164 }
165 else
166 {
167 str <<
"Player " << target->
GetName() <<
" does not have free slots in their bags";
168 }
169
170 if (freeSlotsForBags)
171 {
172 str << " and also has " << freeSlotsForBags << " free slots for bags";
173 }
174
175 str << ".";
176
178
179 return true;
180 }
std::uint8_t uint8
Definition Define.h:109
std::uint32_t uint32
Definition Define.h:107
@ ITEM_SUBCLASS_CONTAINER
Definition ItemTemplate.h:329
#define MAX_ITEM_SUBCLASS_CONTAINER
Definition ItemTemplate.h:340
@ ITEM_CLASS_QUIVER
Definition ItemTemplate.h:302
@ ITEM_CLASS_CONTAINER
Definition ItemTemplate.h:292
@ LANG_PLAYER_NOT_FOUND
Definition Language.h:548
@ INVENTORY_SLOT_ITEM_START
Definition Player.h:691
@ INVENTORY_SLOT_ITEM_END
Definition Player.h:692
@ INVENTORY_SLOT_BAG_START
Definition Player.h:685
@ INVENTORY_SLOT_BAG_END
Definition Player.h:686
#define INVENTORY_SLOT_BAG_0
Definition Player.h:656
void SendErrorMessage(uint32 entry)
Definition Chat.cpp:224
virtual void SendSysMessage(std::string_view str, bool escapeCharacters=false)
Definition Chat.cpp:168
Bag * GetBagByPos(uint8 slot) const
Definition PlayerStorage.cpp:460
Item * GetItemByPos(uint16 pos) const
Definition PlayerStorage.cpp:444
std::string const & GetName() const
Definition Object.h:528
constexpr std::array< uint32, MAX_ITEM_SUBCLASS_CONTAINER > bagSpecsColors
Definition cs_inventory.cpp:38
constexpr std::array< const char *, MAX_ITEM_SUBCLASS_CONTAINER > bagSpecsToString
Definition cs_inventory.cpp:25
static Optional< PlayerIdentifier > FromTargetOrSelf(ChatHandler *handler)
Definition ChatCommandTags.h:189
Definition ItemTemplate.h:619