Пространственный Барьер

Gigi

Выдающийся
Местный
Сообщения
244
Розыгрыши
0
Репутация
173
Реакции
61
Баллы
1 373
Привет всем участникам форума.

В хрониках Артеии и выше есть такой чудо инстанс с многими этажами, так вот на всех этажах присутствуют зоны дебафов в виде ловушек, они трёх типов и отличаются цветами, в датапаке нашёл только ловушки ID 19556 --->19562 но они почему то все фиолетово цвета смена дисплей эффекта меняет только их размер, нужны только вот эти две

300px-Барьер_-_Ловушка_3_тип.jpg 300px-Барьер_-_Ловушка_2_тип.jpg

может кто сталкивался с этим инстансом и знает идешник этих типов :Friends1:буду очень благодарен
 
19562 желтая, 19561 красная. Нужно менять статус на 7 у желтой, и 4, 5, 6 красной.
 
  • Мне нравится
Реакции: Gigi
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
УУУУ, Гайка когда то подганял эту инсту....
п.с. может и сейас подгонит))
 
Хм, я не шарил ее.
Да и она по сути простая - весь геммор в ее реализации - это долгое и нудное описывание всех зон, спавнов, прыжков для всех этапов-платформ...

а по этим неписям
Код:
	private static final int DimensionalDebuffTrap1 = 19556; // Дебафающая ловушка, сила 1
	private static final int DimensionalDebuffTrap2 = 19557; // Дебафающая ловушка, сила 2
	private static final int DimensionalDebuffTrap3 = 19558; // Дебафающая ловушка, сила 3
	private static final int DimensionalDamageTrap1 = 19559; // Дамагающая ловушка, сила 1
	private static final int DimensionalDamageTrap2 = 19560; // Дамагающая ловушка, сила 2
	private static final int DimensionalDamageTrap3 = 19561; // Дамагающая ловушка, сила 3
	private static final int DimensionalHealLight = 19562; // Лечащая область
Код:
package ai.DimensionalWarp;

import java.util.ArrayList;
import java.util.List;

import l2p.commons.util.Rnd;
import l2p.gameserver.ai.DefaultAI;
import l2p.gameserver.data.holder.SkillHolder;
import l2p.gameserver.model.Creature;
import l2p.gameserver.model.Playable;
import l2p.gameserver.model.World;
import l2p.gameserver.model.instances.NpcInstance;
import l2p.gameserver.model.skills.Skill;
import l2p.gameserver.stats.formulas.SkillSuccess;

public class Trap extends DefaultAI
{
	private static final Skill[][] _skill = {{ SkillHolder.getInstance().getSkill(16409, 1), SkillHolder.getInstance().getSkill(16410, 1), SkillHolder.getInstance().getSkill(16411, 1), SkillHolder.getInstance().getSkill(16412, 1) }, { SkillHolder.getInstance().getSkill(16413, 1) }};

	private int _type;
	private int _power;
	private long _nextSkillUse;

	public Trap(NpcInstance actor)
	{
		super(actor);

		AI_TASK_ACTIVE_DELAY = 1000;
		_type = actor.getParameter("trapType", -1);
		_power = actor.getParameter("trapPower", 1);
		_nextSkillUse = System.currentTimeMillis() + 5000;
	}

	@Override
	protected void onEvtSpawn()
	{
		super.onEvtSpawn();

		getActor().setNpcState(_type * 3 + _power);
	}

	@Override
	protected boolean thinkActive()
	{
		if (_type >= 0 && _nextSkillUse <= System.currentTimeMillis())
		{
			NpcInstance actor = getActor();

			_nextSkillUse = System.currentTimeMillis() + 10000;
			Skill skill = _skill[_type][Rnd.get(_skill[_type].length)];
			List<Creature> targets = new ArrayList<Creature>();

			for (Playable target : World.getAroundPlayables(actor, _power * 100, 200))
				if (target != null && !target.isDead() && SkillSuccess.calc(actor, target, skill, skill.getActivateRate()))
					targets.add(target);

			if (!targets.isEmpty())
				skill.useSkill(actor, targets);
		}

		return super.thinkActive();
	}
}
Код:
package ai.DimensionalWarp;

import java.util.ArrayList;
import java.util.List;

import l2p.gameserver.ai.DefaultAI;
import l2p.gameserver.data.holder.SkillHolder;
import l2p.gameserver.model.Creature;
import l2p.gameserver.model.Playable;
import l2p.gameserver.model.World;
import l2p.gameserver.model.instances.NpcInstance;
import l2p.gameserver.model.skills.Skill;
import l2p.gameserver.stats.formulas.SkillSuccess;

public class Light extends DefaultAI
{
	private static final Skill _skill = SkillHolder.getInstance().getSkill(16414, 1);

	private long _nextSkillUse;

	public Light(NpcInstance actor)
	{
		super(actor);

		AI_TASK_ACTIVE_DELAY = 1000;
		_nextSkillUse = System.currentTimeMillis() + 5000;
	}

	@Override
	protected void onEvtSpawn()
	{
		super.onEvtSpawn();

		getActor().setNpcState(7);
	}

	@Override
	protected boolean thinkActive()
	{
		if (_nextSkillUse <= System.currentTimeMillis())
		{
			NpcInstance actor = getActor();

			_nextSkillUse = System.currentTimeMillis() + 10000;
			List<Creature> targets = new ArrayList<Creature>();

			for (Playable target : World.getAroundPlayables(actor, 200, 200))
				if (target != null && !target.isDead() && SkillSuccess.calc(actor, target, _skill, _skill.getActivateRate()))
					targets.add(target);

			if (!targets.isEmpty())
				_skill.useSkill(actor, targets);
		}

		return super.thinkActive();
	}
}
[code]
 
Последнее редактирование:
Даа, тут нервы должны быть железные, на 12-ом этаже мой монитор и я сильно разошлись в мнениях ...
 
Ага, а ты представь что в сальвейшне инстанс еще удлинили - вместо 35 этажей там ща то ли 45 то ли 46.
 

    ArtToKill

    Баллов: 1
    Держись:)
Кстати при реализации надо учитывать нюанс с тем что часть платформ находится в одном квадрате геодаты, а часть в другом.
Первые 20 платформ в 13_25, а остальное в 17_11, т.е. после 20 надо делать не прыжок на 21, а телепортацию + менять в свойствах инстанса задействованный сектор - иначе начиная с 21 платформы будут проблемы с проходом в двери.
Ну это если что на овероподобных, т.к. там в инстансах двери обрабатываются корректно только если для него явно указан задействованный сектор геодаты.
 
Спасибо за подсказку, как дойду до 20-го посмотрю как это всё будет работать на лыже
 
Назад
Сверху Снизу