Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Lineage II (https://forum.zone-game.info/forumdisplay.php?f=34)
-   -   Радиус захвата цели (https://forum.zone-game.info/showthread.php?t=39566)

Map 17.11.2015 15:52

Радиус захвата цели
 
Здравствуйте, хотел спросить - есть скрипт:
Код:

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()));
Показывает сообщение в синьку, убившего РБ. Интересует вопрос, как его переписать, чтобы оно захватывало всех игроков которые его били? в определенном радиусе?

Donatte 17.11.2015 16:52

Re: Радиус захвата цели
 
Взять всех игроков из его knownList.

Код:

getKnownList().getKnownObjects(L2PcInstance.class)

Map 17.11.2015 16:55

Re: Радиус захвата цели
 
Цитата:

Сообщение от Donatte (Сообщение 402859)
Взять всех игроков из его knownList.

Код:

getKnownList().getKnownObjects(L2PcInstance.class)

Это я понимаю, и понимаю как взять определенный радиус, но как его записать правильно с тем скриптом?

n3k0nation 17.11.2015 19:40

Re: Радиус захвата цели
 
Код:

        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);
                }
        }

"Скриптом"? Мда.

Map 18.11.2015 19:21

Re: Радиус захвата цели
 
Цитата:

Сообщение от Pointer*Rage (Сообщение 402865)
Код:

        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 нету...

4ipolino 18.11.2015 19:56

Re: Радиус захвата цели
 
Цитата:

Сообщение от Map (Сообщение 402884)
И что с этим делать, не подскажите?))), попытался вставить это все в aCis, подправил, но методов isOfflineTrade и isNoCarrier нету...

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

п.с проверку можно спокойно удалить если нет аналогов в вашей сборке :redlol:
Код:

if(player.isOfflineTrade() || player.isNoCarrier()) {
                                continue;
                        }


Map 19.11.2015 16:08

Re: Радиус захвата цели
 
Цитата:

Сообщение от 4ipolino (Сообщение 402885)
зачем вам такая аватарка :redlol:

п.с проверку можно спокойно удалить если нет аналогов в вашей сборке :redlol:
Код:

if(player.isOfflineTrade() || player.isNoCarrier()) {
                                continue;
                        }


Я понял, что это можно удалить, но как мне его использовать для моих целей, а именно чтобы захватывало всех игроков убившего РБ?

KID 20.11.2015 11:28

Re: Радиус захвата цели
 
Map, убивший рб может быть только один, остальные разве что могли только помочь ему его коварном деле уроном. но в данном случае вам лучше начать с hello world и дальше по нарастающей. на данный момент у вас нет знаний для решения этого вопроса самостоятельно, даже с примером как это должно выглядеть.

Donatte 20.11.2015 12:06

Re: Радиус захвата цели
 
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 при отправке пакетов.

Map 20.11.2015 13:52

Re: Радиус захвата цели
 
Цитата:

Сообщение от Donatte (Сообщение 402947)
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, но так же результата нету, убиваю РБ, нету сообщения кто убил


Текущее время: 08:37. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot