public bool AddPlayer(MapleCharacter chr) { if (Participants.ContainsKey(chr.Id)) { return(false); } int position = GetFreePosition(); if (position == -1) { return(false); //No space } MapleMessengerCharacter mcc = new MapleMessengerCharacter(position, chr); chr.ChatRoom = this; chr.Client.SendPacket(Packets.EnterRoom((byte)position)); var playerAddPacket = Packets.AddPlayer(mcc); BroadCastPacket(playerAddPacket, chr.Id); foreach (MapleMessengerCharacter participant in Participants.Values) { chr.Client.SendPacket(Packets.AddPlayer(participant)); } Participants.Add(chr.Id, mcc); return(true); }
public static PacketWriter AddPlayer(MapleMessengerCharacter mcc) { MapleCharacter player = mcc.Character; PacketWriter pw = new PacketWriter(SendHeader.Messenger); pw.WriteByte(0); pw.WriteByte((byte)mcc.Position); MapleCharacter.AddCharLook(pw, player, false); pw.WriteMapleString(player.Name); pw.WriteByte(player.Client.Channel); pw.WriteByte(1); pw.WriteShort(player.Job); pw.WriteShort(player.SubJob); return(pw); }