Сообщений: 1,058
Тем: 129
Зарегистрирован: May 2009
Репутация:
11,626
Interlude/aCis
Добброго времен исуток господа.
Худший день для меня - настал. Я начал работать с Condition.
Начал с того, что мне нужны были два условия. Первое создал - всё работает как надо, а вот второе - ругается.
в документбаз, внёс это -
DocumentBase
Код: import net.sf.l2j.gameserver.skills.conditions.ConditionTargetActiveEffectType;
else if ("active_effect_type".equalsIgnoreCase(a.getNodeName()))
{
StringTokenizer st = new StringTokenizer(a.getNodeName(), ";");
String effect = st.nextToken().trim();
L2EffectType et = Enum.valueOf(L2EffectType.class, effect);
int level = -1;
if(st.hasMoreTokens())
level = Integer.parseInt(st.nextToken().trim());
cond = joinAnd(cond, new ConditionTargetActiveEffectType(et, level));
}
создал: ConditionTargetActiveEffectType
cond
Код: public class ConditionTargetActiveEffectType extends Condition
{
private final L2EffectType _effectType;
private final int _level;
public ConditionTargetActiveEffectType(L2EffectType effectType, int level)
{
_effectType = effectType;
_level = level;
}
@Override
protected boolean testImpl(Env env)
{
L2Character target = env.target;
if(target == null)
return false;
L2Effect effect = target.getFirstEffect(_effectType);
if(effect == null)
return false;
if(_level == -1 || effect.getSkill().getLevel() >= _level)
return true;
return false;
}
}
Итог:
P.S. не кидайтесь сильно тапками >.<! Мозг уже горит, всю ночь сидел над одним кондом, теперь над вторым сижу...
Сообщений: 1,485
Тем: 12
Зарегистрирован: Mar 2010
Репутация:
2,994
Кондишн из скила покажите плз
Сообщений: 376
Тем: 12
Зарегистрирован: Jul 2012
Репутация:
1,000
11-14-2012, 09:41 PM
(Сообщение последний раз редактировалось: 11-14-2012, 10:23 PM Gattsu.)
там белым по черному ошибка написана, добавьте в перечисление L2EffectType active_effect_type
else if ("active_effect_type".equalsIgnoreCase(a.getNodeName()))
на
else if (a.getNodeName().startsWith("active_effect_type"))
и да батенька если это xml то, что-то мне подсказывает, что вы не так используете его
----
посмотрел я на этот шлак - ужаснулся, вообще лажовый код, ну....
подумал, решил то что выше можно забыть используйте getNodeValue
PHP код: <?php
else if ("active_effect_type".equalsIgnoreCase(a.getNodeName()))
{
StringTokenizer st = new StringTokenizer(a.getNodeValue(), ";");
String effect = st.nextToken().trim();
L2EffectType et = Enum.valueOf(L2EffectType.class, effect);
int level = -1;
if(st.hasMoreTokens())
level = Integer.parseInt(st.nextToken().trim());
cond = joinAnd(cond, new ConditionTargetActiveEffectType(et, level));
}
Сообщений: 1,058
Тем: 129
Зарегистрирован: May 2009
Репутация:
11,626
11-14-2012, 10:42 PM
(Сообщение последний раз редактировалось: 11-15-2012, 06:14 PM finfan.)
Visor Написал:Кондишн из скила покажите плз
Я сначала тоже об этом подумал, но там все верно...
Gattsu Написал:там белым по черному ошибка написана, добавьте в перечисление L2EffectType active_effect_type
else if ("active_effect_type".equalsIgnoreCase(a.getNodeName()))
на
else if (a.getNodeName().startsWith("active_effect_type"))
и да батенька если это xml то, что-то мне подсказывает, что вы не так используете его
----
посмотрел я на этот шлак - ужаснулся, вообще лажовый код, ну....
подумал, решил то что выше можно забыть используйте getNodeValue
PHP код: <?php
else if ("active_effect_type".equalsIgnoreCase(a.getNodeName()))
{
StringTokenizer st = new StringTokenizer(a.getNodeValue(), ";");
String effect = st.nextToken().trim();
L2EffectType et = Enum.valueOf(L2EffectType.class, effect);
int level = -1;
if(st.hasMoreTokens())
level = Integer.parseInt(st.nextToken().trim());
cond = joinAnd(cond, new ConditionTargetActiveEffectType(et, level));
}
Сервер грузится без ошибок, попозже проведу тест отпишусь.
Добавлено через 19 часов 32 минуты
Скомпилилось всё удачно, ошибок в ГС небыло и всё равно кондиция не работает.
Такое ощущение как будто, сервер её вообще не воспринимает...
В чём я мог ошибиться? Т.Т
Сообщений: 1,058
Тем: 129
Зарегистрирован: May 2009
Репутация:
11,626
Сообщений: 376
Тем: 12
Зарегистрирован: Jul 2012
Репутация:
1,000
Сообщений: 1,058
Тем: 129
Зарегистрирован: May 2009
Репутация:
11,626
Gattsu Написал:покажите xml
Я пытаюсь создать скилл тип/кодишен, который бы проверял таргет на наличие определённого effectType.
Пока маялся над кондишеном, в голову пришла мысль о создании нового скиллтипа с хэндлером, внутри которого и будет вся эта шняга.
Скил прост: Если на цели весит effectType скажем DMG_OVER_TIME, то activeChar бьёт по данной цели на 30% сильнее (если конечно изучен особый пассивный скилл, дающий данную возможность)
Возможно ли сделать такое через хэндлер?
Сообщений: 376
Тем: 12
Зарегистрирован: Jul 2012
Репутация:
1,000
Посмотрел бегло я на эту систему, огорчает =)
L2PcInstance.useMagic могу посоветовать
Система была бы проще если была бы у каждого умения функция canUse и срабатывал бы просто обработчик, последовательно проверяющий SkillUseCondition
по крайней мере у меня такая модель
Сообщений: 16
Тем: 1
Зарегистрирован: Jan 2013
Репутация:
-32
Скинь сюда L2EffectType.java
Сообщений: 452
Тем: 4
Зарегистрирован: May 2011
Репутация:
4,662
orionpvp Написал:Скинь сюда L2EffectType.java
Уважаемый, смотрите пожалуйста на дату создания темы....
|