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->RemoveMember(guid, method) <= 1)
if (group->RemoveMember(guid, method, kicker, reason) <= 1)
{
// group->Disband(); already disbanded in RemoveMember
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 IsInSameRaidWith(Player const* p) const { return p == this || (GetGroup() != NULL && GetGroup() == p->GetGroup()); }
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 SendUpdateToOutOfRangeGroupMembers();
+2 -2
View File
@@ -354,11 +354,11 @@ bool Group::AddMember(const uint64 &guid, const char* name)
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();
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)
if (GetMembersCount() > (isBGGroup() ? 1u : 2u))
+1 -1
View File
@@ -196,7 +196,7 @@ class Group
void RemoveAllInvites();
bool AddLeaderInvite(Player *player);
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 SetLootMethod(LootMethod method) { m_lootMethod = method; }
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);
}
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);
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)
+2 -2
View File
@@ -748,7 +748,7 @@ public:
virtual void OnAddMember(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 OnDisband(Group* /*group*/) { }
};
@@ -965,7 +965,7 @@ class ScriptMgr
public: /* GroupScript */
void OnGroupAddMember(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 OnGroupDisband(Group* group);
@@ -281,7 +281,7 @@ void WorldSession::HandleGroupUninviteGuidOpcode(WorldPacket & recv_data)
if (grp->isLFGGroup())
sLFGMgr.InitBoot(grp, GUID_LOPART(GetPlayer()->GetGUID()), GUID_LOPART(guid), reason);
else
Player::RemoveFromGroup(grp, guid, GROUP_REMOVEMETHOD_KICK);
Player::RemoveFromGroup(grp, guid, GROUP_REMOVEMETHOD_KICK, GetPlayer()->GetGUID(), reason.c_str());
return;
}
@@ -326,7 +326,7 @@ void WorldSession::HandleGroupUninviteOpcode(WorldPacket & recv_data)
if (grp->isLFGGroup())
sLFGMgr.InitBoot(grp, GUID_LOPART(GetPlayer()->GetGUID()), GUID_LOPART(guid), "");
else
Player::RemoveFromGroup(grp, guid, GROUP_REMOVEMETHOD_KICK);
Player::RemoveFromGroup(grp, guid, GROUP_REMOVEMETHOD_KICK, GetPlayer()->GetGUID());
return;
}
+2 -2
View File
@@ -51,10 +51,10 @@ public:
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();
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)
return;