コード例 #1
0
        private static void ProcessFind(GameClient client, string targetName, Maple.Characters.GameCharacter target)
        {
            if (target == null)
            {
                using var pw = new PacketWriter(ServerOperationCode.Whisper);
                pw.WriteByte(0x0A);
                pw.WriteString(targetName);
                pw.WriteBool(false);
                client.Send(pw);
            }
            else
            {
                var isInSameChannel = client.Server.ChannelId == target.Client.Server.ChannelId;

                using var pw = new PacketWriter(ServerOperationCode.Whisper);
                pw.WriteByte(0x09);
                pw.WriteString(targetName);
                pw.WriteByte(isInSameChannel ? 1 : 3);
                pw.WriteInt(isInSameChannel ? target.Map.MapleId : target.Client.Server.ChannelId);
                pw.WriteInt(0); // NOTE: Unknown.
                pw.WriteInt(0); // NOTE: Unknown.
                client.Send(pw);
            }
        }
コード例 #2
0
        private static void ProcessWhisper(PacketReader packet, GameClient client, string targetName,
                                           Maple.Characters.GameCharacter target)
        {
            var text = packet.ReadString();

            using var pw = new PacketWriter(ServerOperationCode.GroupMessage);
            pw.WriteByte(10);
            pw.WriteString(targetName);
            pw.WriteBool(target != null);
            client.Send(pw);

            if (target == null)
            {
                return;
            }

            using var pwTarget = new PacketWriter(ServerOperationCode.Whisper);
            pwTarget.WriteByte(18);
            pwTarget.WriteString(client.GameCharacter.Name);
            pwTarget.WriteByte(client.Server.ChannelId);
            pwTarget.WriteByte(0);
            pwTarget.WriteString(text);
            target.Send(pwTarget);
        }