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

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

Ответ
Опции темы
Непрочитано 01.08.2015, 13:15   #1
Пользователь

Автор темы (Топик Стартер) overword ивент TvT определение target

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

При таком условии выдаёт следующую ошибку:


Type mismatch: cannot convert from l2p.gameserver.model.GameObject to l2p.gameserver.model.Player


Имеем метод:

private static void increasePoints(Creature killer)
{
Player player = killer.getPlayer();
Player target = player.getTarget();
if(player == null)
return;
if(player.getTeam() == TeamType.BLUE & target.getTeam() == TeamType.RED)
bluePoints++;


else if (player.getTeam() == TeamType.RED & target.getTeam() == TeamType.BLUE)
redPoints++;

else
return;
int timeLeft = (int) ((getStarterTime() - System.currentTimeMillis()) / 1000);

if(player.getTeam() == TeamType.RED)
{
for(Player player1 : getPlayers(players_list1))
player1.sendPacket(new ExCubeGameExtendedChangePoints(timeLeft, bluePoints, redPoints, true, player, getPlayerScore(player)));
for(Player player2 : getPlayers(players_list2))
player2.sendPacket(new ExCubeGameExtendedChangePoints(timeLeft, bluePoints, redPoints, true, player, getPlayerScore(player)));
for(Player player1 : getPlayers(players_list1))
player1.sendPacket(new ExCubeGameExtendedChangePoints(timeLeft, bluePoints, redPoints, false, player, getPlayerScore(player)));
for(Player player2 : getPlayers(players_list2))
player2.sendPacket(new ExCubeGameExtendedChangePoints(timeLeft, bluePoints, redPoints, false, player, getPlayerScore(player)));
}
else
{
for(Player player1 : getPlayers(players_list1))
player1.sendPacket(new ExCubeGameExtendedChangePoints(timeLeft, bluePoints, redPoints, false, player, getPlayerScore(player)));
for(Player player2 : getPlayers(players_list2))
player2.sendPacket(new ExCubeGameExtendedChangePoints(timeLeft, bluePoints, redPoints, false, player, getPlayerScore(player)));
for(Player player1 : getPlayers(players_list1))
player1.sendPacket(new ExCubeGameExtendedChangePoints(timeLeft, bluePoints, redPoints, true, player, getPlayerScore(player)));
for(Player player2 : getPlayers(players_list2))
player2.sendPacket(new ExCubeGameExtendedChangePoints(timeLeft, bluePoints, redPoints, true, player, getPlayerScore(player)));
}
}
Daniel вне форума Ответить с цитированием
Непрочитано 01.08.2015, 16:01   #2
Аватар для elastic
Ooh, who's that handsome devil?

По умолчанию Re: overword ивент TvT определение target

delete-----
elastic вне форума Отправить сообщение для elastic с помощью ICQ Ответить с цитированием
Непрочитано 01.08.2015, 17:46   #3
Аватар для KID
Пользователь

По умолчанию Re: overword ивент TvT определение target

ошибку приведения можно исправить добавив:
Код:
Player target = player.getTarget().getPlayer();
но это может вполне дать дорогу другим ошибкам. разбирайтесь!

зы.
я не понял, что это за поле bluePoints? оно что статично в классе?
KID вне форума Отправить сообщение для KID с помощью Skype™ Ответить с цитированием
Непрочитано 02.08.2015, 11:24   #4
Пользователь

Автор темы (Топик Стартер) Re: overword ивент TvT определение target

спасибо за подсказку
Daniel вне форума Ответить с цитированием
Непрочитано 03.08.2015, 09:01   #5
Аватар для Gaikotsu
Герой

По умолчанию Re: overword ивент TvT определение target

что мешает проверять в самом листенере на убийства - принадлежат ли убитый и убивший к одному отряду или к разным и действовать в зависимости от этого?
ну и не забывать еще проверять на null и т.д. все что надо.

пример обработок
Код:
	@Override
	public void onKill(Creature actor, Creature victim)
	{
		if (actor == null || victim == null || getStatus() != EventStatus.BATTLE || actor.getPlayer() == null || !victim.isPlayer())
			return;

		EventMember killer = getMember(actor.getPlayer());
		EventMember killed = getMember(victim.getPlayer());

		if (killer == null || killed == null || killer == killed || killer.getPlayer() == null || killed.getPlayer() == null || killer.getTeam() == killed.getTeam())
			return;

		addRewards(killer.getPlayer(), ActionType.KILL);
		killed.decValue(1);

		if (killed.getValue() > 0)
		{
			ThreadPoolManager.getInstance().schedule(new PvPEventTasks.ActionTask(this, killed.getPlayer(), ActionTaskType.REVIVE_AND_BUFF), getConfig().getTimeToRevive() * 1000L);
			showMessage(killed.getPlayer(), "Количество оставшихся у вас жизней: " + killed.getValue() + ". Через несколько секунд вы будете возрождены.");
		}
		else
		{
			killed.setLive(false);
			showMessage(killed.getPlayer(), "У вас не осталось жизней - вы не можете больше возродиться. Дождитесь окончания раунда.");

			if (isAnyTeamIsEmpty(true))
				endBattle();
		}
	}
Gaikotsu вне форума Ответить с цитированием
Ответ


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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
itamename-e.dat UFODriverr Lineage II 5 28.02.2021 18:17
Урон JokerMaxi Работа со скриптами 14 10.09.2014 12:20
Не могу подцепить AI гварду energy Работа со скриптами 6 24.06.2013 14:50
Помогите с компилом Daan Raven Работа со скриптами 12 13.01.2013 21:15
Адаптируем SQL BimBom Работа со скриптами 9 14.10.2009 15:14


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

Вверх