Доброй ночи если так можно сказать в 5 утра) в продолжение темы есть один тот же вопросик, вот java эффекта купола, как исключить наложение купала на двери? Если не трудно покажите пожалуйста кодом
/* */ package l2p.gameserver.skills.effects;
/* */
/* */ import java.util.logging.Logger;
/* */ import l2p.gameserver.ai.CtrlEvent;
/* */ import l2p.gameserver.ai.L2CharacterAI;
/* */ import l2p.gameserver.cache.Msg;
/* */ import l2p.gameserver.geodata.GeoEngine;
/* */ import l2p.gameserver.model.EffectList;
/* */ import l2p.gameserver.model.L2Character;
/* */ import l2p.gameserver.model.L2Effect;
/* */ import l2p.gameserver.model.L2Player;
/* */ import l2p.gameserver.model.L2RoundTerritoryWithSkill;
/* */ import l2p.gameserver.model.L2Skill;
/* */ import l2p.gameserver.model.L2Skill.SkillTargetType;
/* */ import l2p.gameserver.model.L2Spawn;
/* */ import l2p.gameserver.model.L2World;
/* */ import l2p.gameserver.model.Reflection;
/* */ import l2p.gameserver.model.instances.L2NpcInstance;
/* */ import l2p.gameserver.serverpackets.L2GameServerPacket;
/* */ import l2p.gameserver.serverpackets.MagicSkillLaunched;
/* */ import l2p.gameserver.skills.Env;
/* */ import l2p.gameserver.tables.NpcTable;
/* */ import l2p.gameserver.templates.L2NpcTemplate;
/* */ import l2p.util.GArray;
/* */ import l2p.util.Location;
/* */
/* */ public final class EffectSymbol extends L2Effect
/* */ {
/* 25 */ private static final Logger log = Logger.getLogger(EffectSymbol.class.getName());
/* */ L2RoundTerritoryWithSkill _territory;
/* */ L2NpcInstance _symbol;
/* */
/* */ public EffectSymbol(Env env, EffectTemplate template)
/* */ {
/* 31 */ super(env, template);
/* */ }
/* */
/* */ public boolean checkCondition()
/* */ {
/* 37 */ if (getSkill().getTargetType() != L2Skill.SkillTargetType.TARGET_SELF)
/* */ {
/* 39 */ log.severe("Symbol skill with target != self, id = " + getSkill().getId());
/* 40 */ return false;
/* */ }
/* 42 */ L2Skill skill = getSkill().getFirstAddedSkill();
/* 43 */ if (skill == null)
/* */ {
/* 45 */ log.severe("Not implemented symbol skill, id = " + getSkill().getId());
/* 46 */ return false;
/* */ }
/* 48 */ return super.checkCondition();
/* */ }
/* */
/* */ public void onStart()
/* */ {
/* 54 */ super.onStart();
/* 55 */ L2Skill skill = getSkill().getFirstAddedSkill();
/* */
/* 57 */ skill.setIsMagic(getSkill().isMagic());
/* 58 */ Location loc = this._effected.getLoc();
/* 59 */ if ((this._effected.isPlayer()) && (((L2Player)this._effected).getGroundSkillLoc() != null))
/* */ {
/* 61 */ loc = ((L2Player)this._effected).getGroundSkillLoc();
/* 62 */ ((L2Player)this._effected).setGroundSkillLoc(null);
/* */ }
/* 64 */ this._territory = new L2RoundTerritoryWithSkill(this._effected.getObjectId(), loc.x, loc.y, this._skill.getSkillRadius(), loc.z - 200, loc.z + 200, this._effector, skill);
/* 65 */ L2World.addTerritory(this._territory);
/* 66 */ L2NpcTemplate template = NpcTable.getTemplate(this._skill.getSymbolId());
/* */ try
/* */ {
/* 69 */ L2Spawn spawn = new L2Spawn(template);
/* 70 */ spawn.setLoc(loc);
/* 71 */ spawn.setReflection(this._effected.getReflection().getId());
/* 72 */ spawn.setAmount(1);
/* 73 */ spawn.init();
/* 74 */ spawn.stopRespawn();
/* 75 */ this._symbol = spawn.getLastSpawn();
/* */ }
/* */ catch (Exception e)
/* */ {
/* 79 */ e.printStackTrace();
/* */ }
/* 81 */ for (L2Character cha : L2World.getAroundCharacters(this._symbol, this._skill.getSkillRadius() + 200, 400))
/* */ {
/* 83 */ cha.updateTerritories();
/* */ }
/* */ }
/* */
/* */ public void onExit()
/* */ {
/* 90 */ super.onExit();
/* 91 */ L2World.removeTerritory(this._territory);
/* 92 */ if (this._symbol == null)
/* */ {
/* 94 */ return;
/* */ }
/* 96 */ for (L2Character cha : L2World.getAroundCharacters(this._symbol, this._skill.getSkillRadius() + 200, 400))
/* */ {
/* 98 */ cha.updateTerritories();
/* */ }
/* 100 */ this._symbol.deleteMe();
/* 101 */ this._symbol = null;
/* */ }
/* */
/* */ public boolean onActionTime()
/* */ {
/* 107 */ if (this._template._counter <= 1)
/* */ {
/* 109 */ return false;
/* */ }
/* 111 */ L2Character effector = getEffector();
/* 112 */ L2Skill skill = getSkill().getFirstAddedSkill();
/* 113 */ L2NpcInstance symbol = this._symbol;
/* 114 */ double mpConsume = getSkill().getMpConsume();
/* 115 */ if ((effector == null) || (skill == null) || (symbol == null))
/* */ {
/* 117 */ return false;
/* */ }
/* 119 */ if (mpConsume > effector.getCurrentMp())
/* */ {
/* 121 */ effector.sendPacket(new L2GameServerPacket[] { Msg.NOT_ENOUGH_MP });
/* 122 */ return false;
/* */ }
/* 124 */ effector.reduceCurrentMp(mpConsume, effector);
/* */
/* 126 */ for (L2Character cha : L2World.getAroundCharacters(symbol, getSkill().getSkillRadius(), 200))
/* */ {
/* 128 */ if ((cha.getEffectList().getEffectsBySkill(skill) == null) && (skill.checkTarget(effector, cha, cha, false, false) == null))
/* */ {
/* 130 */ if ((!skill.isOffensive()) || (GeoEngine.canSeeTarget(symbol, cha, false)))
/* */ {
/* 134 */ GArray targets = new GArray(1);
/* 135 */ targets.add(cha);
/* 136 */ effector.callSkill(skill, targets, false);
/* 137 */ effector.broadcastPacket(new L2GameServerPacket[] { new MagicSkillLaunched(this._symbol.getObjectId(), getSkill().getDisplayId(), getSkill().getDisplayLevel(), cha, true) });
/* 138 */ cha.getAI().notifyEvent(CtrlEvent.EVT_ATTACKED, effector, Integer.valueOf(1));
/* */ }
/* */ }
/* */ }
/* 141 */ return true;
/* */ }
/* */ }Code: Java