Перейти к содержанию
Авторизация  
Touch_of_Life

[Help] Effectsignet

Рекомендуемые сообщения

Добрый день.

 

Сборка: aCis

Хроники: Interlude

 

Не работает эффект Signet (скилы данного эффекта: Symbol of Defence/Resistance/Assasin и т.д.)

 

При использовании способности, спавнится купол, которой по идее, должен накладывать на союзников положительный эффект.

В моём случае, купол спавнится и ничего не делает. Перебробовал все, от пириписки кода эффекта но наглого копипаста с других работающих ресурсов, результат - 0.

 

Я прошу подсказку, по какой причине купол не накладывает эффект на персонажа.

 

Собственно - сам код EffectSignet

package net.sf.l2j.gameserver.skills.effects;
import javolution.util.FastList;
import net.sf.l2j.gameserver.datatables.SkillTable;
import net.sf.l2j.gameserver.model.L2Effect;
import net.sf.l2j.gameserver.model.L2Skill;
import net.sf.l2j.gameserver.model.actor.L2Character;
import net.sf.l2j.gameserver.model.actor.instance.L2EffectPointInstance;
import net.sf.l2j.gameserver.network.SystemMessageId;
import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUse;
import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;
import net.sf.l2j.gameserver.skills.Env;
import net.sf.l2j.gameserver.skills.l2skills.L2SkillSignet;
import net.sf.l2j.gameserver.skills.l2skills.L2SkillSignetCasttime;
import net.sf.l2j.gameserver.templates.skills.L2EffectType;
/**
* @authors Forsaiken, Sami
*/
public class EffectSignet extends L2Effect
{
private L2Skill _skill;
private L2EffectPointInstance _actor;
public EffectSignet(Env env, EffectTemplate template)
{
super(env, template);
}
@Override
public L2EffectType getEffectType()
{
return L2EffectType.SIGNET_EFFECT;
}
@Override
public boolean onStart()
{
if(getSkill() instanceof L2SkillSignet)
{
_skill = SkillTable.getInstance().getInfo(((L2SkillSignet) getSkill()).effectId, getLevel());
}
else if(getSkill() instanceof L2SkillSignetCasttime)
{
_skill = SkillTable.getInstance().getInfo(((L2SkillSignetCasttime) getSkill()).effectId, getLevel());
}
_actor = (L2EffectPointInstance) getEffected();
return true;
}
@Override
public boolean onActionTime()
{
//if (getCount() == getTotalCount() - 1) return true; // do nothing first time
if(_skill == null)
return true;
int mpConsume = _skill.getMpConsume();
if(mpConsume > getEffector().getStatus().getCurrentMp())
{
getEffector().sendPacket(SystemMessage.getSystemMessage(SystemMessageId.SKILL_REMOVED_DUE_LACK_MP));
return false;
}
getEffector().reduceCurrentMp(mpConsume);
for(L2Character cha : _actor.getKnownList().getKnownCharactersInRadius(getSkill().getSkillRadius()))
{
if(cha == null)
{
continue;
}
_skill.getEffects(_actor, cha);
// there doesn't seem to be a visible effect with MagicSkillLaunched packet...
_actor.broadcastPacket(new MagicSkillUse(_actor, cha, _skill.getId(), _skill.getLevel(), 0, 0));
}
return true;
}
@Override
public void onExit()
{
if(_actor != null)
{
_actor.deleteMe();
}
}
}

 

Скилл в .xml

 

 


<skill id="454" levels="1" name="Symbol of Defense">
<set name="target" val="TARGET_SELF" />
<set name="skillType" val="SIGNET" />
<set name="operateType" val="OP_ACTIVE" />
<set name="hitTime" val="5000" />
<set name="staticHitTime" val="true" />
<set name="reuseDelay" val="1800000" />
<set name="staticReuse" val="true" />
<set name="skillRadius" val="180" />
<set name="magicLvl" val="80" />
<set name="effectNpcId" val="13018" />
<set name="effectId" val="5123" />
<set name="power" val="200" />
<set name="mpInitialConsume" val="36" />
<set name="mpConsume" val="44" />
<for>
<effect count="24" name="Signet" time="5" val="0" />
</for>
</skill>

 

Скил который должен юзать купол (.xml):

 

 

 

<skill id="5123" levels="1" name="Maximum Defense">
<set name="magicLvl" val="80" />
<set name="target" val="TARGET_ONE" />
<set name="skillType" val="CONT" />
<set name="operateType" val="OP_ACTIVE" />
<for>
<effect name="Buff" time="7" val="0" stackOrder="1" stackType="combination">
<add order="0x40" stat="pDef" val="1000" />
<add order="0x40" stat="mDef" val="800" />
<sub order="0x40" stat="cancelVuln" val="80" />
</effect>
</for>
</skill>

 

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для начало зафиксируем начальные статы, далее юзаем купол и свреям статы с ранее фиксированными статами. Если статы изменились, то все окей - скил работает корректно. Только нет отображения - тут либо клиент, либо БД-имя эффекта.

Если же не работает, то причина где-то глубоко и надо копать.

Представленный код написан корректно и ошибок тут нет -

_skill.getEffects(_actor, cha);
_actor.broadcastPacket(new MagicSkillUse(_actor, cha, _skill.getId(), _skill.getLevel(), 0, 0));

В xml все шикарно.

Так что првоеряй =)

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для начало зафиксируем начальные статы, далее юзаем купол и свреям статы с ранее фиксированными статами. Если статы изменились, то все окей - скил работает корректно. Только нет отображения - тут либо клиент, либо БД-имя эффекта.

Если же не работает, то причина где-то глубоко и надо копать.

Представленный код написан корректно и ошибок тут нет -

_skill.getEffects(_actor, cha);
_actor.broadcastPacket(new MagicSkillUse(_actor, cha, _skill.getId(), _skill.getLevel(), 0, 0));

В xml все шикарно.

Так что првоеряй =)

 

После ваших слов, решил проверить что не так, понял что проблема заключается в skillType="CONT". Спасибо, пойду решать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, имеется - общайтесь: link427

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну что, починили? просто из любопытства?:)

 

P.S. Дело не в XML или

причина где-то глубоко и надо копать

Копать тут не надо, надо просто переписать тот говнокод, что написали л2ж

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...