Exemplo n.º 1
0
        /// <summary>
        /// Checks whether the given target exists in requester's guild and whether the given requestMember has needed privs
        /// Sends result of action to the requester
        /// </summary>
        /// <param name="reqChar">requester's character, can be null. If null, sending result is suppressed</param>
        /// <param name="targetName">target character's name</param>
        /// <param name="targetGM">target's GuildMember entry is returned through this</param>
        /// <param name="commandId">executed command. Used for sending result</param>
        /// <param name="reqPrivs">priviliges required for executing this action</param>
        /// <param name="canAffectSelf">can this action be executed on self?</param>
        /// <returns>result of operation</returns>
        public static GuildResult CheckAction(Character reqChar, string targetName, out GuildMember targetGM,
                                              GuildCommandId commandId, GuildPrivileges reqPrivs, bool canAffectSelf)
        {
            targetGM = null;
            GuildResult err;

            var requester = reqChar.GuildMember;

            if (requester == null)
            {
                err        = GuildResult.PLAYER_NOT_IN_GUILD;
                targetName = string.Empty;
            }
            else if ((targetGM = requester.Guild[targetName]) == null)
            {
                err = GuildResult.PLAYER_NOT_FOUND;
            }
            else if (!canAffectSelf && (requester == targetGM))
            {
                err = GuildResult.PERMISSIONS;
            }
            else if (!requester.HasRight(reqPrivs))
            {
                err        = GuildResult.PERMISSIONS;
                targetName = string.Empty;
            }
            else
            {
                return(GuildResult.SUCCESS);
            }

            GuildHandler.SendResult(reqChar.Client, commandId, targetName, err);
            return(err);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Checks whether the given target exists in requester's guild and whether the given requestMember has needed privs
        /// Sends result of action to the requester
        /// </summary>
        /// <param name="reqChar">requester's character, can be null. If null, sending result is suppressed</param>
        /// <param name="targetName">target character's name</param>
        /// <param name="targetGM">target's GuildMember entry is returned through this</param>
        /// <param name="commandId">executed command. Used for sending result</param>
        /// <param name="reqPrivs">priviliges required for executing this action</param>
        /// <param name="canAffectSelf">can this action be executed on self?</param>
        /// <returns>result of operation</returns>
        public static GuildResult CheckAction(Character reqChar, string targetName, out GuildMember targetGM,
                                              GuildCommandId commandId, GuildPrivileges reqPrivs, bool canAffectSelf)
        {
            targetGM = (GuildMember)null;
            GuildMember guildMember = reqChar.GuildMember;
            GuildResult resultCode;

            if (guildMember == null)
            {
                resultCode = GuildResult.PLAYER_NOT_IN_GUILD;
                targetName = string.Empty;
            }
            else if ((targetGM = guildMember.Guild[targetName]) == null)
            {
                resultCode = GuildResult.PLAYER_NOT_FOUND;
            }
            else if (!canAffectSelf && guildMember == targetGM)
            {
                resultCode = GuildResult.PERMISSIONS;
            }
            else
            {
                if (guildMember.HasRight(reqPrivs))
                {
                    return(GuildResult.SUCCESS);
                }
                resultCode = GuildResult.PERMISSIONS;
                targetName = string.Empty;
            }

            GuildHandler.SendResult((IPacketReceiver)reqChar.Client, commandId, targetName, resultCode);
            return(resultCode);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Checks if given character has necessary priviliges
        /// CheckInGuild call is done automatically
        /// </summary>
        /// <param name="character">character to check. May be null</param>
        /// <param name="commandId">executed command (used for sending result)</param>
        /// <param name="reqPrivs">required privileges</param>
        /// <returns>The Character's guild if the character has required privileges within the guild, otherwise null</returns>
        public static Guild CheckPrivs(Character character, GuildCommandId commandId, GuildPrivileges reqPrivs)
        {
            GuildMember guildMember = character.GuildMember;

            if (guildMember == null)
            {
                GuildHandler.SendResult((IPacketReceiver)character, commandId, GuildResult.PLAYER_NOT_IN_GUILD);
                return((Guild)null);
            }

            if (guildMember.HasRight(reqPrivs))
            {
                return(guildMember.Guild);
            }
            Character character1 = guildMember.Character;

            if (character1 != null)
            {
                GuildHandler.SendResult((IPacketReceiver)character1, commandId, GuildResult.PERMISSIONS);
            }
            return((Guild)null);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Checks if given character has necessary priviliges
        /// CheckInGuild call is done automatically
        /// </summary>
        /// <param name="character">character to check. May be null</param>
        /// <param name="commandId">executed command (used for sending result)</param>
        /// <param name="reqPrivs">required privileges</param>
        /// <returns>The Character's guild if the character has required privileges within the guild, otherwise null</returns>
        public static Guild CheckPrivs(Character character, GuildCommandId commandId, GuildPrivileges reqPrivs)
        {
            var member = character.GuildMember;

            if (member == null)
            {
                GuildHandler.SendResult(character, commandId, GuildResult.PLAYER_NOT_IN_GUILD);
                return(null);
            }
            else
            {
                if (!member.HasRight(reqPrivs))
                {
                    var requester = member.Character;
                    if (requester != null)
                    {
                        GuildHandler.SendResult(requester, commandId, GuildResult.PERMISSIONS);
                    }
                    return(null);
                }
            }
            return(member.Guild);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Checks whether a guild member may make another guild member the guild leader
        /// </summary>
        /// <param name="reqChar">requester's character, can be null. If null, sending result is suppressed</param>
        /// <param name="targetChar">target's character, can be null</param>
        /// <param name="targetName">target character's name</param>
        /// <returns>result of operation</returns>
        public static GuildResult CheckIsLeader(Character reqChar, Character targetChar, GuildCommandId cmd,
                                                string targetName)
        {
            GuildMember guildMember1 = reqChar.GuildMember;
            GuildResult resultCode;

            if (guildMember1 == null)
            {
                resultCode = GuildResult.PLAYER_NOT_IN_GUILD;
            }
            else if (targetChar == null)
            {
                resultCode = GuildResult.PLAYER_NOT_FOUND;
            }
            else
            {
                GuildMember guildMember2;
                if ((guildMember2 = targetChar.GuildMember) == null || guildMember2.Guild != guildMember1.Guild)
                {
                    resultCode = GuildResult.PLAYER_NOT_IN_GUILD;
                }
                else if (guildMember1 == guildMember2)
                {
                    resultCode = GuildResult.PERMISSIONS;
                    targetName = string.Empty;
                }
                else
                {
                    if (guildMember1.IsLeader)
                    {
                        return(GuildResult.SUCCESS);
                    }
                    resultCode = GuildResult.PERMISSIONS;
                    targetName = string.Empty;
                }
            }

            GuildHandler.SendResult((IPacketReceiver)reqChar, cmd, targetName, resultCode);
            return(resultCode);
        }
Exemplo n.º 6
0
		/// <summary>
		/// Sends result of actions connected with guilds
		/// </summary>
		/// <param name="client">the client to send to</param>
		/// <param name="commandId">command executed</param>
		/// <param name="resultCode">The <see cref="GuildResult"/> result code</param>
		public static void SendResult(IPacketReceiver client, GuildCommandId commandId, GuildResult resultCode)
		{
			SendResult(client, commandId, string.Empty, resultCode);
		}
Exemplo n.º 7
0
		/// <summary>
		/// Sends result of actions connected with guilds
		/// </summary>
		/// <param name="client">the client to send to</param>
		/// <param name="commandId">command executed</param>
		/// <param name="name">name of player event has happened to</param>
		/// <param name="resultCode">The <see cref="GuildResult"/> result code</param>
		public static void SendResult(IPacketReceiver client, GuildCommandId commandId, string name,
									  GuildResult resultCode)
		{
			// TODO: change params to enums
			using (var packet = new RealmPacketOut(RealmServerOpCode.SMSG_GUILD_COMMAND_RESULT))
			{
				packet.WriteUInt((uint)commandId);
				packet.WriteCString(name);
				packet.WriteUInt((uint)resultCode);

				client.Send(packet);
			}
		}
Exemplo n.º 8
0
        //public static bool CheckMemberInGuild(GuildMember requester, GuildMember target)
        //{
        //    if (requester == null)
        //        return false;

        //    if (requester.Guild != target.Guild)
        //    {
        //        Guild.SendResult(requester.Character.Client, GuildCommand.CREATE, target.Name,
        //            GuildResult.PLAYER_NOT_IN_GUILD);
        //        return false;
        //    }
        //    return true;
        //}

        /// <summary>
        /// Checks whether a guild member may make another guild member the guild leader
        /// </summary>
        /// <param name="reqChar">requester's character, can be null. If null, sending result is suppressed</param>
        /// <param name="targetChar">target's character, can be null</param>
        /// <param name="targetName">target character's name</param>
        /// <returns>result of operation</returns>
        public static GuildResult CheckIsLeader(Character reqChar, Character targetChar, GuildCommandId cmd, string targetName)
        {
            GuildResult err;

            GuildMember requester = reqChar.GuildMember, target;

            if (requester == null)
            {
                err = GuildResult.PLAYER_NOT_IN_GUILD;
            }
            else if (targetChar == null)
            {
                err = GuildResult.PLAYER_NOT_FOUND;
            }
            else if ((target = targetChar.GuildMember) == null || target.Guild != requester.Guild)
            {
                err = GuildResult.PLAYER_NOT_IN_GUILD;
            }
            else if (requester == target)
            {
                err        = GuildResult.PERMISSIONS;
                targetName = string.Empty;
            }
            else if (!requester.IsLeader)
            {
                err        = GuildResult.PERMISSIONS;
                targetName = string.Empty;
            }
            else
            {
                return(GuildResult.SUCCESS);
            }

            GuildHandler.SendResult(reqChar, cmd, targetName, err);
            return(err);
        }