Здравствуйте форумчане, нуждаюсь в вашем совете! Квест 7 печатей, 4 часть где нужно пройти в инвизе гвардов, гварды работают некорректно,
код
package ai;
import l2r.commons.threading.RunnableImpl;
import l2r.gameserver.ThreadPoolManager;
import l2r.gameserver.ai.DefaultAI;
import l2r.gameserver.tables.SkillTable;
import l2r.gameserver.geodata.GeoEngine;
import l2r.gameserver.model.Creature;
import l2r.gameserver.model.Playable;
import l2r.gameserver.model.Skill;
import l2r.gameserver.model.World;
import l2r.gameserver.model.instances.NpcInstance;
import l2r.gameserver.scripts.Functions;
import l2r.gameserver.utils.Location;
public class GuardofDawnStat extends DefaultAI {
private static final int _aggrorange = 120;
private static final Skill _skill = SkillTable.getInstance().getInfo(5978, 1);
private Location _locTele = null;
private boolean noCheckPlayers = false;
public GuardofDawnStat(NpcInstance actor, Location telePoint) {
super(actor);
AI_TASK_ATTACK_DELAY = 200;
setTelePoint(telePoint);
}
public class Teleportation extends RunnableImpl {
Location _telePoint = null;
Playable _target = null;
public Teleportation(Location telePoint, Playable target) {
_telePoint = telePoint;
_target = target;
}
@Override
public void runImpl() {
_target.teleToLocation(_telePoint);
noCheckPlayers = false;
}
}
@Override
protected boolean thinkActive() {
NpcInstance actor = getActor();
// проверяем игроков вокруг
if (!noCheckPlayers)
checkAroundPlayers(actor);
return true;
}
private boolean checkAroundPlayers(NpcInstance actor) {
for (Playable target : World.getAroundPlayables(actor, _aggrorange, _aggrorange))
if (target != null && target.isPlayer() && target.isSilentMoving() && !target.isInvul() && GeoEngine.canSeeTarget(actor, target, false)) {
actor.doCast(_skill, target, true);
Functions.npcSay(actor, "Как Вы посмели явиться сюда с таким примитивным перевоплощением! Убирайтесь!");
noCheckPlayers = true;
ThreadPoolManager.getInstance().schedule(new Teleportation(getTelePoint(), target), 3000);
return true;
}
return false;
}
private void setTelePoint(Location loc) {
_locTele = loc;
}
private Location getTelePoint() {
return _locTele;
}
@Override
protected void thinkAttack() {
}
@Override
protected boolean randomWalk() {
return false;
}
@Override
protected void onIntentionAttack(Creature target) {
}
@Override
protected void onEvtAttacked(Creature attacker, int damage) {
}
@Override
protected void onEvtAggression(Creature attacker, int aggro) {
}
@Override
protected void onEvtClanAttacked(Creature attacked_member, Creature attacker, int damage) {
}
}
При изменении параметра if (target != null && target.isPlayer() &&
target.isSilentMoving() && !target.isInvul() && GeoEngine.canSeeTarget(actor, target, false)) {
actor.doCast(_skill, target, true); и вставке "!" перед target.isSilentMoving можно добиться того что гварды не видят тех кто под шд, или тех кто без шд. Как сделать так что бы они видели и так и так? Помогите пожалуйста, подскажите
Умный человек не тот, кто много знает, а тот, кто знает, что знает еще очень мало...