CalypsoToolz 451 Опубликовано 23 марта, 2013 (изменено) Привет форумчане, прошу помощи: собрался убрать у боса Орфена пару скилов - паралич и тп в логово. Но мой скилл знания явы не велик - что-то получается, что-то нет. В общем удалял, менял строки, но получал только ошибки в ГС. Извиняясь за нубскую просьбу, прошу подправить аи боса так, чтобы он не кидал паралич и не улетал в логово. package ai;import l2md.extensions.scripts.Functions;import l2md.gameserver.ai.Fighter;import l2md.gameserver.model.L2Character;import l2md.gameserver.model.L2Skill;import l2md.gameserver.model.L2Skill.SkillType;import l2md.util.Location;import l2md.util.PrintfFormat;import l2md.util.Rnd;import npc.model.OrfenInstance;public class Orfen extends Fighter{public static final PrintfFormat[] MsgOnRecall = {new PrintfFormat("%s. Stop kidding yourself about your own powerlessness!"),new PrintfFormat("%s. I'll make you feel what true fear is!"),new PrintfFormat("You're really stupid to have challenged me. %s! Get ready!"),new PrintfFormat("%s. Do you think that's going to work?!") };public final L2Skill[] _paralyze;public Orfen(L2Character actor){super(actor);_paralyze = getActor().getTemplate().getSkillsByType(SkillType.PARALYZE);}@Overrideprotected boolean thinkActive(){if(super.thinkActive())return true;OrfenInstance actor = getActor();if(actor == null)return true;if(actor.isTeleported() && actor.getCurrentHpPercents() > 95){actor.setTeleported(false);return true;}return false;}@Overrideprotected boolean createNewTask(){return defaultNewTask();}@Overrideprotected void onEvtAttacked(L2Character attacker, int damage){super.onEvtAttacked(attacker, damage);OrfenInstance actor = getActor();if(actor == null || actor.isCastingNow())return;double distance = actor.getDistance(attacker);// if(attacker.isMuted() &&)if(distance > 300 && distance < 1000 && _dam_skills.length > 0 && Rnd.chance(10)){Functions.npcSay(actor, MsgOnRecall[Rnd.get(MsgOnRecall.length - 1)].sprintf(attacker.getName()));teleToLocation(attacker, Location.getAroundPosition(actor, attacker, 0, 50, 3));L2Skill r_skill = _dam_skills[Rnd.get(_dam_skills.length)];if(canUseSkill(r_skill, attacker, -1))AddUseSkillDesire(attacker, r_skill, 1000000);}else if(_paralyze.length > 0 && Rnd.chance(20)){L2Skill r_skill = _paralyze[Rnd.get(_paralyze.length)];if(canUseSkill(r_skill, attacker, -1))AddUseSkillDesire(attacker, r_skill, 1000000);}}@Overrideprotected void onEvtSeeSpell(L2Skill skill, L2Character caster){super.onEvtSeeSpell(skill, caster);OrfenInstance actor = getActor();if(actor == null || actor.isCastingNow())return;double distance = actor.getDistance(caster);if(_dam_skills.length > 0 && skill.getEffectPoint() > 0 && distance < 1000 && Rnd.chance(20)){Functions.npcSay(actor, MsgOnRecall[Rnd.get(MsgOnRecall.length)].sprintf(caster.getName()));teleToLocation(caster, Location.getAroundPosition(actor, caster, 0, 50, 3));L2Skill r_skill = _dam_skills[Rnd.get(_dam_skills.length)];if(canUseSkill(r_skill, caster, -1))AddUseSkillDesire(caster, r_skill, 1000000);}}@Overridepublic OrfenInstance getActor(){return (OrfenInstance) super.getActor();}private void teleToLocation(L2Character attacker, Location loc){attacker.setLoc(loc);attacker.setLastClientPosition(loc);attacker.setLastServerPosition(loc);attacker.validateLocation(1);}} С меня спасибо) Изменено 23 марта, 2013 пользователем BymerOK Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты