Перейти к содержанию

BorlandC

Новичок
  • Публикаций

    1
  • Зарегистрирован

  • Посещение

  • Отзывы

    0%

Весь контент BorlandC

  1. Всем привет. Исходники - эпилог, 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); но без результатно. Подскажите, как передать от элпи (кролика) отражение, в котором он находится и как потом заспавнить эти споры в этом же отражении? Буду очень благодарен.
×
×
  • Создать...