Core/Groups: Add kicker and kick reason to RemoveMember
--HG-- branch : trunk
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|
||||||
|
|||||||
@@ -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))
|
||||||
|
|||||||
@@ -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; }
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user