Кастиэль 0 Опубликовано 20 марта, 2015 Кто может приблизительно рабочий класс эффекта написать (или скопипастить уже готовый(мб в шаре есть)) для скилла Артеи мага - Западня ветра(единственный не рабочий скилл у артеек магов остался, хз как написать) P.S. Если уже готовый скинете, попробую переписать под сорцы с которыми работаю(гдв) P.S.S У мобиуса критует ) P.S.S.S. Вообще у меня возник вопрос с этим скиллом из-за того, что я не понимаю, как сделать чтобы персонаж шел на того персонажа, который скилл заюзал, все остальное могу сделать(чтобы при наложенном дебаффе, нельзя было юзать скиллы, атаковать, менять таргет) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Naik 419 Опубликовано 20 марта, 2015 target.getAI().setIntention(CtrlIntention.AI_INTENTION_FOLLOW, player, 100); Как-то так. Смотреть по своей сборке методы нужно. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Кастиэль 0 Опубликовано 20 марта, 2015 (изменено) target.getAI().setIntention(CtrlIntention.AI_INTENTION_FOLLOW, player, 100); Как-то так. Смотреть по своей сборке методы нужно. Ну я примерно понял, это как бы метод принужденной атаки, поищу Изменено 20 марта, 2015 пользователем Кастиэль Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mizuwokiru 181 Опубликовано 20 марта, 2015 (изменено) В общем как-то так: 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). Изменено 20 марта, 2015 пользователем DiQuero 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Кастиэль 0 Опубликовано 20 марта, 2015 (изменено) Ого, спасибо большое еще раз)) А то я вон чего намутил, хз работает нет : 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; } } Изменено 20 марта, 2015 пользователем Кастиэль Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mizuwokiru 181 Опубликовано 20 марта, 2015 Что-то не получилось, вот как переделал : 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, изменив что нужно. Мб завтра гляну этот исходник. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Кастиэль 0 Опубликовано 20 марта, 2015 (изменено) AI_INTENTION_FOLLOW Нужно было все таки указывать)) Ну координаты постирал все Эххх, на мобах пашет, на игроках нет( Изменено 20 марта, 2015 пользователем Кастиэль Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 21 марта, 2015 поменяй return getSkill().isToggle(); просто на return true; у тебя getSkill().isToggle() скорее всего false возвращает, а это означает что больше вызывать onActionTime не надо. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Кастиэль 0 Опубликовано 21 марта, 2015 поменяй return getSkill().isToggle(); просто на return true; у тебя getSkill().isToggle() скорее всего false возвращает, а это означает что больше вызывать onActionTime не надо. Не помогло Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mizuwokiru 181 Опубликовано 22 марта, 2015 (изменено) Не помогло 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()); Изменено 22 марта, 2015 пользователем DiQuero 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты