В этих хрониках появилась такое нововведение ,как подбор противников по очкам. Т.е. если у игрока 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