public static void OnCharacterJoinAlliance(CharacterRecord character, AllianceRecord alliance) { if (WorldServer.Instance.IsConnected(character.Id)) { WorldClient client = WorldServer.Instance.GetOnlineClient(character.Id); client.Send(new AllianceJoinedMessage(alliance.GetAllianceInformations(), true)); client.Character.LearnEmote(AllianceProvider.EMOTE_ID); client.Character.HumanOptions.Add(new HumanOptionAlliance(alliance.GetAllianceInformations(), (sbyte)0)); client.Character.RefreshOnMapInstance(); } else { character.KnownEmotes.Add(AllianceProvider.EMOTE_ID); } }
public static void DeleteAlliance(int allianceId) { AllianceRecord alliance = AllianceRecord.GetAlliance(allianceId); List <GuildAllianceRecord> members = GuildAllianceRecord.GuildsAlliances.FindAll(x => x.AllianceId == allianceId); foreach (GuildAllianceRecord member in members) { foreach (WorldClient client in WorldServer.Instance.GetAllClientsOnline().FindAll(x => x.Character.GuildId == member.GuildId)) { AllianceRecord.OnCharacterLeftAlliance(client.Character); } member.RemoveElement(); } //alliance.RemoveElement(); }
public bool KickFromAlliance(int guildId, WorldClient by) { if (GuildRecord.GetGuild(guildId) != null) { GuildAllianceRecord member = GuildAllianceRecord.GetCharacterAlliance(guildId); if (member != null || member.AllianceId == this.Id) { List <CharacterGuildRecord> charactersGuildRecord = CharacterGuildRecord.CharactersGuilds.FindAll(x => x.GuildId == guildId); foreach (CharacterGuildRecord characterGuild in charactersGuildRecord) { Character character = WorldServer.Instance.GetOnlineClient(characterGuild.CharacterId).Character; AllianceRecord.OnCharacterLeftAlliance(character); } member.RemoveElement(); Logger.Log(AllianceRecord.CountGuildInAlliance(member.AllianceId)); if (AllianceRecord.CountGuildInAlliance(member.AllianceId) < 1) { AllianceRecord.DeleteAlliance(member.AllianceId); } return(true); } } return(false); }