public virtual bool CanChangeGuildLeader(BasePlayerCharacterEntity playerCharacterEntity, string characterId, out int guildId, out GuildData guild) { guildId = 0; guild = null; if (playerCharacterEntity == null || !IsServer) { return(false); } guildId = playerCharacterEntity.GuildId; if (guildId <= 0 || !guilds.TryGetValue(guildId, out guild)) { SendServerGameMessage(playerCharacterEntity.ConnectionId, GameMessage.Type.NotJoinedGuild); return(false); } if (!guild.IsLeader(playerCharacterEntity)) { SendServerGameMessage(playerCharacterEntity.ConnectionId, GameMessage.Type.NotGuildLeader); return(false); } if (!guild.ContainsMemberId(characterId)) { SendServerGameMessage(playerCharacterEntity.ConnectionId, GameMessage.Type.CharacterNotJoinedGuild); return(false); } return(true); }
public virtual bool CanKickFromGuild(BasePlayerCharacterEntity playerCharacterEntity, string characterId, out int guildId, out GuildData guild) { guildId = 0; guild = null; if (playerCharacterEntity == null || !IsServer) { return(false); } guildId = playerCharacterEntity.GuildId; if (guildId <= 0 || !guilds.TryGetValue(guildId, out guild)) { SendServerGameMessage(playerCharacterEntity.ConnectionId, GameMessage.Type.NotJoinedGuild); return(false); } if (guild.IsLeader(characterId)) { SendServerGameMessage(playerCharacterEntity.ConnectionId, GameMessage.Type.CannotKickGuildLeader); return(false); } if (!guild.CanKick(playerCharacterEntity.Id)) { SendServerGameMessage(playerCharacterEntity.ConnectionId, GameMessage.Type.CannotKickGuildMember); return(false); } if (playerCharacterEntity.Id.Equals(characterId)) { SendServerGameMessage(playerCharacterEntity.ConnectionId, GameMessage.Type.CannotKickYourSelfFromGuild); return(false); } byte role; if (!guild.TryGetMemberRole(characterId, out role) && playerCharacterEntity.GuildRole < role) { SendServerGameMessage(playerCharacterEntity.ConnectionId, GameMessage.Type.CannotKickHigherGuildMember); return(false); } if (!guild.ContainsMemberId(characterId)) { SendServerGameMessage(playerCharacterEntity.ConnectionId, GameMessage.Type.CharacterNotJoinedGuild); return(false); } return(true); }