Есть ефект, который я так понял, должен при нажатии на один скилл включать другой
PHP код:
package l2p.gameserver.skills.effects;
import l2p.commons.collections.GArray;
import l2p.commons.threading.RunnableImpl;
import l2p.commons.util.Rnd;
import l2p.gameserver.ThreadPoolManager;
import l2p.gameserver.model.Creature;
import l2p.gameserver.model.Effect;
import l2p.gameserver.model.Player;
import l2p.gameserver.model.Skill;
import l2p.gameserver.stats.Env;
import l2p.gameserver.tables.SkillTable;
import java.util.concurrent.ScheduledFuture;
/**
* Created with IntelliJ IDEA.
* User: Darvin
* Date: 30.06.12
* Time: 9:26
*/
public class EffectGiantForceAura extends Effect {
private int forceSkillId;
private int auraSkillId;
private ScheduledFuture<?> startEffectTask;
public EffectGiantForceAura(Env env, EffectTemplate template) {
super(env, template);
forceSkillId = template.getParam().getInteger("forceSkillId", -1);
auraSkillId = template.getParam().getInteger("auraSkillId", -1);
}
@Override
public void onStart() {
super.onStart();
// Контроллирующий скилл
if (forceSkillId > 0) {
startEffectTask = ThreadPoolManager.getInstance().schedule(new RunnableImpl() {
@Override
public void runImpl() throws Exception {
updateAura();
}
}, 500 + Rnd.get(4000));
}
}
@Override
public void onExit() {
super.onExit();
if (startEffectTask != null)
startEffectTask.cancel(false);
}
private void updateAura() {
Player effector = (Player) getEffector();
Skill forceSkill = SkillTable.getInstance().getInfo(forceSkillId, 1);
Skill auraSkill = getSkill();
if (effector == null || forceSkill == null || auraSkill == null)
return;
GArray<Creature> targets = forceSkill.getTargets(effector, getEffected(), false);
for (Creature target : targets) {
if (target.getEffectList().getEffectsBySkillId(forceSkillId) == null) {
forceSkill.getEffects(effector, target, false, false);
}
}
}
@Override
public boolean onActionTime() {
if (getEffected().isDead())
return false;
// Контроллирующий скилл
if (forceSkillId > 0) {
updateAura();
} else if (auraSkillId > 0) {
Player effector = (Player) getEffector();
if (effector == null || effector.getEffectList().getEffectsBySkillId(auraSkillId) == null)
return false;
}
return true;
}
}
вот пример в датапаке но он не работает
PHP код:
<skill id="1937" levels="1" name="Wynn Aura">
<table name="#magicLevel">85</table>
<set name="effectPoint" val="467"/>
<set name="magicLevel" val="#magicLevel"/>
<set name="target" val="TARGET_SELF"/>
<set name="skillType" val="CONT"/>
<set name="skillRadius" val="1000"/>
<set name="reuseDelay" val="5000"/>
<set name="operateType" val="OP_TOGGLE"/>
<for>
<effect count="0x7fffffff" name="GiantForceAura" time="5" val="10">
<def name="forceSkillId" val="1938"/>
</effect>
</for>
</skill>
<skill id="1938" levels="1" name="Wynn Force">
<table name="#magicLevel">85</table>
<set name="magicLevel" val="#magicLevel"/>
<set name="target" val="TARGET_PARTY_WITHOUT_ME"/>
<set name="skillType" val="CONT"/>
<set name="operateType" val="OP_TOGGLE"/>
<set name="skillRadius" val="1000"/>
<for>
<effect count="0x7fffffff" name="GiantForceAura" time="5" val="10">
<def name="auraSkillId" val="1937"/>
</effect>
<effect count="0x7fffffff" name="Buff" time="5" val="10">
<mul order="0x30" stat="pReuse" val="1.05"/>
<mul order="0x30" stat="mReuse" val="1.05"/>
<mul order="0x30" stat="mpConsum" val="0.97"/>
</effect>
</for>
</skill>
Хотелось бы узнать в чем проблема