Core/Players: Remove player from group on faction change if two side interaction group is not allowed.
Port From (https://github.com/TrinityCore/TrinityCore/commit/f108a50abf82abd0973878ef88fdab47a408238c)
This commit is contained in:
@@ -508,7 +508,7 @@ namespace Framework.Database
|
|||||||
PrepareStatement(CharStatements.SEL_CHAR_HOMEBIND, "SELECT mapId, zoneId, posX, posY, posZ, orientation FROM character_homebind WHERE guid = ?");
|
PrepareStatement(CharStatements.SEL_CHAR_HOMEBIND, "SELECT mapId, zoneId, posX, posY, posZ, orientation FROM character_homebind WHERE guid = ?");
|
||||||
PrepareStatement(CharStatements.SEL_CHAR_GUID_NAME_BY_ACC, "SELECT guid, name, online FROM characters WHERE account = ?");
|
PrepareStatement(CharStatements.SEL_CHAR_GUID_NAME_BY_ACC, "SELECT guid, name, online FROM characters WHERE account = ?");
|
||||||
PrepareStatement(CharStatements.SEL_CHAR_CUSTOMIZE_INFO, "SELECT name, race, class, gender, at_login FROM characters WHERE guid = ?");
|
PrepareStatement(CharStatements.SEL_CHAR_CUSTOMIZE_INFO, "SELECT name, race, class, gender, at_login FROM characters WHERE guid = ?");
|
||||||
PrepareStatement(CharStatements.SEL_CHAR_RACE_OR_FACTION_CHANGE_INFOS, "SELECT at_login, knownTitles FROM characters WHERE guid = ?");
|
PrepareStatement(CharStatements.SEL_CHAR_RACE_OR_FACTION_CHANGE_INFOS, "SELECT c.at_login, c.knownTitles, gm.guid FROM characters c LEFT JOIN group_member gm ON c.guid = gm.memberGuid WHERE c.guid = ?");
|
||||||
PrepareStatement(CharStatements.SEL_CHAR_COD_ITEM_MAIL, "SELECT id, messageType, mailTemplateId, sender, subject, body, money, has_items FROM mail WHERE receiver = ? AND has_items <> 0 AND cod <> 0");
|
PrepareStatement(CharStatements.SEL_CHAR_COD_ITEM_MAIL, "SELECT id, messageType, mailTemplateId, sender, subject, body, money, has_items FROM mail WHERE receiver = ? AND has_items <> 0 AND cod <> 0");
|
||||||
PrepareStatement(CharStatements.SEL_CHAR_SOCIAL, "SELECT DISTINCT guid FROM character_social WHERE friend = ?");
|
PrepareStatement(CharStatements.SEL_CHAR_SOCIAL, "SELECT DISTINCT guid FROM character_social WHERE friend = ?");
|
||||||
PrepareStatement(CharStatements.SEL_CHAR_OLD_CHARS, "SELECT guid, deleteInfos_Account FROM characters WHERE deleteDate IS NOT NULL AND deleteDate < ?");
|
PrepareStatement(CharStatements.SEL_CHAR_OLD_CHARS, "SELECT guid, deleteInfos_Account FROM characters WHERE deleteDate IS NOT NULL AND deleteDate < ?");
|
||||||
|
|||||||
@@ -1761,6 +1761,7 @@ namespace Game
|
|||||||
|
|
||||||
AtLoginFlags atLoginFlags = (AtLoginFlags)result.Read<ushort>(0);
|
AtLoginFlags atLoginFlags = (AtLoginFlags)result.Read<ushort>(0);
|
||||||
string knownTitlesStr = result.Read<string>(1);
|
string knownTitlesStr = result.Read<string>(1);
|
||||||
|
uint groupId = !result.IsNull(2) ? result.Read<uint>(2) : 0;
|
||||||
|
|
||||||
AtLoginFlags usedLoginFlag = (factionChangeInfo.FactionChange ? AtLoginFlags.ChangeFaction : AtLoginFlags.ChangeRace);
|
AtLoginFlags usedLoginFlag = (factionChangeInfo.FactionChange ? AtLoginFlags.ChangeFaction : AtLoginFlags.ChangeRace);
|
||||||
if (!atLoginFlags.HasAnyFlag(usedLoginFlag))
|
if (!atLoginFlags.HasAnyFlag(usedLoginFlag))
|
||||||
@@ -1989,6 +1990,13 @@ namespace Game
|
|||||||
Player.LeaveAllArenaTeams(factionChangeInfo.Guid);
|
Player.LeaveAllArenaTeams(factionChangeInfo.Guid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (groupId != 0 && !WorldConfig.GetBoolValue(WorldCfg.AllowTwoSideInteractionGroup))
|
||||||
|
{
|
||||||
|
Group group = Global.GroupMgr.GetGroupByDbStoreId(groupId);
|
||||||
|
if (group != null)
|
||||||
|
group.RemoveMember(factionChangeInfo.Guid);
|
||||||
|
}
|
||||||
|
|
||||||
if (!HasPermission(RBACPermissions.TwoSideAddFriend))
|
if (!HasPermission(RBACPermissions.TwoSideAddFriend))
|
||||||
{
|
{
|
||||||
// Delete Friend List
|
// Delete Friend List
|
||||||
|
|||||||
Reference in New Issue
Block a user