Перейти к содержанию
Авторизация  
Connect

java script

Рекомендуемые сообщения

Хочу запилить тп, который будет проверять есть ли определенные айтемы, если есть, то не телепортировать его. 

Так вот вроде бы сделал, добавил команду :

 

private static final int[] ARMOR_ITEMS =
	{
		4401,
		4402
	};

 

И сам код

 

		if (event.equalsIgnoreCase("doog"))
		{
			if (st.hasQuestItems(ARMOR_ITEMS))
			{
				htmltext = "no-items.htm";
			}
			else
			{
				player.teleToLocation(-47712, 243960, -13374, 0);
			}
		}

 

То есть если у человека есть итемы из группы ARMOR_ITEMS, то его не телепортирует. Но вот в чем проблема.

Не телепортирует тогда,  когда у тебя в инвентаре все айтемы, которые указаны в private static final int , а если есть всего лишь 1 айтем из 2, то его телепортирует. Как сделать, что бы была проверка на все иды?)

Изменено пользователем Connect

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

можно сделать цикл который будет проверять есть ли вещь.

...


for(int i=0; i<ARMOR_ITEMS.lenght;i++)
{
  if (st.hasQuestItems(ARMOR_ITEMS[i]))
  {
    htmltext = "no-items.htm";
  }
}


...
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хочу запилить тп, который будет проверять есть ли определенные айтемы, если есть, то не телепортировать его. 

Так вот вроде бы сделал, добавил команду :

 

private static final int[] ARMOR_ITEMS =
	{
		4401,
		4402
	};

И сам код

 

		if (event.equalsIgnoreCase("doog"))
		{
			if (st.hasQuestItems(ARMOR_ITEMS))
			{
				htmltext = "no-items.htm";
			}
			else
			{
				player.teleToLocation(-47712, 243960, -13374, 0);
			}
		}

То есть если у человека есть итемы из группы ARMOR_ITEMS, то его не телепортирует. Но вот в чем проблема.

Не телепортирует тогда,  когда у тебя в инвентаре все айтемы, которые указаны в private static final int , а если есть всего лишь 1 айтем из 2, то его телепортирует. Как сделать, что бы была проверка на все иды?)

		if (event.equalsIgnoreCase("doog"))
		{
			
			boolean item = false;
			
			for (int id : ARMOR_ITEMS)
			{
				if (player.getInventory().getItemByItemId(id) != null)
				{
					item = true;
					continue;
				}
			}
			
			if (item)
			{
				htmltext = "no-items.htm";
			}
			else
			{
				player.teleToLocation(-47712, 243960, -13374, 0);
			}
			
		}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть множество вариантов, но если итемов мало, то лучше всего подойдет:

if (event.equalsIgnoreCase("doog")){if (st.hasQuestItems(item1) || st.hasQuestItems(item2) || ...)htmltext = "no-items.htm";elseplayer.teleToLocation(-47712, 243960, -13374, 0);
}

 

Хотя, в идеале создать свой метод, если такового не имеется, но для этого скорее всего нужен исходник.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
		if (event.equalsIgnoreCase("doog"))
		{
			
			boolean item = false;
			
			for (int id : ARMOR_ITEMS)
			{
				if (player.getInventory().getItemByItemId(id) != null)
				{
					item = true;
					continue;
				}
			}
			
			if (item)
			{
				htmltext = "no-items.htm";
			}
			else
			{
				player.teleToLocation(-47712, 243960, -13374, 0);
			}
			
		}

А чего так запутывать то?

if (event.equalsIgnoreCase("doog")){boolean isNoItem = false;for (int item : ARMOR_ITEMS)if (st.hasQuestItems(item)){htmltext = "no-items.htm";isNoItem = true;break}if (!isNoItem)player.teleToLocation(-47712, 243960, -13374, 0);
}

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А чего так запутывать то?

Да я попутал continue c break

 

А вот ваше запутывание;

public boolean hasQuestItems(int itemId)

{

        return AbstractScript.hasQuestItems(_player, itemId);

}

 

public static boolean hasQuestItems(L2PcInstance player, int itemId)

{

        return (player.getInventory().getItemByItemId(itemId) != null);

}

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да я попутал continue c break

 

А вот ваше запутывание;

public boolean hasQuestItems(int itemId)

{

        return AbstractScript.hasQuestItems(_player, itemId);

}

 

public static boolean hasQuestItems(L2PcInstance player, int itemId)

{

        return (player.getInventory().getItemByItemId(itemId) != null);

}

Не понял намека. 1 метод вызывает 2 метод. + вызов функции st.hasQuestItems(item) равносилен вызову функции player.getInventory().getItemByItemId(itemId) != null.

Только вот я использовал то, что дано тсом и не знаю, есть ли там объект класса Player, или же просто объект реализации AbstractScript. 

 

В общем, вариантов море, как сделать то, что хочет тс. Тут даже знаниями основ можно обойтись.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, все гуд сделал, с вашей помощью) С Меня +)

Изменено пользователем Connect

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

JAVA а не яваскрипт)

Имелось в виду скрипт, написанный на яве. Да и название темы со стоит из двух слов ("java" и "script"), в то время как JavaScript пишется вместе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Имелось в виду скрипт, написанный на яве. Да и название темы со стоит из двух слов ("java" и "script"), в то время как JavaScript пишется вместе.

 

Ну я по названию темы начал думать о JavaScript - е

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...