Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
 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);
 }
Esempio n. 3
0
 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);
 }
Esempio n. 4
0
        /// <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);
        }
Esempio n. 5
0
 /// <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);
 }