Winteriscoming 3 Опубликовано 25 января, 2017 В сборке есть не большой косяк, когда не достаточно игроков на олимпе, игрока об этом не оповещает. Сейчас решили проблему при помощи кучи костылей пишем ему сообщение, а вообще вопрос, нужно ли писать игроку при каждой неудачной попытке в связи с отсутвием достаточного кол-ва игроков для олимпа системное сообщение? 2. Недавно работаю с исходами л2, как напрямую получить object_id активного перса? Может есть где нибудь какой то обобщенный мануал я хз, куда попадают данные от клиента, откуда начинает течь река? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 26 января, 2017 Вопрос не очень понятен. где получить objId, когда, зачем? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Winteriscoming 3 Опубликовано 26 января, 2017 Вопрос не очень понятен. где получить objId, когда, зачем? Простите, ночью писал. Главный вопрос, нужно ли писать игроку, о том что на него не нашлось пары для отправки на олимп? Я пересмотрел файл с сообщениями клиента, по умолчанию такого сообщения нет. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 26 января, 2017 (изменено) Вот как у меня реализовано: private boolean findPlayer(L2PcInstance player, boolean readyClassed, boolean readyNonClassed, boolean readyTeams) { Integer objId = Integer.valueOf(player.getObjectId()); final List<Integer> classed = OlympiadManager.getInstance().getRegisteredClassBased().get(player.getBaseClass()); if ((classed != null) && classed.contains(objId) && !readyClassed) { return true; } if (OlympiadManager.getInstance().getRegisteredNonClassBased().contains(objId) && !readyNonClassed) { return true; } for (List<Integer> team : OlympiadManager.getInstance().getRegisteredTeamsBased()) { if ((team != null) && team.contains(objId) && !readyTeams) { return true; } } return false; } private void sendMessageWait(boolean readyClassed, boolean readyNonClassed, boolean readyTeams) { for (L2PcInstance player : L2World.getInstance().getPlayers()) { if (!player.isOnline()) { continue; } if (findPlayer(player, readyClassed, readyNonClassed, readyTeams)) // && !readyTeams)) { player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.GAMES_DELAYED)); } } } А потом просто вписываю это в OlympiadGameManager и получается, что если недостаточно игроков на олимпиде, то выводит сообщение об этом всем зарегистрированным игрокам (системное сообщение есть в клиенте) sendMessageWait(readyClassed != null, readyNonClassed, readyTeams); Изменено 26 января, 2017 пользователем zGosu 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты