/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); } }
/// <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); }
public bool HasRight(GuildPrivileges privilege) { if (!IsLeader) { return(Rank.Privileges.HasAnyFlag(privilege)); } return(true); }
/// <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); } } }
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); } }
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); } }
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); } }
public static bool HasAnyFlag(this GuildPrivileges flags, GuildPrivileges otherFlags) { return((flags & otherFlags) != 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); } }
public static bool HasAnyFlag(this GuildPrivileges flags, GuildPrivileges otherFlags) { return (flags & otherFlags) != 0; }
public bool HasRight(GuildPrivileges privilege) { return(IsLeader || Rank.Privileges.HasAnyFlag(privilege)); }
/// <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); }
/// <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); }
public bool HasRight(GuildPrivileges privilege) { return IsLeader || Rank.Privileges.HasAnyFlag(privilege); }
public static bool HasFlag(this GuildPrivileges flags, GuildPrivileges toCheck) { return (flags & toCheck) != GuildPrivileges.EMPTY; }