Перейти к содержанию
Авторизация  
Artur_xD

Не Пускает К Епикам , Как Убрать Проверку?

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

Юзаю простое тп к епикам ( по координатам )

Админа пускает, простых игроков - нет

Как убрать проверку на пройдённый квест?

Сборка L2J-x

Если надо скрипты чегото - всё предоставлю.

Вот к примеру antharas.java

 

package ai.individual;

import gnu.trove.TIntObjectHashMap;

import java.util.Collection;
import java.util.List;
import java.util.concurrent.ScheduledFuture;

import javolution.util.FastList;
import ai.group_template.L2AttackableAIScript;

import net.sf.l2j.Config;
import net.sf.l2j.gameserver.GeoData;
import net.sf.l2j.gameserver.ThreadPoolManager;
import net.sf.l2j.gameserver.ai.CtrlIntention;
import net.sf.l2j.gameserver.datatables.NpcTable;
import net.sf.l2j.gameserver.datatables.SkillTable;
import net.sf.l2j.gameserver.datatables.SpawnTable;
import net.sf.l2j.gameserver.instancemanager.GrandBossManager;
import net.sf.l2j.gameserver.model.L2Character;
import net.sf.l2j.gameserver.model.L2CharPosition;
import net.sf.l2j.gameserver.model.L2Skill;
import net.sf.l2j.gameserver.model.L2Spawn;
import net.sf.l2j.gameserver.model.L2World;
import net.sf.l2j.gameserver.model.actor.instance.L2GrandBossInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2MonsterInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.model.zone.type.L2BossZone;
import net.sf.l2j.gameserver.network.serverpackets.Earthquake;
import net.sf.l2j.gameserver.network.serverpackets.L2GameServerPacket;
import net.sf.l2j.gameserver.network.serverpackets.PlaySound;
import net.sf.l2j.gameserver.network.serverpackets.SpecialCamera;
import net.sf.l2j.gameserver.templates.L2NpcTemplate;
import net.sf.l2j.gameserver.templates.StatsSet;
import net.sf.l2j.util.Rnd;

public class Antharas extends L2AttackableAIScript
{
// config
private static final int FWA_ACTIVITYTIMEOFANTHARAS = 120;
//private static final int FWA_APPTIMEOFANTHARAS = 1800000;
private static final int FWA_INACTIVITYTIME = 900000;
private static final boolean FWA_OLDANTHARAS = false;
private static final boolean FWA_MOVEATRANDOM = true;
private static final boolean FWA_DOSERVEREARTHQUAKE = true;
private static final int FWA_LIMITOFWEAK = 45;
private static final int FWA_LIMITOFNORMAL = 63;

private static final int FWA_MAXMOBS = 10; // this includes Antharas itself
private static final int FWA_INTERVALOFMOBSWEAK = 180000;
private static final int FWA_INTERVALOFMOBSNORMAL = 150000;
private static final int FWA_INTERVALOFMOBSSTRONG = 120000;
private static final int FWA_PERCENTOFBEHEMOTH = 60;
private static final int FWA_SELFDESTRUCTTIME = 15000;
// Location of teleport cube.
private final int _teleportCubeId = 31859;
private final int _teleportCubeLocation[][] = { { 177615, 114941, -7709, 0 } };

protected List<L2Spawn> _teleportCubeSpawn = new FastList<L2Spawn>();
protected List<L2NpcInstance> _teleportCube = new FastList<L2NpcInstance>();

// Spawn data of monsters.
protected TIntObjectHashMap<L2Spawn> _monsterSpawn = new TIntObjectHashMap<L2Spawn>();

// Instance of monsters.
protected List<L2NpcInstance> _monsters = new FastList<L2NpcInstance>();
protected L2GrandBossInstance _antharas = null;

// monstersId
private static final int ANTHARASOLDID = 29019;
private static final int ANTHARASWEAKID = 29066;
private static final int ANTHARASNORMALID = 29067;
private static final int ANTHARASSTRONGID = 29068;

// Tasks.
protected ScheduledFuture<?> _cubeSpawnTask = null;
protected ScheduledFuture<?> _monsterSpawnTask = null;
protected ScheduledFuture<?> _activityCheckTask = null;
protected ScheduledFuture<?> _socialTask = null;
protected ScheduledFuture<?> _mobiliseTask = null;
protected ScheduledFuture<?> _mobsSpawnTask = null;
protected ScheduledFuture<?> _selfDestructionTask = null;
protected ScheduledFuture<?> _moveAtRandomTask = null;
protected ScheduledFuture<?> _movieTask = null;

//Antharas Status Tracking :
private static final byte DORMANT = 0;		//Antharas is spawned and no one has entered yet. Entry is unlocked
private static final byte WAITING = 1;		//Antharas is spawend and someone has entered, triggering a 30 minute window for additional people to enter
											//before he unleashes his attack. Entry is unlocked
private static final byte FIGHTING = 2;		//Antharas is engaged in battle, annihilating his foes. Entry is locked
private static final byte DEAD = 3;			//Antharas has been killed. Entry is locked

protected static long _LastAction = 0;

protected static L2BossZone _Zone;

// Boss: Antharas
public Antharas(int id,String name,String descr)
{
	super(id,name,descr);
	int[] mob = {ANTHARASOLDID,ANTHARASWEAKID,ANTHARASNORMALID,ANTHARASSTRONGID,29069,29070,2907
1,29072,29073,29074,29075,29076};
	this.registerMobs(mob);
	init();
}

// Initialize
private void init()
{
	// Setting spawn data of monsters.
	try
	{
		_Zone = GrandBossManager.getInstance().getZone(179700,113800,-7709);
		L2NpcTemplate template1;
		L2Spawn tempSpawn;

		// Old Antharas
		template1 = NpcTable.getInstance().getTemplate(ANTHARASOLDID);
		tempSpawn = new L2Spawn(template1);
		tempSpawn.setLocx(181323);
		tempSpawn.setLocy(114850);
		tempSpawn.setLocz(-7623);
		tempSpawn.setHeading(32542);
		tempSpawn.setAmount(1);
		tempSpawn.setRespawnDelay(FWA_ACTIVITYTIMEOFANTHARAS * 2);
		SpawnTable.getInstance().addNewSpawn(tempSpawn, false);
		_monsterSpawn.put(29019, tempSpawn);

		// Weak Antharas
		template1 = NpcTable.getInstance().getTemplate(ANTHARASWEAKID);
		tempSpawn = new L2Spawn(template1);
		tempSpawn.setLocx(181323);
		tempSpawn.setLocy(114850);
		tempSpawn.setLocz(-7623);
		tempSpawn.setHeading(32542);
		tempSpawn.setAmount(1);
		tempSpawn.setRespawnDelay(FWA_ACTIVITYTIMEOFANTHARAS * 2);
		SpawnTable.getInstance().addNewSpawn(tempSpawn, false);
		_monsterSpawn.put(29066, tempSpawn);

		// Normal Antharas
		template1 = NpcTable.getInstance().getTemplate(ANTHARASNORMALID);
		tempSpawn = new L2Spawn(template1);
		tempSpawn.setLocx(181323);
		tempSpawn.setLocy(114850);
		tempSpawn.setLocz(-7623);
		tempSpawn.setHeading(32542);
		tempSpawn.setAmount(1);
		tempSpawn.setRespawnDelay(FWA_ACTIVITYTIMEOFANTHARAS * 2);
		SpawnTable.getInstance().addNewSpawn(tempSpawn, false);
		_monsterSpawn.put(29067, tempSpawn);

		// Strong Antharas
		template1 = NpcTable.getInstance().getTemplate(ANTHARASSTRONGID);
		tempSpawn = new L2Spawn(template1);
		tempSpawn.setLocx(181323);
		tempSpawn.setLocy(114850);
		tempSpawn.setLocz(-7623);
		tempSpawn.setHeading(32542);
		tempSpawn.setAmount(1);
		tempSpawn.setRespawnDelay(FWA_ACTIVITYTIMEOFANTHARAS * 2);
		SpawnTable.getInstance().addNewSpawn(tempSpawn, false);
		_monsterSpawn.put(29068, tempSpawn);
	} 
	catch (Exception e)
	{
		_log.warning(e.getMessage());
	}

	// Setting spawn data of teleport cube.
	try
	{
		L2NpcTemplate Cube = NpcTable.getInstance().getTemplate(_teleportCubeId);
		L2Spawn spawnDat;
		for (int[] element : _teleportCubeLocation)
		{
			spawnDat = new L2Spawn(Cube);
			spawnDat.setAmount(1);
			spawnDat.setLocx(element[0]);
			spawnDat.setLocy(element[1]);
			spawnDat.setLocz(element[2]);
			spawnDat.setHeading(element[3]);
			spawnDat.setRespawnDelay(60);
			spawnDat.setLocation(0);
			SpawnTable.getInstance().addNewSpawn(spawnDat, false);
			_teleportCubeSpawn.add(spawnDat);
		}
	} 
	catch (Exception e)
	{
		_log.warning(e.getMessage());
	}
	int status = GrandBossManager.getInstance().getBossStatus(ANTHARASOLDID);
	if (FWA_OLDANTHARAS || status == WAITING)
	{
		StatsSet info = GrandBossManager.getInstance().getStatsSet(ANTHARASOLDID);
		Long respawnTime = info.getLong("respawn_time");
		if (status == DEAD && respawnTime <= System.currentTimeMillis())
		{
			// the time has already expired while the server was offline. Immediately spawn antharas in his cave.
			// also, the status needs to be changed to DORMANT
			GrandBossManager.getInstance().setBossStatus(ANTHARASOLDID,DORMANT);
			status = DORMANT;
		}
		else if (status == FIGHTING)
		{
			int loc_x = info.getInteger("loc_x");
			int loc_y = info.getInteger("loc_y");
			int loc_z = info.getInteger("loc_z");
			int heading = info.getInteger("heading");
			int hp = info.getInteger("currentHP");
			int mp = info.getInteger("currentMP");
			_antharas = (L2GrandBossInstance) addSpawn(ANTHARASOLDID,loc_x,loc_y,loc_z,heading,false,0);
			GrandBossManager.getInstance().addBoss(_antharas);
			_antharas.setCurrentHpMp(hp,mp);
			_LastAction = System.currentTimeMillis();
			// Start repeating timer to check for inactivity
			_activityCheckTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new CheckActivity(), 60000, 60000);
		}
		else if (status == DEAD)
		{
			ThreadPoolManager.getInstance().scheduleGeneral(new UnlockAntharas(ANTHARASOLDID), respawnTime - System.currentTimeMillis());
		}
		else
		{
			setAntharasSpawnTask();
		}
	}
	else
	{
		int statusWeak = GrandBossManager.getInstance().getBossStatus(ANTHARASWEAKID);
		int statusNormal = GrandBossManager.getInstance().getBossStatus(ANTHARASNORMALID);
		int statusStrong = GrandBossManager.getInstance().getBossStatus(ANTHARASSTRONGID);
		int antharasId = 0;
		if (statusWeak == FIGHTING || statusWeak == DEAD)
		{
			antharasId = ANTHARASWEAKID;
			status = statusWeak;
		}
		else if (statusNormal == FIGHTING || statusNormal == DEAD)
		{
			antharasId = ANTHARASNORMALID;
			status = statusNormal;
		}
		else if (statusStrong == FIGHTING || statusStrong == DEAD)
		{
			antharasId = ANTHARASSTRONGID;
			status = statusStrong;
		}
		if (antharasId != 0 && status == FIGHTING)
		{
			StatsSet info = GrandBossManager.getInstance().getStatsSet(antharasId);
			int loc_x = info.getInteger("loc_x");
			int loc_y = info.getInteger("loc_y");
			int loc_z = info.getInteger("loc_z");
			int heading = info.getInteger("heading");
			int hp = info.getInteger("currentHP");
			int mp = info.getInteger("currentMP");
			_antharas = (L2GrandBossInstance) addSpawn(antharasId,loc_x,loc_y,loc_z,heading,false,0);
			GrandBossManager.getInstance().addBoss(_antharas);
			_antharas.setCurrentHpMp(hp,mp);
			_LastAction = System.currentTimeMillis();
			// Start repeating timer to check for inactivity
			_activityCheckTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new CheckActivity(), 60000, 60000);
		}
		else if (antharasId != 0 && status == DEAD)
		{
			StatsSet info = GrandBossManager.getInstance().getStatsSet(antharasId);
			Long respawnTime = info.getLong("respawn_time");
			if (respawnTime <= System.currentTimeMillis())
			{
				// the time has already expired while the server was offline. Immediately spawn antharas in his cave.
				// also, the status needs to be changed to DORMANT
				GrandBossManager.getInstance().setBossStatus(antharasId,DORMANT);
				status = DORMANT;
			}
			else
			{
				ThreadPoolManager.getInstance().scheduleGeneral(new UnlockAntharas(antharasId), respawnTime - System.currentTimeMillis());
			}
		}
	}
}

// Do spawn teleport cube.
public void spawnCube()
{
	if (_mobsSpawnTask != null)
	{
		_mobsSpawnTask.cancel(true);
		_mobsSpawnTask = null;
	}
	if (_selfDestructionTask != null)
	{
		_selfDestructionTask.cancel(true);
		_selfDestructionTask = null;
	}
	if (_activityCheckTask != null)
	{
		_activityCheckTask.cancel(false);
		_activityCheckTask = null;
	}

	for (L2Spawn spawnDat : _teleportCubeSpawn)
	{
		_teleportCube.add(spawnDat.doSpawn());
	}
}

// Setting Antharas spawn task.
public void setAntharasSpawnTask()
{
	if (_monsterSpawnTask == null)
	{
		synchronized(this)
		{
			if (_monsterSpawnTask == null)
			{
				GrandBossManager.getInstance().setBossStatus(ANTHARASOLDID,WAITING);
				_monsterSpawnTask = ThreadPoolManager.getInstance().scheduleGeneral(new AntharasSpawn(1),Config.Antharas_Wait_Time);
			}
		}
	}
}

private void startMinionSpawns(int antharasId)
{
	int intervalOfMobs;

	// Interval of minions is decided by the type of Antharas
	// that invaded the lair.
	switch (antharasId)
	{
	case ANTHARASWEAKID:
		intervalOfMobs = FWA_INTERVALOFMOBSWEAK;
		break;
	case ANTHARASNORMALID:
		intervalOfMobs = FWA_INTERVALOFMOBSNORMAL;
		break;
	default:
		intervalOfMobs = FWA_INTERVALOFMOBSSTRONG;
		break;
	}

	// Spawn mobs.
	_mobsSpawnTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new MobsSpawn(), intervalOfMobs, intervalOfMobs);
}

