Скилл, поглощающий два итема

Тема в разделе "Newbie questions / Вопросы новичков", создана пользователем Maiden7, 22 ноя 2017.

Статус темы:
Закрыта.
  1. Всем привет! Интересует такой вопрос, как переписать вот эту функцию:
    Код:
    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; 
    } 
    } 
    }
    
    так, чтобы забирала два итема за использование??
     
  2. Absent

    Absent Участник

    Регистрация:
    12 ноя 2017
    Сообщения:
    22
    Симпатии:
    10
    2 разных итема или как?
     
  3. да разных
     
  4. Absent

    Absent Участник

    Регистрация:
    12 ноя 2017
    Сообщения:
    22
    Симпатии:
    10
    так это должно делаться в .xml самого скила
     
  5. Я все перепробовал и точка с запятой и точка, и запятая.

    Вот код, покажи на примере

    Код:
    <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>
     
  6. Links

    Links Активный участник

    Регистрация:
    22 ноя 2017
    Сообщения:
    46
    Симпатии:
    17
    Попробуй вот так.
    Код:
    <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>
     
  7. Пробовал так, не пашет.
     
  8. Links

    Links Активный участник

    Регистрация:
    22 ноя 2017
    Сообщения:
    46
    Симпатии:
    17
    А если так?
    Код:
    <set name="itemConsumeId" val="57" />
    <set name="itemConsumeCount" val="5000" />
    <set name="itemConsumeId2" val="4037" />
    <set name="itemConsumeCount2" val="2" />
     
  9. ГС будет орать, в ядре нету таких значений, смотрите код, который я выложил, править нужно его. Тем более я добавлял в ядро такие значения и прописывал все как ты говоришь, силл все равно берет только один итем.
     
  10. Links

    Links Активный участник

    Регистрация:
    22 ноя 2017
    Сообщения:
    46
    Симпатии:
    17
    ммм...

    а если попробывать сделать вот так ?
    Код:
    <ingredient id="4037" count="1"/>
     
  11. Это безумие, но это вторая сторона медали под названием гениальность.
    Да не, и так не пашет, нет... ты не гений=)
     
  12. Abaddon

    Abaddon Активный участник

    Регистрация:
    12 ноя 2017
    Сообщения:
    54
    Симпатии:
    8
    Код:
    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" />
    Остальное по примерам оригинала дополняем.
     
  13. А что то ItemTemplate.java даже ничего похожего нету.
     
  14. Abaddon

    Abaddon Активный участник

    Регистрация:
    12 ноя 2017
    Сообщения:
    54
    Симпатии:
    8
    Конечно нету, это надо добавлять, такого не существует в л2 просто по стандарту.
     
  15. Да все вопрос решили, всем спасибо.

    Код:
    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);
                }
        }
    }
    просто чуть подредактировали этот файлик :)
     
    #15 Maiden7, 23 ноя 2017
    Последнее редактирование модератором: 24 ноя 2017
Статус темы:
Закрыта.

Партнеры