Чи є можливість створити скіл подібний до Трансформи ШЕ і ЕЕ на HF(273) (з заміною пулу акртивних склів без самої візуальної трансформації) на протоколі IT(775)
Я не сильний в розумінні роботи з пакеткою але здаєтьс що при ініціалізації скіла відбувається відправка пакету Transform(id)?
що приводить докрашу клієнта.
Суть питання: куди дивитись і чи є варіант більш простогї передачі <set name="addSkills" val="10204;1" /> та створеня чистого пулу скілів(як в трансформі)
--------------------------ЕФЕКТ-----------------------------------------
package l2.gameserver.skills.effects;
import l2.gameserver.model.Effect;
import l2.gameserver.model.Player;
import l2.gameserver.skills.skillclasses.Transformation;
import l2.gameserver.stats.Env;
public final class EffectTransformation extends Effect {
public EffectTransformation(Env env, EffectTemplate template) {
super(env, template);
}
public boolean checkCondition() {
if (!this._effected.isPlayer()) {
return false;
} else {
return super.checkCondition();
}
}
public void onStart() {
super.onStart();
Player player = (Player)this._effected;
if (this.getSkill() instanceof Transformation) {
player.setTransformationName(((Transformation)this.getSkill()).transformationName);
}
int id = (int)this.calc();
player.setTransformation(id);
}
public void onExit() {
super.onExit();
if (this._effected.isPlayer()) {
Player player = (Player)this._effected;
player.setTransformation(0);
if (this.getSkill() instanceof Transformation) {
player.setTransformationName(null);
}
}
}
public boolean onActionTime() {
return false;
}
}
--------------------------СКІЛ-----------------------------------------
<skill id="538" levels="1" name="Final Form">
<!--
Need correct: reuseDelay, time
Last modify: 15.09.2008
Description: Transform into a final battle form. Consumes 20 soul.removeSkills
-->
<set name="icon" val="icon.skill0538" />
<set name="reuseDelay" val="3600" />
<set name="hitTime" val="2500" />
<set name="hpConsume" val="200" />
<set name="mpConsume2" val="70" />
<set name="target" val="TARGET_SELF" />
<set name="skillType" val="TRANSFORMATION" />
<set name="isReuseDelayPermanent" val="true" />
<set name="addSkills" val="10204;1" />
<set name="operateType" val="OP_ACTIVE" />
<for>
<effect count="1" name="Transformation" time="50" val="251">
<set order="0x40" stat="STR" val="41" />
<set order="0x40" stat="DEX" val="33" />
<set order="0x40" stat="CON" val="31" />
<set order="0x40" stat="INT" val="29" />
<set order="0x40" stat="WIT" val="11" />
<set order="0x40" stat="MEN" val="25" />
<mul order="0x30" stat="maxHp" val="1.1" />
<mul order="0x30" stat="maxCp" val="1.1" />
<mul order="0x30" stat="maxMp" val="1.1" />
<mul order="0x30" stat="pAtk" val="2" />
<mul order="0x30" stat="pDef" val="2" />
<mul order="0x30" stat="mAtk" val="2" />
<mul order="0x30" stat="mDef" val="2" />
<add order="0x40" stat="runSpd" val="4" />
</effect>
</for>
</skill>
Я не сильний в розумінні роботи з пакеткою але здаєтьс що при ініціалізації скіла відбувається відправка пакету Transform(id)?
що приводить докрашу клієнта.
Суть питання: куди дивитись і чи є варіант більш простогї передачі <set name="addSkills" val="10204;1" /> та створеня чистого пулу скілів(як в трансформі)
--------------------------ЕФЕКТ-----------------------------------------
package l2.gameserver.skills.effects;
import l2.gameserver.model.Effect;
import l2.gameserver.model.Player;
import l2.gameserver.skills.skillclasses.Transformation;
import l2.gameserver.stats.Env;
public final class EffectTransformation extends Effect {
public EffectTransformation(Env env, EffectTemplate template) {
super(env, template);
}
public boolean checkCondition() {
if (!this._effected.isPlayer()) {
return false;
} else {
return super.checkCondition();
}
}
public void onStart() {
super.onStart();
Player player = (Player)this._effected;
if (this.getSkill() instanceof Transformation) {
player.setTransformationName(((Transformation)this.getSkill()).transformationName);
}
int id = (int)this.calc();
player.setTransformation(id);
}
public void onExit() {
super.onExit();
if (this._effected.isPlayer()) {
Player player = (Player)this._effected;
player.setTransformation(0);
if (this.getSkill() instanceof Transformation) {
player.setTransformationName(null);
}
}
}
public boolean onActionTime() {
return false;
}
}
--------------------------СКІЛ-----------------------------------------
<skill id="538" levels="1" name="Final Form">
<!--
Need correct: reuseDelay, time
Last modify: 15.09.2008
Description: Transform into a final battle form. Consumes 20 soul.removeSkills
-->
<set name="icon" val="icon.skill0538" />
<set name="reuseDelay" val="3600" />
<set name="hitTime" val="2500" />
<set name="hpConsume" val="200" />
<set name="mpConsume2" val="70" />
<set name="target" val="TARGET_SELF" />
<set name="skillType" val="TRANSFORMATION" />
<set name="isReuseDelayPermanent" val="true" />
<set name="addSkills" val="10204;1" />
<set name="operateType" val="OP_ACTIVE" />
<for>
<effect count="1" name="Transformation" time="50" val="251">
<set order="0x40" stat="STR" val="41" />
<set order="0x40" stat="DEX" val="33" />
<set order="0x40" stat="CON" val="31" />
<set order="0x40" stat="INT" val="29" />
<set order="0x40" stat="WIT" val="11" />
<set order="0x40" stat="MEN" val="25" />
<mul order="0x30" stat="maxHp" val="1.1" />
<mul order="0x30" stat="maxCp" val="1.1" />
<mul order="0x30" stat="maxMp" val="1.1" />
<mul order="0x30" stat="pAtk" val="2" />
<mul order="0x30" stat="pDef" val="2" />
<mul order="0x30" stat="mAtk" val="2" />
<mul order="0x30" stat="mDef" val="2" />
<add order="0x40" stat="runSpd" val="4" />
</effect>
</for>
</skill>