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

Рандомный телепорт по войс команде

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

Добрый вечер. Мне нужна помощь допилить код. Вообщем я сделал так, что по войс команде телепортирует в определенную точку. Теперь мне нужно добавить ещё порядка 30 точек и чтобы рандомно телепортирало в одну из них. Вот мой код

{
private static final String[] VOICED_COMMANDS =
{
"рб"
};
 
@Override
 
public boolean useVoicedCommand(final String command, final L2PcInstance player, final String target)
{
if (command.startsWith("рб"))
if (player.getParty() != null)
{
for (final L2PcInstance pc : player.getParty().getPartyMembers())
{
pc.teleToLocation(87536, 75872, -3591, false);
}
}
{
player.destroyItemByItemId("Consume", 57, 100000, player, true);
Announcements.getInstance().gameAnnounceToAll(player.getName() + " полетел со своей пати фармить РБ. Хочешь тоже? Набери .рб в чат.");
}
return true;
}
@Override
public String[] getVoicedCommandList()
{
return VOICED_COMMANDS;
}
}
Как мне дописать эти точки ? Пусть это будут pc.teleToLocation(1, 1, 1, false);
pc.teleToLocation(2, 2, 2, false);, я разберусь. Просто подскажите как сделать такой рандом ещё с парой точек, заранее спасибо

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


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

создай массив точек и телепортируй pc.teleToLocation(Массив[случайное_значение])

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


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

 

создай массив точек и телепортируй pc.teleToLocation(Массив[случайное_значение])

 

Напиши пожалуйста пример pc.teleToLocation(Массив[случайное_значение])

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


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

 