// Do spawn Antharas.
private class AntharasSpawn implements Runnable
{
	private int _taskId = 0;
	private Collection<L2Character> _players = _Zone.getCharactersInside().values();

	AntharasSpawn(int taskId)
	{
		_taskId = taskId;
	}

	public void run()
	{
		int npcId;
		L2Spawn antharasSpawn = null;

		switch (_taskId)
		{
		case 1: // Spawn.
			// Strength of Antharas is decided by the number of players that invaded the lair.
			_monsterSpawnTask.cancel(false);
			_monsterSpawnTask = null;
			if (FWA_OLDANTHARAS)
				npcId = 29019; // old
			else if (_players.size() <= FWA_LIMITOFWEAK)
				npcId = 29066; // weak
			else if (_players.size() > FWA_LIMITOFNORMAL)
				npcId = 29068; // strong
			else
				npcId = 29067; // normal

			// Do spawn.
			antharasSpawn = _monsterSpawn.get(npcId);
			_antharas = (L2GrandBossInstance) antharasSpawn.doSpawn();
			GrandBossManager.getInstance().addBoss(_antharas);

			_monsters.add(_antharas);
			_antharas.setIsImmobilized(true);

			GrandBossManager.getInstance().setBossStatus(ANTHARASOLDID,DORMANT);
			GrandBossManager.getInstance().setBossStatus(npcId,FIGHTING);
			_LastAction = System.currentTimeMillis();
			// Start repeating timer to check for inactivity
			_activityCheckTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new CheckActivity(), 60000, 60000);

			// Setting 1st time of minions spawn task.
			if (!FWA_OLDANTHARAS)
			{
				startMinionSpawns(npcId);
			}

			// Set next task.
			if (_socialTask != null)
			{
				_socialTask.cancel(true);
				_socialTask = null;
			}
			_socialTask = ThreadPoolManager.getInstance().scheduleGeneral(new AntharasSpawn(2), 16);
			break;
		case 2:
			// Set camera.
			broadcastPacket(new SpecialCamera(_antharas.getObjectId(),700,13,-19,0,20000,0,0,1,0));

			// Set next task.
			if (_socialTask != null)
			{
				_socialTask.cancel(true);
				_socialTask = null;
			}
			_socialTask = ThreadPoolManager.getInstance().scheduleGeneral(new AntharasSpawn(3), 3000);
			break;

		case 3:
			// Do social.
			broadcastPacket(new SpecialCamera(_antharas.getObjectId(),700,13,0,6000,20000,0,0,1,0));
			// Set next task.
			if (_socialTask != null)
			{
				_socialTask.cancel(true);
				_socialTask = null;
			}
			_socialTask = ThreadPoolManager.getInstance().scheduleGeneral(new AntharasSpawn(4), 10000);
			break;
		case 4:
			broadcastPacket(new SpecialCamera(_antharas.getObjectId(),3700,0,-3,0,10000,0,0,1,0));
			// Set next task.
			if (_socialTask != null)
			{
				_socialTask.cancel(true);
				_socialTask = null;
			}
			_socialTask = ThreadPoolManager.getInstance().scheduleGeneral(new AntharasSpawn(5), 200);
			break;

		case 5:
			// Do social.
			broadcastPacket(new SpecialCamera(_antharas.getObjectId(),1100,0,-3,22000,30000,0,0,1,0));
			// Set next task.
			if (_socialTask != null)
			{
				_socialTask.cancel(true);
				_socialTask = null;
			}
			_socialTask = ThreadPoolManager.getInstance().scheduleGeneral(new AntharasSpawn(6), 10800);
			break;

		case 6:
			// Set camera.
			broadcastPacket(new SpecialCamera(_antharas.getObjectId(),1100,0,-3,300,7000,0,0,1,0));
			// Set next task.
			if (_socialTask != null)
			{
				_socialTask.cancel(true);
				_socialTask = null;
			}
			_socialTask = ThreadPoolManager.getInstance().scheduleGeneral(new AntharasSpawn(7), 1900);
			break;

		case 7:
			_antharas.abortCast();

			_mobiliseTask = ThreadPoolManager.getInstance().scheduleGeneral(new SetMobilised(_antharas), 16);

			// Move at random.
			if (FWA_MOVEATRANDOM)
			{
				L2CharPosition pos = new L2CharPosition(Rnd.get(175000,178500), Rnd.get(112400, 116000), -7707, 0);
				_moveAtRandomTask = ThreadPoolManager.getInstance().scheduleGeneral(new MoveAtRandom(_antharas, pos),500);
			}

			if (_socialTask != null)
			{
				_socialTask.cancel(true);
				_socialTask = null;
			}
			break;
		}
	}
}

