Beispiel #1
0
        public ArenaTeamStats(ArenaTeam arenaTeam)
        {
            team = arenaTeam;
            rating = 1500;

            gamesWeek = 0;
            winsWeek = 0;
            gamesSeason = 0;
            winsSeason = 0;
            rank = 0;
        }
Beispiel #2
0
 /// <summary>
 /// Sends a arena team query response to the client.
 /// </summary>
 /// <param name="client">the client to send to</param>
 /// <param name="team">arena team to be sent</param>
 public static void SendArenaTeamQueryResponse(IPacketReceiver client, ArenaTeam team)
 {
     using (var packet = CreateArenaTeamQueryResponsePacket(team))
     {
         client.Send(packet);
     }
     using (var packet = CreateArenaTeamStatsResponsePacket(team))
     {
         client.Send(packet);
     }
 }
Beispiel #3
0
        private static RealmPacketOut CreateArenaTeamStatsResponsePacket(ArenaTeam team)
        {
            var packet = new RealmPacketOut(RealmServerOpCode.SMSG_ARENA_TEAM_STATS, 4*7);

            packet.WriteUInt((byte)team.Id);
            packet.WriteUInt(team.Stats.rating);
            packet.WriteUInt(team.Stats.gamesWeek);
            packet.WriteUInt(team.Stats.winsWeek);
            packet.WriteUInt(team.Stats.gamesSeason);
            packet.WriteUInt(team.Stats.winsSeason);
            packet.WriteUInt(team.Stats.rank);

            return packet;
        }
Beispiel #4
0
        private static RealmPacketOut CreateArenaTeamQueryResponsePacket(ArenaTeam team)
		{
			var packet = new RealmPacketOut(RealmServerOpCode.SMSG_ARENA_TEAM_QUERY_RESPONSE, 4*7+team.Name.Length+1);

            packet.WriteUInt((byte)team.Id);
            packet.WriteCString(team.Name);
            packet.WriteUInt(team.Type);

            /* TO-DO : Implement Emblem
             * packet.WriteUInt(team.Emblem.backgroundColor);
            packet.WriteUInt(team.Emblem.emblemStyle);
            packet.WriteUInt(team.Emblem.emblemColor);
            packet.WriteUInt(team.Emblem.borderStyle);
            packet.WriteUInt(team.Emblem.borderColor);
             */

            return packet;
        }
Beispiel #5
0
		public static void HandlePetitionTurnIn(IRealmClient client, RealmPacketIn packet)
		{
            var petitionGuid = packet.ReadEntityId();
            var petition = client.ActiveCharacter.Inventory.GetItem(petitionGuid) as PetitionCharter;
            var name = petition.Petition.Name;
            var type = petition.Petition.Type;

            if (petition.Petition.SignedIds.Count < ((uint)type - 1))
            {
                SendPetitionTurnInResults(client, PetitionTurns.NEED_MORE_SIGNATURES);
                return;
            }
            if (type == PetitionType.Guild && client.ActiveCharacter.IsInGuild)
            {
                SendPetitionTurnInResults(client, PetitionTurns.ALREADY_IN_GUILD);
                return;
            }
            else if (client.ActiveCharacter.ArenaTeamMember[(uint)ArenaTeamMgr.GetSlotByType((uint)type)] != null)
            {
                ArenaTeamHandler.SendResult(client, ArenaTeamCommandId.CREATE, name, string.Empty, ArenaTeamResult.ALREADY_IN_ARENA_TEAM);
                return;
            }
            else if (type == PetitionType.Guild && GuildMgr.DoesGuildExist(name))
            {
                GuildHandler.SendResult(client, GuildCommandId.CREATE, name, GuildResult.NAME_EXISTS);
                return;
            }
            else if (ArenaTeamMgr.DoesArenaTeamExist(name))
            {
                ArenaTeamHandler.SendResult(client, ArenaTeamCommandId.CREATE, name, string.Empty, ArenaTeamResult.NAME_EXISTS);
                return;
            }
            else
            {
                petition.Destroy();
                if (type == PetitionType.Guild)
                {
                    var guild = new Guild(client.ActiveCharacter.Record, name);
                    foreach (var chr in petition.Petition.SignedIds)
                    {
                        if(chr == 0)
                            continue;
                        else
                        {
                            var character = World.GetCharacter(chr);
                            guild.AddMember(character);
                        }
                    }
                }
                else
                {
                    var team = new ArenaTeam(client.ActiveCharacter.Record, name, (uint)type);
                    foreach (var chr in petition.Petition.SignedIds)
                    {
                        if(chr == 0)
                            continue;
                        else
                        {
                            var character = World.GetCharacter(chr);
                            team.AddMember(character);
                        }
                    }
                }

                SendPetitionTurnInResults(client, PetitionTurns.OK);
            }
		}
Beispiel #6
0
 public static void UnregisterArenaTeam(ArenaTeam team)
 {
     ArenaTeamsById.Remove(team.Id);
     ArenaTeamsByName.Remove(team.Name);
 }
Beispiel #7
0
        /// <summary>
        /// New or loaded Arena Team
        /// </summary>
        /// <param name="guild"></param>
        public static void RegisterArenaTeam(ArenaTeam team)
        {
            ArenaTeamsById.Add(team.Id, team);
            ArenaTeamsByName.Add(team.Name, team);

            foreach (var atm in team.Members.Values)
            {
                if (atm.Character == null && !OfflineChars.ContainsKey(atm.Id))
                    OfflineChars.Add(atm.Id, atm);
            }
        }
Beispiel #8
0
 internal void Init(ArenaTeam team, Character chr)
 {
     ArenaTeam = team;
     Character = chr;
 }
Beispiel #9
0
 internal void Init(ArenaTeam team)
 {
     Init(team, World.GetCharacter((uint)CharacterLowId));
 }