{

private static final String[] VOICED_COMMANDS =

{

"рб"

};

public static final Point[] point =

{

new Point(1,1,1),

new Point(2,2,2),

new Point(3,3,3)

}

 

@Override

public boolean useVoicedCommand(final String command, final L2PcInstance player, final String target)

{

 

if (command.startsWith("рб"))

if (player.getParty() != null)

{

Random rnd = new Random();

int rand = rnd.nextInt(30)+1;

 

for (final L2PcInstance pc : player.getParty().getPartyMembers())

{

pc.teleToLocation(point[rand].getX(), point[rand].getY(), point[rand].getZ(), false);

}

}

{

player.destroyItemByItemId("Consume", 57, 100000, player, true);

Announcements.getInstance().gameAnnounceToAll(player.getName() + " полетел со своей пати фармить РБ. Хочешь тоже? Набери .рб в чат.");

}

return true;

}

 

public static class Point

{

int x;

int y;

int z;

Point(int x, int y, int z)

{

this.x = x;

this.y = y;

this.z = z;

 

int getX()

{

return x;

}

int getY()

{

return y;

}

int getZ()

{

return z;

}

}

}

  • Upvote 1

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


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

не могу отредактировать


	{
		private static final String[] VOICED_COMMANDS =
		{
			"рб"
		};
		public static final Point[] point = 
		{
			new Point(1,1,1),
			new Point(2,2,2),
			new Point(3,3,3)
		}
 
	@Override
	public boolean useVoicedCommand(final String command, final L2PcInstance player, final String target)
	{
		
			if (command.startsWith("рб"))
				if (player.getParty() != null)
					{
						Random rnd = new Random();
						int rand = rnd.nextInt(30)+1;

						for (final L2PcInstance pc : player.getParty().getPartyMembers())
							{
								pc.teleToLocation(point[rand].getX(), point[rand].getY(), point[rand].getZ(), false);
							}
					}
			{
				player.destroyItemByItemId("Consume", 57, 100000, player, true);
				Announcements.getInstance().gameAnnounceToAll(player.getName() + " полетел со своей пати фармить РБ. Хочешь тоже? Набери .рб в чат.");
			}
			return true;
	}
	
	public static class Point
	{
		int x;
		int y;
		int z;
		Point(int x, int y, int z)
		{
			this.x = x;
			this.y = y;
			this.z = z;

			int getX()
			{
				return x;
			}
			int getY()
			{
				return y;
			}
			int getZ()
			{
				return z;
			}
		}
	}

как-то так

  • Upvote 1

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


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

не могу отредактировать


	{
		private static final String[] VOICED_COMMANDS =
		{
			"рб"
		};
		public static final Point[] point = 
		{
			new Point(1,1,1),
			new Point(2,2,2),
			new Point(3,3,3)
		}
 
	@Override
	public boolean useVoicedCommand(final String command, final L2PcInstance player, final String target)
	{
		
			if (command.startsWith("рб"))
				if (player.getParty() != null)
					{
						Random rnd = new Random();
						int rand = rnd.nextInt(30)+1;

						for (final L2PcInstance pc : player.getParty().getPartyMembers())
							{
								pc.teleToLocation(point[rand].getX(), point[rand].getY(), point[rand].getZ(), false);
							}
					}
			{
				player.destroyItemByItemId("Consume", 57, 100000, player, true);
				Announcements.getInstance().gameAnnounceToAll(player.getName() + " полетел со своей пати фармить РБ. Хочешь тоже? Набери .рб в чат.");
			}
			return true;
	}
	
	public static class Point
	{
		int x;
		int y;
		int z;
		Point(int x, int y, int z)
		{
			this.x = x;
			this.y = y;
			this.z = z;

			int getX()
			{
				return x;
			}
			int getY()
			{
				return y;
			}
			int getZ()
			{
				return z;
			}
		}
	}

как-то так

DsS7DjGjzk8.jpg

У нас здесь жалобы :(

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


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

DsS7DjGjzk8.jpg

У нас здесь жалобы :(

ошибка очень простая, а вообще можно реализовать это намного проще:

{
private static final String[] VOICED_COMMANDS =
{
"рб"
};
 
@Override
 
public boolean useVoicedCommand(final String command, final L2PcInstance player, final String target)
{
if (command.startsWith("рб"))
if (player.getParty() != null)
{
for (final L2PcInstance pc : player.getParty().getPartyMembers())
{
   switch Rnd.get(1, 3)
	{

	case 1:
	pc.teleToLocation(87536, 75872, -3591, false);
	break;
	
	case 2:
	pc.teleToLocation(87536, 75872, -3591, false);
	break;
	
	case 3:
	pc.teleToLocation(87536, 75872, -3591, false);
	break;
	}
}
}
{
player.destroyItemByItemId("Consume", 57, 100000, player, true);
Announcements.getInstance().gameAnnounceToAll(player.getName() + " полетел со своей пати фармить РБ. Хочешь тоже? Набери .рб в чат.");
}
return true;
}
@Override
public String[] getVoicedCommandList()
{
return VOICED_COMMANDS;
}
}
  • Upvote 2

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


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

 

ошибка очень простая, а вообще можно реализовать это намного проще:

{
private static final String[] VOICED_COMMANDS =
{
"рб"
};
 
@Override
 
public boolean useVoicedCommand(final String command, final L2PcInstance player, final String target)
{
if (command.startsWith("рб"))
if (player.getParty() != null)
{
for (final L2PcInstance pc : player.getParty().getPartyMembers())
{
   switch Rnd.get(1, 3)
	{

	case 1:
	pc.teleToLocation(87536, 75872, -3591, false);
	break;
	
	case 2:
	pc.teleToLocation(87536, 75872, -3591, false);
	break;
	
	case 3:
	pc.teleToLocation(87536, 75872, -3591, false);
	break;
	}
}
}
{
player.destroyItemByItemId("Consume", 57, 100000, player, true);
Announcements.getInstance().gameAnnounceToAll(player.getName() + " полетел со своей пати фармить РБ. Хочешь тоже? Набери .рб в чат.");
}
return true;
}
@Override
public String[] getVoicedCommandList()
{
return VOICED_COMMANDS;
}
}

 switch (Rnd.get(1, 3))

 

Спасибо большое !

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

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


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

Теперь ещё 1 беда, оно каждого члена пати тпшит по разным координатам. У кого-нибудь есть идеи что делать ?

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


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

Теперь ещё 1 беда, оно каждого члена пати тпшит по разным координатам. У кого-нибудь есть идеи что делать ?

 потому что нужно брать 1 объект Location.  Потом перебираем группу и тпшим.

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


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

int rnd = Rnd.get(1, 3);
for (final L2PcInstance pc : player.getParty().getPartyMembers())
{
	Switch rnd{

	case 1:
	pc.teleToLocation(87536, 75872, -3591, false);
	break;
	
	case 2:
	pc.teleToLocation(87536, 75872, -3591, false);
	break;
	
	case 3:
	pc.teleToLocation(87536, 75872, -3591, false);
	break;
	}
}

должно помочь

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


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

int rnd = Rnd.get(1, 3);
for (final L2PcInstance pc : player.getParty().getPartyMembers())
{
	Switch rnd{

	case 1:
	pc.teleToLocation(87536, 75872, -3591, false);
	break;
	
	case 2:
	pc.teleToLocation(87536, 75872, -3591, false);
	break;
	
	case 3:
	pc.teleToLocation(87536, 75872, -3591, false);
	break;
	}
}

должно помочь

 

Не помогло

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


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

Location loc = null;
switch(Rnd.get(1,3))
{
case 1:
loc = new Location(123,222,222);
break;
////

}
for(L2PcInstance pc : player.getParty().getPartyMembers())
pc.teleToLocation(loc,false);
  • Upvote 1

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


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

 

Добрый вечер. Мне нужна помощь допилить код. Вообщем я сделал так, что по войс команде телепортирует в определенную точку. Теперь мне нужно добавить ещё порядка 30 точек и чтобы рандомно телепортирало в одну из них. Вот мой код

Я так понимаю вы хотите сделать телепор для группы?

Сделайте так :  Первый кто может телепортироватся  это лидер группы а за ним автоматом телепортируем всех кто состоит в данной группе.

в любом случае вам нужен отсчет  чтобы собрать группу в  одной точке.

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


Ссылка на сообщение
Поделиться на другие сайты
Location loc = null;
switch(Rnd.get(1,3))
{
   case 1:
       loc = new Location(123,222,222);
       break;
////

}
for(L2PcInstance pc : player.getParty().getPartyMembers())
   pc.teleToLocation(loc,false);
cannot find symbol
       Location loc = null;

 

 

 

Я так понимаю вы хотите сделать телепор для группы?

Сделайте так :  Первый кто может телепортироватся  это лидер группы а за ним автоматом телепортируем всех кто состоит в данной группе.

в любом случае вам нужен отсчет  чтобы собрать группу в  одной точке.

Что-то типа сначала телепортируется цель, затем вся группа к ней ?

Задумка вообще такая, что при войс команде .рб телепортирует всю пати к рандомному РБ.

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

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


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

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

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


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

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

Спасибо! Ты был прав, я в спешке прошлый раз забыл импорт на локатион добавить. Скомпилило, пойду тестить.

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

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


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

Чуть-чуть исправил, всё работает . Всем огромное спасибо за помощь!

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


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

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

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

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

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

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

Войти

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

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

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

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

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