示例#1
0
            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);
            }
示例#2
0
文件: World.cs 项目: saroque/server
        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);
                }
            }
        }
示例#3
0
文件: World.cs 项目: saroque/server
        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);
        }