private void broadcastPacket(L2GameServerPacket mov)
{
	if (_Zone != null)
	{
		for (L2Character characters : _Zone.getCharactersInside().values())
		{
			if (characters instanceof L2PcInstance)
				characters.sendPacket(mov);
		}
	}
}

// Do spawn Behemoth or Bomber.
private class MobsSpawn implements Runnable
{
	public MobsSpawn()
	{
	}

	public void run()
	{
		L2NpcTemplate template1;
		L2Spawn tempSpawn;
		boolean isBehemoth = Rnd.get(100) < FWA_PERCENTOFBEHEMOTH;
		try
		{
			int mobNumber = (isBehemoth ? 2 : 3);
			// Set spawn.
			for(int i = 0; i < mobNumber; i++)
			{
				if (_monsters.size() >= FWA_MAXMOBS)
					break;
				int npcId;
				if (isBehemoth)
					npcId = 29069;
				else
					npcId = Rnd.get(29070, 29076);
				template1 = NpcTable.getInstance().getTemplate(npcId);
				tempSpawn = new L2Spawn(template1);
				// allocates it at random in the lair of Antharas.
				int tried = 0;
				boolean notFound = true;
				int x = 175000;
				int y = 112400;
				int dt = (_antharas.getX() - x) * (_antharas.getX() - x) + (_antharas.getY() - y) * (_antharas.getY() - y);
				while (tried++ < 25 && notFound)
				{
					int rx = Rnd.get(175000, 179900);
					int ry = Rnd.get(112400, 116000);
					int rdt = (_antharas.getX() - rx) * (_antharas.getX() - rx) + (_antharas.getY() - ry) * (_antharas.getY() - ry);
					if (GeoData.getInstance().canSeeTarget(_antharas.getX(), _antharas.getY(), -7704, rx, ry, -7704))
						if (rdt < dt)
						{
							x = rx;
							y = ry;
							dt = rdt;
							if (rdt <= 900000)
								notFound = false;
						}
				}
				tempSpawn.setLocx(x);
				tempSpawn.setLocy(y);
				tempSpawn.setLocz(-7704);
				tempSpawn.setHeading(0);
				tempSpawn.setAmount(1);
				tempSpawn.setRespawnDelay(FWA_ACTIVITYTIMEOFANTHARAS * 2);
				SpawnTable.getInstance().addNewSpawn(tempSpawn, false);
				// Do spawn.
				_monsters.add(tempSpawn.doSpawn());
			}
		}
		catch (Exception e)
		{
			_log.warning(e.getMessage());
		}
	}
}

@Override
public String onAggroRangeEnter (L2NpcInstance npc, L2PcInstance player, boolean isPet) 
{
	switch (npc.getNpcId())
	{
		case 29070:
		case 29071:
		case 29072:
		case 29073:
		case 29074:
		case 29075:
		case 29076:
			if (_selfDestructionTask == null && !npc.isDead())
				_selfDestructionTask = ThreadPoolManager.getInstance().scheduleGeneral(new SelfDestructionOfBomber(npc), FWA_SELFDESTRUCTTIME);
			break;
	}
	return super.onAggroRangeEnter(npc, player, isPet);
}

// Do self destruction.
private class SelfDestructionOfBomber implements Runnable
{
	private L2NpcInstance _bomber;

	public SelfDestructionOfBomber(L2NpcInstance bomber)
	{
		_bomber = bomber;
	}

	public void run()
	{
		L2Skill skill = null;
		switch (_bomber.getNpcId())
		{
			case 29070:
			case 29071:
			case 29072:
			case 29073:
			case 29074:
			case 29075:
				skill = SkillTable.getInstance().getInfo(5097, 1);
				break;
			case 29076:
				skill = SkillTable.getInstance().getInfo(5094, 1);
				break;
		}

		_bomber.doCast(skill);
		_selfDestructionTask.cancel(false);
		_selfDestructionTask = null;
	}
}

