Перейти к содержанию
Авторизация  
Кастиэль

Эффект для скилла Западня Ветра

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

Кто может приблизительно рабочий класс эффекта написать (или скопипастить уже готовый(мб в шаре есть)) для скилла Артеи мага - Западня ветра(единственный не рабочий скилл у артеек магов остался, хз как написать)

P.S. Если уже готовый скинете, попробую переписать под сорцы с которыми работаю(гдв)

P.S.S У мобиуса критует )

P.S.S.S. Вообще у меня возник вопрос с этим скиллом из-за того, что я не понимаю, как сделать чтобы персонаж шел на того персонажа, который скилл заюзал, все остальное могу сделать(чтобы при наложенном дебаффе, нельзя было юзать скиллы, атаковать, менять таргет)

 

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


Ссылка на сообщение
Поделиться на другие сайты
target.getAI().setIntention(CtrlIntention.AI_INTENTION_FOLLOW, player, 100);

Как-то так. Смотреть по своей сборке методы нужно.

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


Ссылка на сообщение
Поделиться на другие сайты
target.getAI().setIntention(CtrlIntention.AI_INTENTION_FOLLOW, player, 100);

Как-то так. Смотреть по своей сборке методы нужно.

 

Ну я примерно понял, это как бы метод принужденной атаки, поищу

Изменено пользователем Кастиэль

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


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

В общем как-то так:

 

 

package org.jisoi.gameserver.skills.effects; import org.jisoi.gameserver.ai.CtrlIntention;import org.jisoi.gameserver.ai.PlayerAI;import org.jisoi.gameserver.cache.Msg;import org.jisoi.gameserver.geodata.GeoEngine;import org.jisoi.gameserver.model.Effect;import org.jisoi.gameserver.model.Player;import org.jisoi.gameserver.model.entity.events.impl.SiegeEvent;import org.jisoi.gameserver.model.instances.SummonInstance;import org.jisoi.gameserver.network.serverpackets.components.SystemMsg;import org.jisoi.gameserver.stats.Env;import org.jisoi.gameserver.utils.PositionUtils; public class EffectErtheiaWind extends Effect { protected EffectErtheiaWind(Env env, EffectTemplate template) {super(env, template);} @Overridepublic void onStart(){super.onStart(); if(!_effected.startErtheiaWind()){_effected.abortAttack(true, true);_effected.abortCast(true, true);_effected.stopMove();} onActionTime();} @Overridepublic void onExit(){super.onExit();_effected.stopErtheiaWind();_effected.getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE);} @Overridepublic boolean onActionTime(){_effected.setRunning();_effected.moveToLocation(_effector.getX(), _effector.getY(), _effector.getX(), 0, false);return true;}}

 
овероподобные исходы.
 
ах да, импортов там куча ненужных, так как делал по образцу (fear).
Изменено пользователем DiQuero
  • Upvote 1

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


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

Ого, спасибо большое еще раз))

А то я вон чего намутил, хз работает нет :

 

 

 
package dwo.gameserver.handler.effects;
import dwo.gameserver.model.actor.instance.L2FortCommanderInstance;
import dwo.gameserver.model.actor.instance.L2GrandBossInstance;
import dwo.gameserver.model.actor.instance.L2NpcInstance;
import dwo.gameserver.model.actor.instance.L2RaidBossInstance;
import dwo.gameserver.model.actor.instance.L2SiegeFlagInstance;
import dwo.gameserver.model.actor.instance.L2SiegeSummonInstance;
import dwo.gameserver.model.skills.effects.CharEffectList;
import dwo.gameserver.model.skills.effects.EffectTemplate;
import dwo.gameserver.model.skills.effects.L2EffectType;
import dwo.gameserver.model.skills.stats.Env;
import dwo.gameserver.model.actor.L2Character;
import dwo.gameserver.model.actor.L2Object;
import dwo.gameserver.model.actor.ai.CtrlIntention;
import dwo.gameserver.model.actor.instance.L2PcInstance;
import dwo.gameserver.model.skills.effects.L2Effect;
 
 
public class GoToMe extends L2Effect
{
private int _x, _y, _z;
 
public GoToMe(Env env, EffectTemplate template)
{
super(env, template);
}
 
@Override
public L2EffectType getEffectType()
{
return L2EffectType.GOTOME;
}
 
public boolean onStart(L2Character activeChar, L2Object[] targets)
{
           if(getEffected() == null || getEffector() == null)
{
return false;
}
           if(getEffected() instanceof L2SiegeFlagInstance ||
getEffected() instanceof L2FortCommanderInstance ||
getEffected() instanceof L2NpcInstance ||
getEffected() instanceof L2SiegeSummonInstance ||
getEffected() instanceof L2RaidBossInstance ||
getEffected() instanceof L2GrandBossInstance)
{
return false;
                }
           L2PcInstance _actor = activeChar.getActingPlayer();
           L2Character target;
           for(L2Object obj : targets)
{
if(!(obj instanceof L2Character))
{
return false;
}
target = (L2Character) obj;
                        if(target.isDead())
{
return false;
}
                    target.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, _actor);
                }
            return true;
        }
 
