Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Снятие HAIR если сняли DHAIR
#1
Как сделать чтобы при снятии нижнего аксессуара снимался и верхний?
Сделал в ItemFunctions
[SRC="java"] //СВОЙСТВА
if(item.getTemplate().isSA())
{
//СА можно ностиь только с акссесуаром
if(!player.getOpenSA())
return new SystemMessage2(SystemMsg.YOU_CANT_EQP_SA);
if(player.getOpenSA())
player.sendPacket(new SystemMessage2(SystemMsg.YOU_CAN_EQP_SA));
//Если слот закрыт, снимает СА.
if(!player.getOpenSA() && player.getInventory().setPaperdollItem(Inventory.PAPERDOLL_DHAIR, null) != null)
return new SystemMessage2(SystemMsg.YOU_CANT_EQP_SA);
}[/SRC]
Но не работает, точнее работает, но часть, 1 и 2 проверка работает, а 3 нет, или не так как мне надо.
Ответ
#2
if(!player.getOpenSA())
return new SystemMessage2(SystemMsg.YOU_CANT_EQP_SA);
тут ретурн так какого дальше идет проверка if(!player.getOpenSA() ?
Ответ
#3
Разве не может быть несколько ретурнов?
Вот например код не мой:
[SRC="java"]// Плащи
if(item.getTemplate().isCloak())
{
// Can be worn by Knights or higher ranks who own castle
if(item.getName().contains("Knight") && (player.getPledgeClass() < Player.RANK_KNIGHT || player.getCastle() == null))
return new SystemMessage2(SystemMsg.YOU_DO_NOT_MEET_THE_REQUIRED_CONDITION_TO_EQUIP_THAT_ITEM);

// Плащи для камаэлей
if(item.getName().contains("Kamael") && player.getRace() != Race.kamael)
return new SystemMessage2(SystemMsg.YOU_DO_NOT_MEET_THE_REQUIRED_CONDITION_TO_EQUIP_THAT_ITEM);

// Плащи можно носить только с S80 или S84 сетом
if(!player.getOpenCloak())
return new SystemMessage2(SystemMsg.THE_CLOAK_CANNOT_BE_EQUIPPED_BECAUSE_A_NECESSARY_ITEM_IS_NOT_EQUIPPED);
}[/SRC]
Ответ
#4
Ретурнов может быть много но одну и тужуе проверк сувать в ретурн и после ретурна немного туповато ибо она всегда в ретурн будет уходить.

Добавлено через 2 минуты
либо последнюю проверку подымите над первой внутри ифа тогда будет логичнее
Ответ
#5
Проверка не одна и та же, if(!player.getOpenSA())
return new SystemMessage2(SystemMsg.YOU_CANT_EQP_SA);
Вторая
if(player.getOpenSA())
player.sendPacket(new SystemMessage2(SystemMsg.YOU_CAN_EQP_SA));

Добавлено через 9 минут
Может нужно делать проверку не в ItemFunctions?

Добавлено через 21 минуту
Действительно, сделал через Inventory
[SRC="java"]case ItemTemplate.SLOT_DHAIR:
pdollSlot = PAPERDOLL_DHAIR;
setPaperdollItem(Inventory.PAPERDOLL_HAIR, null);
break;[/SRC]
Ответ
#6
L2J Написал:Действительно, сделал через Inventory

Так этот класс и предназначен исключительно для этого, и полностью отвечает за обработку всех событий со слотами в инвентаре. Smile
Родился, живу и когда-нибудь умру.
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  # Авторестарт если найден deadlock dantest 9 2,681 09-23-2015, 11:32 PM
Последний пост: flopix
  Обрыв каста, если цель не видно. elastic 7 2,915 02-20-2015, 10:00 PM
Последний пост: KilRoy
  Снятие талисмана и спадание эффекта Rolfer 1 1,154 06-22-2014, 09:10 AM
Последний пост: Gaikotsu
  Запрет атаки если присутсвует меньше игроков Rolfer 1 1,539 05-14-2014, 06:25 PM
Последний пост: n3k0nation
  Если игрок соответствует устовиям L2J 16 2,932 05-12-2014, 03:29 PM
Последний пост: ANZO
  "Если (персонаж.отошёл на() >= (n) метров)..." finfan 11 3,177 05-03-2012, 06:12 AM
Последний пост: bloodshed
  снятие баффов solbadguy 0 2,013 02-05-2010, 06:36 PM
Последний пост: solbadguy
  Снятие ограничений Neversmile 30 10,426 10-21-2009, 08:04 AM
Последний пост: FXAntiXrist
  Как запретить использ. скилл, если нет душ Stema 1 2,541 12-01-2008, 11:46 PM
Последний пост: Stema

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)