@Override
public String onSpellFinished(L2NpcInstance npc, L2PcInstance player, L2Skill skill)
{
	if (npc.isInvul())
	{
		return null;
	}
	else if (skill != null && (skill.getId() == 5097 || skill.getId() == 5094))
	{
		switch (npc.getNpcId())
		{
			case 29070:
			case 29071:
			case 29072:
			case 29073:
			case 29074:
			case 29075:
			case 29076:
				npc.doDie(npc);
				break;
		}
	}
	return super.onSpellFinished(npc, player, skill);
}

// At end of activity time.
private class CheckActivity implements Runnable
{
	public void run()
	{
		Long temp = (System.currentTimeMillis() - _LastAction);
		if (temp > FWA_INACTIVITYTIME)
		{
			GrandBossManager.getInstance().setBossStatus(_antharas.getNpcId(),DORMANT);
			setUnspawn();
		}
	}
}

// Clean Antharas's lair.
public void setUnspawn()
{
	// Eliminate players.
	_Zone.oustAllPlayers();

	// Not executed tasks is canceled.
	if (_cubeSpawnTask != null)
	{
		_cubeSpawnTask.cancel(true);
		_cubeSpawnTask = null;
	}
	if (_monsterSpawnTask != null)
	{
		_monsterSpawnTask.cancel(true);
		_monsterSpawnTask = null;
	}
	if (_activityCheckTask != null)
	{
		_activityCheckTask.cancel(false);
		_activityCheckTask = null;
	}
	if (_socialTask != null)
	{
		_socialTask.cancel(true);
		_socialTask = null;
	}
	if (_mobiliseTask != null)
	{
		_mobiliseTask.cancel(true);
		_mobiliseTask = null;
	}
	if (_mobsSpawnTask != null)
	{
		_mobsSpawnTask.cancel(true);
		_mobsSpawnTask = null;
	}
	if (_selfDestructionTask != null)
	{
		_selfDestructionTask.cancel(true);
		_selfDestructionTask = null;
	}
	if (_moveAtRandomTask != null)
	{
		_moveAtRandomTask.cancel(true);
		_moveAtRandomTask = null;
	}

	// Delete monsters.
	for (L2NpcInstance mob : _monsters)
	{
		mob.getSpawn().stopRespawn();
		mob.deleteMe();
	}
	_monsters.clear();

	// Delete teleport cube.
	for (L2NpcInstance cube : _teleportCube)
	{
		cube.getSpawn().stopRespawn();
		cube.deleteMe();
	}
	_teleportCube.clear();
}

// Do spawn teleport cube.
private class CubeSpawn implements Runnable
{
	private int _type;

	CubeSpawn(int type)
	{
		_type = type;
	}

	public void run()
	{
		if (_type == 0)
		{
			spawnCube();
			_cubeSpawnTask.cancel(false);
			_cubeSpawnTask = null;
			_cubeSpawnTask = ThreadPoolManager.getInstance().scheduleGeneral(new CubeSpawn(1), 1800000);
		}
		else
		{
			setUnspawn();
			_cubeSpawnTask.cancel(false);
			_cubeSpawnTask = null;
		}
	}
}

// UnLock Antharas.
private class UnlockAntharas implements Runnable
{
	private int _bossId;

	public UnlockAntharas(int bossId)
	{
		_bossId = bossId;
	}

	public void run()
	{
		GrandBossManager.getInstance().setBossStatus(_bossId,DORMANT);
		if (FWA_DOSERVEREARTHQUAKE)
			for(L2PcInstance p : L2World.getInstance().getAllPlayers())
				p.broadcastPacket(new Earthquake(185708,114298,-8221,20,10));
	}
}

// Action is enabled the boss.
private class SetMobilised implements Runnable
{
	private L2GrandBossInstance _boss;

	public SetMobilised(L2GrandBossInstance boss)
	{
		_boss = boss;
	}

	public void run()
	{
		_boss.setIsImmobilized(false);

		// When it is possible to act, a social action is canceled.
		if (_socialTask != null)
		{
			_socialTask.cancel(true);
			_socialTask = null;
		}
	}
}

// Move at random on after Antharas appears.
private class MoveAtRandom implements Runnable
{
	private L2NpcInstance _npc;
	private L2CharPosition _pos;