public void onExit(L2Character activeChar, L2Object[] targets)
{
           L2PcInstance _actor = activeChar.getActingPlayer();
           L2Character target;
           
           for(L2Object obj : targets)
{
target = (L2Character) obj;
                target.getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE, _actor);
                }
 
}
        @Override
public boolean onActionTime()
{
return false;
}
@Override
public int getEffectFlags()
{
return CharEffectList.EFFECT_GOTOME;
}
}

 

 

Изменено пользователем Кастиэль

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


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

Что-то не получилось, вот как переделал :

 

 

package dwo.gameserver.handler.effects;
 
import dwo.gameserver.model.skills.stats.Env;
import dwo.gameserver.model.skills.effects.L2Effect;
import dwo.gameserver.model.skills.effects.EffectTemplate;
import dwo.gameserver.model.skills.effects.L2EffectType;
import dwo.gameserver.model.actor.ai.CtrlIntention;
import dwo.gameserver.model.actor.instance.L2PcInstance;
 
public class GoToMe extends L2Effect {
 
public GoToMe (Env env, EffectTemplate template)
{
super(env, template);
}
        @Override
public L2EffectType getEffectType()
{
return L2EffectType.GOTOME;
}
 
@Override
public boolean onStart()
{
super.onStart();
if(getEffected() instanceof L2PcInstance)
{
    getEffected().startGoToMe();
    onActionTime();
    return true;
}
return false;
}
 
@Override
public void onExit()
{
super.onExit();
getEffected().getAI().setIntention(CtrlIntention.AI_INTENTION_ACTIVE);
}
@Override
public boolean onActionTime()
{
getEffected().setRunning();
getEffected().moveToLocation(getEffector().getX(), getEffector().getY(), getEffector().getZ(),0);
return true;
}
}

 

 

В общем возьми за основу EffectFear, изменив что нужно. Мб завтра гляну этот исходник.

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


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

AI_INTENTION_FOLLOW Нужно было все таки указывать)) Ну координаты постирал все

Эххх, на мобах пашет, на игроках нет(

Изменено пользователем Кастиэль

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


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

поменяй

 

return getSkill().isToggle();

 

просто на

 

return true;

 

у тебя getSkill().isToggle() скорее всего false возвращает, а это означает что больше вызывать onActionTime не надо.

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


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

поменяй

 

return getSkill().isToggle();

 

просто на

 

return true;

 

у тебя getSkill().isToggle() скорее всего false возвращает, а это означает что больше вызывать onActionTime не надо.

Не помогло

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


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

Не помогло

http://pastebin.ru/iZLo51Nm - тут по циферкам расписал то, что не сделал (то есть нужно доделать самому). Должно сработать по идее.

 

+ Не учел, вот эту строку

getEffected().getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(getEffector().getX(), getEffector().getY(), getEffector().getZ(), 0));

заменяешь на эту

getEffected().getAI().setIntention(CtrlIntention.AI_INTENTION_FOLLOW, getEffector());

Изменено пользователем DiQuero
  • Upvote 1

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


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

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

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

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

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

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

Войти

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

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

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

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

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