Показать сообщение отдельно
Непрочитано 27.01.2013, 22:34   #1
Аватар для Archiel
Пользователь

Автор темы (Топик Стартер) Несколько видов стрел для одного лука.

Сборка:
L2J
Задача:
Сделать возможным использование любого грейда стрел для любого грейда лука.

Написанный код:
Код:
	public L2ItemInstance findArrowForBow(L2Item bow)
	{
		if (bow == null)
			return null;
		FastList<L2ItemInstance> arrows = new FastList<L2ItemInstance>();
		arrows.add(getItemByItemId(17));
		arrows.add(getItemByItemId(30));
		arrows.add(getItemByItemId(38));
		arrows.add(getItemByItemId(39));
		
		L2ItemInstance arrow = null;
		if (arrows.contains(arrow));

		return arrow;
	}
Я только учусь, поэтому возможно предложенный метод реализации покажется кому-то странным.

Вопрос:
Как я всё это вижу.
1) Есть список из 4 итемов, стрел.
2) Есть "стрела", которая возвращается, если она есть в списке.
3) Но откуда она возьмётся, если она null?

Задача в том, чтобы проверить. Есть ли эта "стрела" в инвентаре. Тогда получится, что при удовлетворении обоих условий, будет возвращена "стрела". Одно условие написано. Как написать второе ума не приложу.

Добавлено через 44 минуты
Написал вот так. Осталась одна проблема. Стрелу нельзя "одеть". Она одевается только при одевании лука. Но это уже не здесь, конечно.
Код:
	public L2ItemInstance findArrowForBow(L2Item bow)
	{
		if (bow == null)
			return null;
		FastList<L2ItemInstance> arrows = new FastList<L2ItemInstance>();
		arrows.add(getItemByItemId(17));
		arrows.add(getItemByItemId(30));
		arrows.add(getItemByItemId(38));
		arrows.add(getItemByItemId(39));
		

		L2ItemInstance[] items = getItems();
		for(L2ItemInstance arrow : items){	
			if (arrows.contains(arrow))

		return arrow;
	}
		return null;
		

	}

Последний раз редактировалось Archiel; 27.01.2013 в 23:19. Причина: Добавлено сообщение
Archiel вне форума Отправить сообщение для Archiel с помощью ICQ Ответить с цитированием