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

Public Member Functions

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

Static Public Member Functions

static bool HandleGroupLeaderCommand (ChatHandler *handler, Optional< PlayerIdentifier > target)
 
static bool HandleGroupDisbandCommand (ChatHandler *handler, Optional< PlayerIdentifier > target)
 
static bool HandleGroupRemoveCommand (ChatHandler *handler, Optional< PlayerIdentifier > target)
 
static bool HandleGroupJoinCommand (ChatHandler *handler, std::string const &playerInGroup, std::string const &playerName)
 
static bool HandleGroupListCommand (ChatHandler *handler, Optional< PlayerIdentifier > target)
 
static bool HandleGroupReviveCommand (ChatHandler *handler, Optional< PlayerIdentifier > target)
 
static bool HandleGroupInvitesCommand (ChatHandler *handler, Optional< bool > args)
 

Additional Inherited Members

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

Detailed Description

Constructor & Destructor Documentation

◆ group_commandscript()

group_commandscript::group_commandscript ( )
inline
30: CommandScript("group_commandscript") { }
Definition CommandScript.h:25

Member Function Documentation

◆ GetCommands()

ChatCommandTable group_commandscript::GetCommands ( ) const
inlineoverridevirtual

Implements CommandScript.

33 {
34 static ChatCommandTable groupCommandTable =
35 {
43 };
44
45 static ChatCommandTable commandTable =
46 {
47 { "group", groupCommandTable }
48 };
49
50 return commandTable;
51 }
static bool HandleGroupReviveCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_group.cpp:264
static bool HandleGroupListCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_group.cpp:191
static bool HandleGroupRemoveCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_group.cpp:108
static bool HandleGroupJoinCommand(ChatHandler *handler, std::string const &playerInGroup, std::string const &playerName)
Definition cs_group.cpp:135
static bool HandleGroupDisbandCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_group.cpp:81
static bool HandleGroupInvitesCommand(ChatHandler *handler, Optional< bool > args)
Definition cs_group.cpp:298
static bool HandleGroupLeaderCommand(ChatHandler *handler, Optional< PlayerIdentifier > target)
Definition cs_group.cpp:53
std::vector< ChatCommandBuilder > ChatCommandTable
Definition ChatCommand.h:46
@ RBAC_PERM_COMMAND_GROUP_DISBAND
Definition RBAC.h:305
@ RBAC_PERM_COMMAND_GROUP_LIST
Definition RBAC.h:308
@ RBAC_PERM_COMMAND_GROUP_REMOVE
Definition RBAC.h:306
@ RBAC_PERM_COMMAND_GROUP_LEADER
Definition RBAC.h:304
@ RBAC_PERM_COMMAND_GROUP_JOIN
Definition RBAC.h:307
@ RBAC_PERM_COMMAND_GROUP_REVIVE
Definition RBAC.h:636
@ RBAC_PERM_COMMAND_GROUP_INVITES
Definition RBAC.h:704

References HandleGroupDisbandCommand(), HandleGroupInvitesCommand(), HandleGroupJoinCommand(), HandleGroupLeaderCommand(), HandleGroupListCommand(), HandleGroupRemoveCommand(), HandleGroupReviveCommand(), rbac::RBAC_PERM_COMMAND_GROUP_DISBAND, rbac::RBAC_PERM_COMMAND_GROUP_INVITES, rbac::RBAC_PERM_COMMAND_GROUP_JOIN, rbac::RBAC_PERM_COMMAND_GROUP_LEADER, rbac::RBAC_PERM_COMMAND_GROUP_LIST, rbac::RBAC_PERM_COMMAND_GROUP_REMOVE, and rbac::RBAC_PERM_COMMAND_GROUP_REVIVE.

◆ HandleGroupDisbandCommand()

static bool group_commandscript::HandleGroupDisbandCommand ( ChatHandler handler,
Optional< PlayerIdentifier target 
)
inlinestatic
82 {
83 if (!target)
84 {
85 target = PlayerIdentifier::FromTargetOrSelf(handler);
86 }
87
88 if (!target || !target->IsConnected())
89 {
90 return false;
91 }
92
93 Player* player = nullptr;
94 Group* group = nullptr;
95 ObjectGuid guid;
96
97 if (handler->GetPlayerGroupAndGUIDByName(target->GetName().c_str(), player, group, guid))
98 {
99 if (group)
100 {
101 group->Disband();
102 }
103 }
104
105 return true;
106 }
bool GetPlayerGroupAndGUIDByName(char const *cname, Player *&player, Group *&group, ObjectGuid &guid, bool offline=false)
Definition Chat.cpp:931
Definition Group.h:177
void Disband(bool hideDestroy=false)
Definition Group.cpp:913
Definition ObjectGuid.h:121
Definition Player.h:1086
static Optional< PlayerIdentifier > FromTargetOrSelf(ChatHandler *handler)
Definition ChatCommandTags.h:189

References Group::Disband(), Acore::ChatCommands::PlayerIdentifier::FromTargetOrSelf(), and ChatHandler::GetPlayerGroupAndGUIDByName().

Referenced by GetCommands().

◆ HandleGroupInvitesCommand()

static bool group_commandscript::HandleGroupInvitesCommand ( ChatHandler handler,
Optional< bool >  args 
)
inlinestatic
299 {
300 Player* player = handler->GetSession()->GetPlayer();
301 if (!args)
302 {
304 return true;
305 }
306
307 player->SetAcceptGroupInvites(*args);
309 return true;
310 }
@ LANG_COMMAND_GROUP_INVITES_ON
Definition Language.h:1539
@ LANG_COMMAND_GROUP_INVITES_ACCEPTING
Definition Language.h:1538
@ LANG_OFF
Definition Language.h:71
@ LANG_ON
Definition Language.h:70
@ LANG_COMMAND_GROUP_INVITES_OFF
Definition Language.h:1540
void PSendSysMessage(std::string_view str, bool escapeCharacters=false)
Definition Chat.cpp:219
WorldSession * GetSession()
Definition Chat.h:242
virtual void SendSysMessage(std::string_view str, bool escapeCharacters=false)
Definition Chat.cpp:168
virtual std::string GetAcoreString(uint32 entry) const
Definition Chat.cpp:42
bool IsAcceptGroupInvites() const
Definition Player.h:1176
void SetAcceptGroupInvites(bool on)
Definition Player.h:1177
Player * GetPlayer() const
Definition WorldSession.h:480
AC_GAME_API std::string GetAcoreString(ChatHandler const *handler, AcoreStrings which)
Definition ChatCommandHelpers.cpp:27

References ChatHandler::GetAcoreString(), WorldSession::GetPlayer(), ChatHandler::GetSession(), Player::IsAcceptGroupInvites(), LANG_COMMAND_GROUP_INVITES_ACCEPTING, LANG_COMMAND_GROUP_INVITES_OFF, LANG_COMMAND_GROUP_INVITES_ON, LANG_OFF, LANG_ON, ChatHandler::PSendSysMessage(), ChatHandler::SendSysMessage(), and Player::SetAcceptGroupInvites().

Referenced by GetCommands().

◆ HandleGroupJoinCommand()

static bool group_commandscript::HandleGroupJoinCommand ( ChatHandler handler,
std::string const &  playerInGroup,
std::string const &  playerName 
)
inlinestatic
136 {
137 if (playerInGroup.empty() || playerName.empty())
138 {
139 return false;
140 }
141
142 Player* playerSource = nullptr;
143 Group* groupSource = nullptr;
144 ObjectGuid guidSource;
145 ObjectGuid guidTarget;
146
147 if (handler->GetPlayerGroupAndGUIDByName(playerInGroup.c_str(), playerSource, groupSource, guidSource, true))
148 {
149 if (groupSource)
150 {
151 Group* groupTarget = nullptr;
152 Player* playerTarget = nullptr;
153
154 if (handler->GetPlayerGroupAndGUIDByName(playerName.c_str(), playerTarget, groupTarget, guidTarget, true))
155 {
156 if (!groupTarget && playerTarget->GetGroup() != groupSource)
157 {
158 if (!groupSource->IsFull())
159 {
160 groupSource->AddMember(playerTarget);
161 groupSource->BroadcastGroupUpdate();
162 handler->PSendSysMessage(LANG_GROUP_PLAYER_JOINED, playerTarget->GetName(), playerSource->GetName());
163 return true;
164 }
165 else
166 {
167 // group is full
169 return true;
170 }
171 }
172 else
173 {
174 // group is full or target player already in a group
175 handler->PSendSysMessage(LANG_GROUP_ALREADY_IN_GROUP, playerTarget->GetName());
176 return true;
177 }
178 }
179 }
180 else
181 {
182 // specified source player is not in a group
183 handler->PSendSysMessage(LANG_GROUP_NOT_IN_GROUP, playerSource->GetName());
184 return true;
185 }
186 }
187
188 return true;
189 }
@ LANG_GROUP_PLAYER_JOINED
Definition Language.h:947
@ LANG_GROUP_NOT_IN_GROUP
Definition Language.h:948
@ LANG_GROUP_FULL
Definition Language.h:949
@ LANG_GROUP_ALREADY_IN_GROUP
Definition Language.h:946
void BroadcastGroupUpdate(void)
Definition Group.cpp:2405
bool AddMember(Player *player, uint8 roles=0)
Definition Group.cpp:425
bool IsFull() const
Definition Group.cpp:2466
Group * GetGroup()
Definition Player.h:2516
std::string const & GetName() const
Definition Object.h:529

References Group::AddMember(), Group::BroadcastGroupUpdate(), Player::GetGroup(), WorldObject::GetName(), ChatHandler::GetPlayerGroupAndGUIDByName(), Group::IsFull(), LANG_GROUP_ALREADY_IN_GROUP, LANG_GROUP_FULL, LANG_GROUP_NOT_IN_GROUP, LANG_GROUP_PLAYER_JOINED, and ChatHandler::PSendSysMessage().

Referenced by GetCommands().

◆ HandleGroupLeaderCommand()

static bool group_commandscript::HandleGroupLeaderCommand ( ChatHandler handler,
Optional< PlayerIdentifier target 
)
inlinestatic
54 {
55 if (!target)
56 {
57 target = PlayerIdentifier::FromTargetOrSelf(handler);
58 }
59
60 if (!target)
61 {
62 return false;
63 }
64
65 Player* player = nullptr;
66 Group* group = nullptr;
67 ObjectGuid guid;
68
69 if (handler->GetPlayerGroupAndGUIDByName(target->GetName().c_str(), player, group, guid))
70 {
71 if (group && group->GetLeaderGUID() != guid)
72 {
73 group->ChangeLeader(guid);
74 group->SendUpdate();
75 }
76 }
77
78 return true;
79 }
void SendUpdate()
Definition Group.cpp:1858
void ChangeLeader(ObjectGuid guid)
Definition Group.cpp:776
ObjectGuid GetLeaderGUID() const
Definition Group.cpp:2502

References Group::ChangeLeader(), Acore::ChatCommands::PlayerIdentifier::FromTargetOrSelf(), Group::GetLeaderGUID(), ChatHandler::GetPlayerGroupAndGUIDByName(), and Group::SendUpdate().

Referenced by GetCommands().

◆ HandleGroupListCommand()

static bool group_commandscript::HandleGroupListCommand ( ChatHandler handler,
Optional< PlayerIdentifier target 
)
inlinestatic
192 {
193 if (!target)
194 {
195 target = PlayerIdentifier::FromTargetOrSelf(handler);
196 }
197
198 if (!target)
199 {
200 return false;
201 }
202
203 Group* groupTarget = nullptr;
204
205 if (target->IsConnected())
206 {
207 groupTarget = target->GetConnectedPlayer()->GetGroup();
208 }
209
210 if (!groupTarget)
211 {
212 if (ObjectGuid groupGUID = sCharacterCache->GetCharacterGroupGuidByGuid(target->GetGUID()))
213 {
214 groupTarget = sGroupMgr->GetGroupByGUID(groupGUID.GetCounter());
215 }
216 }
217
218 if (!groupTarget)
219 {
220 handler->PSendSysMessage(LANG_GROUP_NOT_IN_GROUP, target->GetName());
221 return true;
222 }
223
224 handler->PSendSysMessage(LANG_GROUP_TYPE, (groupTarget->isRaidGroup() ? "Raid" : "Party"), groupTarget->GetMembersCount());
225
226 for (auto const& slot : groupTarget->GetMemberSlots())
227 {
228 std::string flags;
229
230 if (slot.flags & MEMBER_FLAG_ASSISTANT)
231 {
232 flags = "Assistant";
233 }
234
235 if (slot.flags & MEMBER_FLAG_MAINTANK)
236 {
237 if (!flags.empty())
238 {
239 flags.append(", ");
240 }
241
242 flags.append("MainTank");
243 }
244
245 if (slot.flags & MEMBER_FLAG_MAINASSIST)
246 {
247 if (!flags.empty())
248 {
249 flags.append(", ");
250 }
251
252 flags.append("MainAssist");
253 }
254
255 if (flags.empty())
256 {
257 flags = "None";
258 }
259 }
260
261 return true;
262 }
#define sCharacterCache
Definition CharacterCache.h:88
#define sGroupMgr
Definition GroupMgr.h:51
@ MEMBER_FLAG_ASSISTANT
Definition Group.h:74
@ MEMBER_FLAG_MAINASSIST
Definition Group.h:76
@ MEMBER_FLAG_MAINTANK
Definition Group.h:75
@ LANG_GROUP_TYPE
Definition Language.h:950
bool isRaidGroup() const
Definition Group.cpp:2477

References Acore::ChatCommands::PlayerIdentifier::FromTargetOrSelf(), Group::GetMembersCount(), Group::GetMemberSlots(), Group::isRaidGroup(), LANG_GROUP_NOT_IN_GROUP, LANG_GROUP_TYPE, MEMBER_FLAG_ASSISTANT, MEMBER_FLAG_MAINASSIST, MEMBER_FLAG_MAINTANK, ChatHandler::PSendSysMessage(), sCharacterCache, and sGroupMgr.

Referenced by GetCommands().

◆ HandleGroupRemoveCommand()

static bool group_commandscript::HandleGroupRemoveCommand ( ChatHandler handler,
Optional< PlayerIdentifier target 
)
inlinestatic
109 {
110 if (!target)
111 {
112 target = PlayerIdentifier::FromTargetOrSelf(handler);
113 }
114
115 if (!target || !target->IsConnected())
116 {
117 return false;
118 }
119
120 Player* player = nullptr;
121 Group* group = nullptr;
122 ObjectGuid guid;
123
124 if (handler->GetPlayerGroupAndGUIDByName(target->GetName().c_str(), player, group, guid, true))
125 {
126 if (group)
127 {
128 group->RemoveMember(guid);
129 }
130 }
131
132 return true;
133 }
bool RemoveMember(ObjectGuid guid, RemoveMethod const &method=GROUP_REMOVEMETHOD_DEFAULT, ObjectGuid kicker=ObjectGuid::Empty, char const *reason=nullptr)
Definition Group.cpp:627

References Acore::ChatCommands::PlayerIdentifier::FromTargetOrSelf(), ChatHandler::GetPlayerGroupAndGUIDByName(), and Group::RemoveMember().

Referenced by GetCommands().

◆ HandleGroupReviveCommand()

static bool group_commandscript::HandleGroupReviveCommand ( ChatHandler handler,
Optional< PlayerIdentifier target 
)
inlinestatic
265 {
266 if (!target)
267 target = PlayerIdentifier::FromTargetOrSelf(handler);
268
269 if (!target)
270 return false;
271
272 Player* targetPlayer = target->GetConnectedPlayer();
273 Group* group = targetPlayer->GetGroup();
274 std::string nameLink = handler->playerLink(target->GetName());
275
276 if (!group)
277 {
278 handler->SendErrorMessage(LANG_NOT_IN_GROUP, nameLink);
279 return false;
280 }
281
282 for (GroupReference* it = group->GetFirstMember(); it != nullptr; it = it->next())
283 {
284 Player* target = it->GetSource();
285 if (target)
286 {
287 target->RemoveAurasDueToSpell(27827); // Spirit of Redemption
288 target->ResurrectPlayer(!AccountMgr::IsPlayerAccount(target->GetSession()->GetSecurity()) ? 1.0f : 0.5f);
289 target->SpawnCorpseBones();
290 target->SaveToDB(false, false);
291 }
292 }
293
294 return true;
295 }
@ LANG_NOT_IN_GROUP
Definition Language.h:153
static bool IsPlayerAccount(uint32 gmlevel)
Definition AccountMgr.cpp:324
std::string playerLink(std::string const &name) const
Definition Chat.h:231
void SendErrorMessage(uint32 entry)
Definition Chat.cpp:224
Definition GroupReference.h:27
GroupReference * GetFirstMember()
Definition Group.h:252
void SaveToDB(bool create, bool logout)
Definition PlayerStorage.cpp:7196
void SpawnCorpseBones(bool triggerSave=true)
Definition Player.cpp:4762
WorldSession * GetSession() const
Definition Player.h:2030
void ResurrectPlayer(float restore_percent, bool applySickness=false)
Definition Player.cpp:4544
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint8 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
Definition Unit.cpp:5189
AccountTypes GetSecurity() const
Definition WorldSession.h:467

References Acore::ChatCommands::PlayerIdentifier::FromTargetOrSelf(), Group::GetFirstMember(), Player::GetGroup(), WorldSession::GetSecurity(), Player::GetSession(), AccountMgr::IsPlayerAccount(), LANG_NOT_IN_GROUP, ChatHandler::playerLink(), Unit::RemoveAurasDueToSpell(), Player::ResurrectPlayer(), Player::SaveToDB(), ChatHandler::SendErrorMessage(), and Player::SpawnCorpseBones().

Referenced by GetCommands().


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