Сообщений: 289
Тем: 55
Зарегистрирован: Mar 2012
Репутация:
672
Здравствуйте, хотел спросить - есть скрипт:
Код: 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()));
Показывает сообщение в синьку, убившего РБ. Интересует вопрос, как его переписать, чтобы оно захватывало всех игроков которые его били? в определенном радиусе?
Сообщений: 1,240
Тем: 29
Зарегистрирован: May 2013
Репутация:
2,505
Взять всех игроков из его knownList.
Код: getKnownList().getKnownObjects(L2PcInstance.class)
Родился, живу и когда-нибудь умру.
Сообщений: 289
Тем: 55
Зарегистрирован: Mar 2012
Репутация:
672
Donatte Написал:Взять всех игроков из его knownList.
Код: getKnownList().getKnownObjects(L2PcInstance.class)
Это я понимаю, и понимаю как взять определенный радиус, но как его записать правильно с тем скриптом?
Сообщений: 2,454
Тем: 53
Зарегистрирован: Apr 2010
Репутация:
19,728
Код: 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.
Гадаю по капче.
Сообщений: 289
Тем: 55
Зарегистрирован: Mar 2012
Репутация:
672
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 нету...
Сообщений: 282
Тем: 32
Зарегистрирован: Oct 2009
Репутация:
645
Map Написал:И что с этим делать, не подскажите?))), попытался вставить это все в aCis, подправил, но методов isOfflineTrade и isNoCarrier нету...
зачем вам такая аватарка :redlol:
п.с проверку можно спокойно удалить если нет аналогов в вашей сборке :redlol:
Код: if(player.isOfflineTrade() || player.isNoCarrier()) {
continue;
}
Сообщений: 289
Тем: 55
Зарегистрирован: Mar 2012
Репутация:
672
4ipolino Написал:зачем вам такая аватарка :redlol:
п.с проверку можно спокойно удалить если нет аналогов в вашей сборке :redlol:
Код: if(player.isOfflineTrade() || player.isNoCarrier()) {
continue;
}
Я понял, что это можно удалить, но как мне его использовать для моих целей, а именно чтобы захватывало всех игроков убившего РБ?
Сообщений: 555
Тем: 2
Зарегистрирован: Feb 2011
Репутация:
1,507
Map, убивший рб может быть только один, остальные разве что могли только помочь ему его коварном деле уроном. но в данном случае вам лучше начать с hello world и дальше по нарастающей. на данный момент у вас нет знаний для решения этого вопроса самостоятельно, даже с примером как это должно выглядеть.
Сообщений: 1,240
Тем: 29
Зарегистрирован: May 2013
Репутация:
2,505
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 при отправке пакетов.
Родился, живу и когда-нибудь умру.
Сообщений: 289
Тем: 55
Зарегистрирован: Mar 2012
Репутация:
672
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, но так же результата нету, убиваю РБ, нету сообщения кто убил
|