Олимпиада High Five - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II > Работа со скриптами

Работа со скриптами Помощь в редактировании и написании квестов к Java серверам, а так же эвентов.

Ответ
Опции темы
Непрочитано 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 вне форума Ответить с цитированием
Непрочитано 17.08.2011, 02:47   #2
Изгнанные

По умолчанию Re: Олимпиада High Five

Вход в мир High Five сам делал ?
MarshalRotar вне форума Ответить с цитированием
Непрочитано 17.08.2011, 05:40   #3
Аватар для FaintSmile
Пользователь

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

Цитата:
система Олимпиады стала абсолютно объективной - теперь соперниками будут ставиться персонажи с похожим количеством очков Олимпиады
https://forum.4game.ru/showthread.php?t=195267

Цитата:
Вход в мир High Five сам делал ?
Не вполне понял о чем вы.
FaintSmile вне форума Ответить с цитированием
Непрочитано 17.08.2011, 05:50   #4
Аватар для Ro_0TT
Супергерой

По умолчанию Re: Олимпиада High Five

Цитата:
Сообщение от AmdAmdFtuk Посмотреть сообщение
Не вполне понял о чем вы.
Да чувак уже месяц бегает по разработчикам и просит помочь реализовать вход в мир (пакетный уровень сервера) по High Five.

Вашей сортировкой вы ничего не добьетесь, стоит использовать "Сортировку Компаратором", создать свой класс, основывающийся на интерфейсе компаратора.. гуглим в общем.

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

Но, возможно гуру предложат более изощренный способ.
__________________
Ищу работу: Java-разработчик Skype: ro_0tt
Ro_0TT вне форума Отправить сообщение для Ro_0TT с помощью ICQ Отправить сообщение для Ro_0TT с помощью Skype™ Ответить с цитированием
Непрочитано 17.08.2011, 05:55   #5
Аватар для FaintSmile
Пользователь

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

Цитата:
Да чувак уже месяц бегает по разработчикам и просит помочь реализовать вход в мир (пакетный уровень сервера) по High Five.

Однако, это всё оффтоп, хотелось бы по теме услшать чего-нибудь
FaintSmile вне форума Ответить с цитированием
Непрочитано 17.08.2011, 05:57   #6
Аватар для Ro_0TT
Супергерой

По умолчанию Re: Олимпиада High Five

Цитата:
Сообщение от AmdAmdFtuk Посмотреть сообщение

Однако, это всё оффтоп, хотелось бы по теме услшать чего-нибудь
А я отписал , просто не успел дописать пост.
__________________
Ищу работу: Java-разработчик Skype: ro_0tt
Ro_0TT вне форума Отправить сообщение для Ro_0TT с помощью ICQ Отправить сообщение для Ro_0TT с помощью Skype™ Ответить с цитированием
Непрочитано 17.08.2011, 06:28   #7
Аватар для FaintSmile
Пользователь

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

Цитата:
А вообще при подборе соперника можно найти минимальное значение очков, которое ему и подходит и на втором круге ближайшего игрока с нужным кол-во очков сделать соперником.
Хм, тогда для каждого возможного значения очков, которое может проиграть игрок, а их 10, нужно будет изобретать способ нахождения подходящего кол-ва очков у оппонента, тем более ,что такого оппонента может не быть вовсе - допустим игрок с 20 очками а с ним в одном круге выступают 9 игроков 100-500 очков, тогда его не телепортнет, т.к. нет противника.

Но всё как я этот метод вижу ,сам с него начал ,но отодвинул его ,предпочитая отсортировать последовательность зарегистрированных по увеличению очков и не париться.

Цитата:
Вашей сортировкой вы ничего не добьетесь, стоит использовать "Сортировку Компаратором", создать свой класс, основывающийся на интерфейсе компаратора.. гуглим в общем.
Сейчас посмотрим что за зверь такой "компаратор"
FaintSmile вне форума Ответить с цитированием
Непрочитано 17.08.2011, 08:34   #8
Аватар для LineOFWar
Герой

По умолчанию Re: Олимпиада High Five

Цитата:
Сообщение от AmdAmdFtuk Посмотреть сообщение
Хм, тогда для каждого возможного значения очков, которое может проиграть игрок, а их 10, нужно будет изобретать способ нахождения подходящего кол-ва очков у оппонента, тем более ,что такого оппонента может не быть вовсе - допустим игрок с 20 очками а с ним в одном круге выступают 9 игроков 100-500 очков, тогда его не телепортнет, т.к. нет противника.
самых оптимальных методов сортировки придумано много лет назад и под разные случаи конечно да можно по изврашаться и сделать свой ну или готовые подобрать или чуть подправить, а по поводу нет соперника такого не будет так как осуществялеться методом наименьшего из всех ну или ближайщего те если у нас есть 3 игрока с очками 100 110 120 и один игрок с очками 10 то он попадет с игроком наиболее близким те с тем у кого 100 так в во всех случая даже если у тех 1000 а у него 1 да и кажеться минимальное колво очков для участия = 3 не зря же (хотя мб путаю)
LineOFWar вне форума Ответить с цитированием
Непрочитано 17.08.2011, 09:44   #9
Аватар для bloodshed
Герой

По умолчанию Re: Олимпиада High Five

есть вариант использования TreeMultimap из google collections.
На идеальность не претендую, написал с тем, что первое попалось) какие именно условия должны соблюдаться не в курсе, знаю только то, что написано в этой теме.

Код:
public static final Comparator<Integer> KEY_COMPARATOR = new Comparator<Integer>()
{
	@Override
	public int compare(final Integer point1, final Integer point2)
	{
		if(point1 == null || point2 == null)
			return 0;
		return point1.compareTo(point2);
	}
};

public static final Comparator<Integer> VALUE_COMPARATOR = new Comparator<Integer>()
{
	@Override
	public int compare(final Integer objId1, final Integer objId2)
	{
		return objId1.compareTo(objId2);
	}
};

/**
 * Список всех зарегистрированных, где ключ это количество очков.
 */
private static final TreeMultimap<Integer, Integer> registers = TreeMultimap.create(KEY_COMPARATOR, VALUE_COMPARATOR);
Вставить куда нить:
Пример:
Свернуть ↑Развернуть ↓


Результат:
Свернуть ↑Развернуть ↓


P.S.
objId от балды.

оффтом:
Свернуть ↑Развернуть ↓
__________________
bloodshed вне форума Отправить сообщение для bloodshed с помощью ICQ Отправить сообщение для bloodshed с помощью Skype™ Ответить с цитированием
Непрочитано 17.08.2011, 09:51   #10
Аватар для Deazer

По умолчанию Re: Олимпиада High Five

и все же никто не понял как рассчитывает разрыв

Кто обоснует этот скрин , так уж и быть , обосную прогульщикам уроков истории в школе как идет расчет.




На тот момент было 280 зарегистрировавшихся.

Последний раз редактировалось Deazer; 17.08.2011 в 10:30.
Deazer вне форума Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ивенты\Олимпиада Marnet Lineage II 1 27.07.2011 14:15
Олимпиада lxShaDoWxl Lineage II 2 09.09.2010 13:51
Олимпиада Жужик Серверная часть 9 09.06.2010 23:54
Олимпиада SkyWard Lineage II 3 16.03.2010 22:01
Олимпиада JeweLs Работа со скриптами 2 15.09.2009 13:46


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 13:41. Часовой пояс GMT +3.

Вверх