Всем привет! Интересует такой вопрос, как переписать вот эту функцию: Code: if (first && (_itemConsume[0] > 0)) { for (int i = 0; i < _itemConsume.length; i++) { Inventory inv = ((Playable) activeChar).getInventory(); if (inv == null) { inv = player.getInventory(); } ItemInstance requiredItems = inv.getItemByItemId(_itemConsumeId[i]); if ((requiredItems == null) || (requiredItems.getCount() < _itemConsume[i])) { if (activeChar == player) { player.sendPacket(isHandler() ? SystemMsg.INCORRECT_ITEM_COUNT : SystemMsg.THERE_ARE_NOT_ENOUGH_NECESSARY_ITEMS_TO_USE_THE_SKILL); } return false; } } } так, чтобы забирала два итема за использование??
Я все перепробовал и точка с запятой и точка, и запятая. Вот код, покажи на примере Code: <skill id="1324" levels="1" name="Summon CP Potion"> <set name="magicType" val="MAGIC" /> <set name="icon" val="icon.skill1324" /> <set name="reuseDelay" val="600000" /> <set name="hitTime" val="20000" /> <set name="hitCancelTime" val="500" /> <set name="mpConsume1" val="412" /> <set name="itemConsumeId" val="1785" /> <set name="itemConsumeCount" val="50" /> <set name="target" val="TARGET_SELF" /> <set name="skillType" val="SUMMON_ITEM" /> <set name="operateType" val="OP_ACTIVE" /> <set name="SummonItemId" val="5592" /> <set name="SummonMinCount" val="20" /> </skill>
Попробуй вот так. Code: <skill id="1324" levels="1" name="Summon CP Potion"> <set name="magicType" val="MAGIC" /> <set name="icon" val="icon.skill1324" /> <set name="reuseDelay" val="600000" /> <set name="hitTime" val="20000" /> <set name="hitCancelTime" val="500" /> <set name="mpConsume1" val="412" /> <set name="itemConsumeId" val="1785" /> <set name="itemConsumeCount" val="50" /> <set name="itemConsumeId" val="57" /> <set name="itemConsumeCount" val="5000" /> <set name="target" val="TARGET_SELF" /> <set name="skillType" val="SUMMON_ITEM" /> <set name="operateType" val="OP_ACTIVE" /> <set name="SummonItemId" val="5592" /> <set name="SummonMinCount" val="20" /> </skill>
А если так? Code: <set name="itemConsumeId" val="57" /> <set name="itemConsumeCount" val="5000" /> <set name="itemConsumeId2" val="4037" /> <set name="itemConsumeCount2" val="2" />
ГС будет орать, в ядре нету таких значений, смотрите код, который я выложил, править нужно его. Тем более я добавлял в ядро такие значения и прописывал все как ты говоришь, силл все равно берет только один итем.
Это безумие, но это вторая сторона медали под названием гениальность. Да не, и так не пашет, нет... ты не гений=)
Code: ItemTemplate.java _itemConsume2 = set.getInteger("itemConsumeAlt", 0); _itemConsumeCount2 = set.getInteger("itemConsumeAltCount", 0); public int getItemConsume2() { return _itemConsume2; } public int getItemConsumeCount2() { return _itemConsumeCount2; } Skill 1234.xml <set name="itemConsumeId2" val="4037" /> <set name="itemConsumeCount2" val="2" /> Остальное по примерам оригинала дополняем.
Да все вопрос решили, всем спасибо. Code: package l2f.gameserver.skills.skillclasses; import l2f.commons.util.Rnd; import l2f.gameserver.model.Creature; import l2f.gameserver.model.Playable; import l2f.gameserver.model.Skill; import l2f.gameserver.templates.StatsSet; import l2f.gameserver.utils.ItemFunctions; import java.util.List; public class SummonItem extends Skill { private final int _itemId; private final int _minId; private final int _maxId; private final long _minCount; private final long _maxCount; public SummonItem(final StatsSet set) { super(set); _itemId = set.getInteger("SummonItemId", 0); _minId = set.getInteger("SummonMinId", 0); _maxId = set.getInteger("SummonMaxId", _minId); _minCount = set.getLong("SummonMinCount"); _maxCount = set.getLong("SummonMaxCount", _minCount); } @Override public void useSkill(final Creature activeChar, final List<Creature> targets) { if (!activeChar.isPlayable()) return; for (Creature target : targets) if (target != null) { int itemId = _minId > 0 ? Rnd.get(_minId, _maxId) : _itemId; long count = Rnd.get(_minCount, _maxCount); ItemFunctions.addItem((Playable)activeChar, itemId, count, true, "SummonItem"); getEffects(activeChar, target, getActivateRate() > 0, false); } } } просто чуть подредактировали этот файлик