	public MoveAtRandom(L2NpcInstance npc, L2CharPosition pos)
	{
		_npc = npc;
		_pos = pos;
	}

	public void run()
	{
		_npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, _pos);
	}
}

@Override
public String onAttack (L2NpcInstance npc, L2PcInstance attacker, int damage, boolean isPet)
{
	if (npc.getNpcId() == 29019 || npc.getNpcId() == 29066 || npc.getNpcId() == 29067 || npc.getNpcId() == 29068)
	{
		_LastAction = System.currentTimeMillis();
		if (GrandBossManager.getInstance().getBossStatus(_antharas.getNpcId()) != FIGHTING)
		{
			_Zone.oustAllPlayers();
		}
		else if (!FWA_OLDANTHARAS && _mobsSpawnTask == null)
		{
			startMinionSpawns(npc.getNpcId());
		}
	}
	else if (npc.getNpcId() > 29069 && npc.getNpcId() < 29077 && npc.getCurrentHp() <= damage)
	{
		L2Skill skill = null;
		switch (npc.getNpcId())
		{
			case 29070:
			case 29071:
			case 29072:
			case 29073:
			case 29074:
			case 29075:
				skill = SkillTable.getInstance().getInfo(5097, 1);
				break;
			case 29076:
				skill = SkillTable.getInstance().getInfo(5094, 1);
				break;
		}

		npc.doCast(skill);
	}
	return super.onAttack(npc, attacker, damage, isPet);
}

@Override
public String onKill (L2NpcInstance npc, L2PcInstance killer, boolean isPet) 
{
	if (npc.getNpcId() == 29019 || npc.getNpcId() == 29066 || npc.getNpcId() == 29067 || npc.getNpcId() == 29068)
	{
		npc.broadcastPacket(new PlaySound(1, "BS01_D", 1, npc.getObjectId(), npc.getX(), npc.getY(), npc.getZ()));
		_cubeSpawnTask = ThreadPoolManager.getInstance().scheduleGeneral(new CubeSpawn(0), 10000);
		GrandBossManager.getInstance().setBossStatus(npc.getNpcId(),DEAD);
		long respawnTime = (long)Config.Interval_Of_Antharas_Spawn + Rnd.get(Config.Random_Of_Antharas_Spawn);
		ThreadPoolManager.getInstance().scheduleGeneral(new UnlockAntharas(npc.getNpcId()), respawnTime);
		// also save the respawn time so that the info is maintained past reboots
		StatsSet info = GrandBossManager.getInstance().getStatsSet(npc.getNpcId());
		info.set("respawn_time",(System.currentTimeMillis() + respawnTime));
		GrandBossManager.getInstance().setStatsSet(npc.getNpcId(),info);
	}
	else if (npc.getNpcId() == 29069)
	{
		int countHPHerb = Rnd.get(6, 18);
		int countMPHerb = Rnd.get(6, 18);
		for (int i = 0; i < countHPHerb; i++)
			((L2MonsterInstance)npc).DropItem(killer, 8602, 1);
		for (int i = 0; i < countMPHerb; i++)
			((L2MonsterInstance)npc).DropItem(killer, 8605, 1);
	}
	if (_monsters.contains(npc))
		_monsters.remove(npc);
	return super.onKill(npc,killer,isPet);
}

public static void main(String[] args)
{
	new Antharas(-1,"antharas","ai");
}
}

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


Ссылка на сообщение
Поделиться на другие сайты
офаем в скриптах аи и удаляем зону

полностю скрипт отключать и удалить зону?

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


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

Всё перерыл и не нашел , сокол ( разраб ) сказал что надо в аи и зонах рыться, но что и как - ни слова...

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


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

попробуй поменять в конфиге с зоны епик рб на арену!я лично так зделал и все норм

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


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

пиши в аську помогу ! тоже раньше не мог розобратся ! сокол не хочет выводить конфиги =(

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


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

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

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

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