Ну так сделай 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?