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

Public Member Functions

 guild_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 HandleGuildCreateCommand (ChatHandler *handler, Optional< PlayerIdentifier > target, QuotedString guildName)
 
static bool HandleGuildDeleteCommand (ChatHandler *, QuotedString guildName)
 
static bool HandleGuildInviteCommand (ChatHandler *handler, Optional< PlayerIdentifier > target, QuotedString guildName)
 
static bool HandleGuildUninviteCommand (ChatHandler *handler, Optional< PlayerIdentifier > target)
 
static bool HandleGuildRankCommand (ChatHandler *handler, Optional< PlayerIdentifier > player, uint8 rank)
 
static bool HandleGuildRenameCommand (ChatHandler *handler, QuotedString oldGuildStr, QuotedString newGuildStr)
 
static bool HandleGuildInfoCommand (ChatHandler *handler, Optional< Variant< ObjectGuid::LowType, QuotedString > > const &guildIdentifier)
 

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

◆ guild_commandscript()

guild_commandscript::guild_commandscript ( )
inline
29: CommandScript("guild_commandscript") { }
Definition CommandScript.h:25

Member Function Documentation

◆ GetCommands()

ChatCommandTable guild_commandscript::GetCommands ( ) const
inlineoverridevirtual

Implements CommandScript.

32 {
33 static ChatCommandTable guildCommandTable =
34 {
42 };
43 static ChatCommandTable commandTable =
44 {
45 { "guild", guildCommandTable }
46 };
47 return commandTable;
48 }
static bool HandleGuildCreateCommand(ChatHandler *handler, Optional< PlayerIdentifier > target, QuotedString guildName)
Definition cs_guild.cpp:50
static bool HandleGuildDeleteCommand(ChatHandler *, QuotedString guildName)
Definition cs_guild.cpp:101
static bool HandleGuildInviteCommand(ChatHandler *handler, Optional< PlayerIdentifier > target, QuotedString guildName)
Definition cs_guild.cpp:118
static bool HandleGuildUninviteCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_guild.cpp:143
static bool HandleGuildRenameCommand(ChatHandler *handler, QuotedString oldGuildStr, QuotedString newGuildStr)
Definition cs_guild.cpp:188
static bool HandleGuildInfoCommand(ChatHandler *handler, Optional< Variant< ObjectGuid::LowType, QuotedString > > const &guildIdentifier)
Definition cs_guild.cpp:218
static bool HandleGuildRankCommand(ChatHandler *handler, Optional< PlayerIdentifier > player, uint8 rank)
Definition cs_guild.cpp:169
std::vector< ChatCommandBuilder > ChatCommandTable
Definition ChatCommand.h:46
@ RBAC_PERM_COMMAND_GUILD_UNINVITE
Definition RBAC.h:241
@ RBAC_PERM_COMMAND_GUILD_INVITE
Definition RBAC.h:240
@ RBAC_PERM_COMMAND_GUILD_RANK
Definition RBAC.h:242
@ RBAC_PERM_COMMAND_GUILD_INFO
Definition RBAC.h:616
@ RBAC_PERM_COMMAND_GUILD_RENAME
Definition RBAC.h:243
@ RBAC_PERM_COMMAND_GUILD_CREATE
Definition RBAC.h:238
@ RBAC_PERM_COMMAND_GUILD_DELETE
Definition RBAC.h:239

References HandleGuildCreateCommand(), HandleGuildDeleteCommand(), HandleGuildInfoCommand(), HandleGuildInviteCommand(), HandleGuildRankCommand(), HandleGuildRenameCommand(), HandleGuildUninviteCommand(), rbac::RBAC_PERM_COMMAND_GUILD_CREATE, rbac::RBAC_PERM_COMMAND_GUILD_DELETE, rbac::RBAC_PERM_COMMAND_GUILD_INFO, rbac::RBAC_PERM_COMMAND_GUILD_INVITE, rbac::RBAC_PERM_COMMAND_GUILD_RANK, rbac::RBAC_PERM_COMMAND_GUILD_RENAME, and rbac::RBAC_PERM_COMMAND_GUILD_UNINVITE.

◆ HandleGuildCreateCommand()

static bool guild_commandscript::HandleGuildCreateCommand ( ChatHandler handler,
Optional< PlayerIdentifier target,
QuotedString  guildName 
)
inlinestatic
51 {
52 if (!target)
53 {
54 target = PlayerIdentifier::FromTargetOrSelf(handler);
55 }
56
57 if (!target || !target->IsConnected())
58 {
60 return false;
61 }
62
63 if (guildName.empty())
64 {
65 return false;
66 }
67
68 Player* playerTarget = target->GetConnectedPlayer();
69
70 if (playerTarget->GetGuildId())
71 {
73 return false;
74 }
75
76 if (sGuildMgr->GetGuildByName(guildName))
77 {
79 return false;
80 }
81
82 if (!sObjectMgr->IsValidCharterName(guildName))
83 {
85 return false;
86 }
87
88 Guild* guild = new Guild;
89 if (!guild->Create(playerTarget, guildName))
90 {
91 delete guild;
93 return false;
94 }
95
96 sGuildMgr->AddGuild(guild);
97
98 return true;
99 }
#define sGuildMgr
Definition GuildMgr.h:51
@ LANG_GUILD_NOT_CREATED
Definition Language.h:550
@ LANG_PLAYER_IN_GUILD
Definition Language.h:549
@ LANG_PLAYER_NOT_FOUND
Definition Language.h:548
@ LANG_GUILD_RENAME_ALREADY_EXISTS
Definition Language.h:130
@ LANG_BAD_VALUE
Definition Language.h:151
#define sObjectMgr
Definition ObjectMgr.h:1723
void SendErrorMessage(uint32 entry)
Definition Chat.cpp:224
Definition Guild.h:292
bool Create(Player *pLeader, std::string_view name)
Definition Guild.cpp:1057
Definition Player.h:1084
uint32 GetGuildId() const
Definition Player.h:1918
static Optional< PlayerIdentifier > FromTargetOrSelf(ChatHandler *handler)
Definition ChatCommandTags.h:189

References Guild::Create(), Acore::ChatCommands::PlayerIdentifier::FromTargetOrSelf(), Player::GetGuildId(), LANG_BAD_VALUE, LANG_GUILD_NOT_CREATED, LANG_GUILD_RENAME_ALREADY_EXISTS, LANG_PLAYER_IN_GUILD, LANG_PLAYER_NOT_FOUND, ChatHandler::SendErrorMessage(), sGuildMgr, and sObjectMgr.

Referenced by GetCommands().

◆ HandleGuildDeleteCommand()

static bool guild_commandscript::HandleGuildDeleteCommand ( ChatHandler ,
QuotedString  guildName 
)
inlinestatic
102 {
103 if (guildName.empty())
104 {
105 return false;
106 }
107
108 Guild* targetGuild = sGuildMgr->GetGuildByName(guildName);
109 if (!targetGuild)
110 return false;
111
112 targetGuild->Disband();
113 delete targetGuild;
114
115 return true;
116 }
void Disband()
Definition Guild.cpp:1116

References Guild::Disband(), and sGuildMgr.

Referenced by GetCommands().

◆ HandleGuildInfoCommand()

