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

Запрет Атаки "своих" На Tvt

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

И так у нас есть ивент - TvT, в данном ивенте есть 2 листа: лист 1 команды и лист 2 команды.Далее нужно "из листов выбирать из всех плееров тех, кто в одной команде с атакующим".

 

В листы чары записываются таким образом:

 

players_list1.add(player.getStoredId());
live_list1.add(player.getStoredId());

 

Так же мы можем получить "StoredId()" атакующего:

 

attacker.getStoredId()

 

Но что с этим делать - не знаю.

 

Также нашел вот такой код:

 public boolean checkForAttack(Player activeChar, Creature target, Skill skill, boolean forceUse) {
if(_isEventStarted) {
if(skill == null)
return activeChar.getTeam() != TeamType.NONE && activeChar.getTeam() != target.getTeam();
else
return (skill.isNotTargetAoE()) || (skill.isOffensive() ? activeChar.getTeam() != target.getTeam() : activeChar.getTeam() == target.getTeam());
}

return skill != null && !skill.isOffensive() && target.getTeam() == activeChar.getTeam();
}

 

 

Но он не работает.

 

Прошу помощи!

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


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

могу ошибиться (давно делал) но насколько помню, запрет на любые виды атак нужно делать через классы player либо character.В этих классах смотрите примеры.

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


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

могу ошибиться (давно делал) но насколько помню, запрет на любые виды атак нужно делать через классы player либо character.В этих классах смотрите примеры.

Можете поточнее сказать ? Если не сложно.

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


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

Если это лист, то у него должен быть метод contains, далее уже дело техники, перем таргет и проверяем если он есть в данном списке то запрещаем атаковать, если уже нету то атакуем!!!)

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


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

Если это лист, то у него должен быть метод contains, далее уже дело техники, перем таргет и проверяем если он есть в данном списке то запрещаем атаковать, если уже нету то атакуем!!!)

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

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


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

Класс L2Playable у вас по видимому Playable, найдите метод isAutoAttackable() но возможно он у вас будет в другом месте Character или Player классе, а дальше уже по коду сами думаю разберетесь.

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


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

Класс L2Playable у вас по видимому Playable, найдите метод isAutoAttackable() но возможно он у вас будет в другом месте Character или Player классе, а дальше уже по коду сами думаю разберетесь.

запретил атаку скиллами и обычную атаку, но дамаг от мас скиллов получают и враги и свои

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


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

думал взять все это дело из групповой дуэли, но там ничего такого не нашел

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


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

дать одной команде красную отрядную ауру, а второму - синюю

и в большинстве сборок уже есть в методах проверяющих возможность атаки запрет на атаку цели, имеющую такую же отрядную ауру как у атакующего.

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


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

дать одной команде красную отрядную ауру, а второму - синюю

и в большинстве сборок уже есть в методах проверяющих возможность атаки запрет на атаку цели, имеющую такую же отрядную ауру как у атакующего.

в FT - не было, пришлось самому все дописывать, спасибо Dislike.

Можно закрывать.

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


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

Класс L2Playable у вас по видимому Playable, найдите метод isAutoAttackable() но возможно он у вас будет в другом месте Character или Player классе, а дальше уже по коду сами думаю разберетесь.

Круто запретит автоатаку, но за то по 1 стрелять можно збс.

В L2PlayableAI создаешь проверку

 

if (target.getActingPlayer().getTeam() == _actor.getActingPlayer().getTeam())

{

_actor.getActingPlayer().sendPacket(SystemMessageId.TARGET_IS_INCORRECT);

clientActionFailed();

return;

}

 

if (target.getActingPlayer().getTeam() == _actor.getActingPlayer().getTeam())

{

_actor.getActingPlayer().sendPacket(SystemMessageId.TARGET_IS_INCORRECT);

clientActionFailed();

_actor.setIsCastingNow(false);

return;

}

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


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

Круто запретит автоатаку, но за то по 1 стрелять можно збс.

В L2PlayableAI создаешь проверку

 

if (target.getActingPlayer().getTeam() == _actor.getActingPlayer().getTeam())

{

_actor.getActingPlayer().sendPacket(SystemMessageId.TARGET_IS_INCORRECT);

clientActionFailed();

return;

}

 

if (target.getActingPlayer().getTeam() == _actor.getActingPlayer().getTeam())

{

_actor.getActingPlayer().sendPacket(SystemMessageId.TARGET_IS_INCORRECT);

clientActionFailed();

_actor.setIsCastingNow(false);

return;

}

и не только это еще кое-что дописал в reduceCurrentHp т.к. дамаг от масс атак проходил на своих, осталась маленкая проблема, дмг не проходит но в систем чат пишет что дамаг нанесен.

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


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

и не только это еще кое-что дописал в reduceCurrentHp т.к. дамаг от масс атак проходил на своих, осталась маленкая проблема, дмг не проходит но в систем чат пишет что дамаг нанесен.

АОЕ скиллы не так блокируют.

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


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

АОЕ скиллы не так блокируют.

а как ?

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


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

В L2AttackableAI добавить проверку на команду.

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


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

В L2AttackableAI добавить проверку на команду.

что-то не совсем понимаю куда именно ? в какой метод ?

 

thinkAttack

и

thinkCast

 

?

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


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

boolean cast(L2Skill sk, double distance, int range)

1. у вас не оверы

2. даже если сделать что-то похоже то не кастуются селфы, а дамаг все-рано проходит

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


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

Значит не там проставили

отрицать не стану

PlayableAI.rar

куда ставить ?

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

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


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

Не в этом файле. Есть ссылка на исходы?

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


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

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

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

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

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

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

Войти

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

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

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

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

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