Core/Groups: Add kicker and kick reason to RemoveMember

--HG--
branch : trunk
This commit is contained in:
Spp
2010-11-23 20:49:36 +01:00
parent f25cbacf72
commit d3c9478153
8 changed files with 14 additions and 14 deletions
+2 -2
View File
@@ -2593,11 +2593,11 @@ void Player::UninviteFromGroup()
} }
} }
void Player::RemoveFromGroup(Group* group, uint64 guid, RemoveMethod method /* = GROUP_REMOVEMETHOD_DEFAULT*/) void Player::RemoveFromGroup(Group* group, uint64 guid, RemoveMethod method /* = GROUP_REMOVEMETHOD_DEFAULT*/, uint64 kicker /* = 0 */, const char* reason /* = NULL */)
{ {
if (group) if (group)
{ {
if (group->RemoveMember(guid, method) <= 1) if (group->RemoveMember(guid, method, kicker, reason) <= 1)
{ {
// group->Disband(); already disbanded in RemoveMember // group->Disband(); already disbanded in RemoveMember
sObjectMgr.RemoveGroup(group); sObjectMgr.RemoveGroup(group);
+1 -1
View File
@@ -1710,7 +1710,7 @@ class Player : public Unit, public GridObject<Player>
bool IsInSameGroupWith(Player const* p) const; bool IsInSameGroupWith(Player const* p) const;
bool IsInSameRaidWith(Player const* p) const { return p == this || (GetGroup() != NULL && GetGroup() == p->GetGroup()); } bool IsInSameRaidWith(Player const* p) const { return p == this || (GetGroup() != NULL && GetGroup() == p->GetGroup()); }
void UninviteFromGroup(); void UninviteFromGroup();
static void RemoveFromGroup(Group* group, uint64 guid, RemoveMethod method = GROUP_REMOVEMETHOD_DEFAULT); static void RemoveFromGroup(Group* group, uint64 guid, RemoveMethod method = GROUP_REMOVEMETHOD_DEFAULT, uint64 kicker = 0 , const char* reason = NULL);
void RemoveFromGroup(RemoveMethod method = GROUP_REMOVEMETHOD_DEFAULT) { RemoveFromGroup(GetGroup(),GetGUID(), method); } void RemoveFromGroup(RemoveMethod method = GROUP_REMOVEMETHOD_DEFAULT) { RemoveFromGroup(GetGroup(),GetGUID(), method); }
void SendUpdateToOutOfRangeGroupMembers(); void SendUpdateToOutOfRangeGroupMembers();
+2 -2
View File
@@ -354,11 +354,11 @@ bool Group::AddMember(const uint64 &guid, const char* name)
return true; return true;
} }
uint32 Group::RemoveMember(const uint64 &guid, const RemoveMethod &method) uint32 Group::RemoveMember(const uint64 &guid, const RemoveMethod &method /* = GROUP_REMOVEMETHOD_DEFAULT */, uint64 kicker /* = 0 */, const char* reason /* = NULL */)
{ {
BroadcastGroupUpdate(); BroadcastGroupUpdate();
sScriptMgr.OnGroupRemoveMember(this, guid, method); sScriptMgr.OnGroupRemoveMember(this, guid, method, kicker, reason);
// remove member and change leader (if need) only if strong more 2 members _before_ member remove (BG allow 1 member group) // remove member and change leader (if need) only if strong more 2 members _before_ member remove (BG allow 1 member group)
if (GetMembersCount() > (isBGGroup() ? 1u : 2u)) if (GetMembersCount() > (isBGGroup() ? 1u : 2u))
+1 -1
View File
@@ -196,7 +196,7 @@ class Group
void RemoveAllInvites(); void RemoveAllInvites();
bool AddLeaderInvite(Player *player); bool AddLeaderInvite(Player *player);
bool AddMember(const uint64 &guid, const char* name); bool AddMember(const uint64 &guid, const char* name);
uint32 RemoveMember(const uint64 &guid, const RemoveMethod &method = GROUP_REMOVEMETHOD_DEFAULT); uint32 RemoveMember(const uint64 &guid, const RemoveMethod &method = GROUP_REMOVEMETHOD_DEFAULT, uint64 kicker = 0, const char* reason = NULL);
void ChangeLeader(const uint64 &guid); void ChangeLeader(const uint64 &guid);
void SetLootMethod(LootMethod method) { m_lootMethod = method; } void SetLootMethod(LootMethod method) { m_lootMethod = method; }
void SetLooterGuid(const uint64 &guid) { m_looterGuid = guid; } void SetLooterGuid(const uint64 &guid) { m_looterGuid = guid; }
+2 -2
View File
@@ -1267,10 +1267,10 @@ void ScriptMgr::OnGroupInviteMember(Group* group, uint64 guid)
FOREACH_SCRIPT(GroupScript)->OnInviteMember(group, guid); FOREACH_SCRIPT(GroupScript)->OnInviteMember(group, guid);
} }
void ScriptMgr::OnGroupRemoveMember(Group* group, uint64 guid, RemoveMethod method) void ScriptMgr::OnGroupRemoveMember(Group* group, uint64 guid, RemoveMethod method, uint64 kicker, const char* reason)
{ {
ASSERT(group); ASSERT(group);
FOREACH_SCRIPT(GroupScript)->OnRemoveMember(group, guid, method); FOREACH_SCRIPT(GroupScript)->OnRemoveMember(group, guid, method, kicker, reason);
} }
void ScriptMgr::OnGroupChangeLeader(Group* group, uint64 newLeaderGuid, uint64 oldLeaderGuid) void ScriptMgr::OnGroupChangeLeader(Group* group, uint64 newLeaderGuid, uint64 oldLeaderGuid)
+2 -2
View File
@@ -748,7 +748,7 @@ public:
virtual void OnAddMember(Group* /*group*/, uint64 /*guid*/) { } virtual void OnAddMember(Group* /*group*/, uint64 /*guid*/) { }
virtual void OnInviteMember(Group* /*group*/, uint64 /*guid*/) { } virtual void OnInviteMember(Group* /*group*/, uint64 /*guid*/) { }
virtual void OnRemoveMember(Group* /*group*/, uint64 /*guid*/, RemoveMethod& /*method*/) { } virtual void OnRemoveMember(Group* /*group*/, uint64 /*guid*/, RemoveMethod& /*method*/, uint64 /*kicker*/, const char* /*reason*/) { }
virtual void OnChangeLeader(Group* /*group*/, uint64 /*newLeaderGuid*/, uint64 /*oldLeaderGuid*/) { } virtual void OnChangeLeader(Group* /*group*/, uint64 /*newLeaderGuid*/, uint64 /*oldLeaderGuid*/) { }
virtual void OnDisband(Group* /*group*/) { } virtual void OnDisband(Group* /*group*/) { }
}; };
@@ -965,7 +965,7 @@ class ScriptMgr
public: /* GroupScript */ public: /* GroupScript */
void OnGroupAddMember(Group* group, uint64 guid); void OnGroupAddMember(Group* group, uint64 guid);
void OnGroupInviteMember(Group* group, uint64 guid); void OnGroupInviteMember(Group* group, uint64 guid);
void OnGroupRemoveMember(Group* group, uint64 guid, RemoveMethod method); void OnGroupRemoveMember(Group* group, uint64 guid, RemoveMethod method, uint64 kicker, const char* reason);
void OnGroupChangeLeader(Group* group, uint64 newLeaderGuid, uint64 oldLeaderGuid); void OnGroupChangeLeader(Group* group, uint64 newLeaderGuid, uint64 oldLeaderGuid);
void OnGroupDisband(Group* group); void OnGroupDisband(Group* group);
@@ -281,7 +281,7 @@ void WorldSession::HandleGroupUninviteGuidOpcode(WorldPacket & recv_data)
if (grp->isLFGGroup()) if (grp->isLFGGroup())
sLFGMgr.InitBoot(grp, GUID_LOPART(GetPlayer()->GetGUID()), GUID_LOPART(guid), reason); sLFGMgr.InitBoot(grp, GUID_LOPART(GetPlayer()->GetGUID()), GUID_LOPART(guid), reason);
else else
Player::RemoveFromGroup(grp, guid, GROUP_REMOVEMETHOD_KICK); Player::RemoveFromGroup(grp, guid, GROUP_REMOVEMETHOD_KICK, GetPlayer()->GetGUID(), reason.c_str());
return; return;
} }
@@ -326,7 +326,7 @@ void WorldSession::HandleGroupUninviteOpcode(WorldPacket & recv_data)
if (grp->isLFGGroup()) if (grp->isLFGGroup())
sLFGMgr.InitBoot(grp, GUID_LOPART(GetPlayer()->GetGUID()), GUID_LOPART(guid), ""); sLFGMgr.InitBoot(grp, GUID_LOPART(GetPlayer()->GetGUID()), GUID_LOPART(guid), "");
else else
Player::RemoveFromGroup(grp, guid, GROUP_REMOVEMETHOD_KICK); Player::RemoveFromGroup(grp, guid, GROUP_REMOVEMETHOD_KICK, GetPlayer()->GetGUID());
return; return;
} }
+2 -2
View File
@@ -51,10 +51,10 @@ public:
sLFGMgr.Leave(plr); sLFGMgr.Leave(plr);
} }
void OnRemoveMember(Group* group, uint64 guid, RemoveMethod& method) void OnRemoveMember(Group* group, uint64 guid, RemoveMethod& method, uint64 kicker, const char* reason)
{ {
uint64 gguid = group->GetGUID(); uint64 gguid = group->GetGUID();
sLog.outDebug("OnRemoveMember [" UI64FMTD "]: remove [" UI64FMTD "] Method: %d", gguid, guid, method); sLog.outDebug("OnRemoveMember [" UI64FMTD "]: remove [" UI64FMTD "] Method: %d Kicker: [" UI64FMTD "] Reason: %s", gguid, guid, method, kicker, (reason ? reason : ""));
if (!gguid) if (!gguid)
return; return;