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)); } } }
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); }
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); }