Ну так сделай 55902 скилл с полностью аналогичными статами (или какими тебе надо) и вставь его во вторую бижу. И всё.Что у меня сделано :
Две бижутерии:
И уровни скиллаXML:<item id="91012" name="Орден за заслуги - 1" type="Armor"> <set name="icon" val="icon.accessary_inferno_necklace_i00" /> <set name="default_action" val="EQUIP" /> <set name="bodypart" val="rear;lear" /> <set name="immediate_effect" val="true" /> <set name="crystal_count" val="0" /> <set name="crystal_type" val="A" /> <set name="material" val="SILVER" /> <set name="weight" val="150" /> <set name="price" val="0" /> <set name="commissionItemType" val="EARRING" /> <set name="enchant_enabled" val="true" /> <set name="is_tradable" val="false" /> <set name="is_dropable" val="false" /> <set name="is_sellable" val="false" /> <skills> <skill id="55901" level="1" /> <!-- Queen Ant's Ring --> </skills> <stats> <stat type="mDef">63</stat> </stats> </item> <item id="91013" name="Орден за заслуги - 2" type="Armor"> <set name="icon" val="icon.accessary_inferno_necklace_i00" /> <set name="default_action" val="EQUIP" /> <set name="bodypart" val="rear;lear" /> <set name="immediate_effect" val="true" /> <set name="crystal_count" val="0" /> <set name="crystal_type" val="A" /> <set name="material" val="SILVER" /> <set name="weight" val="150" /> <set name="price" val="0" /> <set name="commissionItemType" val="EARRING" /> <set name="enchant_enabled" val="true" /> <set name="is_tradable" val="false" /> <set name="is_dropable" val="false" /> <set name="is_sellable" val="false" /> <skills> <skill id="55901" level="2" /> <!-- Queen Ant's Ring --> </skills> <stats> <stat type="mDef">63</stat> </stats> </item>
XML:<skill id="55901" toLevel="12" name="Награда за заслуги серьга"> <!-- Poison Resistance and Atk. Rate +10%, P. /M. Accuracy +1, P. /M. Atk. +4%. --> <icon> <value level="1">icon.accessory_ring_of_queen_ant_i00</value> <value level="2">icon.accessory_ring_of_queen_ant_i02</value> <value level="3">icon.accessory_ring_of_queen_ant_i03</value> </icon> <magicLevel>75</magicLevel> <operateType>P</operateType> <effects> <effect name="MAtk"> <amount> <value level="1">2</value> <value level="2">3</value> <value level="3">4</value> <value level="4">5</value> <value level="5">6</value> <value level="6">6</value> <value level="7">6</value> <value level="8">7</value> <value level="9">7</value> <value level="10">8</value> <value level="11">9</value> <value level="12">10</value> </amount> <mode>PER</mode> </effect> <effect name="MaxMp"> <amount> <value level="1">0</value> <value level="2">0</value> <value level="3">0</value> <value level="4">0</value> <value level="5">0</value> <value level="6">2</value> <value level="7">3</value> <value level="8">4</value> <value level="9">5</value> <value level="10">6</value> <value level="11">7</value> <value level="12">8</value> </amount> <mode>PER</mode> </effect> <effect name="MpRegen"> <amount> <value level="1">0</value> <value level="2">0</value> <value level="3">0</value> <value level="4">0</value> <value level="5">0</value> <value level="6">5</value> <value level="7">8</value> <value level="8">10</value> <value level="9">14</value> <value level="10">18</value> <value level="11">20</value> <value level="12">25</value> </amount> <mode>DIFF</mode> </effect> <effect name="MagicCriticalRate"> <amount> <value level="1">0</value> <value level="2">0</value> <value level="3">0</value> <value level="4">0</value> <value level="5">0</value> <value level="6">0</value> <value level="7">0</value> <value level="8">0</value> <value level="9">0</value> <value level="10">1</value> <value level="11">2</value> <value level="12">3</value> </amount> <mode>PER</mode> </effect> </effects> </skill>
Возможно в данных условиях есть еще какие то костыли?)
Как вариант можешь глянуть Рубаху ольфа. <armor id="21580" name="Olf's T-shirt" type="NONE">Что у меня сделано :
Две бижутерии:
И уровни скиллаXML:<item id="91012" name="Орден за заслуги - 1" type="Armor"> <set name="icon" val="icon.accessary_inferno_necklace_i00" /> <set name="default_action" val="EQUIP" /> <set name="bodypart" val="rear;lear" /> <set name="immediate_effect" val="true" /> <set name="crystal_count" val="0" /> <set name="crystal_type" val="A" /> <set name="material" val="SILVER" /> <set name="weight" val="150" /> <set name="price" val="0" /> <set name="commissionItemType" val="EARRING" /> <set name="enchant_enabled" val="true" /> <set name="is_tradable" val="false" /> <set name="is_dropable" val="false" /> <set name="is_sellable" val="false" /> <skills> <skill id="55901" level="1" /> <!-- Queen Ant's Ring --> </skills> <stats> <stat type="mDef">63</stat> </stats> </item> <item id="91013" name="Орден за заслуги - 2" type="Armor"> <set name="icon" val="icon.accessary_inferno_necklace_i00" /> <set name="default_action" val="EQUIP" /> <set name="bodypart" val="rear;lear" /> <set name="immediate_effect" val="true" /> <set name="crystal_count" val="0" /> <set name="crystal_type" val="A" /> <set name="material" val="SILVER" /> <set name="weight" val="150" /> <set name="price" val="0" /> <set name="commissionItemType" val="EARRING" /> <set name="enchant_enabled" val="true" /> <set name="is_tradable" val="false" /> <set name="is_dropable" val="false" /> <set name="is_sellable" val="false" /> <skills> <skill id="55901" level="2" /> <!-- Queen Ant's Ring --> </skills> <stats> <stat type="mDef">63</stat> </stats> </item>
XML:<skill id="55901" toLevel="12" name="Награда за заслуги серьга"> <!-- Poison Resistance and Atk. Rate +10%, P. /M. Accuracy +1, P. /M. Atk. +4%. --> <icon> <value level="1">icon.accessory_ring_of_queen_ant_i00</value> <value level="2">icon.accessory_ring_of_queen_ant_i02</value> <value level="3">icon.accessory_ring_of_queen_ant_i03</value> </icon> <magicLevel>75</magicLevel> <operateType>P</operateType> <effects> <effect name="MAtk"> <amount> <value level="1">2</value> <value level="2">3</value> <value level="3">4</value> <value level="4">5</value> <value level="5">6</value> <value level="6">6</value> <value level="7">6</value> <value level="8">7</value> <value level="9">7</value> <value level="10">8</value> <value level="11">9</value> <value level="12">10</value> </amount> <mode>PER</mode> </effect> <effect name="MaxMp"> <amount> <value level="1">0</value> <value level="2">0</value> <value level="3">0</value> <value level="4">0</value> <value level="5">0</value> <value level="6">2</value> <value level="7">3</value> <value level="8">4</value> <value level="9">5</value> <value level="10">6</value> <value level="11">7</value> <value level="12">8</value> </amount> <mode>PER</mode> </effect> <effect name="MpRegen"> <amount> <value level="1">0</value> <value level="2">0</value> <value level="3">0</value> <value level="4">0</value> <value level="5">0</value> <value level="6">5</value> <value level="7">8</value> <value level="8">10</value> <value level="9">14</value> <value level="10">18</value> <value level="11">20</value> <value level="12">25</value> </amount> <mode>DIFF</mode> </effect> <effect name="MagicCriticalRate"> <amount> <value level="1">0</value> <value level="2">0</value> <value level="3">0</value> <value level="4">0</value> <value level="5">0</value> <value level="6">0</value> <value level="7">0</value> <value level="8">0</value> <value level="9">0</value> <value level="10">1</value> <value level="11">2</value> <value level="12">3</value> </amount> <mode>PER</mode> </effect> </effects> </skill>
Возможно в данных условиях есть еще какие то костыли?)
Попробуй вот так:Что у меня сделано :
Две бижутерии:
И уровни скиллаXML:<item id="91012" name="Орден за заслуги - 1" type="Armor"> <set name="icon" val="icon.accessary_inferno_necklace_i00" /> <set name="default_action" val="EQUIP" /> <set name="bodypart" val="rear;lear" /> <set name="immediate_effect" val="true" /> <set name="crystal_count" val="0" /> <set name="crystal_type" val="A" /> <set name="material" val="SILVER" /> <set name="weight" val="150" /> <set name="price" val="0" /> <set name="commissionItemType" val="EARRING" /> <set name="enchant_enabled" val="true" /> <set name="is_tradable" val="false" /> <set name="is_dropable" val="false" /> <set name="is_sellable" val="false" /> <skills> <skill id="55901" level="1" /> <!-- Queen Ant's Ring --> </skills> <stats> <stat type="mDef">63</stat> </stats> </item> <item id="91013" name="Орден за заслуги - 2" type="Armor"> <set name="icon" val="icon.accessary_inferno_necklace_i00" /> <set name="default_action" val="EQUIP" /> <set name="bodypart" val="rear;lear" /> <set name="immediate_effect" val="true" /> <set name="crystal_count" val="0" /> <set name="crystal_type" val="A" /> <set name="material" val="SILVER" /> <set name="weight" val="150" /> <set name="price" val="0" /> <set name="commissionItemType" val="EARRING" /> <set name="enchant_enabled" val="true" /> <set name="is_tradable" val="false" /> <set name="is_dropable" val="false" /> <set name="is_sellable" val="false" /> <skills> <skill id="55901" level="2" /> <!-- Queen Ant's Ring --> </skills> <stats> <stat type="mDef">63</stat> </stats> </item>
XML:<skill id="55901" toLevel="12" name="Награда за заслуги серьга"> <!-- Poison Resistance and Atk. Rate +10%, P. /M. Accuracy +1, P. /M. Atk. +4%. --> <icon> <value level="1">icon.accessory_ring_of_queen_ant_i00</value> <value level="2">icon.accessory_ring_of_queen_ant_i02</value> <value level="3">icon.accessory_ring_of_queen_ant_i03</value> </icon> <magicLevel>75</magicLevel> <operateType>P</operateType> <effects> <effect name="MAtk"> <amount> <value level="1">2</value> <value level="2">3</value> <value level="3">4</value> <value level="4">5</value> <value level="5">6</value> <value level="6">6</value> <value level="7">6</value> <value level="8">7</value> <value level="9">7</value> <value level="10">8</value> <value level="11">9</value> <value level="12">10</value> </amount> <mode>PER</mode> </effect> <effect name="MaxMp"> <amount> <value level="1">0</value> <value level="2">0</value> <value level="3">0</value> <value level="4">0</value> <value level="5">0</value> <value level="6">2</value> <value level="7">3</value> <value level="8">4</value> <value level="9">5</value> <value level="10">6</value> <value level="11">7</value> <value level="12">8</value> </amount> <mode>PER</mode> </effect> <effect name="MpRegen"> <amount> <value level="1">0</value> <value level="2">0</value> <value level="3">0</value> <value level="4">0</value> <value level="5">0</value> <value level="6">5</value> <value level="7">8</value> <value level="8">10</value> <value level="9">14</value> <value level="10">18</value> <value level="11">20</value> <value level="12">25</value> </amount> <mode>DIFF</mode> </effect> <effect name="MagicCriticalRate"> <amount> <value level="1">0</value> <value level="2">0</value> <value level="3">0</value> <value level="4">0</value> <value level="5">0</value> <value level="6">0</value> <value level="7">0</value> <value level="8">0</value> <value level="9">0</value> <value level="10">1</value> <value level="11">2</value> <value level="12">3</value> </amount> <mode>PER</mode> </effect> </effects> </skill>
Возможно в данных условиях есть еще какие то костыли?)
Какая-то крайне ужасная идея, но если уж на то пошло: сделай в каждой биже новый skill id, а в каждый новый skill id пропиши по одному уровню по порядку. Ну то есть, допустим, 55201 - 1 уровень скилла, 55202 - 2 уровень скилла, 55203 - 3 уровень скилла.@Maleficent, ты немного не понял, таких биж 12
@Viostyle, скилы работают, но при надевании двух биж,дается один скилл.
Посмотреть вложение 37034Посмотреть вложение 37033
А если будет две одинаковые бижутерии?Какая-то крайне ужасная идея, но если уж на то пошло: сделай в каждой биже новый skill id, а в каждый новый skill id пропиши по одному уровню по порядку. Ну то есть, допустим, 55201 - 1 уровень скилла, 55202 - 2 уровень скилла, 55203 - 3 уровень скилла.
Будет бонус только от одной. Напиши в описании этих предметов, что 2 предмета с одинаковым рангом не работают вместе, в твоей концепции это будет выглядеть весьма логично даже (вроде).А если будет две одинаковые бижутерии?
/**
     * Method to retrieve skills linked to this item armor and weapon: passive skills etcitem: skills used on item use <-- ???
     * @return Skills linked to this item as SkillHolder[]
     */
    public List<ItemSkillHolder> getAllSkills()
    {
        return _skills;
    }
    
    /**
     * @param condition
     * @return {@code List} of {@link ItemSkillHolder} if item has skills and matches the condition, {@code null} otherwise
     */
    public List<ItemSkillHolder> getSkills(Predicate<ItemSkillHolder> condition)
    {
        if (_skills == null)
        {
            return null;
        }
        
        final List<ItemSkillHolder> result = new ArrayList<>();
        for (ItemSkillHolder skill : _skills)
        {
            if (condition.test(skill))
            {
                result.add(skill);
            }
        }
        return result;
    }
    
    /**
     * @param type
     * @return {@code List} of {@link ItemSkillHolder} if item has skills, {@code null} otherwise
     */
    public List<ItemSkillHolder> getSkills(ItemSkillType type)
    {
        if (_skills == null)
        {
            return null;
        }
        
        final List<ItemSkillHolder> result = new ArrayList<>();
        for (ItemSkillHolder skill : _skills)
        {
            if (skill.getType() == type)
            {
                result.add(skill);
            }
        }
        return result;
    }
    
    /**
     * Executes the action on each item skill with the specified type (If there are skills at all)
     * @param type
     * @param action
     */
    public void forEachSkill(ItemSkillType type, Consumer<ItemSkillHolder> action)
    {
        if (_skills != null)
        {
            for (ItemSkillHolder skill : _skills)
            {
                if (skill.getType() == type)
                {
                    action.accept(skill);
                }
            }
        }
    }
    
    public void addSkill(ItemSkillHolder holder)
    {
        if (_skills == null)
        {
            _skills = new ArrayList<>();
        }
        _skills.add(holder);
    }ну да... а это к примеру мои фантазии, да?Не совсем понятен пост, вы смотрели структуру предметов мобиуса?
Если бы была сборка, как у человека выше, все предельно понятно, у мобиуса же это сделано в виде скиллов...
@Gaikotsu, если не знаете, зачем строить из себя всезнающего, а если знаете, подскажите...
в xsd прописаны только эти статы, и то, они дают только 0x10 то есть в целых числах
    <item id="1" name="Short Sword" type="Weapon">
        <set name="icon" val="icon.weapon_small_sword_i00" />
        <set name="default_action" val="EQUIP" />
        <set name="weapon_type" val="SWORD" />
        <set name="bodypart" val="rhand" />
        <set name="damage_range" val="0;0;40;120" />
        <set name="immediate_effect" val="true" />
        <set name="material" val="STEEL" />
        <set name="weight" val="1600" />
        <set name="price" val="118" />
        <set name="soulshots" val="1" />
        <set name="spiritshots" val="1" />
        <stats>
            <stat type="pAtk">8</stat>
            <stat type="mAtk">6</stat>
            <stat type="rCrit">8</stat>
            <stat type="pAtkSpd">379</stat>
            <stat type="randomDamage">10</stat>
            <stat type="pAtkRange">40</stat>
        </stats>
    </item>можно извратится через листенеры эквипа - чтобы он давал/забирал скиллы если одеты определенные предметы.Будет бонус только от одной. Напиши в описании этих предметов, что 2 предмета с одинаковым рангом не работают вместе, в твоей концепции это будет выглядеть весьма логично даже (вроде).
