08-25-2012, 01:50 PM
Приветствую всех форумчан.
Столкнулся недавно с проблемой, а именно: некоторые одиннаковые эффекты не заменяются друг другом, а накидываются сверху, и в итоге на игроке висит два эффекта одного типа.
Начал сразу же копать stats скиллов. Дело в том, что у меня дополнительно реализованы Donate Scrolls, те же баффы только отличаются от стандартных тем, что у них время действия намного больше.
Вот стандартный Dance of Concentration:
А это в свитке:
Решил сразу заглянуть в Continious.java:
Вроде бы сам процесс реализован правильно.
И дальше не пойму в чем вообще дело и как это поправить. Выручайте:redlol:
Столкнулся недавно с проблемой, а именно: некоторые одиннаковые эффекты не заменяются друг другом, а накидываются сверху, и в итоге на игроке висит два эффекта одного типа.
Начал сразу же копать stats скиллов. Дело в том, что у меня дополнительно реализованы Donate Scrolls, те же баффы только отличаются от стандартных тем, что у них время действия намного больше.
Вот стандартный Dance of Concentration:
Код:
<skill id="276" levels="1" name="Dance of Concentration" enchantLevels1="30" enchantLevels2="30" >
<table name="#enchantMagicLvl"> 76 76 76 77 77 77 78 78 78 79 79 79 80 80 80 81 81 81 82 82 82 82 83 83 83 84 84 85 85 85 </table>
<enchant1 name="magicLvl" val="#enchantMagicLvl"/>
<enchant2 name="magicLvl" val="#enchantMagicLvl"/>
<table name="#ench1time">
125 131 136 142 147 153 158 164 169 175
180 186 191 197 202 208 213 219 224 230
235 241 246 252 257 263 268 274 279 285
</table>
<table name="#ench2MpConsume">
58 57 56 55 53 52 51 50 48 47
46 45 43 42 41 40 39 37 36 35
34 32 31 30 29 27 26 25 24 22
</table>
<set name="weaponsAllowed" val="512"/>
<set name="mpConsume" val="60"/>
<set name="nextDanceCost" val="30"/>
<set name="power" val="0.0"/>
<set name="target" val="TARGET_PARTY"/>
<set name="skillRadius" val="1000"/>
<set name="reuseDelay" val="10000"/>
<set name="hitTime" val="2500"/>
<set name="skillType" val="BUFF"/>
<set name="isDance" val="true"/>
<set name="operateType" val="OP_ACTIVE"/>
<set name="castRange" val="-1"/>
<set name="effectRange" val="-1"/>
<set name="aggroPoints" val="495"/>
<enchant1 name="aggroPoints" val="655"/>
<enchant2 name="aggroPoints" val="655"/>
<enchant2 name="mpConsume" val="#ench2MpConsume"/>
<for>
<effect name="Buff" time="1200" count="1" val="0">
<mul order="0x30" stat="mAtkSpd" val="1.3"/>
<sub order="0x40" stat="cancel" val="40"/>
</effect>
</for>
<enchant1for>
<effect name="Buff" time="#ench1time" count="1" val="0">
<mul order="0x30" stat="mAtkSpd" val="1.3"/>
<sub order="0x40" stat="cancel" val="40"/>
</effect>
</enchant1for>
</skill>
А это в свитке:
Код:
<skill id="11235" levels="1" name="Dance of Concentration">
<set name="power" val="0.0"/>
<set name="castRange" val="-1"/>
<set name="effectRange" val="-1"/>
<set name="target" val="TARGET_SELF"/>
<set name="hitTime" val="500"/>
<set name="skillType" val="BUFF"/>
<set name="operateType" val="OP_ACTIVE"/>
<set name="staticHitTime" val="true" />
<for>
<effect name="Buff" time="3600" count="1" val="0">
<mul order="0x30" stat="mAtkSpd" val="1.3"/>
<sub order="0x40" stat="cancel" val="40"/>
</effect>
</for>
</skill>
Решил сразу заглянуть в Continious.java:
Код:
boolean stopped = false;
L2Effect[] effects = target.getAllEffects();
if(effects != null)
{
for(L2Effect e : effects)
{
if(e != null)
if(e.getSkill().getId() == skill.getId())
{
e.exit(false);
stopped = true;
}
}
}
Вроде бы сам процесс реализован правильно.
И дальше не пойму в чем вообще дело и как это поправить. Выручайте:redlol: