Exemplo n.º 1
0
        /// <summary>Changes priviliges and name of a rank</summary>
        /// <param name="rankId">Id of rank to modify</param>
        /// <param name="newName">new name of rank</param>
        /// <param name="newPrivileges">new priviliges of rank</param>
        /// <param name="update">if true, sends event to the guild</param>
        public void ChangeRank(int rankId, string newName, GuildPrivileges newPrivileges, bool update)
        {
            foreach (GuildRank rank in this.m_ranks)
            {
                if (rank.Name == newName && rank.RankIndex != rankId)
                {
                    return;
                }
            }

            try
            {
                if (this.m_ranks.Count <= rankId)
                {
                    return;
                }
                this.m_ranks[rankId].Name       = newName;
                this.m_ranks[rankId].Privileges = newPrivileges;
                this.m_ranks[rankId].SaveLater();
            }
            catch (Exception ex)
            {
                LogUtil.ErrorException(ex, string.Format("Could not modify rank in guild {0}", (object)this),
                                       new object[0]);
            }

            if (!update)
            {
                return;
            }
            GuildHandler.SendGuildQueryToGuildMembers(this);
            GuildHandler.SendGuildRosterToGuildMembers(this);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Adds rank to the tail of ranks list
        /// </summary>
        /// <param name="name">name of new rank</param>
        /// <param name="privileges">privileges of new rank</param>
        /// <param name="update">if true, sends event to the guild</param>
        /// <returns>new rank</returns>
        public GuildRank AddRank(string name, GuildPrivileges privileges, bool update)
        {
            GuildRank rank;

            //using (syncRoot.Enter())
            lock (this)
            {
                foreach (var gRank in m_ranks)
                {
                    if (gRank.Name == name)
                    {
                        return(null);
                    }
                }

                if (m_ranks.Count >= GuildMgr.MAX_GUILD_RANKS)
                {
                    return(null);
                }

                rank = new GuildRank(this, name, privileges, m_ranks.Count);
                m_ranks.Add(rank);
            }


            rank.SaveLater();
            if (update)
            {
                GuildHandler.SendGuildQueryToGuildMembers(this);
                GuildHandler.SendGuildRosterToGuildMembers(this);
            }

            return(rank);
        }
Exemplo n.º 3
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.º 4
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.º 5
0
        /// <summary>
        /// Changes priviliges and name of a rank
        /// </summary>
        /// <param name="rankId">Id of rank to modify</param>
        /// <param name="newName">new name of rank</param>
        /// <param name="newPrivileges">new priviliges of rank</param>
        /// <param name="update">if true, sends event to the guild</param>
        public void ChangeRank(int rankId, string newName, GuildPrivileges newPrivileges, bool update)
        {
            foreach (var gr in m_ranks)
            {
                if ((gr.Name == newName) && (gr.RankIndex != rankId))
                {
                    return;
                }
            }

            try
            {
                if (m_ranks.Count <= rankId)
                {
                    return;
                }

                m_ranks[rankId].Name       = newName;
                m_ranks[rankId].Privileges = newPrivileges;
                m_ranks[rankId].SaveLater();
            }
            catch (Exception e)
            {
                LogUtil.ErrorException(e, string.Format("Could not modify rank in guild {0}", this));
            }

            if (update)
            {
                GuildHandler.SendGuildQueryToGuildMembers(this);
                GuildHandler.SendGuildRosterToGuildMembers(this);
            }
        }
Exemplo n.º 6
0
        /// <summary>Adds rank to the tail of ranks list</summary>
        /// <param name="name">name of new rank</param>
        /// <param name="privileges">privileges of new rank</param>
        /// <param name="update">if true, sends event to the guild</param>
        /// <returns>new rank</returns>
        public GuildRank AddRank(string name, GuildPrivileges privileges, bool update)
        {
            GuildRank guildRank;

            lock (this)
            {
                foreach (GuildRank rank in this.m_ranks)
                {
                    if (rank.Name == name)
                    {
                        return((GuildRank)null);
                    }
                }

                if (this.m_ranks.Count >= 10)
                {
                    return((GuildRank)null);
                }
                guildRank = new GuildRank(this, name, privileges, this.m_ranks.Count);
                this.m_ranks.Add(guildRank);
            }

            guildRank.SaveLater();
            if (update)
            {
                GuildHandler.SendGuildQueryToGuildMembers(this);
                GuildHandler.SendGuildRosterToGuildMembers(this);
            }

            return(guildRank);
        }
Exemplo n.º 7
0
 public bool HasRight(GuildPrivileges privilege)
 {
     if (!IsLeader)
     {
         return(Rank.Privileges.HasAnyFlag(privilege));
     }
     return(true);
 }
Exemplo n.º 8
0
 /// <summary>All online chat listeners</summary>
 public IEnumerable <Character> GetCharacters(GuildPrivileges requiredPrivs)
 {
     foreach (GuildMember member in this.GetMembers())
     {
         Character chr = member.Character;
         if (chr != null && member.HasRight(requiredPrivs))
         {
             yield return(chr);
         }
     }
 }
Exemplo n.º 9
0
 public GuildRank(Guild guild, string name, GuildPrivileges privileges, int id)
 {
     _id           = (int)_idGenerator.Next();
     GuildId       = guild.Id;
     Name          = name;
     _privileges   = (int)privileges;
     RankIndex     = id;
     BankTabRights = new GuildBankTabRights[6];
     for (int tabId = 0; tabId < 6; ++tabId)
     {
         BankTabRights[tabId] = new GuildBankTabRights(tabId, (uint)_id);
     }
 }
Exemplo n.º 10
0
 public GuildRank(Guild guild, string name, GuildPrivileges privileges, int id)
 {
     _id           = (int)_idGenerator.Next();
     GuildId       = guild.Id;
     Name          = name;
     Privileges    = privileges;
     RankIndex     = id;
     BankTabRights = new GuildBankTabRights[GuildMgr.MAX_BANK_TABS];
     for (var i = 0; i < GuildMgr.MAX_BANK_TABS; ++i)
     {
         BankTabRights[i] = new GuildBankTabRights(i, (uint)_id);
     }
 }
Exemplo n.º 11
0
 public GuildRank(Guild guild, string name, GuildPrivileges privileges, int id)
 {
     this._id           = (int)GuildRank._idGenerator.Next();
     this.GuildId       = guild.Id;
     this.Name          = name;
     this._privileges   = (int)privileges;
     this.RankIndex     = id;
     this.BankTabRights = new GuildBankTabRights[6];
     for (int tabId = 0; tabId < 6; ++tabId)
     {
         this.BankTabRights[tabId] = new GuildBankTabRights(tabId, (uint)this._id);
     }
 }
Exemplo n.º 12
0
 public static bool HasAnyFlag(this GuildPrivileges flags, GuildPrivileges otherFlags)
 {
     return((flags & otherFlags) != 0);
 }
Exemplo n.º 13
0
		public GuildRank(Guild guild, string name, GuildPrivileges privileges, int id)
		{
			_id = (int)NextId();
			GuildId = (uint)guild.Id;	 //TODO: Conversion from int to uint, find a way to solve this
			Name = name;
			Privileges = privileges;
			RankIndex = id;
			BankTabRights = new GuildBankTabRights[GuildMgr.MAX_BANK_TABS];
			for (var i = 0; i < GuildMgr.MAX_BANK_TABS; ++i)
			{
				BankTabRights[i] = new GuildBankTabRights(i, (uint)_id);
			}
		}
Exemplo n.º 14
0
		public static bool HasAnyFlag(this GuildPrivileges flags, GuildPrivileges otherFlags)
		{
			return (flags & otherFlags) != 0;
		}
Exemplo n.º 15
0
 public bool HasRight(GuildPrivileges privilege)
 {
     return(IsLeader || Rank.Privileges.HasAnyFlag(privilege));
 }
Exemplo n.º 16
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.º 17
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.º 18
0
        public bool HasRight(GuildPrivileges privilege)
        {
			return IsLeader || Rank.Privileges.HasAnyFlag(privilege);
        }
Exemplo n.º 19
0
		public static bool HasFlag(this GuildPrivileges flags, GuildPrivileges toCheck)
		{
			return (flags & toCheck) != GuildPrivileges.EMPTY;
		}