/// <summary> /// Checks whether the given target exists in this group and whether the given requestMember has the given privs /// </summary> public GroupResult CheckAction(GroupMember requestMember, GroupMember target, string targetName, GroupPrivs reqPrivs) { GroupResult resultCode; if (target == null || target.Group != requestMember.Group) { resultCode = GroupResult.NotInYourParty; } else { if ((reqPrivs != GroupPrivs.Leader || this.m_leader == requestMember) && (reqPrivs != GroupPrivs.MainAsisstant || requestMember.IsAtLeastMainAssistant) && (reqPrivs != GroupPrivs.Assistant || requestMember.IsAtLeastAssistant)) { return(GroupResult.NoError); } resultCode = GroupResult.DontHavePermission; targetName = string.Empty; } Character character = requestMember.Character; if (character != null) { Group.SendResult((IPacketReceiver)character.Client, resultCode, 0U, targetName); } return(resultCode); }
private static bool CheckSameGroup(Character requester, Character character) { if (requester.Group != character.Group) { Group.SendResult(requester.Client, GroupResult.NotInYourParty, character.Name); return(false); } return(true); }
private static bool CheckSameGroup(Character requester, Character character) { if (requester.Group == character.Group) { return(true); } Group.SendResult((IPacketReceiver)requester.Client, GroupResult.NotInYourParty, character.Name); return(false); }
/// <summary> /// Check whether the given inviter may invite the given target /// </summary> public static GroupResult CheckInvite(Character inviter, out Character target, string targetName) { GroupMember groupMember = inviter.GroupMember; Group group = groupMember?.Group; Character character = World.GetCharacter(targetName, true); GroupResult resultCode; if (group != null && group.IsFull) { resultCode = GroupResult.GroupIsFull; target = (Character)null; targetName = string.Empty; } else if (groupMember != null && !groupMember.IsAtLeastAssistant) { target = (Character)null; resultCode = GroupResult.DontHavePermission; } else if (group != null && group.Flags.HasFlag((Enum)GroupFlags.Raid) && (character != null && character.IsAllowedLowLevelRaid) && character.Level < Group.MinLevelToBeInvitedInRaid) { target = (Character)null; resultCode = GroupResult.RaidDisallowedByLevel; } else { target = World.GetCharacter(targetName, false); if (target == null || inviter == target || target.Role.IsStaff && !inviter.Role.IsStaff) { resultCode = GroupResult.OfflineOrDoesntExist; } else if (inviter.Faction.Group != target.Faction.Group) { resultCode = GroupResult.TargetIsUnfriendly; } else if (target.Group != null || target.IsInvitedToGroup) { resultCode = GroupResult.AlreadyInGroup; } else { if (!target.IsIgnoring((IUser)inviter) || inviter.Role.IsStaff) { return(GroupResult.NoError); } resultCode = GroupResult.TargetIsIgnoringYou; } } Group.SendResult((IPacketReceiver)inviter.Client, resultCode, 0U, targetName); return(resultCode); }
/// <summary>Sends result of actions connected with groups</summary> /// <param name="client">the client to send to</param> /// <param name="resultCode">The <see cref="T:WCell.Constants.GroupResult" /> result code</param> /// <param name="name">name of player event has happened to</param> public static void SendResult(IPacketReceiver client, GroupResult resultCode, string name) { Group.SendResult(client, resultCode, 0U, name); }