Почта в игре

localhost

Участник
Пользователь
#1
Подскажите как отправить почту всем кто онлайн в игре.
Не помню что писать в поле получателя ALL_LIST или как?
 

Rovskoi

Пляшущий с бубном
Местный
#2
Вытащить всех с мира, отфильтровать по онлайну (мб у вас кэш какой-то или ещё что-то), дальше просто отправить каждому письмо.
Допустим вот так...
Код:
public static void sendMailToOnlinePlayers(String title, String body, List<ItemInstance> items) {
    GameObjectsStorage.getPlayersStream().forEach(p -> {
                Mail mail = new Mail();
                mail.setSenderId(1);
                mail.setSenderName("System");
                mail.setReceiverId(p.getObjectId());
                mail.setReceiverName(p.getName());
                mail.setTopic(title);
                mail.setBody(body);

                // item section
                items.forEach(mail::addAttachment);

                mail.setUnread(true);
                mail.setType(Mail.SenderType.NORMAL);
                mail.setExpireTime(720 * 3600 + (int) (System.currentTimeMillis() / 1000L));
                mail.save();
                p.sendPacket(ExNoticePostArrived.STATIC_TRUE);
                p.sendPacket(SystemMsg.THE_MAIL_HAS_ARRIVED);
            }
    );
}
ну стоит ещё проверочки на нулл добавить, чтоб итемлист был <=8 (вроде 8 слотов у письма)
в общем предусмотреть разные NPE и другие ошибки.
 
Сверху Снизу