AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
bg_commandscript Class Reference
Inheritance diagram for bg_commandscript:
CommandScript ScriptObject

Public Member Functions

 bg_commandscript ()
 
ChatCommandTable GetCommands () const override
 
- Public Member Functions inherited from ScriptObject
virtual bool IsDatabaseBound () const
 
virtual bool isAfterLoadScript () const
 
virtual void checkValidity ()
 
const std::string & GetName () const
 
uint16 GetTotalAvailableHooks ()
 

Static Public Member Functions

static bool HandleBagsClearCommand (ChatHandler *handler, std::string_view args)
 

Additional Inherited Members

- Protected Member Functions inherited from CommandScript
 CommandScript (const char *name)
 
- Protected Member Functions inherited from ScriptObject
 ScriptObject (const char *name, uint16 totalAvailableHooks=0)
 
virtual ~ScriptObject ()=default
 

Detailed Description

Constructor & Destructor Documentation

◆ bg_commandscript()

bg_commandscript::bg_commandscript ( )
inline
41: CommandScript("bg_commandscript") { }
Definition CommandScript.h:25

Member Function Documentation

◆ GetCommands()

ChatCommandTable bg_commandscript::GetCommands ( ) const
inlineoverridevirtual

Implements CommandScript.

44 {
45 static ChatCommandTable commandTable =
46 {
47 { "bags clear", HandleBagsClearCommand, rbac::RBAC_PERM_COMMAND_ADDITEM, Console::No },
48 };
49
50 return commandTable;
51 }
static bool HandleBagsClearCommand(ChatHandler *handler, std::string_view args)
Definition cs_bag.cpp:53
std::vector< ChatCommandBuilder > ChatCommandTable
Definition ChatCommand.h:46
@ RBAC_PERM_COMMAND_ADDITEM
Definition RBAC.h:319

References HandleBagsClearCommand(), and rbac::RBAC_PERM_COMMAND_ADDITEM.

◆ HandleBagsClearCommand()

static bool bg_commandscript::HandleBagsClearCommand ( ChatHandler handler,
std::string_view  args 
)
inlinestatic
54 {
55 if (args.empty())
56 {
57 return false;
58 }
59
60 Player* player = handler->GetSession()->GetPlayer();
61 if (!player)
62 {
63 return false;
64 }
65
66 uint8 itemQuality = MAX_ITEM_QUALITY;
67 for (uint8 i = ITEM_QUALITY_POOR; i < MAX_ITEM_QUALITY; ++i)
68 {
69 if (args == itemQualityToString[i])
70 {
71 itemQuality = i;
72 break;
73 }
74 }
75
76 if (itemQuality == MAX_ITEM_QUALITY)
77 {
78 return false;
79 }
80
81 std::array<uint32, MAX_ITEM_QUALITY> removedItems = { };
82
83 // in inventory
85 {
86 if (Item* item = player->GetItemByPos(INVENTORY_SLOT_BAG_0, i))
87 {
88 if (ItemTemplate const* itemTemplate = item->GetTemplate())
89 {
90 if (itemTemplate->Quality <= itemQuality)
91 {
92 player->DestroyItem(INVENTORY_SLOT_BAG_0, i, true);
93 ++removedItems[itemTemplate->Quality];
94 }
95 }
96 }
97 }
98
99 // in inventory bags
101 {
102 if (Bag* bag = player->GetBagByPos(i))
103 {
104 for (uint32 j = 0; j < bag->GetBagSize(); j++)
105 {
106 if (Item* item = bag->GetItemByPos(j))
107 {
108 if (ItemTemplate const* itemTemplate = item->GetTemplate())
109 {
110 if (itemTemplate->Quality <= itemQuality)
111 {
112 player->DestroyItem(i, j, true);
113 ++removedItems[itemTemplate->Quality];
114 }
115 }
116 }
117 }
118 }
119 }
120
121 std::ostringstream str;
122 str << "Removed ";
123 if (itemQuality == ITEM_QUALITY_HEIRLOOM)
124 {
125 str << "all";
126 }
127 else
128 {
129 bool initialize = true;
130 for (uint8 i = ITEM_QUALITY_POOR; i < MAX_ITEM_QUALITY; ++i)
131 {
132 if (uint32 itemCount = removedItems[i])
133 {
134 std::string_view itemQualityString = itemQualityToString[i];
135
136 if (!initialize)
137 {
138 str << ", ";
139 }
140
141 str << "|c";
142 str << std::hex << ItemQualityColors[i] << std::dec;
143 str << itemCount << " " << itemQualityString << "|r";
144
145 initialize = false;
146 }
147 }
148 }
149
150 str << " items from your bags.";
151
152 handler->SendSysMessage(str.str().c_str());
153
154 return true;
155 };
std::uint8_t uint8
Definition Define.h:109
std::uint32_t uint32
Definition Define.h:107
@ 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
const uint32 ItemQualityColors[MAX_ITEM_QUALITY]
Definition SharedDefines.h:341
@ ITEM_QUALITY_HEIRLOOM
Definition SharedDefines.h:324
@ ITEM_QUALITY_POOR
Definition SharedDefines.h:317
#define MAX_ITEM_QUALITY
Definition SharedDefines.h:327
Definition Bag.h:28
WorldSession * GetSession()
Definition Chat.h:242
virtual void SendSysMessage(std::string_view str, bool escapeCharacters=false)
Definition Chat.cpp:168
Definition Item.h:220
Definition Player.h:1084
Bag * GetBagByPos(uint8 slot) const
Definition PlayerStorage.cpp:460
Item * GetItemByPos(uint16 pos) const
Definition PlayerStorage.cpp:444
void DestroyItem(uint8 bag, uint8 slot, bool update)
Definition PlayerStorage.cpp:3090
Player * GetPlayer() const
Definition WorldSession.h:454
constexpr std::array< std::string_view, MAX_ITEM_QUALITY > itemQualityToString
Definition cs_bag.cpp:24
Definition ItemTemplate.h:619

References Player::DestroyItem(), Player::GetBagByPos(), Player::GetItemByPos(), WorldSession::GetPlayer(), ChatHandler::GetSession(), INVENTORY_SLOT_BAG_0, INVENTORY_SLOT_BAG_END, INVENTORY_SLOT_BAG_START, INVENTORY_SLOT_ITEM_END, INVENTORY_SLOT_ITEM_START, ITEM_QUALITY_HEIRLOOM, ITEM_QUALITY_POOR, ItemQualityColors, itemQualityToString, MAX_ITEM_QUALITY, and ChatHandler::SendSysMessage().

Referenced by GetCommands().


The documentation for this class was generated from the following file: