Exemplo n.º 1
0
    private static void JoinParty(GameSession session, PartyNotice response, int partyId)
    {
        Party party = GameServer.PartyManager.GetPartyById(partyId);

        if (party == null)
        {
            session.Send(PartyPacket.Notice(session.Player, PartyNotice.PartyNotFound));
            return;
        }

        if (party.Members.Contains(session.Player) || party.Leader == session.Player)
        {
            return;
        }

        if (response != PartyNotice.AcceptedInvite)
        {
            party.Leader.Session.Send(PartyPacket.Notice(session.Player, response));
            return;
        }

        if (party.Members.Count >= 10)
        {
            session.Send(PartyPacket.Notice(session.Player, PartyNotice.FullParty));
            return;
        }

        if (session.Player.Party != null)
        {
            Party currentParty = session.Player.Party;
            if (currentParty.Members.Count == 1)
            {
                currentParty.RemoveMember(session.Player);
            }
        }

        if (party.Members.Count == 1)
        {
            //establish party.
            party.BroadcastPacketParty(PartyPacket.Join(session.Player));
            party.AddMember(session.Player);
            session.Send(PartyPacket.Create(party, true));
            party.BroadcastPacketParty(PartyPacket.UpdateHitpoints(party.Leader));
            party.BroadcastPacketParty(PartyPacket.UpdatePlayer(session.Player));
            return;
        }

        party.BroadcastPacketParty(PartyPacket.Join(session.Player));
        party.AddMember(session.Player);
        session.Send(PartyPacket.Create(party, true));
        party.BroadcastPacketParty(PartyPacket.UpdatePlayer(session.Player));

        foreach (Player member in party.Members)
        {
            if (member != session.Player)
            {
                party.BroadcastPacketParty(PartyPacket.UpdateHitpoints(member));
            }
        }
    }
Exemplo n.º 2
0
    private static void HandleJoin(GameSession session, PacketReader packet)
    {
        string      target   = packet.ReadUnicodeString();
        PartyNotice response = (PartyNotice)packet.ReadByte();
        int         partyId  = packet.ReadInt();

        JoinParty(session, response, partyId);
    }
Exemplo n.º 3
0
        public static Packet Notice(Player player, PartyNotice notice)
        {
            PacketWriter pWriter = PacketWriter.Of(SendOp.PARTY);

            pWriter.WriteEnum(PartyPacketMode.Notice);
            pWriter.WriteEnum(notice);
            pWriter.WriteUnicodeString(player.Name);
            return(pWriter);
        }