예제 #1
0
    private static void HandleGuildMail(GameSession session, IPacketReader packet)
    {
        string title = packet.ReadUnicodeString();
        string body  = packet.ReadUnicodeString();

        Player sender = session.Player;
        Guild  guild  = sender.Guild;

        if (guild == null)
        {
            return;
        }

        byte      senderRank = sender.GuildMember.Rank;
        GuildRank guildRank  = guild.Ranks[senderRank];

        if (!guildRank.HasRight(GuildRights.CanGuildMail))
        {
            session.Send(GuildPacket.ErrorNotice((byte)GuildErrorNotice.InsufficientPermissions));
            return;
        }

        session.Send(GuildPacket.SendMail());

        IEnumerable <long> recipientIds = guild.Members.Select(c => c.Player.CharacterId);

        foreach (long recipientId in recipientIds)
        {
            MailHelper.SendMail(MailType.Player, recipientId, sender.CharacterId, sender.Name, title, body, "", "", new(), 0, 0, out Mail mail);
        }
    }