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

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

Ответ
Опции темы
Непрочитано 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 Ответить с цитированием
Непрочитано 27.01.2013, 23:51   #2
Аватар для Respect
noname

По умолчанию Re: Несколько видов стрел для одного лука.

Также пытаюсь это сделать... только на уровне клиента
вот что нарыл:
Engine.u

Цитата:
struct native NAtkConsumeItemParam
{
var int BowItemID;
var int BowUseItemID;
};
В клиенте, в дев моде (без серва), стрелы меняются в зависимости от лука.
Если заменить модель дропа стрел (etcitemgrp.dat), стрелы меняются.

К чему виду, грейд "привязан" к ИД предмета. Где оно привязано - х*й его знает =(
__________________
Respect вне форума Отправить сообщение для Respect с помощью ICQ Ответить с цитированием
Непрочитано 27.01.2013, 23:55   #3
Аватар для Archiel
Пользователь

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

Цитата:
Сообщение от Respect Посмотреть сообщение
Также пытаюсь это сделать... только на уровне клиента
вот что нарыл:
Engine.u



В клиенте, в дев моде (без серва), стрелы меняются в зависимости от лука.
Если заменить модель дропа стрел (etcitemgrp.dat), стрелы меняются.

К чему виду, грейд "привязан" к ИД предмета. Где оно привязано - х*й его знает =(
В клиенте привязки нет. Исходный код привязки вот, Inventory.java:
Код:
public L2ItemInstance findArrowForBow(L2Item bow)
	{
		if (bow == null)
			return null;

		L2ItemInstance arrow = null;

		switch (bow.getItemGradeSPlus())
		{
			default: 
			case L2Item.CRYSTAL_NONE:
				arrow = getItemByItemId(17);
				break; // Wooden arrow
			case L2Item.CRYSTAL_D:
				arrow = (arrow = getItemByItemId(1341)) != null ? arrow : getItemByItemId(22067);
				break; // Bone arrow
			case L2Item.CRYSTAL_C:
				arrow = (arrow = getItemByItemId(1342)) != null ? arrow : getItemByItemId(22068);
				break; // Fine steel arrow
			case L2Item.CRYSTAL_B:
				arrow = (arrow = getItemByItemId(1343)) != null ? arrow : getItemByItemId(22069);
				break; // Silver arrow
			case L2Item.CRYSTAL_A:
				arrow = (arrow = getItemByItemId(1344)) != null ? arrow : getItemByItemId(22070);
				break; // Mithril arrow
			case L2Item.CRYSTAL_S:
				arrow = (arrow = getItemByItemId(1345)) != null ? arrow : getItemByItemId(22071);
				break; // Shining arrow
		}

		// Get the L2ItemInstance corresponding to the item identifier and return it
		return arrow;
	}
Этот кусок я и заменил. Я добился того, чтобы стрелы можно было использовать разные. Проблема в том, что стрелу нельзя "переодеть" даблкликом. Думаю, что я её просто запихну в другой слот, свободный. Тогда можно будет переодевать. Но это уже завтра.
Archiel вне форума Отправить сообщение для Archiel с помощью ICQ Ответить с цитированием
Ответ


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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
itamename-e.dat UFODriverr Lineage II 5 28.02.2021 18:17
ID-всех придметов ! ! ! ilyxa Lineage II 25 10.02.2020 15:35
[Продам] Gracia Part 2 L2Dream PaInKiLlEr Рынок / Marketplace 10 04.06.2010 00:18


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

Вверх