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

Spawn в Reflection'е . Как сделать?

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

Всем привет. Исходники - эпилог, l2p.

В общем появилось желание сделать не большой данж из эпидоса. За основу взял закена. В л2п подобных исходах спавн в рефлекшене сделан через xml, т.е. там указываешь id отражения и id моба с локацией. Так вот, взял я значит кролика (25604, при убийстве которого запускается эпидос сам) и прописал в xml, все отлично, кролик появляется в отражении, после смерти запускает эпидоса, но сам эпидос стартует уже не в отражении, а в обычном своем месте, и как следствие - персонаж остается в отражении, а споры ползти начинуют по стандарту без отражения) 

Как заставить спавнить этих спор именно в том отражении, где был убит кролик?

Аи кролика слишком простое:

public class MutatedElpy extends Fighter
{
	public MutatedElpy(L2Character actor)
	{
		super(actor);
	}

	@Override
	protected void onEvtDead(L2Character killer)
	{
	        EpidosManager.getInstance().tryStartEpidos();
		super.onEvtDead(killer);
	}
}

А вот сам tryStartEpidos:

 

	public void tryStartEpidos(final L2NpcInstance elpy)
	{
		final GArray<L2Player> players = core_naia_zone.getInsidePlayers();
		if(players.size() < 1)

			return;

		DoorTable.getInstance().getDoor(NAIA_DOOR).closeMe();
		core_naia_zone.setActive(true);

		if(mutated_elpy != null)
		{
			mutated_elpy.despawnAll();
			mutated_elpy.stopRespawn();
		}

		L2NpcInstance npc;
		for(int i = 0; i < 10; i++)
		{
			npc = sporesSpawn[4].spawnOne();
			npc.getAI().startAITask();
		}
	}

На сколько я понял ,мне нужно ковырять sporesSpawn :

 

	public EpidosManager()
	{
		sporesSpawn = new L2Spawn[SPORES_IDS.length];

		_state = new EpicBossState(25609);
		if(!_state.isNotSpawn())
			startIntervalEndTask();

		_log.info("EpicBossManager: Epidos state - " + _state.getState() + ".");
		if(_state.isInterval())
			_log.info("EpicBossManager: Epidos next spawn - " + Util.datetimeFormatter.format(_state.getRespawnDate()) + ".");

		L2NpcTemplate template;
		L2Spawn spawn;
		for(byte index = 0; index < SPORES_IDS.length; index++)
			try
			{
				template = NpcTable.getTemplate(SPORES_IDS[index]);
				if(template == null)
				{
					_log.warning("EpidosManager: mob with ID = " + SPORES_IDS[index] + " can't be spawned!");
					return;
				}
				spawn = new L2Spawn(template);
				spawn.setAmount(1);
				spawn.setLoc(SPAWN_LOCATION);
				spawn.setRespawnDelay(0);
				spawn.stopRespawn();

				sporesSpawn[index] = spawn;
			}
			catch(final Exception e)
			{
				_log.log(Level.WARNING, "EpidosManager: error spawn ", e);
			}

		template = NpcTable.getTemplate(25604);
		try
		{
			mutated_elpy = new L2Spawn(template);
			mutated_elpy.setAmount(1);
			mutated_elpy.setLoc(MUTATED_ELPY_LOCATIONS[Rnd.get(MUTATED_ELPY_LOCATIONS.length)]);
			mutated_elpy.setRespawnDelay(120, 60);
			mutated_elpy.setRespawnTime(0);
		}
		catch(final Exception e)
		{
			_log.log(Level.WARNING, "EpidosManager: fail spawn Mutated Elpy: ", e);
		}
	}

Сделал в ReflectionTable новое отражение - EPIDOS, пытался в спавне добавить :
spawn.setReflection(ReflectionTable.EPIDOS);
но без результатно. Подскажите, как передать от элпи (кролика) отражение, в котором он находится и как потом заспавнить эти споры в этом же отражении? Буду очень благодарен.

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


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

Перед нпс.гетАи, нпсу и присваивать рефлекшон, а затем спаунить.

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


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

или спавнить через текущий рефлекшн, методом addSpawnWithoutRespawn или addSpawnWithRespawn - зависит от того, нужен ли респ моба после его смерти

 

правда не помнб - были ли уже в фениксе эти методы в Reflection иил нет.

Изменено пользователем Gaikotsu

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

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

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

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