Перейти к содержанию
Авторизация  
Winteriscoming

Сообщение олимпиады

Рекомендуемые сообщения

В сборке есть не большой косяк, когда не достаточно игроков на олимпе, игрока об этом не оповещает. Сейчас решили проблему при помощи кучи костылей пишем ему сообщение, а вообще вопрос, нужно ли писать игроку при каждой неудачной попытке в связи с отсутвием достаточного кол-ва игроков для олимпа системное сообщение?

 

2. Недавно работаю с исходами л2, как напрямую получить object_id активного перса? Может есть где нибудь какой то обобщенный мануал  я хз, куда попадают данные от клиента, откуда начинает течь река?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос не очень понятен.

где получить objId, когда, зачем?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос не очень понятен.

где получить objId, когда, зачем?

Простите, ночью писал. Главный вопрос, нужно ли писать игроку, о том что на него не нашлось пары для отправки на олимп? Я пересмотрел файл с сообщениями клиента, по умолчанию такого сообщения нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот как у меня реализовано:

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

qLIB0leJSQM.jpg

Изменено пользователем zGosu
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...