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
 
virtual std::vector< Acore::ChatCommands::ChatCommandBuilderGetCommands () const =0
 
- Public Member Functions inherited from ScriptObject
virtual bool IsDatabaseBound () const
 
virtual bool isAfterLoadScript () const
 
virtual void checkValidity ()
 
const std::string & GetName () const
 

Static Public Member Functions

static bool HandleGuildCreateCommand (ChatHandler *handler, char const *args)
 GM command level 3 - Create a guild.
 
static bool HandleGuildDeleteCommand (ChatHandler *handler, char const *args)
 
static bool HandleGuildInviteCommand (ChatHandler *handler, char const *args)
 
static bool HandleGuildUninviteCommand (ChatHandler *handler, char const *args)
 
static bool HandleGuildRankCommand (ChatHandler *handler, Optional< PlayerIdentifier > player, uint8 rank)
 
static bool HandleGuildRenameCommand (ChatHandler *handler, char const *_args)
 
static bool HandleGuildInfoCommand (ChatHandler *handler, char const *args)
 

Additional Inherited Members

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

Detailed Description

Constructor & Destructor Documentation

◆ guild_commandscript()

guild_commandscript::guild_commandscript ( )
inline
40: CommandScript("guild_commandscript") { }
Definition: ScriptMgr.h:850

Member Function Documentation

◆ GetCommands()

ChatCommandTable guild_commandscript::GetCommands ( ) const
inlineoverridevirtual

Implements CommandScript.

43 {
44 static ChatCommandTable guildCommandTable =
45 {
46 { "create", SEC_GAMEMASTER, true, &HandleGuildCreateCommand, "" },
47 { "delete", SEC_GAMEMASTER, true, &HandleGuildDeleteCommand, "" },
48 { "invite", SEC_GAMEMASTER, true, &HandleGuildInviteCommand, "" },
49 { "uninvite", SEC_GAMEMASTER, true, &HandleGuildUninviteCommand, "" },
50 { "rank", SEC_GAMEMASTER, true, &HandleGuildRankCommand, "" },
51 { "rename", SEC_GAMEMASTER, true, &HandleGuildRenameCommand, "" },
52 { "info", SEC_GAMEMASTER, true, &HandleGuildInfoCommand, "" }
53 };
54 static ChatCommandTable commandTable =
55 {
56 { "guild", SEC_GAMEMASTER, true, nullptr, "", guildCommandTable }
57 };
58 return commandTable;
59 }
@ SEC_GAMEMASTER
Definition: Common.h:68
std::vector< ChatCommandBuilder > ChatCommandTable
Definition: ChatCommand.h:50
static bool HandleGuildCreateCommand(ChatHandler *handler, char const *args)
GM command level 3 - Create a guild.
Definition: cs_guild.cpp:69
static bool HandleGuildDeleteCommand(ChatHandler *handler, char const *args)
Definition: cs_guild.cpp:124
static bool HandleGuildInfoCommand(ChatHandler *handler, char const *args)
Definition: cs_guild.cpp:259
static bool HandleGuildUninviteCommand(ChatHandler *handler, char const *args)
Definition: cs_guild.cpp:172
static bool HandleGuildRenameCommand(ChatHandler *handler, char const *_args)
Definition: cs_guild.cpp:210
static bool HandleGuildRankCommand(ChatHandler *handler, Optional< PlayerIdentifier > player, uint8 rank)
Definition: cs_guild.cpp:191
static bool HandleGuildInviteCommand(ChatHandler *handler, char const *args)
Definition: cs_guild.cpp:145

References HandleGuildCreateCommand(), HandleGuildDeleteCommand(), HandleGuildInfoCommand(), HandleGuildInviteCommand(), HandleGuildRankCommand(), HandleGuildRenameCommand(), HandleGuildUninviteCommand(), and SEC_GAMEMASTER.

◆ HandleGuildCreateCommand()

static bool guild_commandscript::HandleGuildCreateCommand ( ChatHandler handler,
char const *  args 
)
inlinestatic

GM command level 3 - Create a guild.

This command allows a GM (level 3) to create a guild.

The "args" parameter contains the name of the guild leader and then the name of the guild.

70 {
71 if (!*args)
72 return false;
73
74 // if not guild name only (in "") then player name
75 Player* target;
76 if (!handler->extractPlayerTarget(*args != '"' ? (char*)args : nullptr, &target))
77 return false;
78
79 char* tailStr = *args != '"' ? strtok(nullptr, "") : (char*)args;
80 if (!tailStr)
81 return false;
82
83 char* guildStr = handler->extractQuotedArg(tailStr);
84 if (!guildStr)
85 return false;
86
87 std::string guildName = guildStr;
88
89 if (target->GetGuildId())
90 {
92 handler->SetSentErrorMessage(true);
93 return false;
94 }
95
96 if (sGuildMgr->GetGuildByName(guildName))
97 {
99 handler->SetSentErrorMessage(true);
100 return false;
101 }
102
103 if (sObjectMgr->IsReservedName(guildName) || sObjectMgr->IsProfanityName(guildName) || !sObjectMgr->IsValidCharterName(guildName))
104 {
106 handler->SetSentErrorMessage(true);
107 return false;
108 }
109
110 Guild* guild = new Guild;
111 if (!guild->Create(target, guildName))
112 {
113 delete guild;
115 handler->SetSentErrorMessage(true);
116 return false;
117 }
118
119 sGuildMgr->AddGuild(guild);
120
121 return true;
122 }
#define sObjectMgr
Definition: ObjectMgr.h:1640
#define sGuildMgr
Definition: GuildMgr.h:51
@ LANG_GUILD_NOT_CREATED
Definition: Language.h:524
@ LANG_PLAYER_IN_GUILD
Definition: Language.h:523
@ LANG_GUILD_RENAME_ALREADY_EXISTS
Definition: Language.h:126
@ LANG_BAD_VALUE
Definition: Language.h:147
char * extractQuotedArg(char *args)
Definition: Chat.cpp:736
void SetSentErrorMessage(bool val)
Definition: Chat.h:118
virtual void SendSysMessage(std::string_view str, bool escapeCharacters=false)
Definition: Chat.cpp:103
bool extractPlayerTarget(char *args, Player **player, ObjectGuid *player_guid=nullptr, std::string *player_name=nullptr)
Definition: Chat.cpp:678
Definition: Player.h:1046
uint32 GetGuildId() const
Definition: Player.h:1851
Definition: Guild.h:295
bool Create(Player *pLeader, std::string_view name)
Definition: Guild.cpp:1046

References Guild::Create(), ChatHandler::extractPlayerTarget(), ChatHandler::extractQuotedArg(), Player::GetGuildId(), LANG_BAD_VALUE, LANG_GUILD_NOT_CREATED, LANG_GUILD_RENAME_ALREADY_EXISTS, LANG_PLAYER_IN_GUILD, ChatHandler::SendSysMessage(), ChatHandler::SetSentErrorMessage(), sGuildMgr, and sObjectMgr.

Referenced by GetCommands().

◆ HandleGuildDeleteCommand()

static bool guild_commandscript::HandleGuildDeleteCommand ( ChatHandler handler,
char const *  args 
)
inlinestatic
125 {
126 if (!*args)
127 return false;
128
129 char* guildStr = handler->extractQuotedArg((char*)args);
130 if (!guildStr)
131 return false;
132
133 std::string guildName = guildStr;
134
135 Guild* targetGuild = sGuildMgr->GetGuildByName(guildName);
136 if (!targetGuild)
137 return false;
138
139 targetGuild->Disband();
140 delete targetGuild;
141
142 return true;
143 }
void Disband()
Definition: Guild.cpp:1105

References Guild::Disband(), ChatHandler::extractQuotedArg(), and sGuildMgr.

Referenced by GetCommands().

◆ HandleGuildInfoCommand()

static bool guild_commandscript::HandleGuildInfoCommand ( ChatHandler handler,
char const *  args 
)
inlinestatic
260 {
261 Guild* guild = nullptr;
262
263 if (args && args[0] != '\0')
264 {
265 if (isNumeric(args))
266 guild = sGuildMgr->GetGuildById(strtoull(args, nullptr, 10));
267 else
268 guild = sGuildMgr->GetGuildByName(args);
269 }
270 else if (Player* target = handler->getSelectedPlayerOrSelf())
271 guild = target->GetGuild();
272
273 if (!guild)
274 return false;
275
276 // Display Guild Information
277 handler->PSendSysMessage(LANG_GUILD_INFO_NAME, guild->GetName().c_str(), guild->GetId()); // Guild Id + Name
278 std::string guildMasterName;
279 if (sCharacterCache->GetCharacterNameByGuid(guild->GetLeaderGUID(), guildMasterName))
280 {
281 handler->PSendSysMessage(LANG_GUILD_INFO_GUILD_MASTER, guildMasterName.c_str(), guild->GetLeaderGUID().GetCounter()); // Guild Master
282 }
283
285 handler->PSendSysMessage(LANG_GUILD_INFO_MEMBER_COUNT, guild->GetMemberCount()); // Number of Members
286 handler->PSendSysMessage(LANG_GUILD_INFO_BANK_GOLD, guild->GetTotalBankMoney() / 100 / 100); // Bank Gold (in gold coins)
287 handler->PSendSysMessage(LANG_GUILD_INFO_MOTD, guild->GetMOTD().c_str()); // Message of the day
288 handler->PSendSysMessage(LANG_GUILD_INFO_EXTRA_INFO, guild->GetInfo().c_str()); // Extra Information
289 return true;
290 }
std::chrono::seconds Seconds
Seconds shorthand typedef.
Definition: Duration.h:30
bool isNumeric(wchar_t wchar)
Definition: Util.h:204
#define sCharacterCache
Definition: CharacterCache.h:83
@ LANG_GUILD_INFO_GUILD_MASTER
Definition: Language.h:940
@ LANG_GUILD_INFO_BANK_GOLD
Definition: Language.h:943
@ LANG_GUILD_INFO_EXTRA_INFO
Definition: Language.h:945
@ LANG_GUILD_INFO_MEMBER_COUNT
Definition: Language.h:942
@ LANG_GUILD_INFO_MOTD
Definition: Language.h:944
@ LANG_GUILD_INFO_NAME
Definition: Language.h:939
@ LANG_GUILD_INFO_CREATION_DATE
Definition: Language.h:941
AC_COMMON_API std::string TimeToHumanReadable(Seconds time=0s, std::string_view fmt={})
Definition: Timer.cpp:287
void PSendSysMessage(char const *fmt, Args &&... args)
Definition: Chat.h:60
Player * getSelectedPlayerOrSelf() const
Definition: Chat.cpp:345
LowType GetCounter() const
Definition: ObjectGuid.h:147
ObjectGuid GetLeaderGUID() const
Definition: Guild.h:690
uint32 GetMemberCount() const
Definition: Guild.h:774
uint32 GetId() const
Definition: Guild.h:689
std::string const & GetName() const
Definition: Guild.h:691
time_t GetCreatedDate() const
Definition: Guild.h:775
std::string const & GetInfo() const
Definition: Guild.h:693
std::string const & GetMOTD() const
Definition: Guild.h:692
uint64 GetTotalBankMoney() const
Definition: Guild.h:773

References ObjectGuid::GetCounter(), Guild::GetCreatedDate(), Guild::GetId(), Guild::GetInfo(), Guild::GetLeaderGUID(), Guild::GetMemberCount(), Guild::GetMOTD(), Guild::GetName(), ChatHandler::getSelectedPlayerOrSelf(), Guild::GetTotalBankMoney(), isNumeric(), 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, ChatHandler::PSendSysMessage(), sCharacterCache, sGuildMgr, and Acore::Time::TimeToHumanReadable().

Referenced by GetCommands().

◆ HandleGuildInviteCommand()

static bool guild_commandscript::HandleGuildInviteCommand ( ChatHandler handler,
char const *  args 
)
inlinestatic
146 {
147 if (!*args)
148 return false;
149
150 // if not guild name only (in "") then player name
151 ObjectGuid targetGuid;
152 if (!handler->extractPlayerTarget(*args != '"' ? (char*)args : nullptr, nullptr, &targetGuid))
153 return false;
154
155 char* tailStr = *args != '"' ? strtok(nullptr, "") : (char*)args;
156 if (!tailStr)
157 return false;
158
159 char* guildStr = handler->extractQuotedArg(tailStr);
160 if (!guildStr)
161 return false;
162
163 std::string guildName = guildStr;
164 Guild* targetGuild = sGuildMgr->GetGuildByName(guildName);
165 if (!targetGuild)
166 return false;
167
168 // player's guild membership checked in AddMember before add
169 return targetGuild->AddMember(targetGuid);
170 }
Definition: ObjectGuid.h:120
bool AddMember(ObjectGuid guid, uint8 rankId=GUILD_RANK_NONE)
Definition: Guild.cpp:2159

References Guild::AddMember(), ChatHandler::extractPlayerTarget(), ChatHandler::extractQuotedArg(), and sGuildMgr.

Referenced by GetCommands().

◆ HandleGuildRankCommand()

static bool guild_commandscript::HandleGuildRankCommand ( ChatHandler handler,
Optional< PlayerIdentifier player,
uint8  rank 
)
inlinestatic
192 {
193 if (!player)
194 player = PlayerIdentifier::FromTargetOrSelf(handler);
195
196 if (!player)
197 return false;
198
199 uint32 guildId = player->IsConnected() ? player->GetConnectedPlayer()->GetGuildId() : sCharacterCache->GetCharacterGuildIdByGuid(player->GetGUID());
200 if (!guildId)
201 return false;
202
203 Guild* targetGuild = sGuildMgr->GetGuildById(guildId);
204 if (!targetGuild)
205 return false;
206
207 return targetGuild->ChangeMemberRank(player->GetGUID(), rank);
208 }
std::uint32_t uint32
Definition: Define.h:108
static Optional< PlayerIdentifier > FromTargetOrSelf(ChatHandler *handler)
Definition: ChatCommandTags.h:189
bool ChangeMemberRank(ObjectGuid guid, uint8 newRank)
Definition: Guild.cpp:2304

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

Referenced by GetCommands().

◆ HandleGuildRenameCommand()

static bool guild_commandscript::HandleGuildRenameCommand ( ChatHandler handler,
char const *  _args 
)
inlinestatic
211 {
212 if (!*_args)
213 return false;
214
215 char *args = (char *)_args;
216
217 char const* oldGuildStr = handler->extractQuotedArg(args);
218 if (!oldGuildStr)
219 {
221 handler->SetSentErrorMessage(true);
222 return false;
223 }
224
225 char const* newGuildStr = handler->extractQuotedArg(strtok(nullptr, ""));
226 if (!newGuildStr)
227 {
229 handler->SetSentErrorMessage(true);
230 return false;
231 }
232
233 Guild* guild = sGuildMgr->GetGuildByName(oldGuildStr);
234 if (!guild)
235 {
236 handler->PSendSysMessage(LANG_COMMAND_COULDNOTFIND, oldGuildStr);
237 handler->SetSentErrorMessage(true);
238 return false;
239 }
240
241 if (sGuildMgr->GetGuildByName(newGuildStr))
242 {
244 handler->SetSentErrorMessage(true);
245 return false;
246 }
247
248 if (!guild->SetName(newGuildStr))
249 {
251 handler->SetSentErrorMessage(true);
252 return false;
253 }
254
255 handler->PSendSysMessage(LANG_GUILD_RENAME_DONE, oldGuildStr, newGuildStr);
256 return true;
257 }
@ LANG_GUILD_RENAME_DONE
Definition: Language.h:127
@ LANG_COMMAND_COULDNOTFIND
Definition: Language.h:449
@ LANG_INSERT_GUILD_NAME
Definition: Language.h:521
bool SetName(std::string_view const &name)
Definition: Guild.cpp:1185

References ChatHandler::extractQuotedArg(), LANG_BAD_VALUE, LANG_COMMAND_COULDNOTFIND, LANG_GUILD_RENAME_ALREADY_EXISTS, LANG_GUILD_RENAME_DONE, LANG_INSERT_GUILD_NAME, ChatHandler::PSendSysMessage(), ChatHandler::SendSysMessage(), Guild::SetName(), ChatHandler::SetSentErrorMessage(), and sGuildMgr.

Referenced by GetCommands().

◆ HandleGuildUninviteCommand()

static bool guild_commandscript::HandleGuildUninviteCommand ( ChatHandler handler,
char const *  args 
)
inlinestatic
173 {
174 Player* target;
175 ObjectGuid targetGuid;
176 if (!handler->extractPlayerTarget((char*)args, &target, &targetGuid))
177 return false;
178
179 uint32 guildId = target ? target->GetGuildId() : sCharacterCache->GetCharacterGuildIdByGuid(targetGuid);
180 if (!guildId)
181 return false;
182
183 Guild* targetGuild = sGuildMgr->GetGuildById(guildId);
184 if (!targetGuild)
185 return false;
186
187 targetGuild->DeleteMember(targetGuid, false, true, true);
188 return true;
189 }
void DeleteMember(ObjectGuid guid, bool isDisbanding=false, bool isKicked=false, bool canDeleteGuild=false)
Definition: Guild.cpp:2243

References Guild::DeleteMember(), ChatHandler::extractPlayerTarget(), Player::GetGuildId(), sCharacterCache, and sGuildMgr.

Referenced by GetCommands().