static bool guild_commandscript::HandleGuildInfoCommand ( ChatHandler handler,
Optional< Variant< ObjectGuid::LowType, QuotedString > > const &  guildIdentifier 
)
inlinestatic
219 {
220 Guild* guild = nullptr;
221
222 if (guildIdentifier)
223 {
224 if (ObjectGuid::LowType const* guid = std::get_if<ObjectGuid::LowType>(&*guildIdentifier))
225 guild = sGuildMgr->GetGuildById(*guid);
226 else
227 guild = sGuildMgr->GetGuildByName(guildIdentifier->get<QuotedString>());
228 }
229 else if (Optional<PlayerIdentifier> target = PlayerIdentifier::FromTargetOrSelf(handler); target && target->IsConnected())
230 guild = target->GetConnectedPlayer()->GetGuild();
231
232 if (!guild)
233 return false;
234
235 // Display Guild Information
236 handler->PSendSysMessage(LANG_GUILD_INFO_NAME, guild->GetName(), guild->GetId()); // Guild Id + Name
237
238 std::string guildMasterName;
239 if (sCharacterCache->GetCharacterNameByGuid(guild->GetLeaderGUID(), guildMasterName))
240 handler->PSendSysMessage(LANG_GUILD_INFO_GUILD_MASTER, guildMasterName, guild->GetLeaderGUID().ToString()); // Guild Master
241
242 // Format creation date
243 char createdDateStr[20];
244 time_t createdDate = guild->GetCreatedDate();
245 tm localTm;
246 strftime(createdDateStr, 20, "%Y-%m-%d %H:%M:%S", localtime_r(&createdDate, &localTm));
247
248 handler->PSendSysMessage(LANG_GUILD_INFO_CREATION_DATE, createdDateStr); // Creation Date
249 handler->PSendSysMessage(LANG_GUILD_INFO_MEMBER_COUNT, guild->GetMemberCount()); // Number of Members
250 handler->PSendSysMessage(LANG_GUILD_INFO_BANK_GOLD, guild->GetTotalBankMoney() / 100 / 100); // Bank Gold (in gold coins)
251 handler->PSendSysMessage(LANG_GUILD_INFO_MOTD, guild->GetMOTD()); // Message of the Day
252 handler->PSendSysMessage(LANG_GUILD_INFO_EXTRA_INFO, guild->GetInfo()); // Extra Information
253
254 QueryResult result = CharacterDatabase.Query("SELECT rid, rname FROM guild_rank WHERE guildid = {}", guild->GetId());
255 if (result)
256 {
258 do
259 {
260 Field* fields = result->Fetch();
261 uint32 rid = fields[0].Get<uint32>();
262 std::string rname = fields[1].Get<std::string>();
263
264 handler->PSendSysMessage(LANG_GUILD_INFO_RANKS_LIST, rid, rname);
265 } while (result->NextRow());
266 }
267 return true;
268 }
#define sCharacterCache
Definition CharacterCache.h:83
std::shared_ptr< ResultSet > QueryResult
Definition DatabaseEnvFwd.h:27
DatabaseWorkerPool< CharacterDatabaseConnection > CharacterDatabase
Accessor to the character database.
Definition DatabaseEnv.cpp:21
std::uint32_t uint32
Definition Define.h:107
@ LANG_GUILD_INFO_GUILD_MASTER
Definition Language.h:979
@ LANG_GUILD_INFO_RANKS
Definition Language.h:985
@ LANG_GUILD_INFO_BANK_GOLD
Definition Language.h:982
@ LANG_GUILD_INFO_RANKS_LIST
Definition Language.h:986
@ LANG_GUILD_INFO_EXTRA_INFO
Definition Language.h:984
@ LANG_GUILD_INFO_MEMBER_COUNT
Definition Language.h:981
@ LANG_GUILD_INFO_MOTD
Definition Language.h:983
@ LANG_GUILD_INFO_NAME
Definition Language.h:978
@ LANG_GUILD_INFO_CREATION_DATE
Definition Language.h:980
std::optional< T > Optional
Optional helper class to wrap optional values within.
Definition Optional.h:24
struct tm * localtime_r(time_t const *time, struct tm *result)
Definition Timer.cpp:226
void PSendSysMessage(std::string_view str, bool escapeCharacters=false)
Definition Chat.cpp:219
Class used to access individual fields of database query result.
Definition Field.h:98
std::enable_if_t< std::is_arithmetic_v< T >, T > Get() const
Definition Field.h:112
ObjectGuid GetLeaderGUID() const
Definition Guild.h:687
uint32 GetMemberCount() const
Definition Guild.h:771
uint32 GetId() const
Definition Guild.h:686
std::string const & GetName() const
Definition Guild.h:688
time_t GetCreatedDate() const
Definition Guild.h:772
std::string const & GetInfo() const
Definition Guild.h:690
std::string const & GetMOTD() const
Definition Guild.h:689
uint64 GetTotalBankMoney() const
Definition Guild.h:770
std::string ToString() const
Definition ObjectGuid.cpp:47
uint32 LowType
Definition ObjectGuid.h:122
Definition ChatCommandTags.h:140

References CharacterDatabase, Acore::ChatCommands::PlayerIdentifier::FromTargetOrSelf(), Field::Get(), Guild::GetCreatedDate(), Guild::GetId(), Guild::GetInfo(), Guild::GetLeaderGUID(), Guild::GetMemberCount(), Guild::GetMOTD(), Guild::GetName(), Guild::GetTotalBankMoney(), LANG_GUILD_INFO_BANK_GOLD, LANG_GUILD_INFO_CREATION_DATE, LANG_GUILD_INFO_EXTRA_INFO, LANG_GUILD_INFO_GUILD_MASTER, LANG_GUILD_INFO_MEMBER_COUNT, LANG_GUILD_INFO_MOTD, LANG_GUILD_INFO_NAME, LANG_GUILD_INFO_RANKS, LANG_GUILD_INFO_RANKS_LIST, localtime_r(), ChatHandler::PSendSysMessage(), sCharacterCache, sGuildMgr, and ObjectGuid::ToString().

Referenced by GetCommands().

◆ HandleGuildInviteCommand()

static bool guild_commandscript::HandleGuildInviteCommand ( ChatHandler handler,
Optional< PlayerIdentifier target,
QuotedString  guildName 
)
inlinestatic
119 {
120 if (!target)
121 {
122 target = PlayerIdentifier::FromTargetOrSelf(handler);
123 }
124
125 if (!target)
126 {
127 return false;
128 }
129
130 if (guildName.empty())
131 {
132 return false;
133 }
134
135 Guild* targetGuild = sGuildMgr->GetGuildByName(guildName);
136 if (!targetGuild)
137 return false;
138
139 // player's guild membership checked in AddMember before add
140 return targetGuild->AddMember(target->GetGUID());
141 }
bool AddMember(ObjectGuid guid, uint8 rankId=GUILD_RANK_NONE)
Definition Guild.cpp:2202

References Guild::AddMember(), Acore::ChatCommands::PlayerIdentifier::FromTargetOrSelf(), and sGuildMgr.

Referenced by GetCommands().

◆ HandleGuildRankCommand()

static bool guild_commandscript::HandleGuildRankCommand ( ChatHandler handler,
Optional< PlayerIdentifier player,
uint8  rank 
)
inlinestatic
170 {
171 if (!player)
172 player = PlayerIdentifier::FromTargetOrSelf(handler);
173
174 if (!player)
175 return false;
176
177 uint32 guildId = player->IsConnected() ? player->GetConnectedPlayer()->GetGuildId() : sCharacterCache->GetCharacterGuildIdByGuid(player->GetGUID());
178 if (!guildId)
179 return false;
180
181 Guild* targetGuild = sGuildMgr->GetGuildById(guildId);
182 if (!targetGuild)
183 return false;
184
185 return targetGuild->ChangeMemberRank(player->GetGUID(), rank);
186 }
bool ChangeMemberRank(ObjectGuid guid, uint8 newRank)
Definition Guild.cpp:2347

References Guild::ChangeMemberRank(), Acore::ChatCommands::PlayerIdentifier::FromTargetOrSelf(), sCharacterCache, and sGuildMgr.

Referenced by GetCommands().

◆ HandleGuildRenameCommand()

static bool guild_commandscript::HandleGuildRenameCommand ( ChatHandler handler,
QuotedString  oldGuildStr,
QuotedString  newGuildStr 
)
inlinestatic
189 {
190 if (oldGuildStr.empty() || newGuildStr.empty())
191 {
192 return false;
193 }
194
195 Guild* guild = sGuildMgr->GetGuildByName(oldGuildStr);
196 if (!guild)
197 {
198 handler->SendErrorMessage(LANG_COMMAND_COULDNOTFIND, oldGuildStr);
199 return false;
200 }
201
202 if (sGuildMgr->GetGuildByName(newGuildStr))
203 {
205 return false;
206 }
207
208 if (!guild->SetName(newGuildStr))
209 {
211 return false;
212 }
213
214 handler->PSendSysMessage(LANG_GUILD_RENAME_DONE, oldGuildStr, newGuildStr);
215 return true;
216 }
@ LANG_GUILD_RENAME_DONE
Definition Language.h:131
@ LANG_COMMAND_COULDNOTFIND
Definition Language.h:475
bool SetName(std::string_view const &name)
Definition Guild.cpp:1196

References LANG_BAD_VALUE, LANG_COMMAND_COULDNOTFIND, LANG_GUILD_RENAME_ALREADY_EXISTS, LANG_GUILD_RENAME_DONE, ChatHandler::PSendSysMessage(), ChatHandler::SendErrorMessage(), Guild::SetName(), and sGuildMgr.

Referenced by GetCommands().

◆ HandleGuildUninviteCommand()

static bool guild_commandscript::HandleGuildUninviteCommand ( ChatHandler handler,
Optional< PlayerIdentifier target 
)
inlinestatic
144 {
145 if (!target)
146 {
147 target = PlayerIdentifier::FromTargetOrSelf(handler);
148 }
149
150 if (!target)
151 {
152 return false;
153 }
154
155 Player* playerTarget = target->GetConnectedPlayer();
156
157 uint32 guildId = playerTarget ? playerTarget->GetGuildId() : sCharacterCache->GetCharacterGuildIdByGuid(target->GetGUID());
158 if (!guildId)
159 return false;
160
161 Guild* targetGuild = sGuildMgr->GetGuildById(guildId);
162 if (!targetGuild)
163 return false;
164
165 targetGuild->DeleteMember(target->GetGUID(), false, true, true);
166 return true;
167 }
void DeleteMember(ObjectGuid guid, bool isDisbanding=false, bool isKicked=false, bool canDeleteGuild=false)
Definition Guild.cpp:2286

References Guild::DeleteMember(), Acore::ChatCommands::PlayerIdentifier::FromTargetOrSelf(), Player::GetGuildId(), sCharacterCache, and sGuildMgr.

Referenced by GetCommands().


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