internal ServerPacket Packet() { ServerPacket packet = new ServerPacket(OpCode); packet.WriteByte(NationFlag); packet.WriteString8(GuildRank); packet.WriteString8(CurrentTitle); if (!IsGrouped) { packet.WriteString8("Adventuring Alone"); } else { var ret = "Group members\n"; foreach (var member in Group.Members) { ret += member == Group.Founder ? $"* {member.Name}\n" : $" {member.Name}\n"; } ret += $"Total {Group.Members.Count}"; packet.WriteString8(ret); } packet.WriteBoolean(CanGroup); packet.WriteByte(0x00); packet.WriteByte(Class); packet.WriteByte(0x01); packet.WriteByte(0x00); packet.WriteString8(Player.IsMaster ? "Master" : Player.Class.ToString()); packet.WriteString8(GuildName != null ? GuildName : string.Empty); packet.WriteByte((byte)(Player.Legend.Count > 255 ? 255 : Player.Legend.Count)); foreach (var mark in Player.Legend) { packet.WriteByte((byte)mark.Icon); packet.WriteByte((byte)mark.Color); packet.WriteString8(mark.Prefix); packet.WriteString8(mark.ToString()); } packet.WriteByte(0x00); packet.WriteUInt16(PlayerDisplay); packet.WriteByte(0x02); packet.WriteUInt32(0x00); packet.WriteByte(0x00); return(packet); }
private void PacketHandler_0x7B_RequestMetafile(Object obj, ClientPacket packet) { var user = (User) obj; var all = packet.ReadBoolean(); if (all) { var x6F = new ServerPacket(0x6F); x6F.WriteBoolean(all); x6F.WriteUInt16((ushort) Metafiles.Count); foreach (var metafile in Metafiles.Values) { x6F.WriteString8(metafile.Name); x6F.WriteUInt32(metafile.Checksum); } user.Enqueue(x6F); } else { var name = packet.ReadString8(); if (Metafiles.ContainsKey(name)) { var file = Metafiles[name]; var x6F = new ServerPacket(0x6F); x6F.WriteBoolean(all); x6F.WriteString8(file.Name); x6F.WriteUInt32(file.Checksum); x6F.WriteUInt16((ushort) file.Data.Length); x6F.Write(file.Data); user.Enqueue(x6F); } } }
private void PacketHandler_0x18_ShowPlayerList(Object obj, ClientPacket packet) { var me = (User) obj; var list = from user in Users.Values orderby user.IsMaster descending, user.Level descending, user.BaseHp + user.BaseMp * 2 descending, user.Name ascending select user; var listPacket = new ServerPacket(0x36); listPacket.WriteUInt16((ushort)list.Count()); listPacket.WriteUInt16((ushort)list.Count()); foreach (var user in list) { int levelDifference = Math.Abs((int)user.Level - me.Level); listPacket.WriteByte((byte)user.Class); if (!string.IsNullOrEmpty(me.Guild) && user.Guild == me.Guild) listPacket.WriteByte(84); else if (levelDifference <= 5) listPacket.WriteByte(151); else listPacket.WriteByte(255); listPacket.WriteByte((byte)user.GroupStatus); listPacket.WriteString8(user.Title); listPacket.WriteBoolean(user.IsMaster); listPacket.WriteString8(user.Name); } me.Enqueue(listPacket); }