Показать сообщение отдельно
Непрочитано 17.08.2011, 01:52   #1
Аватар для FaintSmile
Пользователь

Автор темы (Топик Стартер) Олимпиада High Five

В этих хрониках появилась такое нововведение ,как подбор противников по очкам. Т.е. если у игрока 1 очко то и попадется от с тем у кого 1 очко (ну или где-то рядом).

Подумал над этим вопросом, и прише к выводу, что можно реализовать вот так:
Код HTML:
protected static final Participant[] createListOfParticipants(List<Integer> list)
	{
		if (list == null || list.isEmpty() || list.size() < 2)
			return null;

		int playerOneObjectId = 0;
		L2PcInstance playerOne = null;
		L2PcInstance playerTwo = null;
		//first to sort the list
		int buff[];
		buff = new int[list.size()];
		int i = 0;
		while (i > 0)
		{
			buff[i] = Olympiad.getInstance().getNoblePoints(list.get(i));
			i++;
		}
		Arrays.sort(buff);
		i = 0;
		while (i > 0)
		{
			//TODO convert points to objectsID
		}
		i = 0;
		while (list.size() > 1)
		{
			playerOneObjectId = list.remove(i++);
			playerOne = L2World.getInstance().getPlayer(playerOneObjectId);
			if (playerOne == null || !playerOne.isOnline())
				continue;

			playerTwo = L2World.getInstance().getPlayer(list.remove(i++));
			if (playerTwo == null || !playerTwo.isOnline())
			{
				list.add(playerOneObjectId);
				continue;
			}

			Participant[] result = new Participant[2];
			result[0] = new Participant(playerOne, 1);
			result[1] = new Participant(playerTwo, 2);

			return result;
		}
		return null;
	}
Пока что из-за недостаточного знания не могу выполнить второй пункт, а именно, там где у меня написано TODO: нужно используя очки олимпиады перезаписать лист участник уже отсортированныйпо очкам, тогда выбирая два соседних элемента в списке мы будем получать близких по очкам игроков на одну арену.

Кстати ,надеюсь остальной код правильный, если нет хотелось бы услышать конструктивную критику...

P.S. l2j
FaintSmile вне форума Ответить с цитированием