85 {
86 if (!player)
87 {
89 }
90
91 if (!player)
92 {
94 return false;
95 }
96
97 Player* target = player->GetConnectedPlayer();
98 if (!target)
99 {
101 return false;
102 }
103
104 std::array<uint32, MAX_ITEM_SUBCLASS_CONTAINER> freeSlotsInBags = { };
105 uint32 freeSlotsForBags = 0;
106 bool haveFreeSlot = false;
107
108
110 {
112 {
113 haveFreeSlot = true;
115 }
116 }
117
118
120 {
122 {
123 if (
ItemTemplate const* bagTemplate = bag->GetTemplate())
124 {
126 {
127 haveFreeSlot = true;
128 freeSlotsInBags[bagTemplate->SubClass] += bag->GetFreeSlots();
129 }
130 }
131 }
132 else
133 {
134 ++freeSlotsForBags;
135 }
136 }
137
138 std::ostringstream str;
139
140 if (haveFreeSlot)
141 {
142 str <<
"Player " << target->
GetName() <<
" have ";
143 bool initialize = true;
144
146 {
147 if (
uint32 freeSlots = freeSlotsInBags[i])
148 {
150 if (!initialize)
151 {
152 str << ", ";
153 }
154
155 str << "|c";
157 str << freeSlots << " in " << bagSpecString << " bags|r";
158
159 initialize = false;
160 }
161 }
162 }
163 else
164 {
165 str <<
"Player " << target->
GetName() <<
" does not have free slots in their bags";
166 }
167
168 if (freeSlotsForBags)
169 {
170 str << " and also has " << freeSlotsForBags << " free slots for bags";
171 }
172
173 str << ".";
174
176
177 return true;
178 }
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:545
@ 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:216
virtual void SendSysMessage(std::string_view str, bool escapeCharacters=false)
Definition Chat.cpp:160
Bag * GetBagByPos(uint8 slot) const
Definition PlayerStorage.cpp:459
Item * GetItemByPos(uint16 pos) const
Definition PlayerStorage.cpp:443
std::string const & GetName() const
Definition Object.h:528
constexpr std::array< uint32, MAX_ITEM_SUBCLASS_CONTAINER > bagSpecsColors
Definition cs_inventory.cpp:36
constexpr std::array< const char *, MAX_ITEM_SUBCLASS_CONTAINER > bagSpecsToString
Definition cs_inventory.cpp:23
static Optional< PlayerIdentifier > FromTargetOrSelf(ChatHandler *handler)
Definition ChatCommandTags.h:184
Definition ItemTemplate.h:619