Сообщений: 231
Тем: 68
Зарегистрирован: Jun 2013
Репутация:
654
Как сделать чтобы при снятии нижнего аксессуара снимался и верхний?
Сделал в 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 нет, или не так как мне надо.
Сообщений: 159
Тем: 2
Зарегистрирован: May 2013
Репутация:
487
if(!player.getOpenSA())
return new SystemMessage2(SystemMsg.YOU_CANT_EQP_SA);
тут ретурн так какого дальше идет проверка if(!player.getOpenSA() ?
Сообщений: 231
Тем: 68
Зарегистрирован: Jun 2013
Репутация:
654
Разве не может быть несколько ретурнов?
Вот например код не мой:
[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]
Сообщений: 159
Тем: 2
Зарегистрирован: May 2013
Репутация:
487
08-14-2014, 02:40 PM
(Сообщение последний раз редактировалось: 08-14-2014, 02:42 PM xTz.)
Ретурнов может быть много но одну и тужуе проверк сувать в ретурн и после ретурна немного туповато ибо она всегда в ретурн будет уходить.
Добавлено через 2 минуты
либо последнюю проверку подымите над первой внутри ифа тогда будет логичнее
Сообщений: 231
Тем: 68
Зарегистрирован: Jun 2013
Репутация:
654
08-14-2014, 02:46 PM
(Сообщение последний раз редактировалось: 08-14-2014, 03:07 PM L2J.)
Проверка не одна и та же, 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]
Сообщений: 1,240
Тем: 29
Зарегистрирован: May 2013
Репутация:
2,505
L2J Написал:Действительно, сделал через Inventory
Так этот класс и предназначен исключительно для этого, и полностью отвечает за обработку всех событий со слотами в инвентаре.
Родился, живу и когда-нибудь умру.