Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Радиус захвата цели
#1
Здравствуйте, хотел спросить - есть скрипт:
Код:
Broadcast.announceToOnlinePlayers(player.getClan() != null ? Config.RAID_BOSS_DEFEATED_BY_CLAN_MEMBER_MSG.replace("%raidboss%", getName()).replace("%player%", killer.getName()).replace("%clan%", player.getClan().getName()) : Config.RAID_BOSS_DEFEATED_BY_PLAYER_MSG.replace("%raidboss%", getName()).replace("%player%", killer.getName()));
Показывает сообщение в синьку, убившего РБ. Интересует вопрос, как его переписать, чтобы оно захватывало всех игроков которые его били? в определенном радиусе?
Ответ
#2
Взять всех игроков из его knownList.

Код:
getKnownList().getKnownObjects(L2PcInstance.class)
Родился, живу и когда-нибудь умру.
Ответ
#3
Donatte Написал:Взять всех игроков из его knownList.

Код:
getKnownList().getKnownObjects(L2PcInstance.class)

Это я понимаю, и понимаю как взять определенный радиус, но как его записать правильно с тем скриптом?
Ответ
#4
Код:
    public void announcePlain(List<L2PcInstance> list, String text) {
        CreatureSay say = new CreatureSay(0, SystemChatChannelId.Chat_Announce, "", text);
        for (int i = 0; i < list.size(); i++) {
            final L2PcInstance player = list.get(i);
            if(player.isOfflineTrade() || player.isNoCarrier()) {
                continue;
            }
            player.sendPacket(say);
        }
    }

"Скриптом"? Мда.
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Ответ
#5
Pointer*Rage Написал:
Код:
    public void announcePlain(List<L2PcInstance> list, String text) {
        CreatureSay say = new CreatureSay(0, SystemChatChannelId.Chat_Announce, "", text);
        for (int i = 0; i < list.size(); i++) {
            final L2PcInstance player = list.get(i);
            if(player.isOfflineTrade() || player.isNoCarrier()) {
                continue;
            }
            player.sendPacket(say);
        }
    }

"Скриптом"? Мда.
И что с этим делать, не подскажите?))), попытался вставить это все в aCis, подправил, но методов isOfflineTrade и isNoCarrier нету...
Ответ
#6
Map Написал:И что с этим делать, не подскажите?))), попытался вставить это все в aCis, подправил, но методов isOfflineTrade и isNoCarrier нету...

зачем вам такая аватарка :redlol:

п.с проверку можно спокойно удалить если нет аналогов в вашей сборке :redlol:
Код:
if(player.isOfflineTrade() || player.isNoCarrier()) {
                continue;
            }
Ответ
#7
4ipolino Написал:зачем вам такая аватарка :redlol:

п.с проверку можно спокойно удалить если нет аналогов в вашей сборке :redlol:
Код:
if(player.isOfflineTrade() || player.isNoCarrier()) {
                continue;
            }

Я понял, что это можно удалить, но как мне его использовать для моих целей, а именно чтобы захватывало всех игроков убившего РБ?
Ответ
#8
Map, убивший рб может быть только один, остальные разве что могли только помочь ему его коварном деле уроном. но в данном случае вам лучше начать с hello world и дальше по нарастающей. на данный момент у вас нет знаний для решения этого вопроса самостоятельно, даже с примером как это должно выглядеть.
Ответ
#9
KnownList любого из списка атакующих содержит все инстансы которым необходимо отправить сообщение. Поэтому берём knownList киллера и спамим о том, что РБ успешно заовнен. Что может быть легче? Зачем придумывать сложные структуры для элементарных механизмов?

Код:
Broadcast.toKnownPlayers(killer, new CreatureSay(0, SystemChatChannelId.Chat_Announce, "", "Congratulations!!! Raid Boss was owned!"));

Если в Broadcast нет такого метода, то добавляем
Код:
    public static void toKnownPlayers(L2Character character, L2GameServerPacket mov)
    {
        for (L2PcInstance player : character.getKnownList().getKnownType(L2PcInstance.class))
            player.sendPacket(mov);
    }

Да и вообще, зачем проверять на статус инстанса? Пакет шлётся клиенту. И если у инстанса клиента нет - getClient() == null (NO CARRIER или OFFLINE TRADE), то отсылка пакета игнорится (в нормальных L2J форках). Хотя, опять же, я не имею понятия как реализовано это в вашем коде сервера. Может быть, всё гораздо тоскливо и проверки необходимы во избежание NPE при отправке пакетов.
Родился, живу и когда-нибудь умру.
Ответ
#10
Donatte Написал:KnownList любого из списка атакующих содержит все инстансы которым необходимо отправить сообщение. Поэтому берём knownList киллера и спамим о том, что РБ успешно заовнен. Что может быть легче? Зачем придумывать сложные структуры для элементарных механизмов?

Код:
Broadcast.toKnownPlayers(killer, new CreatureSay(0, SystemChatChannelId.Chat_Announce, "", "Congratulations!!! Raid Boss was owned!"));

Если в Broadcast нет такого метода, то добавляем
Код:
    public static void toKnownPlayers(L2Character character, L2GameServerPacket mov)
    {
        for (L2PcInstance player : character.getKnownList().getKnownType(L2PcInstance.class))
            player.sendPacket(mov);
    }

Да и вообще, зачем проверять на статус инстанса? Пакет шлётся клиенту. И если у инстанса клиента нет - getClient() == null (NO CARRIER или OFFLINE TRADE), то отсылка пакета игнорится (в нормальных L2J форках). Хотя, опять же, я не имею понятия как реализовано это в вашем коде сервера. Может быть, всё гораздо тоскливо и проверки необходимы во избежание NPE при отправке пакетов.
сделал так, Broadcast.toKnownPlayers(killer, new CreatureSay(0, Say2.ANNOUNCEMENT, "", "Congratulations!!! Raid Boss was owned!")); - результата нету, ничего не выводиться, так же пробовал сделать toKnownPlayersRadius, но так же результата нету, убиваю РБ, нету сообщения кто убил
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Гварды на осаде после захвата [STIGMATED] 3 2,558 10-07-2009, 08:30 AM
Последний пост: IgorNox
  СРОЧНО! После захвата замка остаются гурды Stema 4 3,110 11-08-2008, 01:51 PM
Последний пост: Stema

Перейти к форуму:


Пользователи, просматривающие эту тему: 2 Гость(ей)