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

Добавление зоны

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

Хотел бы узнать, возможно ли создать зону, чтобы игрок в ней бафался от NPC бафера, но при выходе из неё терял весь баф, который на нём висит. 

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


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

пример можно взять с зон "ослабления" на осаждаемых территориях

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


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

даже сборку не указал.

 

если сборкой поддерживаются листенеры зон, то повесить на зону листенер и в обработке выхода из зоны в этом листенере снимать бафф.

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


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

Хотел бы узнать, возможно ли создать зону, чтобы игрок в ней бафался от NPC бафера, но при выходе из неё терял весь баф, который на нём висит. 

Есть такие зоны, как "Горячий источник" они снимают холеру, флю и так далее, найди эти зоны в ДП и посмотри принцип их работы.

  • Upvote 1

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


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

Есть такие зоны, как "Горячий источник" они снимают холеру, флю и так далее, найди эти зоны в ДП и посмотри принцип их работы.

Только они работают по методу онЗонеЕнтер (при входе), а нужно онЗонеЛив (при выходе).

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


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

пример реализации обработки входа/выхода в зону, если в сборке есть поддержка листенеров

package listeners.zones;

import l2p.commons.util.Rnd;
import l2p.gameserver.enums.Race;
import l2p.gameserver.enums.ZoneType;
import l2p.gameserver.listener.zone.OnZoneEnterLeaveListener;
import l2p.gameserver.model.Creature;
import l2p.gameserver.model.Zone;
import l2p.gameserver.scripts.ScriptFile;
import l2p.gameserver.skills.AbnormalEffect;
import l2p.gameserver.utils.ReflectionUtils;

/**
 * При входе в зону воды вешает на игрока случайный абнормал, меняющий внешний вид одетой брони на купальник, а при выходе из зоны убирает его обратно.
 * Работает для всех кроме расы Артеек - для них нет моделей/текстур купальников. 
 * 
 * @author Gaikotsu
 */
public class WaterZone implements ScriptFile
{
	private static final AbnormalEffect[] _ae = new AbnormalEffect[] {
		AbnormalEffect.SHAPE_BIKINI_A,
		AbnormalEffect.SHAPE_BIKINI_B,
		AbnormalEffect.SHAPE_BIKINI_C };

	private static ZoneListener _zoneListener;

	@Override
	public void onLoad()
	{
		_zoneListener = new ZoneListener();

		for (Zone zone : ReflectionUtils.getZonesByType(ZoneType.water))
			zone.addListener(_zoneListener);
	}

	@Override
	public void onReload()
	{}

	@Override
	public void onShutdown()
	{}

	public class ZoneListener implements OnZoneEnterLeaveListener
	{
		@Override
		public void onZoneEnter(Zone zone, Creature cha)
		{
			if (!cha.isPlayer() || cha.getPlayer().getAppearance().getRace() == Race.ERTHEIA)
				return;

			cha.startAbnormalEffect(_ae[Rnd.get(_ae.length)]);
		}

		@Override
		public void onZoneLeave(Zone zone, Creature cha)
		{
			if (!cha.isPlayer() || cha.getPlayer().getAppearance().getRace() == Race.ERTHEIA)
				return;

			for (AbnormalEffect ae : _ae)
				cha.stopAbnormalEffect(ae);
		}
	}
}
по аналогии можно сделать обработку наложенных баффов Изменено пользователем Gaikotsu

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


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

Только они работают по методу онЗонеЕнтер (при входе), а нужно онЗонеЛив (при выходе).

Я чет не правильно прочитал, что он хочет. 

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


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

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

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

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

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

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

Войти

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

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

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

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

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