package listeners.items;
import org.apache.commons.lang3.ArrayUtils;
import l2p.gameserver.data.holder.SkillHolder;
import l2p.gameserver.listener.item.OnItemEquipListener;
import l2p.gameserver.model.Playable;
import l2p.gameserver.model.Player;
import l2p.gameserver.model.actor.listener.ItemListenerList;
import l2p.gameserver.model.items.Inventory;
import l2p.gameserver.model.items.ItemInstance;
import l2p.gameserver.model.skills.Skill;
import l2p.gameserver.network.s2c.SkillCoolTime;
import l2p.gameserver.scripts.ScriptFile;
/**
 * @author Gaikotsu
 */
public class Jewels implements ScriptFile
{
    private static final int[] Level6Jewels = { 28376, 28377, 28378, 28379, 28380, 28383, 47687, 47688, 47689, 47690, 47691, 47692, 47693, 47694, 47695, 47696, 47697, 47698, 47699, 47700, 47920, 47921, 47922, 47923 };
    private static final Skill[] GreaterGemstoneBlessing = {
        SkillHolder.getInstance().getSkill(27717, 1),
        SkillHolder.getInstance().getSkill(27717, 2),
        SkillHolder.getInstance().getSkill(27717, 3),
        SkillHolder.getInstance().getSkill(27717, 4),
        SkillHolder.getInstance().getSkill(27717, 5),
        SkillHolder.getInstance().getSkill(27717, 6) };
    private static final Skill[] LaVieEnRoseEnergy = {
        SkillHolder.getInstance().getSkill(27721, 1),
        SkillHolder.getInstance().getSkill(27722, 1),
        SkillHolder.getInstance().getSkill(27723, 1),
        SkillHolder.getInstance().getSkill(27724, 1) };
    private static final ItemEquipListener _listener = new ItemEquipListener();
    @Override
    public void onLoad()
    {
        ItemListenerList.addGlobal(_listener);
    }
    @Override
    public void onReload()
    {
        ItemListenerList.removeGlobal(_listener);
    }
    private static int getEquppedJewelsCount(Player player)
    {
        int count = 0;
        for (int slot = Inventory.PAPERDOLL_JEWEL_1; slot <= Inventory.PAPERDOLL_JEWEL_6; slot++)
        {
            ItemInstance item = player.getInventory().getPaperdollItem(slot);
            if (item != null && ArrayUtils.contains(Level6Jewels, item.getId()))
                count++;
        }
        return count;
    }
    public static class ItemEquipListener implements OnItemEquipListener
    {
        @Override
        public void onEquip(ItemInstance item, Playable actor)
        {
            if (!actor.isPlayer())
                return;
            Player player = actor.getPlayer();
            int count = getEquppedJewelsCount(player);
            player.addSkill(GreaterGemstoneBlessing[count - 1], false);
            if (count > 2)
            {
                for (int i = 0; i < LaVieEnRoseEnergy.length; i++)
                {
                    if (i == (count - 3))
                    {
                        player.addSkill(LaVieEnRoseEnergy[i], false);
                        if (player.isSkillDisabled(LaVieEnRoseEnergy[i]))
                            player.sendPacket(new SkillCoolTime(player));
                    }
                    else
                        player.removeSkill(LaVieEnRoseEnergy[i], false);
                }
            }
            if (!player.getInventory().isRefresh)
                player.sendSkillList(false);
        }
        @Override
        public void onUnequip(ItemInstance item, Playable actor)
        {
            if (!actor.isPlayer())
                return;
            Player player = actor.getPlayer();
            int count = getEquppedJewelsCount(player);
            if (count > 0)
            {
                player.addSkill(GreaterGemstoneBlessing[count - 1], false);
                if (count > 1)
                {
                    for (int i = 0; i < LaVieEnRoseEnergy.length; i++)
                    {
                        if (i == (count - 3))
                        {
                            player.addSkill(LaVieEnRoseEnergy[i], false);
                            if (player.isSkillDisabled(LaVieEnRoseEnergy[i]))
                                player.sendPacket(new SkillCoolTime(player));
                        }
                        else
                            player.removeSkill(LaVieEnRoseEnergy[i], false);
                    }
                }
            }
            else
                player.removeSkill(GreaterGemstoneBlessing[0], false);
            if (!player.getInventory().isRefresh)
                player.sendSkillList(false);
        }
        @Override
        public boolean checkCondition(ItemInstance item)
        {
            return item.isJewel() && ArrayUtils.contains(Level6Jewels, item.getId());
        }
    }
}We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?